Hợp đồng thông minh là gì?
Hợp đồng thông minh là một chương trình được lưu trên blockchain, thực thi một thỏa thuận mà không cần bên trung gian. Hình ảnh kinh điển là một máy bán hàng tự động: bạn bỏ tiền xu vào, chọn sản phẩm, và máy trả hàng cho bạn. Không có ai đứng sau quầy quyết định bạn có xứng đáng nhận món ăn vặt hay không, các quy tắc được tích hợp sẵn vào máy và áp dụng như nhau cho mọi người.
Hãy lấy ví dụ một người mua và một người bán không quen biết nhau. Không có hợp đồng, họ hoặc phải tin nhau, hoặc phải trả tiền cho một bên trung gian ký quỹ. Có hợp đồng, khoản thanh toán nằm trong một script và chỉ được giải phóng khi điều kiện đã thỏa thuận được ghi nhận. Việc bên nào có thể hủy, có thu phí hay không và ai có thể thay đổi điều khoản đều được cố định bởi các quy tắc của script chứ không do một người đứng giữa quyết định.
Một hợp đồng chỉ nhìn thấy những gì nằm trong giao dịch gọi nó và những gì đã có trên chuỗi. Các dữ kiện từ thế giới bên ngoài, như kết quả một cuộc đua hay một tỷ giá, phải được đưa lên chuỗi bởi một dịch vụ gọi là oracle, và hợp đồng chỉ đáng tin cậy đến mức nguồn dữ liệu đó cho phép.
Cardano chạy hợp đồng thông minh như thế nào?
Trên Cardano, một hợp đồng là một validator: một script mà giao dịch phải thỏa mãn. Hầu hết validator được gắn với các khoản tiền trên sổ cái, và một script cũng có thể cho phép việc đúc, rút phần thưởng, các chứng chỉ và phiếu bầu quản trị. Từ đó dẫn đến ba điều.
Script bảo vệ số tiền
Khi ai đó gửi ada hoặc token vào một hợp đồng, số tiền nằm trong một đầu ra, tức một khoản giá trị trên sổ cái, bị khóa bằng script thay vì bằng khóa. Đầu ra có thể mang một mẩu dữ liệu, gọi là datum, ghi lại trạng thái của thỏa thuận, ví dụ ai nợ ai bao nhiêu. Để chi tiêu đầu ra đó, một giao dịch đ ưa ra một đối số, gọi là redeemer, và script kiểm tra xem giao dịch có được phép hay không.
Giao dịch được tạo trước khi chạy
Ví của bạn hoặc ứng dụng tạo toàn bộ giao dịch trước, bao gồm mọi đầu vào, đầu ra và dữ liệu mà script cần, và có thể chạy thử script trước khi yêu cầu bạn ký. Sau đó mạng lưới chạy cùng bước kiểm tra trên cùng các đầu vào và nhận được cùng kết quả. Giao dịch vẫn có thể bị từ chối nếu một trong các đầu vào của nó đã bị chi tiêu trong lúc đó, và khi ấy sẽ không có gì xảy ra.
Chi phí được biết trước khi bạn ký
Việc thực thi script được trả bằng một ngân sách bộ nhớ và số bước xử lý, được định giá bởi các tham số giao thức, nên phí được cố định ngay khi giao dịch được tạo chứ không phải đến sau mới biết. Nếu script vẫn thất bại trên chuỗi, điều hiếm khi xảy ra nhờ chạy thử trước khi ký, một khoản collateral sẽ bù đắp cho công việc của mạng lưới. Mức tối thiểu của nó là một tỷ lệ của phí do một tham số giao thức quy định, hiện bằng một lần rưỡi phí, và các ví kết nối với DApp thường để dành sẵn một ít ada cho khoản này.
Toàn bộ cơ chế, từ slot đến sổ cái, có trên trang Cardano hoạt động như thế nào.
Nhà phát triển dùng những ngôn ngữ nào?
Hợp đồng được viết bằng một ngôn ngữ bậc cao rồi biên dịch sang Plutus Core, ngôn ngữ nhỏ mà node Cardano thực thi. Plinth, trước đây gọi là Plutus Tx, được nhúng trong Haskell, là ngôn ngữ đầu tiên và vẫn được các nhóm muốn tận dụng toàn bộ sức mạnh hệ thống kiểu của Haskell sử dụng. Aiken là ngôn ngữ mới hơn, được xây dựng riêng cho Cardano, với cú pháp và công cụ đơn giản hơn, và hiện được hầu hết dự án mới lựa chọn. Plutarch, một thư viện Haskell bám sát mã đã biên dịch, được chọn khi chi phí thực thi là yếu tố quan trọng nhất. Tất cả đều tạo ra cùng một loại script on-chain.
Không phải việc gì cũng cần một hợp đồng đầy đủ. Native script xử lý các trường hợp phổ biến như ví đa chữ ký và khóa thời gian mà không cần mã Plutus nào, và token gốc cũng có thể được đúc theo một script như vậy.
DApp là gì?
Ứng dụng phi tập trung, hay DApp, là một website hoặc ứng dụng mà các thao tác quan trọng chạy thông qua hợp đồng thông minh thay vì cơ sở dữ liệu của một công ty. Ví dụ, một sàn giao dịch phi tập trung gồm một giao diện tạo giao dịch hoán đổi cho bạn, cộng với các script trên chuỗi giữ thanh khoản và thực thi giá.
Bạn dùng DApp bằng chính ví của mình. Khi kết nối, ứng dụng có thể xem địa chỉ và số dư của bạn và yêu cầu bạn ký giao dịch. Nó không bao giờ giữ khóa của bạn và không thể chuyển tiền nếu không có chữ ký bạn đưa ra trong ví. Việc kết nối đó tuân theo một tiêu chuẩn, CIP-30, nhờ vậy một ví có thể dùng với nhiều ứng dụng.
Làm sao để dùng DApp an toàn?
Hãy đọc những gì bạn sắp ký. Hầu hết ví Cardano hiển thị các đầu ra của giao dịch, tức nơi ada và token sẽ được chuyển đến, nên một giao dịch hoán đổi bất ngờ gửi toàn bộ số dư của bạn đến một địa chỉ lạ sẽ hiện rõ trước khi bạn xác nhận. Chữ ký của bạn cam kết với đúng giao dịch đó, vì vậy hãy kiểm tra các đầu vào, đầu ra và mọi cảnh báo mà ví hiển thị. Trên Cardano không có quyền phê duyệt token không giới hạn: một DApp chỉ có thể chi tiêu những gì giao dịch bạn ký chi tiêu, và sau đó không có gì cần thu hồi. Những gì bạn thực sự gửi vào một hợp đồng sẽ nằm dưới các quy tắc của hợp đồng đó cho đến khi các quy tắc ấy giải phóng nó.
Ngoài ra, các quy tắc thông thường vẫn áp dụng. Hãy truy cập ứng dụng qua dấu trang hoặc liên kết trên các kênh chính thức của nó, không qua quảng cáo tìm kiếm hay tin nhắn. Ưu tiên những ứng dụng có hợp đồng đã được kiểm toán và mã nguồn công khai. Hãy thử với một số tiền nhỏ trước. Và hãy coi mọi yêu cầu nhập cụm từ khôi phục là một cuộc tấn công, không DApp nào cần đến nó.
Những gì đang chạy trên hợp đồng thông minh Cardano hiện nay?
Giao dịch, cho vay, stablecoin, chợ giao dịch và trò chơi đều chạy trên hợp đồng, và các dự án danh tính cũng sử dụng chúng. Dưới đây là một vài ví dụ từ danh mục ứng dụng, được xếp hạng theo hoạt động on-chain ở những nơi có dữ liệu.
Lending
Xem tất cảMarketplace
Xem tất cảGame
Xem tất cảIdentity
Xem tất cả
Stablecoin và DeFi có trang riêng, và danh mục ứng dụng liệt kê hơn một trăm ứng dụng thuộc mọi hạng mục.
Khám phá tất cả ứng dụngLàm sao để tự xây dựng một hợp đồng?
Cổng thông tin nhà phát triển hướng dẫn bạn từ giao dịch đầu tiên đến một hợp đồng đã triển khai, với các hướng dẫn cho Aiken và Plutus, các mạng thử nghiệm để thử nghiệm an toàn và bộ công cụ mà hầu hết các nhóm sử dụng. Một hợp đồng lên chuỗi như một phần của giao dịch, hoặc được đính kèm vào giao dịch sử dụng nó, hoặc được công bố một lần trong một đầu ra để các giao dịch sau tham chiếu. Không có sổ đăng ký hợp đồng toàn cục nào.
FAQ
Chúng giải quyết cùng một vấn đề nhưng hoạt động khác nhau. Trên Ethereum, hợp đồng là một tài khoản có trạng thái riêng và được thực thi khi được gọi. Trên Cardano, hợp đồng là một validator chấp thuận hoặc từ chối một giao dịch, thường là giao dịch chi tiêu các output mà script bảo vệ. Mô hình của Cardano cho bạn biết kết quả của script và chi phí trước khi bạn ký, dù giao dịch vẫn có thể bị từ chối nếu một input cần thiết đã bị chi tiêu trước. Cái giá phải trả là phải thiết kế xoay quanh các output thay vì trạng thái dùng chung.
Không. Một script chỉ có thể kiểm soát số tiền đã được gửi đến nó trong một giao dịch do ai đó ký, và chỉ có thể chi tiêu số tiền đó trong những giao dịch đáp ứng các quy tắc của nó. Tiền trong ví của bạn chỉ di chuyển khi có chữ ký của bạn.
Ứng dụng hoặc ví thường đánh giá script trước khi bạn ký, nên giao dịch thất bại hiếm khi được gửi đi. Nếu một giao dịch vẫn được gửi và script của nó thất bại on-chain, khoản collateral mà ví của bạn đã dành riêng sẽ chi trả cho công việc của mạng lưới, và phần còn lại của giao dịch sẽ không được thực hiện.
Không. Cardano không có cơ chế allowance. Chữ ký của bạn chỉ cam kết cho đúng giao dịch bạn ký, không hơn, vì vậy hãy kiểm tra các input, output và cảnh báo mà ví hiển thị. Sau đó, DApp không thể chi tiêu bất cứ thứ gì khác từ ví của bạn.
Một script được nhận diện bằng hash của mã nguồn, nên bản thân mã kh ông thể thay đổi. Các dự án nâng cấp bằng cách triển khai phiên bản mới và chuyển tiền theo những quy tắc mà script cũ cho phép, đôi khi được kiểm soát bởi một governance token hoặc một khóa đa chữ ký. Hãy tìm hiểu cách một dự án xử lý việc nâng cấp trước khi giao cho họ số tiền lớn.
Aiken là cách nhanh nhất để bắt đầu với hầu hết nhà phát triển, nhờ cú pháp quen thuộc và bộ công cụ tốt. Plinth, trước đây là Plutus Tx, là lựa chọn nếu bạn đã biết Haskell, còn Plutarch phù hợp nếu bạn muốn kiểm soát chi tiết chi phí thực thi. Tất cả đều biên dịch sang cùng một ngôn ngữ on-chain.