Abstract
Quote
We present a comprehensive overview on blockchain powered smart contracts. First, we give a systematic introduction to smart contracts, including the basic framework, operating mechanisms, platforms and programming languages. Second, application scenarios and existing challenges are discussed. Finally, we describe the recent advances of smart contract and present its future development trends, e.g., parallel blockchain.
Introduction
Có thể xem smart contract như là một hợp đồng có khả năng tự động thực thi dựa trên các điều khoản giữa các bên liên quan. Contract được viết dưới dạng mã chương trình và tồn tại ở tất cả các nodes trong mạng lưới blockchain. Smart contract cho phép các giao dịch có thể được thực hiện giữa những tổ chức ẩn danh hoặc không tin cậy mà không cần phụ thuộc vào một bên thứ ba.
Công nghệ blockchain của Bitcoin được gọi là blockchain 1.0, bao gồm những tính chất sau: phân tán, chống làm giả (tamper-resistant), ẩn danh và có thể kiểm toán1. Tuy nhiên, việc viết những contract chứa những logic phức tạp là không thể đối với các giới hạn của Bitcoin’s Scripting Language. Một trong số những giới hạn là nó chỉ có 256 instruction mà trong đó có 15 cái bị disabled và 75 cái bị reserved. Bởi vì những giới hạn như vậy mà Bitcoin chỉ được xem như là prototype cho các smart contract.
Các nền tảng blockchain mới nổi khác chẳng hạn Ethereum cho phép chạy các chương trình của người dùng trên blockchain với sự hỗ trợ của các ngôn ngữ Turing-complete chẳng hạn như Solidity hay Serpent. Ngoài Ethereum thì còn có các nền tảng khác chẳng hạn như Hyperledger Fabric, Corda, … Các nền tảng blockchain mà cho phép phát triển smart contract thì được gọi là blockchain 2.0.
Việc triển khai các smart contract được thực thi bởi các giao thức đồng thuận. Các contract có thể chứa bất kỳ các quy tắc nào được xác định trước và sẽ thực thi các thao tác tương ứng khi các điều kiện kích hoạt được thỏa mãn.
Tuy nhiên, smart contract vẫn phải đối mặt với nhiều thách thức kỹ thuật. Ví dụ nổi tiếng nhất là “Recursive calls attack” nhằm khai thác DAO (Decentralized Autonomous Organization) 🤔 vào tháng 6 năm 2016.
Smart Contract
Basic Framework of Blockchain
Một hệ thống blockchain điển hình sẽ bao gồm 6 thành tầng, lần lượt là:
- Data: bao gồm dữ liệu của các block, các thông điệp được mã hóa và timestamp, etc.
- Network: là nơi triển khai mạng P2P. Mạng này có các tính chất: phân tán, ẩn danh và ngang hàng.
- Consensus: đóng gói một số giao thức đồng thuận.
- Incentive: lấy ví dụ với Bitcoin, cơ chế incentive của nó gồm hai phần là mining reward và transaction fee.
- Contract: đóng gói code, thuật toán và các smart contract.
- Application: ứng dụng chính của hệ thống Bitcoin là chuyển tiền kỹ thuật số. Với nền tảng Ethereum thì ngoài chuyển tiền thì nó còn hỗ trợ dApp (Decentralized Applications).
The Operating Mechanisms of Smart Contracts
Thông thường, sau khi smart contract được ký bởi tất cả các tổ chức, nó sẽ được thêm vào một block dưới dạng một transaction. Block này sẽ được lan truyền đến các node trong mạng P2P để xác thực. Nếu kết quả xác thực là thành công thì smart contract sẽ được gắn vào blockchain. Như vậy, việc deploy một smart contract tương tự với việc thực hiện một giao dịch.
Smart contract đóng gói một số các trạng thái được định nghĩa trước (pre-defined state) và các quy tắc chuyển đổi (transition rule) cũng như là các trường hợp kích hoạt thực thi contract (chẳng hạn như là vào một thời điểm hay khi một sự kiện cụ thể nào đó xảy ra) và các phản hồi cho từng trường hợp, etc.
Blockchain sẽ theo dõi trạng thái thời gian thực của các smart contract và thực thi contract sau khi một số điều kiện kích hoạt được thỏa mãn.
Platforms and Programming Languages
Ethereum
- Code của Ethereum smart contract được viết bằng ngôn ngữ stack-based bytecode và được thực thi trong EVM2. Một số ngôn ngữ bậc cao chẳng hạn như Solidity hay Serpent có thể được sử dụng để viết Ethereum smart contract.
- Các ứng dụng chạy trên nền tảng Ethereum sử dụng tiền mã hóa của nền tảng này - Ether. Ether được sử dụng theo hai cách: hoặc được dùng để trao đổi như các loại tiền kỹ thuật số khác giống Bitcoin, hoặc là để thưởng cho các node tham gia trong mạng khi thực hiện việc xác thực.
Hyperledger Fabric
- Để phát triển smart contract trên nền tảng Hyperledger Fabric, ta có thể sử dụng Go, Java hoặc Node.js.
- Bản chất của việc deploy smart contract lên Hyperledge Fabricc là sử dụng ba hàm: Init, Invoke and Query trong “Chaincode” interface. Các hàm này có các chức năng lần lượt là: triển khai việc deploy của contract, xử lý transaction và truy vấn transaction.
Characteristics and Significance
Smart contract có ba tính chất:
- Tính ẩn danh: Sau khi được khởi chạy và thực thi, các smart contract và các tổ chức liên quan không còn có liên kết với nhau. Điều này đảm bảo tính riêng tư và không tiết lộ thông tin nhạy cảm của các bên tham gia.
- Tính tự cấp (self-sufficiency): Smart contract có khả năng tự cung cấp và quản lý tài nguyên. Chẳng hạn, nó có thể tự gây quỹ bằng cách cung cấp dịch vụ và chi tiêu khi cần thiết, chẳng hạn như sử dụng sức mạnh xử lý hoặc lưu trữ.
- Tính phân tán: Smart contract không tồn tại trên một máy chủ tập trung duy nhất, mà được phân tán trên nhiều node. Điều này đảm bảo tính phân tán và khả năng tự động thực thi của contract trên mạng lưới, giúp tăng tính tin cậy và bảo mật.
Application Scenarios of Smart Contracts
Smart contract có thể được áp dụng trong các lĩnh vực sau:
- Giao dịch tài chính: smart contract có thể được sử dụng để huy động vốn từ cộng đồng, tạo ra các hình thức cho vay ngang hàng (P2P lending) và thực hiện giao dịch bảo hiểm trực tuyến.
- Thị trường dự đoán (cá cược): các nền tảng như Augur và Gnosis sử dụng smart contract để tạo ra các thị trường dự đoán, nơi người dùng có thể đặt cược trên các sự kiện và kết quả.
- Internet of Things (IoT):
- Chia sẻ dữ liệu giữa các thiết bị: smart contract có thể được sử dụng để quản lý việc chia sẻ dữ liệu giữa các thiết bị IoT một cách an toàn và minh bạch.
- Chia sẻ tài sản: smart contract cho phép chia sẻ các loại tài sản khác nhau, chẳng hạn như nhà, xe và hàng hóa, mà không cần sự trung gian của bên thứ ba. Điều này giúp tăng tính bảo mật và tiện lợi cho người dùng. Ví dụ như dự án Slock.it.
- Lưới điện thông minh: smart contract có thể được sử dụng trong lĩnh vực lưới điện thông minh, nơi năng lượng tái tạo có thể được mua bán trực tiếp trên thị trường ngang hàng (P2P) thông qua các smart contract.
Challenges
Các thách thức mà smart contract phải đối mặt gần đây bao gồm:
- Lỗ hổng reentrancy (Reentrancy Vulnerability): đây là một lỗ hổng mà attacker có thể lặp lại việc rút tiền từ smart contract nhiều lần bằng cách lợi dụng chức năng gọi hàm đệ quy, dẫn đến mất mát tài sản.
- Transaction-ordering dependence (TDO): lỗ hổng này liên quan đến việc các miner có quyền quyết định thứ tự xử lý của các giao dịch trong một block. Điều này có thể bị khai thác bởi các attacker để thao túng trạng thái cuối cùng của smart contract.
- Timestamp dependence: các smart contract có thể dễ bị tấn công nếu chúng phụ thuộc vào timestamp của một block để kích hoạt những hành động nhất định. Vì miner có thể thao túng timestamp, điều này có thể dẫn đến thay đổi kết quả của contract.
- Thiếu nguồn cung cấp dữ liệu đáng tin cậy: các smart contract có thể cần phải phụ thuộc vào các nguồn dữ liệu bên ngoài, nhưng độ tin cậy và bảo mật của dữ liệu này không được đảm bảo. Điều này có thể gây ra vấn đề liên quan đến độ chính xác và bảo mật của contract.
- Vấn đề về quyền riêng tư: trên blockchain, tất cả các giao dịch đều công khai, cho phép attacker nhận diện người dùng và thông tin riêng tư thông qua việc phân tích các mẫu giao dịch. Điều này gọi là tấn công khử ẩn danh (deanonymization attack).
Footnotes
-
Xem thêm Blockchain Challenges and Opportunities - a Survey. ↩
-
Xem thêm Blockchain Smart Contracts ↩