Hợp đồng thông minh (smart contract) là một chương trình nhỏ nằm trên blockchain, chạy đúng y như đã viết mỗi khi có người gọi tới. Nó có thể tự giữ và chuyển tài sản số, kiểu ký quỹ hay hoán đổi token, mà không cần bên trung gian. Thứ nó không làm được là tự biết chuyện ngoài blockchain, hiểu ý định của con người, hay tự sửa lỗi của chính mình, và sai thì thường không đảo ngược được.
Cái tên dễ gây hiểu lầm. Hợp đồng thông minh chẳng thông minh gì, và nhiều khi cũng không phải hợp đồng theo nghĩa pháp lý. Nó giống cái máy bán nước tự động hơn: bỏ đúng đầu vào là ra đúng kết quả đã lập trình, lần nào cũng vậy, bất kể kết quả đó có phải điều ai đó thật sự muốn hay không.
Hợp đồng thông minh thật ra chạy thế nào
Lập trình viên viết hợp đồng bằng một ngôn ngữ lập trình, biên dịch rồi đăng lên blockchain bằng một giao dịch riêng. Từ lúc đó hợp đồng có một địa chỉ y như ví, và có thể giữ tài sản. Mã của nó công khai: ai cũng đọc được, ai cũng gọi được các hàm của nó bằng cách gửi giao dịch tới địa chỉ đó.
Khi mình gọi một hàm, chẳng hạn "đổi số token này lấy token kia", mọi nút xử lý khối đều chạy cùng đoạn mã với cùng đầu vào và phải ra cùng kết quả. Chính sự lặp lại ấy làm kết quả đáng tin: không công ty nào lặng lẽ sửa được đáp án. Đó cũng là lý do chạy mã trên blockchain công khai phải trả phí, thường gọi là gas, và hợp đồng càng phức tạp càng tốn tiền dùng.
Vì mọi nút phải ra cùng một đáp án, hợp đồng không tự tra một trang web, xem thời tiết hay đọc số dư ngân hàng được. Những câu trả lời đó có thể khác nhau giữa các nút hoặc thay đổi theo thời gian. Mọi thông tin từ thế giới bên ngoài đều phải có người mang vào và ghi lên chuỗi.
Hình ảnh máy bán nước tự động ở đây rất khớp. Cái máy không biết mình có khát hay không, đồng xu có phải đồ ăn cắp hay không, hay mình có bấm nhầm nút không. Nó kiểm đồng xu, kiểm nút bấm, rồi nhả lon nước. Hợp đồng thông minh cũng vậy, chỉ có điều bên trong chứa nhiều tiền hơn hẳn và không có ai trực máy để gọi.
Hợp đồng thông minh làm tốt những việc gì
Ký quỹ không cần trung gian. Tiền bị khoá cho tới khi điều kiện đã thoả thuận trên chuỗi được đáp ứng, rồi tự chuyển cho đúng bên.
Phát hành và quản lý token. Luật về tổng số token và cách token di chuyển được thực thi bằng mã mà ai cũng soi được.
Hoán đổi tài sản. Các sàn tự động cho phép người dùng giao dịch thẳng với một bể tài sản do hợp đồng giữ, không cần sổ lệnh do một công ty vận hành.
Ví chung cần nhiều chữ ký. Hợp đồng đa chữ ký chỉ chuyển tiền khi, ví dụ, hai trong ba giám đốc cùng ký, giúp công ty và gia đình tránh để một người nắm toàn quyền.
Luật chơi minh bạch. Mọi luật đều công khai và áp như nhau cho mọi người, bớt được kiểu ưu ái ngầm hay đổi luật lặng lẽ.
Chạy suốt ngày đêm. Không có giờ hành chính, không nghỉ lễ Tết. Gọi lúc nào hợp đồng cũng trả lời.
Ghép nối với nhau. Hợp đồng gọi được hợp đồng khác, nên lập trình viên xây tiếp trên các mảnh có sẵn, giống ứng dụng dùng chung các dịch vụ nền.
Để lại dấu vết kiểm tra. Mọi lần gọi đều ghi trên blockchain, rất có ích khi về sau các bên cãi nhau chuyện gì đã xảy ra.
Những việc hợp đồng thông minh không làm được
Tự biết sự thật ngoài đời. Giá cả, xác nhận giao hàng hay số liệu thời tiết phải do một "oracle" cung cấp, tức dịch vụ ghi dữ liệu bên ngoài lên chuỗi. Oracle sai hoặc bị thao túng thì hợp đồng hành động theo dữ liệu sai.
Hiểu ý mình. Phê duyệt nhầm số tiền hay gọi nhầm hàm, hợp đồng làm đúng điều mình bảo chứ không làm điều mình định.
Tự sửa lỗi. Hợp đồng đã đăng thường không sửa được. Đã có những lỗ hổng bị khai thác để rút những khoản rất lớn, và tiền hiếm khi quay về.
Bảo đảm giá trị pháp lý. Đoạn mã chạy trên blockchain không mặc nhiên được coi là hợp đồng hợp lệ theo luật Việt Nam hay luật nước nào. Vẫn cần tới luật sư.
Giữ bí mật. Dữ liệu trên chuỗi công khai thì ai cũng xem được. Hợp đồng cần bảo mật phải thiết kế thêm nhiều lớp.
Vừa nâng cấp được vừa không cần tin ai. Nhiều hợp đồng có khoá quản trị (admin key) cho đội phát triển nâng cấp mã. Sửa lỗi thì tiện, nhưng nghĩa là mình đang tin người cầm khoá đó.
Bảo vệ mình khỏi việc ký nhầm thứ độc hại. Ví sẵn sàng ký một lệnh phê duyệt độc. Hợp đồng chẳng hề biết mình bị lừa.
Quyền phê duyệt token: cái quyền nhiều người quên mình đã cấp
Để một ứng dụng được chuyển token của mình, thường mình phải ký một lệnh "phê duyệt" (approval), đại ý hợp đồng này được tiêu tối đa từng này token loại này từ địa chỉ của mình. Nhiều app xin phê duyệt không giới hạn cho lần sau khỏi phải ký lại. Tiện thật, và quyền đó vẫn còn hiệu lực rất lâu sau khi mình thôi dùng app.
Nếu về sau hợp đồng đó bị khai thác, hoặc vốn dĩ là đồ độc ngay từ đầu, kẻ tấn công có thể rút token từ mọi ví từng cấp quyền cho nó. Nhiều người mất tiền kiểu này đã mấy tháng không đụng tới app. Họ chẳng gửi gì đi cả, chỉ là quên một cái quyền.
Cách phòng nhàm chán nhưng hiệu quả. Chỉ phê duyệt đúng số cần dùng khi ví cho chọn. Dùng một ví riêng với số dư nhỏ để thử app mới. Vài tháng một lần, dùng một công cụ kiểm tra phê duyệt có uy tín, vào bằng cách tự gõ địa chỉ, để rà và thu hồi những quyền không còn cần. Thu hồi tốn một khoản phí nhỏ, đổi lại là một lớp bảo hiểm rẻ.
Doanh nghiệp nên thẩm định đề xuất "hợp đồng thông minh" ra sao
Thỉnh thoảng nhà cung cấp chào hợp đồng thông minh cho chuỗi cung ứng, điểm thưởng hay thanh toán. Trước khi ký gì, nên ngồi lại với đội ngũ và đi qua các câu hỏi sau.
- Hỏi nó giải quyết vấn đề gì mà cơ sở dữ liệu thường không làm được. Nếu mọi bên đã tin một đơn vị giữ sổ sách, blockchain có khi chỉ thêm chi phí chứ không thêm giá trị.
- Chỉ ra từng oracle. Dữ liệu bên ngoài lấy từ đâu, ai kiểm soát, sai thì chuyện gì xảy ra?
- Hỏi ai giữ khoá quản trị. Hợp đồng nâng cấp được nghĩa là có người đổi được luật. Hỏi rõ ai, đổi bằng cách nào, cần bao nhiêu chữ ký.
- Xin báo cáo kiểm toán. Kiểm toán độc lập giảm rủi ro chứ không xoá rủi ro. Xem ngày kiểm toán và đoạn mã được kiểm có đúng là mã đang chạy không.
- Lên phương án khi hỏng. Hợp đồng có lỗi hoặc nhà cung cấp biến mất thì tiền và dữ liệu sẽ ra sao?
- Kiểm phần pháp lý. Hỏi luật sư xem thoả thuận có thực thi được không và đặt cạnh quy định hiện hành về tài sản số tại Việt Nam thì thế nào.
Câu hỏi thường gặp
Hợp đồng thông minh có giá trị pháp lý không?
Không mặc nhiên. Thoả thuận bằng mã có thực thi được hay không tuỳ luật từng nước, nên doanh nghiệp nên kèm một văn bản hợp đồng bình thường có luật sư xem.
Oracle trong blockchain là gì?
Oracle là dịch vụ đưa thông tin bên ngoài, như giá cả hay sự kiện giao hàng, lên blockchain để hợp đồng dùng. Nó hay là điểm yếu nhất, vì hợp đồng tin bất cứ điều gì oracle báo.
Hợp đồng thông minh đã đăng có sửa được không?
Hợp đồng cơ bản thì không. Thiết kế nâng cấp được thì có, nhưng qua khoá quản trị do ai đó giữ, nghĩa là quay lại chuyện phải tin người hoặc nhóm đó.
Đã kiểm toán có nghĩa là hợp đồng an toàn?
Kiểm toán giảm rủi ro nhưng không xoá được; hợp đồng đã kiểm toán vẫn từng bị khai thác. Xem kiểm cái gì, khi nào, và các lần sửa sau đó có được rà lại không.
Thu hồi quyền phê duyệt token thế nào?
Dùng công cụ kiểm tra phê duyệt có uy tín hoặc trang quản lý quyền có sẵn trong ví, vào bằng cách tự gõ địa chỉ, rồi thu hồi những quyền không dùng nữa. Mỗi lần thu hồi là một giao dịch nhỏ trên chuỗi, có tốn phí.