Blockchain là gì? Phân loại và định nghĩa đúng về lập trình blockchain

Mình gặp khá nhiều bạn nói rằng rất thích và quan tâm công nghệ Blockchain và vị trí Blockchain Engineer, nhưng hỏi ra thì bạn chỉ mới biết cái “tai tồ” (title) thôi. Vì thế mình dự định sẽ góp thêm 1 vài bài viết hướng dẫn làm Smart Contract, Decentralize App (Dapp), ICO các kiểu nhưng trước mắt sẽ là một cái note cơ bản có liên quan tới các vấn đề trên.

Blockchain là gì?

Blockchain như một cuốn số cái kế toán công cộng. Trong đó, mọi thông tin được lưu trữ và truyền tải một cách minh bạch, toàn vẹn, không thể nào thay đổi hay gian lận được. Đây là một công nghệ mới, giúp cải thiện được rất nhiều những mặt hạn chế của cách lưu trữ và trao đổi thông tin truyền thống. Bởi lý do này, mà blockchain ngày càng được ứng dụng rộng rãi trong nhiều lĩnh vực: kinh tế tài chính, giáo dục, nông nghiệp, công nghiệp, lĩnh vực giải trí, y tế hay giáo dục….

Sâu về kỹ thuật hơn, Blockchain là một database phân tán (phi tập trung) mà trong đó các dữ liệu được lưu trữ dưới dạng các blocks. Body của một block mang theo các transactions trên dữ liệu (như state machine). Block được kết nối với nhau theo dạng linked list (danh sách liên kết) dưới dạng mã hóa SHA256. Mã hóa của một block bao gồm cả địa chỉ của block trước và body của chính nó nên khi một block được add vào, nó không thể thay đổi cũng như tái sắp xếp.

Những ưu điểm nổi bật của Blockchain

Vì sao công nghệ blockchain lại trở thành xu hướng công nghệ hàng đầu hiện nay:

  1. Tính minh bạch và không thể phá vỡ : có thể nói đây là một trong những đặc điểm nổi bật nhất. Tất cả mỗi thông tin được lưu trữ, truyền tải và xử lý trong hệ thống blockchain, đều được thể hiện một cách minh bạch, rõ ràng nhất và không thể thay đổi, không thể giả mạo, không thể phá vỡ. Do đó, nếu bạn muốn truy xuất những thông tin về giao dịch của mình hay của người khác ( bao gồm ngày, giờ, chi tiết về giao dịch….) thì bạn sẽ không bao giờ phải lo ngại về sự thiếu chính xác của dữ liệu.
  2. Đặc tính ẩn danh : trọng tâm trong việc bảo vệ sự riêng tư của blockchain chính là khả năng ẩn danh người dùng. Đặc tính này, sẽ giúp bạn có thể giao dịch một cách an toàn, bảo mật mà không cần phải lo ngại về người khác biết được danh tính của mình. Cùng với sự minh bạch, không thể phá vỡ hay thay đổi dữ liệu và đặc tính ẩn danh, giúp blockchain tạo ra một niềm tin rất lớn đối với người dùng, giúp bạn cảm thấy an tâm hơn khi tham gia vào Blockchain.
  3. Rút ngắn được thời gian và tiết kiệm chi phí : nếu giao dịch truyền thống, theo kiểu cần có bên thứ 3 để xác thực, tạo sự tin cậy và minh bạch, thì bạn sẽ phải chịu thêm một phần chi phí nhất định cho bên thứ 3 này. Tuy nhiên, khi bạn ứng dụng blockchain vào giao dịch của mình, với hợp đồng thông minh (smart contract) bạn và đối tác của bạn sẽ là người trực tiếp thực hiện giao dịch và hệ thống trên blockchain sẽ là người xác nhận cho bạn, mà không cần tốn thêm chi phí, thậm chí là còn tiết kiệm được cả về thời gian giao dịch.
  4. Tính ứng dụng rộng rãi : công nghệ blockchain có thể ứng dụng rộng rãi trong mọi mặt đời sống hiện nay. Ví dụ như ứng dụng blockchain trong nông nghiệp thực phẩm, trong quản lý giáo dục, bầu cử kỹ thuật số…. và nổi bậc nhất vẫn là công nghệ blockchain được ứng dụng trong giao dịch tài chính.

Công việc của một lập trình viên blockchain

  1. Tạo, kiểm tra và triển khai sản phẩm blockchain mới.

  2. Cập nhật sản phẩm.

  3. Nghiên cứu công nghệ mới để ứng dụng vào các dự án… là các công việc chung của một lập trình viên blockchain.

Các đơn vị tuyển dung lập trình viên blockchain, kỹ sư blockchain khá đa dạng từ các công ty công nghệ, công ty truyền thông, các công ty cung cấp giải pháp blockchain hay các công ty, ngân hàng, tổ chức tài chính có nhu cầu xây dựng hệ thống trên nền tảng blockchain. Đó cũng lý giải tại sao những việc làm về blockchain luôn có mức lương cao đáng mơ ước.

Một số công việc tham khảo cho lập trình Blockchain

Lập trình cho Blockchain: C ++ / Go

Kỹ năng: phát triển ứng dụng web, phát triển ứng dụng di động Android / iOS, lập trình hướng đối tượng, kiến ​​thức về C / C ++, Java / C #, Bitcoin Core, Ứng dụng Blockchain, hiểu về Bitcoin, altcoins, blockchain.

Lập trình cho Ethereum: Solidity

Kỹ năng: kinh nghiệm làm việc trong blockchain, ICO, Ethereum DApps, ví, hợp đồng thông minh, tiền điện tử mới và trao đổi tiền điện tử.

Xây dựng hợp đồng thông minh cho ICO

Kỹ năng: Kinh nghiệm phát triển hợp đồng thông minh, các chương trình dựa trên Bitcoin và Ethereum với theo dõi và sử dụng tiền điện tử. Kỹ năng ngôn ngữ vững chắc và Ethereum để viết các hợp đồng thông minh, và phát triển cấu trúc Ethereum. Kỹ năng trong DApps (các ứng dụng phi tập trung). Ngoài ra công việc này cũng cần tới kinh nghiệm trong lập trình web trên Javascript và Python…

Ngoài các yêu cầu về chuyên môn, các vị trí tuyển dụng Lập trình viên Blockchain thường yêu cầu ứng viên có Tiếng Anh tốt, sẵn sàng học hỏi công nghệ mới, chủ động trong công việc…

Giải thích Blockchain cho dev

Nếu bạn vẫn chưa hiểu thì có thể hình dung blockchain nó giống như cái history mình thường thấy trong Git. Mỗi một commit chính là một block. Ta có thể dễ dàng xem được các commit cũ, cũng như track xem ai đã làm gì trên source code của mình, blockchain cũng y xì vậy thôi.

Điểm khác biệt và cũng là tinh hoa của blockchain đó là nó ko nằm 1 nơi như Git (các git server), mà được phân tán thành nhìu nơi (nhiều node), và tất cả là ngang hàng. Chính vì vậy mỗi một thay đổi trên 1 node phải được sự đồng thuận của cả mạng (tất cả các node). Ngoài ra còn có mấy khái niệm như Proof of Work, Stack of Work nhưng mình xin được bỏ ra vì tính chất nặng về kỹ thuật nên không hợp trong bài note này.

Ethereum Network là gì?

Nhiều bạn sẽ thắc mắc tại sao không phải là Bitcoin, blockchain đầu tiên nhất của thế giới mà lại là Ethereum ? Câu trả lời rất đơn giản vì Bitcoin sinh ra chỉ dành cho tiền điện tử (đồng Bitcoin), còn Ethereum sinh ra để không chỉ cho tiền điện tử (đồng Ether – Eth) mà còn dành cho các nhà phát triển có thể tham gia vào, dùng blockchain của Ethereum cho các nhu cầu khác: lập trình trên nó (smart contract), lưu trữ dữ liệu trên nó, phát hành token mới để ICO…

Chính vì đặc tính trên nên Ehereum network sẽ phức tạp hơn rất nhiều. Các transaction lúc này không chỉ là các lệnh chuyển tiền qua lại giữ những user mà còn là các operations của các smart contract nữa. Lúc này về mặt account sẽ có 2 loại là external owned account (chính là những người dùng) và contract account.

Smart Contract là gì?

Smart Contract nghe ghê gớm thế chứ nó cũng bình thường như một cái class trong hướng đối tượng OOP. Trong đó sẽ chứa các biến, các hàm và event để phục vụ cho nhu cầu của người viết ra chúng.

Tuy nhiên Smart Contract không phải muốn viết sao thì viết mà thường tuân thủ theo chuẩn ERC20 (ngoài ra còn có chuẩn ERC223). Theo chuẩn này thì 1 SC thường có các methods như: totalSupply, balanceOf, transfer, transferFrom… VD như ta ICO với 1 token tên Test thì hàm totalSupply có trách nhiệm trả về được tổng balance (token) của tất cả những người đã mua token Test.

Khi một Smart Contract được deploy lên network, chúng ra sẽ cần được khởi tạo (giống class như mình nói), khi được khởi tạo lên chúng sẽ có 1 address được gán vào (lại giống khởi tạo bộ nhớ) và tồn tại trên network như 1 account bình thường. Có điều khác là chúng sẽ không thể chủ động tự khởi tạo được các transaction mà chỉ nhận transaction và xử lý rồi lại truyền đi.

Smart contract đương nhiên cũng sẽ được public và không thể thay đổi được một khi đã deploy. Vì thế khi mà code bug thì chỉ có cách là vá chúng bằng cách thêm các smart contract vào chạy trung gian hoặc migrate smart contract. Trên thực tế các Smart Contract ít khi đứng một mình mà sẽ chạy dưới một chuỗi (chain) để xử lý cũng như phối hợp với nhau.

Ngôn ngữ viết Smart Contract

Smart Contract được viết bằng ngôn ngữ Solidity, đây là ngôn ngữ cho máy ảo Ehereum hiểu và thực thi. Ngôn ngữ này rất dễ viết, các bạn có thể nắm vững trong vài tuần hoặc tháng.

Thông thường ta sẽ dev smart contract ở local và dùng 1 network giả lập hoặc staging trên các testnet. Việc deploy smart contract lên main network sẽ tốn phí tùy vào số lượng transaction smart contract cần khi khởi tạo. Trong quá trình hoạt động (life time) nó cũng tốn phí để thực hiện các operations.

Decentralize App sẽ là sự thay thế cho các App hiện tại ? Đúng nhưng cũng không hẳn. Thật tế là tính tới nay 99% Dapp đang chạy không phải là production, vì bất kỳ thông tin lưu trữ hay thay dổi trên main network sẽ tốn phí. Chưa kể tốt độ confirm block rất chậm, không phù hợp với các nghiệp vụ cần tốc độ nhanh (Ethereum hiện tại là 15s).

Blockchain engineer không chỉ đơn giản là viết smart contract, nếu vậy thì là SC Developer đúng hơn. Họ có thể build được các hệ thống dựa trên nền tảng blockchain, một network riêng hoàn toàn như các hệ thống trong ngân hàng hoặc fintech.

Series Blockchain cơ bản – Học Solidity kèm ví dụ tạo 1 Contract đơn giản

Nguồn : Việt Trần – Founder Skylab