Tóm tắt: Bài viết này hướng dẫn cách hiểu và mô phỏng Smart Contract trên mạng Cardano thông qua một tình huống gần gũi: hợp đồng thuê nhà ký quỹ. Người dùng có thể mô phỏng thanh toán tiền thuê theo từng phần, theo dõi số tiền còn nợ bằng metadata CIP-20, khóa một khoản tiền vào hợp đồng và thực hiện luồng giải ngân hoặc hoàn tiền trên Cardano Preview.
Website mô phỏng: Cardano Escrow Simulator
1. Giới thiệu về Smart Contract trong mạng Cardano
1.1 Smart Contract là gì?
Smart Contract, hay hợp đồng thông minh, là một chương trình được triển khai trên blockchain. Chương trình này thực thi các điều kiện đã được định nghĩa trước. Khi điều kiện phù hợp, hợp đồng cho phép một hành động như chuyển tài sản, giải ngân hoặc hoàn tiền được thực hiện theo logic của nó.
Có thể hình dung Smart Contract giống như một máy bán hàng tự động. Người dùng đưa đúng khoản tiền và chọn đúng sản phẩm. Nếu điều kiện hợp lệ, máy thực hiện hành động tương ứng mà không cần nhân viên trung gian.
Trong mô hình escrow, Smart Contract giữ tài sản tạm thời. Tài sản chỉ được chuyển cho bên nhận khi điều kiện của hợp đồng được thỏa mãn. Nếu điều kiện không xảy ra hoặc thỏa thuận bị hủy, hợp đồng có thể kích hoạt luồng hoàn tiền theo logic đã lập trình.
1.2 Smart Contract trên Cardano hoạt động như thế nào?
Cardano sử dụng mô hình eUTxO, viết tắt của extended Unspent Transaction Output. Trong mô hình này, giao dịch tiêu thụ các UTxO chưa được sử dụng và tạo ra các output mới.
Một giao dịch có thể gồm các thành phần sau:
|
Thành phần
|
Vai trò trong mô phỏng
|
|
Input / UTxO
|
Khoản ADA được sử dụng làm đầu vào giao dịch
|
|
Script address
|
Địa chỉ của Smart Contract đang khóa tài sản
|
|
Redeemer
|
Dữ liệu cho biết người dùng muốn thực hiện hành động nào, chẳng hạn Release hoặc Refund
|
|
Datum
|
Dữ liệu trạng thái được hợp đồng sử dụng để kiểm tra điều kiện
|
|
Output
|
Khoản ADA được chuyển đến chủ nhà, người thuê hoặc địa chỉ change
|
|
Metadata CIP-20
|
Tin nhắn mô tả giao dịch, kỳ thuê, số đã trả và số còn nợ
|
1.3 Vì sao dùng escrow cho hợp đồng thuê nhà?
Thanh toán tiền thuê nhà thường có nhiều mốc và điều kiện. Bên thuê muốn đảm bảo tiền chỉ được giải ngân đúng thỏa thuận. Bên cho thuê muốn biết khoản tiền đã được gửi và có thể nhận tiền khi điều kiện hoàn tất.
Escrow tạo ra một lớp trung gian tự động:
1.Người thuê gửi tiền vào địa chỉ hoặc logic escrow.
2.Hợp đồng ghi nhận trạng thái giao dịch.
3.Khi điều kiện phù hợp, tiền được giải ngân cho chủ nhà.
4.Nếu thỏa thuận bị hủy hoặc điều kiện không đáp ứng, tiền được hoàn trả theo luồng Refund.
2. Mô phỏng thanh toán tiền nhà có trả góp
2.1 Chuẩn bị môi trường
Mở Cardano Escrow Simulator và sử dụng mạng Cardano Preview. Nếu cần ADA thử nghiệm, hãy sử dụng faucet chính thức dành cho testnet theo hướng dẫn của Cardano.
Chỉ dùng một địa chỉ testnet công khai, thường bắt đầu bằng addr_test1. Không nhập địa chỉ Mainnet hoặc thông tin bảo mật của ví thật.
2.2 Nhập thông tin kỳ thuê
Trong phần mô phỏng khoản thuê Preview, thực hiện các bước sau:
1.Nhập khoản trả góp lần này. Ví dụ đầu tiên là 5 ADA.
2.Chọn kỳ thuê, chẳng hạn tháng 9.
3.Kiểm tra địa chỉ người gửi và địa chỉ người nhận.
4.Đảm bảo website hiển thị trạng thái địa chỉ là Hợp lệ.
5.Kiểm tra tên hợp đồng và nội dung metadata trước khi chạy mô phỏng.
Website giới hạn khoản thanh toán trong khoảng từ 0,1 đến 10 ADA cho một lượt mô phỏng. Mỗi kỳ có định mức 10 ADA.
2.3 Hiểu metadata CIP-20
Metadata CIP-20 là phần dữ liệu mô tả được đính kèm vào giao dịch. Trong ví dụ của website, metadata có thể biểu diễn như sau:
{
“msg”: [
“ESCROW.SIM”,
“Hop dong: Hop dong thue nha”,
“Ky gui: thang 9”,
“Da gui: 5 ADA”,
“Con no: 5 ADA”
]
}
“msg”: [
“ESCROW.SIM”,
“Hop dong: Hop dong thue nha”,
“Ky gui: thang 9”,
“Da gui: 5 ADA”,
“Con no: 5 ADA”
]
}
Metadata không thay thế logic của Smart Contract. Nó giúp con người dễ đọc và giúp người quan sát hiểu giao dịch đang mô tả kỳ thuê nào, đã thanh toán bao nhiêu và còn thiếu bao nhiêu.
2.4 Thực hiện chuỗi thanh toán trả góp
Minh họa tổng cộng 10 ADA bằng ba lần thanh toán:
|
Lượt
|
Khoản thanh toán
|
Tổng đã gửi
|
Số còn nợ
|
|
1
|
5 ADA
|
5 ADA
|
5 ADA
|
|
2
|
3 ADA
|
8 ADA
|
2 ADA
|
|
3
|
2 ADA
|
10 ADA
|
0 ADA
|
Sau mỗi lượt, metadata và trạng thái của kỳ thuê được cập nhật. Khi tổng số tiền đạt 10 ADA, kỳ thuê được xem là đã hoàn tất trong mô phỏng. Logic của hợp đồng không cho phép tiếp tục gửi vượt định mức của kỳ đó.
2.5 Chạy luồng giao dịch
Sau khi nhập thông tin, chọn nút “Xây & Ký mô phỏng”. Website minh họa các giai đoạn chính:
BUILD
Hệ thống chọn UTxO đầu vào và tạo các output cần thiết. Một output có thể dành cho người nhận, trong khi phần change được trả về địa chỉ người gửi.
METADATA
Hệ thống gắn nhãn CIP-20 và nội dung mô tả kỳ thuê. Ở giai đoạn này, người học có thể đối chiếu số tiền đã gửi với số tiền còn nợ.
SIGN
Giao dịch được ký trong phạm vi mô phỏng. Trong môi trường thực tế, người dùng chỉ nên ký giao dịch sau khi kiểm tra kỹ địa chỉ, số tiền, mạng lưới và phí.
SUBMIT
Giao dịch được gửi lên Cardano Preview nếu đang chạy ở chế độ testnet phù hợp. Kết quả có thể được kiểm tra trên ví testnet hoặc explorer tương ứng.
Trong website mô phỏng đơn giản, một số bước có thể chỉ thay đổi trạng thái giao diện thay vì tạo một giao dịch on-chain thật. Hãy đọc nhãn “mô phỏng” và kiểm tra explorer để phân biệt hai trường hợp.
3. Mô phỏng thuê nhà có hoàn tiền
Phần hoàn tiền mô phỏng một khoản tiền được khóa trong Smart Contract Escrow trước khi điều kiện thuê được hoàn tất. Trong video, khoản tiền minh họa là 5 ADA.
3.1 Khóa tiền vào Smart Contract
Người thuê gửi khoản tiền vào địa chỉ script của hợp đồng. Tài sản lúc này không nằm trực tiếp trong ví của chủ nhà. Tài sản cũng chưa được hoàn trả cho người thuê. Hợp đồng giữ khoản tiền và chờ một hành động hợp lệ.
Một mô hình escrow thường có hai hướng xử lý:
|
Tình huống
|
Hành động
|
Bên nhận tiền
|
|
Điều kiện thuê hoàn tất
|
Release Funds
|
Chủ nhà
|
|
Thỏa thuận bị hủy hoặc điều kiện không đạt
|
Refund
|
Người thuê
|
3.2 Release Funds
Nếu người thuê đã chuyển vào ở hoặc các điều kiện của thỏa thuận được đáp ứng, bên có quyền có thể yêu cầu giải ngân.
Quy trình khái quát gồm:
1.Chọn hành động Release Funds trên DApp.
2.Kiểm tra số tiền, địa chỉ chủ nhà và dữ liệu hợp đồng.
3.Ký giao dịch bằng ví testnet.
4.Hợp đồng kiểm tra redeemer, datum và các điều kiện liên quan.
5.Nếu hợp lệ, tiền được chuyển đến chủ nhà.
Một số mô hình có thể yêu cầu xác nhận của hai chủ nhà hoặc nhiều bên. Đây là cơ chế multi-signature hoặc multi-party approval. Không nên mặc định mọi hợp đồng escrow Cardano đều sử dụng cùng một quy tắc ký.
3.3 Nhánh Refund
Nếu thỏa thuận bị hủy hoặc điều kiện giải ngân không được đáp ứng, người thuê chọn Refund.
Quy trình mô phỏng gồm:
1.Chọn hành động Refund trên website.
2.Website tạo giao dịch hoàn trả và gắn redeemer Refund.
3.Smart Contract kiểm tra điều kiện hoàn tiền.
4.Người dùng ký giao dịch bằng ví testnet.
5.Giao dịch được gửi lên Cardano Preview.
6.Khoản tiền còn lại được trả về địa chỉ người thuê sau khi trừ phí giao dịch nếu có.
3.4 Vì sao tiền hoàn lại có thể thấp hơn tiền gửi?
Khoản tiền ban đầu là 5 ADA và số tiền hoàn lại được minh họa khoảng 4,83 ADA. Phần chênh lệch khoảng 0,17 ADA được giải thích là phí mạng hoặc phí giao dịch.
Phí thực tế có thể thay đổi theo cấu trúc giao dịch, kích thước transaction, yêu cầu tối thiểu tại UTxO và trạng thái mạng. Vì vậy, không nên xem 0,17 ADA là một mức phí cố định cho mọi giao dịch Cardano.
Trước khi ký, hãy kiểm tra:
•Số tiền gửi vào Smart Contract.
•Số tiền dự kiến hoàn lại.
•Phí giao dịch.
•Địa chỉ nhận tiền.
•Mạng đang sử dụng là Preview hay Mainnet.
3.5 Kiểm tra kết quả hoàn tiền
Sau khi hoàn tiền, người dùng có thể kiểm tra:
1.Lịch sử giao dịch trong ví testnet.
2.Nhãn hoặc metadata có liên quan đến Refund.
3.Địa chỉ nhận tiền có đúng là địa chỉ của người thuê hay không.
4.Trạng thái xác nhận trên explorer Cardano Preview.
5.Số tiền thực nhận sau khi trừ phí.
Nếu website chỉ đang mô phỏng giao diện, trạng thái “hoàn tiền thành công” không đồng nghĩa với việc một giao dịch thật đã được ghi lên blockchain. Cách xác minh đáng tin cậy là kiểm tra transaction hash trên explorer, nếu hệ thống có phát sinh hash thật.
4. Bảng tóm tắt toàn bộ quy trình
|
Giai đoạn
|
Người dùng thực hiện
|
Smart Contract / hệ thống kiểm tra
|
Kết quả
|
|
Chuẩn bị
|
Mở website và chọn Cardano Preview
|
Kiểm tra môi trường mô phỏng
|
Sẵn sàng thực hành
|
|
Trả góp
|
Nhập 5 ADA, sau đó 3 ADA và 2 ADA
|
Cập nhật tổng đã gửi và số còn nợ
|
Đủ 10 ADA cho kỳ thuê
|
|
Khóa tiền
|
Gửi 5 ADA vào địa chỉ escrow
|
Giữ tài sản và chờ redeemer hợp lệ
|
Tiền đang bị khóa
|
|
Giải ngân
|
Chọn Release Funds
|
Kiểm tra điều kiện release
|
Tiền chuyển cho chủ nhà
|
|
Hoàn tiền
|
Chọn Refund
|
Kiểm tra điều kiện refund
|
Tiền trả về người thuê, trừ phí nếu có
|
|
Xác minh
|
Mở ví và explorer
|
Đối chiếu transaction hash và metadata
|
Xác nhận kết quả
|
5. Các lỗi thường gặp khi thực hành
Địa chỉ không hợp lệ
Hãy kiểm tra địa chỉ có thuộc mạng Preview hay không. Địa chỉ testnet thường bắt đầu bằng addr_test1. Không trộn địa chỉ Mainnet với giao dịch Preview.
Số tiền vượt định mức
Mỗi kỳ thuê trong mô hình là 10 ADA. Nếu tổng thanh toán đã đạt 10 ADA, không tiếp tục gửi thêm cho cùng kỳ.
Metadata không đúng
Kiểm tra tên hợp đồng, tháng thuê, số đã gửi và số còn nợ. Tên hợp đồng có thể được chuẩn hóa về ASCII trong metadata.
Không thấy giao dịch trên explorer
Đảm bảo giao dịch đã được submit thật, đúng mạng lưới và đã có transaction hash. Nếu chỉ chạy mô phỏng giao diện, có thể không có dữ liệu on-chain để tra cứu.
Phí hoàn tiền khác với ví dụ
Phí phụ thuộc vào cấu trúc transaction và điều kiện mạng. Hãy kiểm tra phí hiển thị ngay trước khi ký thay vì dùng mức 0,17 ADA như một giá trị cố định.
Người dùng đã nhập mnemonic của ví thật
Hãy coi mnemonic đó là đã bị lộ. Chuyển tài sản sang một ví mới bằng thiết bị an toàn, thu hồi quyền sử dụng các khóa cũ nếu cần và không tiếp tục sử dụng mnemonic đó. Không bao giờ nhập lại cụm từ này vào website.
6. Kết luận
Smart Contract Escrow trên Cardano cho phép mô hình hóa một quy trình thanh toán có điều kiện. Với ví dụ thuê nhà, người thuê có thể trả góp theo từng lượt, còn Smart Contract ghi nhận trạng thái thanh toán và chờ điều kiện giải ngân hoặc hoàn tiền.
Website Cardano Escrow giúp người mới quan sát các khái niệm UTxO, output, metadata CIP-20, redeemer, script address và phí giao dịch qua một tình huống dễ hiểu. Tuy nhiên, người dùng cần phân biệt rõ giữa mô phỏng giao diện, giao dịch testnet thật và giao dịch Mainnet.
Khuyến nghị thực hành là sử dụng Cardano Preview, ví testnet tách biệt và địa chỉ công khai. Không nhập mnemonic hoặc private key của ví có tài sản thật. Khi cần xác nhận kết quả, hãy kiểm tra transaction hash trên explorer thay vì chỉ dựa vào thông báo trên giao diện.




