Blockchain là gì? Các ứng dụng liên quan đến Blockchain

4196

Mình (Tác giả Việt Trần) 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.

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.

Lịch sử Blockchain?

Blockchain là gì? Các ứng dụng liên quan đến Blockchain

Ý tưởng đằng sau công nghệ blockchain được mô tả từ năm 1991, khi các nhà nghiên cứu Stuart Haber và W. Scott Stornetta giới thiệu một giải pháp thực tế về mặt tính toán để đánh dấu thời gian các văn bản số, để chúng không bị đề lùi ngày về trước hoặc can thiệp vào. Hệ thống đã sử dụng một chuỗi gồm các khối được bảo mật bằng mật mã để lưu trữ các văn bản được đánh dấu thời gian.

Và năm 1992, các cây Merkle đã được tích hợp vào thiết kế, khiến nó trở nên hiệu quả hơn bằng cách cho phép một khối có thể tập hợp một vài văn bản. Tuy nhiên, công nghệ này đã không được sử dụng và bằng sáng chế đã hết hạn vào năm 2004, bốn năm trước khi Bitcoin ra đời.

Năm 2004, nhà khoa học máy tính và người theo chủ nghĩa mật mã Hal Finney (Harold Thomas Finney II) đưa ra một hệ thống gọi là RPoW, Proof Of Work Tái sử dụng. Hệ thống hoạt động bằng cách nhận một Hashcash không thể thay đổi hoặc không thể thay thế dựa trên token proof of work, và đổi lại đã tạo ra một token đã được ký RSA mà sau đó có thể được trao đổi trực tiếp từ người này sang người khác.

RPoW đã giải quyết vấn đề vì tiêu dùng hai lần bằng cách lưu giữ quyền sở hữu các token đã đăng ký trên một máy chủ đáng tin cậy; máy chủ này được thiết kế để cho phép người dùng trên toàn thế giới xác minh tính chính xác và liêm chính trong thời gian thực. RPoW có thể được xem là một thử nghiệm ban đầu và là những bước đầu tiên quan trọng trong lịch sử tiền điện tử.

Vào cuối năm 2008, cuốn sách trắng giới thiệu về hệ thống tiền mặt điện tử mạng ngang hàng, phi tập trung – tên là Bitcoin – đã được đăng trên danh sách nhận thư về mật mã học bởi một người hoặc tổ chức lấy biệt danh là Satoshi Nakamoto. Dựa trên thuật toán proof of work Hashcash, nhưng thay vì sử dụng một hàm tính toán dựa trên phần cứng như RPoW, tính năng chống chi tiêu hai lần trong Bitcoin được cung cấp bởi một giao thức mạng ngang hàng để theo dõi và xác thực các giao dịch. Nói ngắn gọn, các thợ đào “đào” Bitcoin để nhận phần thưởng bằng cách sử dụng cơ chế proof-of-work và sau đó xác minh bằng các node phi tập trung trong mạng. Vào ngày 3 tháng 1 năm 2009, Bitcoin ra đời khi Satoshi Nakamoto đào được khối bitcoin đầu tiên, đem lại phần thưởng 50 bitcoin. Người nhận Bitcoin đầu tiên là Hal Finney, ông ta nhận được 10 bitcoin từ Satoshi Nakamoto trong giao dịch bitcoin đầu tiên của thế giới vào ngày 12 tháng 1 năm 2009.

Nguyên lý hoạt động của Blockchain

Blockchain là gì? Các ứng dụng liên quan đến Blockchain

1. Nguyên lý mã hoá

Trên thực tế, cuốn sổ cái luôn được duy trì bởi các máy tính trong mạng ngang hàng được kết nối với nhau. Vì thế, nó sẽ có một số điểm khác biệt:​

Trong hệ thống ngân hàng, chúng ta chỉ biết các giao dịch và số dư tài khoản của riêng mình thì trên blockchain của bitcoin bạn có thể xem các giao dịch của tất cả mọi người.​Mạng lưới Bitcoin là mạng lưới phân tán không cần bên thứ ba đóng vai trò trung gian xử lý giao dịch.​Hệ thống blockchain được thiết kế theo cách không yêu cầu sự tin cậy và bảo đảm bởi độ tin cậy có được thông qua các hàm mã hóa toán học đặc biệt.​Để có thể thực hiện các giao dịch trên blockchain, bạn cần một phần mềm sẽ cho phép bạn lưu trữ và trao đổi các đồng Bitcoin của bạn gọi là ví tiền điện tử. Ví tiền điện tử này sẽ được bảo vệ bằng một phương pháp mã hóa đặc biệt đó là sử dụng một cặp khóa bảo mật duy nhất: khóa riêng tư (private key) và khóa công khai (public key).

Nếu một thông điệp được mã hóa bằng một khóa công khai cụ thể thì chỉ chủ sở hữu của khóa riêng tư là một cặp với khóa công khai này mới có thể giải mã và đọc nội dung thông điệp.

Khi mã hóa một yêu cầu giao dịch bằng khóa riêng tư, có nghĩa là bạn đang tạo ra một chữ ký điện tử được các máy tính trong mạng lưới blockchain sử dụng để kiểm tra chủ thể gửi và tính xác thực của giao dịch. Chữ ký này là một chuỗi văn bản và là sự kết hợp của yêu cầu giao dịch và khóa riêng tư của bạn.

Nếu một ký tự đơn trong thông điệp yêu cầu giao dịch này bị thay đổi thì chữ ký điện tử sẽ thay đổi theo. Vì thế, hacker khó có thể thay đổi yêu cầu giao dịch của bạn hoặc thay đổi số lượng Bitcoin mà bạn đang gửi.

Blockchain là gì? Các ứng dụng liên quan đến Blockchain

Để gửi Bitcoin (BTC), bạn cần chứng minh rằng bạn sở hữu khóa riêng tư của một chiếc ví điện tử cụ thể bởi bạn cần sử dụng nó để mã hóa thông điệp yêu cầu giao dịch. Sau khi tin nhắn của bạn đã được gửi đi và được mã hóa thì bạn không cần phải tiết lộ khóa riêng tư của bạn nữa.

2. Quy tắc của sổ cái

Mỗi nút trong blockchain đều đang lưu giữ một bản sao của sổ kế toán. Do vậy, mỗi nút đều biết số dư tài khoản của bạn là bao nhiêu. Hệ thống blockchain chỉ ghi lại mỗi giao dịch được yêu cầu chứ không hề theo dõi số dư tài khoản của bạn.

Để biết số dư trên ví điện tử của mình thì bạn cần xác thực và xác nhận tất cả các giao dịch đã diễn ra trên mạng lưới mà có liên quan tới ví điện tử của bạn.

Blockchain là gì? Các ứng dụng liên quan đến Blockchain

Việc xác minh “số dư” này được thực hiện nhờ các tính toán dựa vào liên kết đến các giao dịch trước đó. Nhìn vào hình trên, để gửi 10btc cho John, Mary cần tạo yêu cầu giao dịch bao gồm các liên kết đến các giao dịch đã diễn ra trước đó với tổng số dư bằng hoặc vượt quá 10 btc.

Các liên kết này được xem như là giá trị đầu vào, các nút trong mạng lưới sẽ xác minh xem tổng số tiền của các giao dịch này bằng hoặc vượt quá 10 btc không. Tất cả điều này được thực hiện tự động trong ví điện tử của Mary và được kiểm tra bởi các nút trên mạng lưới Bitcoin, Mary chỉ gửi một giao dịch 10 bitcoin tới ví của John bằng khóa công khai của John.

Blockchain là gì? Các ứng dụng liên quan đến Blockchain

Vậy, làm thế nào hệ thống có thể tin tưởng các giao dịch đầu vào này và xác thực tính hợp lệ của chúng?

Thực tế là các nút sẽ kiểm tra tất cả các giao dịch có liên quan đến ví tiền điện tử bạn sử dụng trước đó để gửi Bitcoin (BTC) thông qua việc tham chiếu các lịch sử giao dịch. Có một bản ghi sẽ lưu trữ số BTC chưa được dùng và được các nút mạng lưu giữ giúp đơn giản hóa và tăng tốc quá trình xác minh. Vì thế, các ví tiền điện tử tránh được tình trạng chi tiêu đúp giao dịch.

=> “Như vậy sở hữu Bitcoin có nghĩa là có các giao dịch được lưu trong sổ kế toán liên hệ đến địa chỉ ví của bạn mà chưa được sử dụng làm giao dịch đầu vào.”

Mã nguồn trên mạng lưới Bitcoin là nguồn mở, có nghĩa là bất kỳ ai có máy tính kết nối được internet đều có thể tham gia vào mạng lưới và thực hiện giao dịch.

Tuy nhiên, nếu có bất kỳ một lỗi nào trong mã nguồn được sử dụng để phát thông báo yêu cầu giao dịch thì các Bitcoin liên quan sẽ bị mất vĩnh viễn.

3. Nguyên lý tạo khối

Các giao dịch sau khi được gửi lên trên mạng lưới blockchain sẽ được nhóm vào các khối và các giao dịch trong cùng 1 khối (block) được coi là đã xảy ra cùng thời điểm. Các giao dịch chưa được thực hiện trong 1 khối được coi là chưa được xác nhận.

Mỗi nút có thể nhóm các giao dịch với nhau thành một khối và gửi nó vào mạng lưới như một hàm ý cho các khối tiếp theo được gắn vào sau đó.

Bất kỳ nút nào cũng có thể tạo ra một khối mới. Vậy, câu hỏi đặt ra là: hệ thống sẽ đồng thuận với khối nào? khối nào sẽ là khối tiếp theo?

Để được thêm vào blockchain, mỗi khối phải chứa một đoạn mã đóng vai trò như một đáp án cho một vấn đề toán học phức tạp được tạo ra bằng hàm mã hóa băm không thể đảo ngược.

Cách duy nhất để giải quyết vấn đề toán học như vậy là đoán các số ngẫu nhiên, những số khi mà kết hợp với nội dung khối trước tạo ra một kết quả đã được hệ thống định nghĩa. Điều này nhiều khi có thể mất khoảng một năm cho một máy tính điển hình với một cấu hình cơ bản có thể đoán đúng các con số đáp án của vấn đề toán học này.

Mạng lưới quy định mỗi khối được tạo ra sau một quãng thời gian là 10 phút một lần, bởi vì trong mạng lưới luôn có một số lượng lớn các máy tính đều tập trung vào việc đoán ra dãy số này. Nút nào giải quyết được vấn đề toán học như vậy sẽ được quyền gắn khối tiếp theo lên trên chuỗi và gửi nó tới toàn bộ mạng lưới.

Vậy điều gì sẽ xảy ra nếu hai nút giải quyết cùng một vấn đề cùng một lúc và truyền các khối kết quả của chúng đồng thời lên mạng lưới? Trong trường hợp này, cả hai khối được gửi lên mạng lưới và mỗi nút sẽ xây dựng các khối kế tiếp trên khối mà nó nhận được trước tiên.

Tuy nhiên, hệ thống blockchain luôn yêu cầu mỗi nút phải xây dựng trên chuỗi khối dài nhất mà nó nhận được. Vì vậy, nếu có sự mơ hồ về việc block nào là khối cuối cùng thì ngay sau khi khối tiếp theo được giải quyết thì mỗi nút sẽ áp dụng vào chuỗi dài nhất.

Blockchain là gì? Các ứng dụng liên quan đến Blockchain

Do xác suất việc xây dựng các block đồng thời là rất thấp nên hầu như không có trường hợp nhiều khối được giải quyết cùng một lúc và nhiều lần tạo ra các khối nối đuôi khác nhau. Do đó, toàn bộ chuỗi-khối sẽ nhanh chóng ổn định và hợp nhất lại khi mà mọi nút đều đồng thuận.

4. Thuật toán bảo mật Blockchain

Nếu có bất kỳ sự bất đồng về khối đại diện sau cùng của chuỗi thì điều này sẽ dẫn đến khả năng gian lận. Nếu một giao dịch xảy ra trong 1 khối thuộc về đuôi ngắn hơn khi khối tiếp theo được giải quyết, giao dịch đó sẽ trở lại thành giao dịch chưa được xác nhận vì tất cả các giao dịch khác được nhóm vào trong khối kia.

Mỗi block chứa một tham chiếu đến khối trước đó, và tham chiếu đó là một phần của vấn đề toán học cần được giải quyết để truyền khối sau tới mạng lưới. Vì vậy, rất khó để tính toán trước một loạt các block bởi nó cần tính ra một số lượng lớn các số ngẫu nhiên cần thiết để giải quyết một khối và đặt nó trên blockchain.

Các giao dịch trong mạng lưới blockchain của bitcoin được bảo vệ bởi một cuộc chạy đua tính toán toán học: với bất kỳ kẻ tấn công nào muốn cạnh tranh với toàn bộ mạng lưới.

Do đó, giao dịch ngày càng an toàn hơn theo thời gian. Và những khối đã được thêm vào chuỗi trong quá khứ bao giờ cũng an toàn hơn so với những khối mới được thêm vào. Bởi một block được thêm vào chuỗi trung bình cứ 10p một lần cho nên trong khoảng 1h kể từ khi giao dịch được nhóm vào trong khối đầu tiên của nó sẽ tạo ra một xác suất khá cao rằng giao dịch đã được xử lý và không thể đảo ngược.

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ác loại trong hệ thống Blockchain

Trong hệ thống Blockchain chia thành 3 loại chính gồm:

  • Public: Đây là hệ thống blockchain mà bất kỳ ai cũng có quyền đọc và ghi dữ liệu trên Blockchain được. Quá trình xác thực giao dịch trên Blockchain này đòi hỏi phải có hàng nghìn hay thậm chí là hàng vạn nút tham gia. Do đó để tấn công vào hệ thống Blockchain này là điều bất khả thi vì chi phí rất cao. Ví dụ về public blockchain: Bitcoin, Ethereum…
  • Private: Đây là hệ thống blockchain cho phép người dùng chỉ được quyền đọc dữ liệu, không có quyền ghi vì điều này thuộc về một bên thứ ba tuyệt đối tin cậy. Bên thứ ba này có thể hoặc không cho phép người dùng đọc dữ liệu trong một số trường hợp. Bên thứ ba toàn quyền quyết định mọi thay đổi trên Blockchain. Vì đây là một Private Blockchain, cho nên thời gian xác nhận giao dịch khá nhanh vì chỉ cần một lượng nhỏ thiết bị tham gia xác thực giao dịch. Ví dụ: Ripple là một dạng Private Blockchain, hệ thống này cho phép 20% các nút là gian dối và chỉ cần 80% còn lại hoạt động ổn định là được.
  • Permissioned: Hay còn gọi là Consortium, là một dạng của Private Blockchain nhưng bổ sung thêm một số tính năng nhất định, kết hợp giữa “niềm tin” khi tham gia vào Public và “niềm tin tuyệt đối” khi tham gia vào Private. Ví dụ: Các ngân hàng hay tổ chức tài chính liên doanh sẽ sử dụng Blockchain cho riêng mình.

Các cơ chế đồng thuận trong Blockchain

Cơ chế đồng thuận trong Blockchain có thể hiểu như cách thức mà mọi người quản lý trong hệ thống blockchain có thể đồng ý cho một giao dịch xảy ra trong hệ thống. Dưới đây là các loại cơ chế đồng thuận phổ biến trong blockchain:

  • Proof of Work (Bằng chứng Công việc): Đây là cơ chế đồng thuận phổ biến nhất, được dùng trong Bitcoin, Ethereum, Litecoin, Dogecoin và hầu hết các loại tiền mã hoá. Đây là cơ chế đồng thuận tiêu tốn khá nhiều điện năng.
  • Proof of Stake (Bằng chứng Cổ phần): Đây là cơ chế đồng thuận phổ biến trong Decred, Peercoin và trong tương lai là Ethereum và nhiều loại tiền mã hoá khác. Cơ chế đồng thuận này phân cấp hơn, tiêu hao ít năng lượng và không dễ gì bị đe doạ.
  • Delegated Proof-of-Stake (Uỷ quyền Cổ phần): Đây là cơ chế đồng thuận phổ biến trong Steemit, EOS, BitShares. Cơ chế đồng thuận này có chi phí giao dịch rẻ; có khả năng mở rộng; hiệu suất năng lượng cao. Tuy nhiên vẫn một phần hơi hướng tập trung vì thuật toán này lựa chọn người đáng tin cậy để uỷ quyền.
  • Proof of Authority (Bằng chứng Uỷ nhiệm): Đây là cơ chế đồng thuận phổ biến thường thấy trong POA.Network, Ethereum Kovan testnet. Cơ chế đồng thuận này có hiệu suất cao, có khả năng mở rộng tốt.
  • Proof-of-Weight (Bằng chứng Khối lượng /Càng lớn càng tốt): Đây là cơ chế đồng thuận phổ biến trong Algorand, Filecoin. Cơ chế đồng thuận này có thể tuỳ chỉnh và khả năng mở rộng tốt. Tuy nhiên quá trình thúc đẩy việc phát triển sẽ là một thử thách lớn.
  • Byzantine Fault Tolerance (Đồng thuận chống gian lận /Tướng Byzantine bao vây Blockchain): Đây là cơ chế đồng thuận phổ biến trong Hyperledger, Stellar, Dispatch, và Ripple. Cơ chế đồng thuận này có năng suất cao; chi phí thấp; có khả năng mở rộng. Tuy nhiên vẫn chưa thể tin tưởng hoàn toàn.

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…

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

Việt Trần

 

 

 

 

 

 

 

 

Báo cáo bài viết vi phạm bản quyền>>