Tại sao cần phải có Smart Contract?
Bạn đi qua một khu phố hay một siêu thị lớn, bạn sẽ để ý thấy một vài chiếc máy bán hàng tự động. Những chiếc máy này thực hiện nhiệm vụ bán các mặt hàng cơ bản như nước đóng chai, bánh hay những gói bim bim một cách hoàn toàn tự động.
Bạn cho 20.000 đồng vào máy, bấm nút chọn chai nước tăng lực, và bùm, bạn có thể lấy nó ở khe lấy đồ. Tất cả được hoàn thành một cách nhanh chóng. Khi bạn cho vào một số tiền và bấm nút chọn mặt hàng muốn mua tương ứng nó sẽ đưa cho bạn mặt hàng đó, miễn là bạn cho đủ số tiền hợp lệ. Bạn đã thực hiện một thỏa thuận đơn giản hay nói cách khác là một hợp đồng đơn giản.
Toàn bộ điều này diễn ra nhờ một chương trình nhỏ (hợp đồng đơn giản) được mã vào máy trước khi thực hiện:
“if money received == 20.000
>&& the button pressed is “Red Bull”
then release Red_Bull”
Đoạn mã đơn giản này hoạt động như một loại hợp đồng tự động. Nó quy ước các điều khoản và tự động thực thi các điều khoản đó.
Nhưng chờ đã !
Nhìn vào đây có vẻ bạn sẽ cảm thấy nó quá đơn giản phải không? Có vẻ nó chẳng có gì đặc biệt. Một chiếc máy “ngốc ngếch” như máy bán hàng tự động cũng hoàn toàn có thể thực thi nó; và thực ra nó cũng đã tồn tại hàng vài chục năm trước đây.
Nhưng thực sự Smart Contract không chỉ đơn giản là những đoạn mã tự thực thi như vậy. Để thấy được vấn đề, chúng ta đổi lại ví dụ ở trên bằng cách thay thỏa thuận mua lon nước tăng lực Red Bull với 20.000 của chúng ta bằng một thỏa thuận nghe có vẻ phi lý hơn, chẳng hạn như: “Nếu bạn cho vào máy 1.000 $ thì máy sẽ nhả ra cho bạn 10.000 $”.
Trong trường hợp này, bạn sẽ làm gì? Tin vào thỏa thuận và chạy về vay ngay 1.000$ để cho vào? hay bước qua và lầm bầm “Thằng lừa đảo nào đặt cái máy ở đây vậy?”. Nếu là tôi, chắc chắn tôi sẽ làm như lựa chọn thứ 2. Thật điên dồ. Và thực ra, tôi tin rằng đa phần chúng ta đều làm như vậy.
Mọi thứ diễn ra theo cơ chế if – else giống hệt như việc mua lon nước tăng lực, điều khác biệt duy nhất ở đây là nội dung của thỏa thuận. Chắc hẳn bạn sẽ nghi ngờ và do dự, nhiều khả năng chiếc máy sẽ ăn số tiền của bạn, và số tiền đó không phải là nhỏ như 20.000 đồng. Thậm chí nó bằng cả mấy tháng lương của bạn và rõ ràng rất rủi ro nếu đánh cược vào niềm tin trong trường hợp này. Bạn có thể tin thỏa thuận mua lon nước 20.000 nhưng chắc chắn bạn không thể tin thỏa thuận kiểu này.
Làm thế nào để chúng ta biết chắc rằng cái máy sẽ trả đủ cho chúng ta 10.000 $ như thỏa thuận?
Làm thế nào để chúng ta biết mã thực thi hợp đồng trong máy sẽ chạy đúng như thỏa thuận?
Có cách nào để xác minh công khai và minh bạch mã này không?
Để trả lời cho những câu hỏi trên, khái niệm Smart Contract ra đời.
Smart Contract là gì?
Smart Contract (Hợp Đồng Thông Minh) là một thuật ngữ mô tả khả năng tự đưa ra các điều khoản và thực thi thoả thuận của hệ thống máy tính bằng cách sử dụng công nghệ Blockchain. Toàn bộ quá trình của Smart Contract được thực hiện tự động và không có sự can thiệp từ bên ngoài. Các điều khoản của Smart Contract tương đương với một hợp đồng pháp lý và được ghi lại dưới ngôn ngữ của máy tính.
Mục tiêu chính của Smart Contract là cho phép hai bên không xác định danh tính có thể giao dịch hay làm việc với nhau trên Internet mà không cần thông qua trung gian. Khái niệm về Smart Contract được đề cập lần đầu tiên năm 1993 bởi Nick Szabo – người từng bị cáo buộc đứng đằng sau mạng lưới Bitcoin. Ông gọi đây là những chương trình máy tính tự động và có thể thực hiện các điều khoản của hợp đồng.
Khác biệt giữa hợp đồng truyền thống và Smart Contract
Hợp đồng truyền thống được tạo ra bởi các chuyên gia pháp lý để biên soạn một lượng lớn tài liệu và cần bên thứ ba giúp thực thi. Điều này rất mất thời gian và không minh bạch. Nếu hợp đồng xảy ra sự cố thì phải dựa vào hệ thống tư pháp để giải quyết và điều này rất tốn kém nhiều chi phí liên quan.
Đối với Smart Contract, được tạo ra bởi hệ thống máy tính bằng ngôn ngữ lập trình như C++, Go, Python, Java. Trong đó nêu rõ các điều khoản và hình phạt tương đương với một hợp đồng truyền thống đưa ra. Chỉ có điều là Smart Contract không cần sự can thiệp của con người, do đó đảm bảo việc thực thi được chính xác và công minh nhất. Toàn bộ đoạn mã của Smart Contract này sẽ được thực hiện bởi hệ thống sổ cái phân tán Blockchain.
Cách thức hoạt động của Smart Contract?
Smart Contract là một giao thức đặc biệt nhằm xử lý, xác minh hoặc thực thi các hợp đồng kỹ thuật số. Smart Contract có khả năng tự động thực hiện các điều khoản, các thoả thuận giữa các bên trong hợp đồng một cách đáng tin cậy mà không cần bên thứ ba nhờ sự hỗ trợ của công nghệ mật mã học. Các giao dịch này có thể được theo dõi chặt chẽ và không thể đảo ngược được.
Mọi điều khoản trong hợp đồng đều được minh bạch và có thể kiểm tra được, đồng thời đòi hỏi sự đồng thuận của cả hai phía. Một khi đã đồng thuận với hợp đồng, các điều khoản trong nó sẽ được thực thi hoàn toàn tự động hoặc tự động một phần mà không có sự can thiệp từ bên ngoài, hay thông qua một bên thứ ba trung gian. Và ngay cả hai bên tham gia hợp đồng cũng không thể can thiệp hay sửa đổi lên nó. Các điều khoản trong Smart Contract tương đương với một hợp đồng có tính pháp lý và được ghi lại dưới dạng các ngôn ngữ lập trình.
Khái niệm về Smart Contract được đưa ra đầu tiên bởi nhà mật mã học Nick Szabo vào 1994. Szabo nhận ra rằng có thể giám sát sự thực thi của các hợp đồng thông mình bằng sổ cái phi tập trung, và ông gọi đây là các hợp đồng thông minh hay hợp đồng tự thực hiện, hợp đồng blockchain hoặc hợp đồng kỹ thuật số. Các hợp đồng có thể được chuyển đổi thành mã máy tính, được lưu trữ và nhân bản trên hệ thống và được giám sát bởi mạng lưới các máy tính ngang hàng mà ngày nay được gọi dưới tên blockchain. Trong khi các hợp đồng tiêu chuẩn đảm bảo việc thực hiện các điều khoản dựa trên các mối quan hệ luật pháp hoặc sự tin tưởng thì hợp đồng thông minh đảm bảo việc thực thi hợp đồng dựa trên các quan hệ mật mã học và tính tin cậy của mạng lưới các nút trên blockchain.
Nick Szabo đã nêu ra những nguyên tắc hoạt động chính và định nghĩa về một Smart Contract, tuy nhiên, tại thời điểm ấy thì các công nghệ và môi trường vẫn chưa đủ hoàn thiện để hiện thực hóa nó. Đây là một phát minh vượt qua thời đại và mãi đến sau này, với sự xuất hiện của công nghệ blockchain thì nó mới được phát triển và hoàn thiện trong thực tế.
Dạng đơn giản nhất của các hợp đồng thông minh trên blockchain được đặt nền móng từ Bitcoin. Tuy nhiên, nó vẫn rất đơn giản để có thể thỏa mãn được mọi yêu cầu về hợp đồng thông minh thực sự. Khái niệm hợp đồng thông minh phổ biến ngày nay được xuất phát từ Ethereum với Ethereum Smart Contract, nó cung cấp một phương thức mới để thiết lập các dạng hợp đồng trên ngôn ngữ Solidity chạy trên máy ảo Ethereum.
Điểm nổi bật nhất của Smart Contract là cho phép hai bên tham gia thực hiện hợp đồng từ xa một cách chính xác, an toàn và nhanh chóng; mà không cần các bên biết hoặc tin cậy lẫn nhau từ trước, cũng không cần một bên trung gian thứ ba mà chỉ cần có kết nối Internet.
Cơ chế hoạt động
Cơ chế hoạt động của các Smart Contract giống như chiếc máy bán hàng tự động trong ví dụ trên của chúng ta. Chúng sẽ tự động thực hiện những điều khoản đã được lập trình sẵn từ trước khi đáp ứng đủ những yêu cầu cần thiết được đặt ra.
Để làm được điều này, các điều khoản trong hợp đồng sẽ được thiết lập theo cơ chế logic yêu cầu và chuyển thể lại thành dạng chương trình thực thi thông qua các ngôn ngữ lập trình. Người dùng sẽ viết ra các đoạn mã chương trình Smart Contract và tiến hành biên dịch nó, sau đó đánh dấu nó bằng một địa chỉ và chuyển vào một block nằm trên blockchain. Sau khi chuyển vào block, Smart Contract này sẽ được phân phối và sao chép lại bởi các nút đang hoạt động trên mạng lưới blockchain đó.
Sau khi được lưu trữ trên blockchain, các hợp đồng thông minh sẽ chờ đợi các điều kiện kích hoạt. Khi một sự kiện được kích hoạt bằng cách thực thi một giao dịch trên blockchain, các Smart Contract sẽ hoạt động và thực thi các điều khoản đã được đồng thuận trước đó. Đồng thời tự động kiểm tra quá trình thực hiện những cam kết, điều khoản được nêu trong hợp đồng.
Trong Bitcoin các hợp đồng thông minh cơ bản được thể hiện bằng các giao dịch giúp chuyển giá trị từ người này sang người khác trên mạng lưới. Các giao dịch được hiểu như các hợp đồng đơn giản sẽ được các nút xác nhận nếu đáp ứng một số điều kiện nhất định. Và khi được xác nhận các giao dịch này sẽ được thực hiện, giá trị sẽ được chuyển từ người này sang người khác đúng như nội dung giao dịch được yêu cầu. Điều kiện kích hoạt ở đây chính là thời điểm tạo giao dịch. Các điều khoản trong Smart Contract đơn giản là chuyển một lượng giá trị từ tài khoản này sang tài khoản khác, và ngược lại có thể trả lại một số giá trị dư thừa từ đầu ra ngược lại cho người gửi, kèm một số chi phí khai thác cho các thợ mỏ xác nhận khối. Ngôn ngữ được sử dụng trong hợp đồng thông minh của Bitcoin chỉ bao gồm khoảng 100 tệp lệnh, cho phép thực hiện các hoạt động chuyển nhận giá trị và xác nhận giao dịch thông thường.
Cải tiến hơn Bitcoin, trong Ethereum các hợp đồng thông minh đại diện cho một đoạn mã được viết bằng các ngôn ngữ lập trình bậc cao (như Solidity, LLL, Viper, Serpent…) được biên dịch và lưu trữ dưới dạng Bytecode trong chuỗi khối, để chạy trong một máy ảo (Máy ảo Ethereum) trong mỗi nút khi được kích hoạt. Máy ảo EVM (Ethereum Virtual Machine) cho phép chạy các mã biên dịch từ ngôn ngữ cấp cao (như Solidity – một dạng có cú pháp tương tự như JavaScript) do đó cho phép thực hiện nhiều nhiệm vụ phức tạp hơn. EVM trong trường hợp này có tác dụng như JVM (Java Virtual Machine) cho phép tạo ra môi trường để chạy các mã đặc biệt tương tự như Java Bytecode. Điều này cho phép các nhà phát triển có thể viết các chương trình của riêng họ với mọi mục đích và yêu cầu. Và khác với Bitcoin, Ngôn ngữ của Ethereum có tính chất Turing đầy đủ (Turing-Complete). Tính chất này có thể được hiểu đơn giản là khả năng chạy mọi loại chương trình biểu diễn được bằng thuật toán. Điều này cho phép chúng ta có thể tạo ra bất cứ một ứng dụng nào, bất cứ một loại hợp đồng hoặc thỏa thuận phức tạp nào trên chúng. Các tương tác với các chức năng hợp đồng thông minh xảy ra thông qua các giao dịch trên mạng lưới blockchain, với nội dung hợp đồng dưới dạng Bytcode được thực thi trong máy ảo Ethereum và tạo ra những sự thay đổi lên trạng thái của blockchain. Các trạng thái thay đổi này sau đó sẽ được chia sẻ và cập nhật tương ứng.
Các tính năng chính của một Smart Contract
Smart Contract của Ethereum thường trình có các đặc điểm sau:
- Phân tán: Được sao chép và phân phối trong tất cả các nút của mạng Ethereum. Đây là một điểm khác biệt so với các giải pháp khác dựa trên các máy chủ tập trung.
- Tất định: Chỉ thực hiện các hành động mà chúng được thiết kế để thực hiện trong trường hợp các điều kiện được thỏa mãn. Bên cạnh đó, các kết quả của Smart Contract không đổi dù người thực hiện là ai.
- Tự động: Có thể tự động hóa tất cả các loại tác vụ, nó hoạt động như một chương trình tự thực hiện. Tuy nhiên, trong hầu hết các trường hợp, nếu Smart Contract không được kích hoạt, nó sẽ duy trì trạng thái “không hoạt động” và sẽ không thực hiện bất kỳ hành động nào.
- Không thể sửa đổi: Không thể sửa đổi Smart Contract sau khi triển khai. Chỉ có thể “xóa” chúng nếu chức năng này đã được thêm vào từ trước. Do đó, có thể nói rằng Smart Contract giống như một mã chống giả mạo.
- Có thể tùy chỉnh: Trước khi triển khai, Smart Contract có thể được mã hóa theo nhiều cách khác nhau. Vì vậy, chúng có thể được sử dụng để tạo ra nhiều loại ứng dụng phi tập trung (Dapp). Điều này là bởi Ethereum là một blockchain có thể được sử dụng để giải quyết bất kỳ vấn đề tính toán nào (Turing complete)
- Không cần dựa trên sự tin cậy: Hai hoặc nhiều bên của hợp đồng có thể tương tác thông qua Smart Contract mà không cần biết hoặc tin tưởng lẫn nhau. Ngoài ra, công nghệ blockchain đảm bảo tính chính xác của dữ liệu.
- Minh bạch: Vì các Smart Contract dựa trên một blockchain công khai, không ai có thể thay đổi mã nguồn của chúng, mặc dù bất kỳ ai cũng có thể xem được.
Ưu điểm và nhược điểm của Smart Contract
Đầu tiên, Smart Contract tận dụng ưu điểm của công nghệ blockchain đó là hoạt động tự động và không bị quản lý giám sát bởi bất cứ một cơ quan tập trung nào, điều này có thể giúp hạn chế các vấn đề can thiệp của con người trong các hoạt động và làm tăng sự minh bạch cho ứng dụng.
Quá trình được thực hiện hợp đồng được tự động không cần trung gian bên thứ ba. Hợp đồng được tạo và xác nhận bởi chính người dùng. Do đó nó xóa bỏ những nguy cơ đến từ bên thứ ba.
Smart Contract được mã hóa trên một cuốn sổ cái chung và chia sẻ trên toàn mạng lưới, do đó, nó không thể bị thất lạc. Blockchain sẽ đảm bảo sự an toàn cho hợp đồng bằng các công nghệ mật mã học. Các Smart Contract hoạt động như các tài khoản nhiều chữ ký, do đó, nó chỉ được kích hoạt khi có một tỷ lệ phần trăm nhất định người được yêu cầu đồng ý. Các bản sao của hợp đồng không thể bị sửa đổi và được lưu trữ trên mọi nút trên mạng vì vậy, không một hacker nào có thể đe dọa đến chúng trừ khi hắn có năng lực hoặc tài nguyên áp đảo toàn bộ mạng lưới (và rất khó xảy ra).
Ngoài ra, do được thực hiện tự động trên các ngôn ngữ lập trình, vì vậy hợp đồng thông minh giúp tiết kiệm rất nhiều chi phí trong quá trình vận hành và hoạt động. Nó không cần duy trì bởi bên thứ 3, không cần trung gian phán xử tranh chấp. Các Smart Contract cũng hoạt động với tốc độ nhanh hơn rất nhiều với các hợp đồng truyền thống, do loại bỏ được rất nhiều thủ tục phức tạp cũng như những vấn đề nảy sinh với hợp đồng truyền thống. Nó cũng chính xác hơn, tránh được các lỗi thường thấy khi soạn thảo hợp đồng truyền thống.
Tuy nhiên, vấn đề gì cũng có hai mặt, Smart Contract vẫn có nhược điểm.
Đầu tiên đó là tính pháp lý, đây là nhược điểm nói chung của công nghệ blockchain. Bởi trên blockchain, bạn sẽ không được bảo vệ quyền lợi khi xảy ra lỗi phát sinh. Pháp luật của đa số các nước hiện nay chưa có các quy định trong vấn đề quản lý Smart Contract. Ngoài ra, dù cho có quy định đi chăng nữa thì các Smart Contract được thực hiện trên mạng lưới tự động vì vậy, dù có được phân xử bởi tòa án hoặc các cơ quan pháp luật thì cũng rất khó có một tác động nào diễn ra trên blockchain được.
Thứ hai, chi phí triển khai và trình độ triển khai của người dùng trên mạng lưới sẽ yêu cầu rất lớn. Bởi, nếu muốn tạo ra được một hợp đồng chặt chẽ, các lập trình viên phải rất am hiểu về lĩnh vực và các trường hợp có thể xảy ra đối với hợp đồng. Ngoài ra chi phí về cơ sở hạ tầng cho mạng lưới cũng sẽ phức tạp hơn rất nhiều.
Cuối cùng là các rủi ro về tính riêng tư. Do blockchain là dữ liệu công khai do đó, khi bạn để lộ một số thông tin nhạy cảm trên hợp đồng chắc chắn sẽ dẫn đến những trường hợp rắc rối.
Lời kết
Có thể khẳng định rằng Smart Contract đã có ảnh hưởng lớn đến thế giới tiền mã hóa, và chúng chắc chắn đã làm thay đổi không gian blockchain. Mặc dù người dùng cuối có thể không tương tác trực tiếp với các hợp đồng thông minh, nhưng những hợp đồng này có thể là cơ sở cho hàng loạt các ứng dụng trong tương lai, từ dịch vụ tài chính đến quản lý chuỗi cung ứng.
Khi kết hợp với nhau, Smart Contract và blockchain có khả năng thay đổi hầu hết các lĩnh vực trong xã hội của chúng ta. Nhưng chúng ta cần chờ đợi để xem liệu những công nghệ đột phá này có thể vượt qua nhiều rào cản để được áp dụng trên quy mô lớn hay không.
Nguồn: cryptoviet.com