Coi chừng hợp đồng thông minh bất khả thi

Nút nguồn: 1576899

Ba quan niệm sai lầm phổ biến nhất về hợp đồng thông minh

Là các nhà phát triển của một nền tảng blockchain phổ biến, đôi khi chúng tôi được hỏi liệu các hợp đồng thông minh giống Ethereum có trên Đa chuỗi lộ trình. Câu trả lời tôi luôn đưa ra là: không, hoặc ít nhất là chưa.

Nhưng trong thế giới đầy quảng cáo của các blockchain, các hợp đồng thông minh đang là cơn thịnh nộ, vậy tại sao lại không? Chà, vấn đề là, mặc dù hiện tại chúng ta đã biết về ba trường hợp sử dụng mạnh mẽ cho các blockchain kiểu Bitcoin được phép (xuất xứ, hồ sơ liên công ty và tài chính gọn nhẹ), chúng ta vẫn chưa tìm thấy điều tương đương cho các hợp đồng thông minh kiểu Ethereum.

Không phải là mọi người thiếu ý tưởng về những gì họ muốn các hợp đồng thông minh thực hiện. Đúng hơn, có quá nhiều ý tưởng đơn giản là không thể. Bạn thấy đấy, khi những người thông minh nghe thấy thuật ngữ “hợp đồng thông minh”, trí tưởng tượng của họ có xu hướng chạy lung tung. Họ gợi lên giấc mơ về phần mềm thông minh tự động, đi ra thế giới, mang theo dữ liệu của nó cho chuyến đi.

Thật không may, thực tế của các hợp đồng thông minh còn trần tục hơn tất cả những điều đó:

Hợp đồng thông minh là một đoạn mã được lưu trữ trên một blockchain, được kích hoạt bởi các giao dịch blockchain và đọc và ghi dữ liệu trong cơ sở dữ liệu của blockchain đó.

Đó là nó. Có thật không. Hợp đồng thông minh chỉ là một cái tên ưa thích cho mã chạy trên một blockchain và tương tác với trạng thái của blockchain đó. Vậy thì sao is mã? Đó là Pascal, là Python, là PHP. Đó là Java, là Fortran, là C ++. Nếu chúng ta đang nói về cơ sở dữ liệu, thì thủ tục lưu trữ được viết bằng một phần mở rộng của SQL. Tất cả các ngôn ngữ này về cơ bản là tương đương nhau, giải quyết các loại vấn đề giống nhau theo các cách giống nhau. Tất nhiên, mỗi thứ đều có điểm mạnh và điểm yếu - bạn sẽ rất điên rồ khi xây dựng một trang web bằng C hoặc nén video HD bằng Ruby. Nhưng về nguyên tắc, ít nhất bạn có thể nếu bạn muốn. Bạn sẽ phải trả một cái giá đắt về sự tiện lợi, hiệu suất và rất có thể là mái tóc của bạn.

Vấn đề với các hợp đồng thông minh không chỉ là kỳ vọng của mọi người bị thổi phồng quá mức. Đó là những kỳ vọng khiến nhiều người dành thời gian và tiền bạc cho những ý tưởng không thể thực hiện được. Có vẻ như các công ty lớn có đủ nguồn lực để đi một chặng đường dài - từ thời điểm khi ban lãnh đạo cấp cao bắt gặp một công nghệ mới, đến khi những ưu điểm và hạn chế của công nghệ đó thực sự được hiểu rõ. Có lẽ kinh nghiệm của chúng ta có thể giúp rút ngắn thời gian này.

Trong chín tháng qua, chúng tôi đã giới thiệu nhiều trường hợp sử dụng hợp đồng thông minh và nhận thấy rằng bản thân phản hồi, hết lần này đến lần khác, rằng chúng đơn giản là không thể thực hiện được. Do đó, chúng tôi đã xác định được ba quan niệm sai lầm về hợp đồng thông minh phổ biến nhất. Những ý kiến ​​này không sai bởi vì công nghệ còn non nớt hoặc các công cụ chưa có sẵn. Đúng hơn, họ hiểu sai các thuộc tính cơ bản của mã nằm trong cơ sở dữ liệu và chạy theo cách phi tập trung.

Liên hệ với các dịch vụ bên ngoài

Thông thường, trường hợp sử dụng đầu tiên được đề xuất là một hợp đồng thông minh thay đổi hành vi của nó để phản ứng với một số sự kiện bên ngoài. Ví dụ, hợp đồng bảo hiểm nông nghiệp thanh toán có điều kiện dựa trên lượng mưa trong một tháng nhất định. Quá trình tưởng tượng diễn ra như thế này: hợp đồng thông minh đợi cho đến thời điểm định trước, lấy báo cáo thời tiết từ một dịch vụ bên ngoài và hoạt động phù hợp dựa trên dữ liệu nhận được.

Tất cả điều này nghe có vẻ đơn giản, nhưng nó cũng không thể. Tại sao? Bởi vì blockchain là một hệ thống dựa trên sự đồng thuận, có nghĩa là nó chỉ hoạt động nếu mọi nút đạt đến trạng thái giống hệt nhau sau khi xử lý mọi giao dịch và khối. Mọi thứ diễn ra trên blockchain phải hoàn toàn xác định, không có cách nào có thể để sự khác biệt len ​​lỏi vào. Thời điểm mà hai nút trung thực không đồng ý về trạng thái của chuỗi, toàn bộ hệ thống sẽ trở nên vô giá trị.

Bây giờ hãy nhớ lại rằng các hợp đồng thông minh được thực thi độc lập bởi mọi nút trên một chuỗi. Do đó, nếu một hợp đồng thông minh lấy một số thông tin từ một nguồn bên ngoài, thì việc truy xuất này được thực hiện lặp đi lặp lại và riêng biệt bởi mỗi nút. Nhưng vì nguồn này nằm ngoài chuỗi khối, không có gì đảm bảo rằng mọi nút sẽ nhận được cùng một câu trả lời. Có lẽ nguồn sẽ thay đổi phản hồi của nó trong thời gian giữa các yêu cầu từ các nút khác nhau hoặc có lẽ nó sẽ tạm thời không khả dụng. Dù bằng cách nào, sự đồng thuận bị phá vỡ và toàn bộ chuỗi khối sẽ chết.

Vậy giải pháp thay thế là gì? Thực ra, nó khá đơn giản. Thay vì hợp đồng thông minh bắt đầu truy xuất dữ liệu bên ngoài, một hoặc nhiều bên đáng tin cậy (“oracles”) tạo ra một giao dịch nhúng dữ liệu đó vào chuỗi. Mỗi nút sẽ có một bản sao giống hệt nhau của dữ liệu này, vì vậy nó có thể được sử dụng an toàn trong tính toán hợp đồng thông minh. Nói cách khác, một nhà tiên tri đẩy dữ liệu trên blockchain thay vì một hợp đồng thông minh kéo nó trong.

Khi nói đến hợp đồng thông minh gây ra các sự kiện ở thế giới bên ngoài, một vấn đề tương tự cũng xuất hiện. Ví dụ: nhiều người thích ý tưởng về một hợp đồng thông minh gọi API của ngân hàng để chuyển tiền. Nhưng nếu mọi nút đang thực thi mã trong chuỗi một cách độc lập, thì ai chịu trách nhiệm gọi API này? Nếu câu trả lời chỉ là một nút, điều gì sẽ xảy ra nếu nút cụ thể đó bị trục trặc, cố tình hay không? Và nếu câu trả lời là mọi nút, chúng ta có thể tin tưởng mọi nút bằng mật khẩu của API đó không? Và chúng ta có thực sự muốn API được gọi hàng trăm lần không? Tệ hơn nữa, nếu hợp đồng thông minh cần biết liệu lệnh gọi API có thành công hay không, chúng tôi quay lại ngay vấn đề phụ thuộc vào dữ liệu bên ngoài.

Như trước đây, một giải pháp đơn giản có sẵn. Thay vì hợp đồng thông minh gọi một API bên ngoài, chúng tôi sử dụng một dịch vụ đáng tin cậy để giám sát trạng thái của blockchain và thực hiện các hành động nhất định để đáp ứng. Ví dụ: một ngân hàng có thể chủ động theo dõi một chuỗi khối và thực hiện chuyển tiền phản ánh các giao dịch trên chuỗi. Điều này không gây rủi ro cho sự đồng thuận của blockchain vì chuỗi đóng một vai trò hoàn toàn thụ động.

Nhìn vào hai cách giải quyết này, chúng ta có thể đưa ra một số nhận xét. Đầu tiên, cả hai đều yêu cầu một thực thể đáng tin cậy để quản lý các tương tác giữa blockchain và thế giới bên ngoài. Mặc dù điều này là có thể về mặt kỹ thuật, nhưng nó làm suy yếu mục tiêu của một hệ thống phi tập trung. Thứ hai, các cơ chế được sử dụng trong các cách giải quyết này là những ví dụ đơn giản về đọc và viết cơ sở dữ liệu. Một nhà tiên tri cung cấp thông tin bên ngoài chỉ đơn giản là ghi thông tin đó vào chuỗi. Và một dịch vụ phản ánh trạng thái của blockchain trong thế giới thực không làm gì khác hơn là đọc từ chuỗi đó. Nói cách khác, bất kỳ tương tác nào giữa blockchain và thế giới bên ngoài đều bị hạn chế đối với các hoạt động cơ sở dữ liệu thông thường. Chúng ta sẽ nói thêm về thực tế này sau.

Thực thi thanh toán theo chuỗi

Đây là một đề xuất khác mà chúng tôi có xu hướng nghe nhiều: sử dụng hợp đồng thông minh để tự động hóa việc thanh toán phiếu thưởng cho cái gọi là "trái phiếu thông minh". Ý tưởng là để mã hợp đồng thông minh tự động bắt đầu thanh toán vào những thời điểm thích hợp, tránh các quy trình thủ công và đảm bảo rằng tổ chức phát hành không thể vỡ nợ.

Tất nhiên, để điều này hoạt động, các khoản tiền được sử dụng để thực hiện thanh toán cũng phải nằm trong blockchain, nếu không hợp đồng thông minh không thể đảm bảo thanh toán của họ. Bây giờ hãy nhớ lại rằng một blockchain chỉ là một cơ sở dữ liệu, trong trường hợp này là một sổ cái tài chính chứa trái phiếu đã phát hành và một số tiền mặt. Vì vậy, khi chúng ta nói về thanh toán bằng phiếu giảm giá, những gì chúng ta thực sự đang nói đến là các hoạt động cơ sở dữ liệu diễn ra tự động tại một thời điểm đã thỏa thuận.

Trong khi việc tự động hóa này khả thi về mặt kỹ thuật, nó gặp khó khăn về tài chính. Nếu các khoản tiền được sử dụng để thanh toán phiếu giảm giá được kiểm soát bởi hợp đồng thông minh của trái phiếu, thì những khoản thanh toán đó thực sự có thể được đảm bảo. Nhưng điều này cũng có nghĩa là những quỹ không được sử dụng bởi công ty phát hành trái phiếu cho bất kỳ điều gì khác. Và nếu những khoản tiền đó không phải dưới sự kiểm soát của hợp đồng thông minh, sau đó không có cách nào để thanh toán có thể được đảm bảo.

Nói cách khác, một trái phiếu thông minh hoặc vô nghĩa đối với nhà phát hành hoặc vô nghĩa đối với nhà đầu tư. Và nếu bạn nghĩ về nó, đây là một kết quả hoàn toàn hiển nhiên. Từ quan điểm của nhà đầu tư, toàn bộ điểm của trái phiếu là tỷ suất sinh lợi hấp dẫn của nó, với cái giá phải trả là rủi ro vỡ nợ. Và đối với công ty phát hành, mục đích của trái phiếu là gây quỹ cho một hoạt động hiệu quả nhưng có phần rủi ro, chẳng hạn như xây dựng một nhà máy mới. Không có cách nào để công ty phát hành trái phiếu sử dụng số tiền huy động được, đồng thời đảm bảo rằng nhà đầu tư sẽ được hoàn trả. Sẽ không có gì ngạc nhiên khi mối liên hệ giữa rủi ro và lợi nhuận không phải là vấn đề mà blockchain có thể giải quyết.

Ẩn dữ liệu bí mật

Như tôi đã đã viết về trước đây, thách thức lớn nhất trong việc triển khai blockchain là tính minh bạch triệt để mà chúng cung cấp. Ví dụ: nếu mười ngân hàng thiết lập một blockchain cùng nhau và hai ngân hàng tiến hành giao dịch song phương, điều này sẽ hiển thị ngay lập tức cho tám ngân hàng còn lại. Mặc dù có nhiều chiến lược khác nhau để giảm thiểu vấn đề này, nhưng không có chiến lược nào đánh bại được tính đơn giản và hiệu quả của cơ sở dữ liệu tập trung, trong đó quản trị viên đáng tin cậy có toàn quyền kiểm soát những người có thể xem những gì.

Một số người nghĩ rằng hợp đồng thông minh có thể giải quyết vấn đề này. Họ bắt đầu với thực tế là mỗi hợp đồng thông minh chứa cơ sở dữ liệu thu nhỏ của riêng nó, mà nó có toàn quyền kiểm soát. Tất cả các hoạt động đọc và ghi trên cơ sở dữ liệu này được trung gian bởi mã của hợp đồng, khiến cho một hợp đồng không thể đọc trực tiếp dữ liệu của một hợp đồng khác. (Sự kết hợp chặt chẽ giữa dữ liệu và mã này được gọi là tính đóng gói và là nền tảng của lập trình hướng đối tượng mô hình.)

Vì vậy, nếu một hợp đồng thông minh không thể truy cập dữ liệu của người khác, chúng ta đã giải quyết được vấn đề về tính bảo mật của blockchain chưa? Có hợp lý khi nói về việc ẩn thông tin trong hợp đồng thông minh không? Rất tiếc, câu trả lời là không. Bởi vì ngay cả khi một hợp đồng thông minh không thể đọc dữ liệu của người khác, dữ liệu đó vẫn được lưu trữ trên mọi nút đơn trong chuỗi. Đối với mỗi người tham gia chuỗi khối, nó nằm trong bộ nhớ hoặc đĩa của hệ thống mà người tham gia đó hoàn toàn kiểm soát. Và không có gì có thể ngăn họ đọc thông tin từ hệ thống của chính họ, nếu và khi họ chọn làm như vậy.

Ẩn dữ liệu trong hợp đồng thông minh cũng an toàn như ẩn dữ liệu trong mã HTML của một trang web. Chắc chắn, người dùng web thông thường sẽ không nhìn thấy nó, vì nó không được hiển thị trong cửa sổ trình duyệt của họ. Nhưng tất cả những gì cần làm là trình duyệt web thêm chức năng 'Xem Nguồn' (như tất cả chúng đều có) và thông tin ẩn sẽ hiển thị trên toàn cầu. Tương tự, đối với dữ liệu ẩn trong các hợp đồng thông minh, tất cả những gì cần thiết là ai đó phải sửa đổi phần mềm blockchain của họ để hiển thị trạng thái đầy đủ của hợp đồng và tất cả tính bảo mật sẽ bị mất. Một lập trình viên khá giỏi có thể làm điều đó trong một giờ hoặc lâu hơn.

Hợp đồng thông minh dùng để làm gì

Với rất nhiều thứ mà các hợp đồng thông minh không thể làm, người ta có thể hỏi chúng thực sự để làm gì. Nhưng để trả lời câu hỏi này, chúng ta cần quay trở lại các nguyên tắc cơ bản của chính các blockchain. Tóm lại, một blockchain cho phép một cơ sở dữ liệu được chia sẻ trực tiếp và an toàn bởi các thực thể không tin tưởng lẫn nhau mà không yêu cầu quản trị viên trung tâm. Blockchains cho phép ngắt trung gian dữ liệu và điều này có thể dẫn đến tiết kiệm đáng kể về độ phức tạp và chi phí.

Bất kỳ cơ sở dữ liệu nào cũng được sửa đổi thông qua "giao dịch", chứa một tập hợp các thay đổi đối với cơ sở dữ liệu đó phải thành công hoặc thất bại nói chung. Ví dụ: trong sổ cái tài chính, thanh toán từ Alice cho Bob được thể hiện bằng một giao dịch (a) kiểm tra xem Alice có đủ tiền hay không, (b) khấu trừ một số tiền từ tài khoản của Alice và (c) thêm số lượng tương tự vào tài khoản của Bob .

Trong cơ sở dữ liệu tập trung thông thường, các giao dịch này được tạo bởi một cơ quan đáng tin cậy duy nhất. Ngược lại, trong cơ sở dữ liệu được chia sẻ theo hướng blockchain, các giao dịch có thể được tạo bởi bất kỳ người dùng nào của blockchain đó. Và vì những người dùng này không hoàn toàn tin tưởng lẫn nhau, cơ sở dữ liệu phải chứa các quy tắc hạn chế các giao dịch được thực hiện. Ví dụ: trong sổ cái tài chính ngang hàng, mỗi giao dịch phải bảo toàn tổng số tiền, nếu không, người tham gia có thể tự do cho mình bao nhiêu tiền tùy thích.

Người ta có thể tưởng tượng nhiều cách khác nhau để diễn đạt các quy tắc này, nhưng hiện tại có hai mô hình thống trị, lấy cảm hứng từ Bitcoin và Ethereum tương ứng. Phương pháp Bitcoin, mà chúng ta có thể gọi là “các ràng buộc giao dịch”, đánh giá mỗi giao dịch về: (a) các mục nhập cơ sở dữ liệu bị xóa bởi giao dịch đó và (b) các mục nhập được tạo. Trong sổ cái tài chính, quy tắc nói rằng tổng số tiền trong các mục đã xóa phải khớp với tổng số tiền đã tạo. (Chúng tôi coi việc sửa đổi một mục nhập hiện có tương đương với việc xóa mục nhập đó và tạo một mục nhập mới ở vị trí của nó.)

Mô hình thứ hai, đến từ Ethereum, là các hợp đồng thông minh. Điều này nói rằng tất cả các sửa đổi đối với dữ liệu của hợp đồng phải được thực hiện bởi mã của nó. (Trong bối cảnh của cơ sở dữ liệu truyền thống, chúng ta có thể coi đây là thi hành thủ tục được lưu trữ.) Để sửa đổi dữ liệu của hợp đồng, người dùng blockchain gửi yêu cầu mã của nó, xác định liệu và cách thực hiện các yêu cầu đó. Như trong ví dụ này, hợp đồng thông minh cho sổ cái tài chính thực hiện ba nhiệm vụ giống như quản trị viên của cơ sở dữ liệu tập trung: kiểm tra đủ tiền, khấu trừ từ một tài khoản và thêm vào tài khoản khác.

Cả hai mô hình này đều hiệu quả và mỗi mô hình đều có những ưu điểm và nhược điểm, như tôi đã đã thảo luận sâu trước đây. Tóm lại, các ràng buộc giao dịch kiểu Bitcoin cung cấp hiệu suất và đồng thời vượt trội, trong khi các hợp đồng thông minh kiểu Ethereum cung cấp tính linh hoạt cao hơn. Vì vậy, để quay lại câu hỏi hợp đồng thông minh dùng để làm gì:

Hợp đồng thông minh dành cho các trường hợp sử dụng blockchain không thể được thực hiện với các ràng buộc giao dịch.

Với tiêu chí này để sử dụng các hợp đồng thông minh, tôi vẫn chưa thấy một trường hợp sử dụng mạnh mẽ nào cho các blockchain được phép đủ điều kiện. Tất cả các ứng dụng blockchain hấp dẫn mà tôi biết đều có thể được triển khai với các giao dịch kiểu Bitcoin, có thể xử lý việc cấp phép và lưu trữ dữ liệu chung, cũng như tạo, chuyển, ký quỹ, trao đổi và phá hủy tài sản. Tuy nhiên, các trường hợp sử dụng mới vẫn đang xuất hiện và tôi sẽ không ngạc nhiên nếu một số do yêu cầu sức mạnh của hợp đồng thông minh. Hoặc, ít nhất, là một phần mở rộng của mô hình Bitcoin.

Dù câu trả lời là gì, thì điều quan trọng cần nhớ là hợp đồng thông minh chỉ đơn giản là một phương pháp để hạn chế các giao dịch được thực hiện trong cơ sở dữ liệu. Đây chắc chắn là một điều hữu ích và là điều cần thiết để làm cho cơ sở dữ liệu đó an toàn để chia sẻ. Nhưng hợp đồng thông minh không thể làm bất cứ điều gì khác, và chúng chắc chắn không thể thoát khỏi ranh giới của cơ sở dữ liệu mà chúng cư trú.

Xin vui lòng gửi bất kỳ ý kiến tại LinkedIn.

Dấu thời gian:

Thêm từ Đa sắc