Bỏ qua điều hướng
Tài liệu 9Chain

Hợp đồng và cổng tuân thủ

Cập nhật lần cuối: 21/08/20263 phút đọc

Trang này dành cho người viết hợp đồng trên một chuỗi sinh ra từ nền tảng. Nó không dạy cú pháp; nó nói thứ mà cú pháp không nói cho bạn: luật nào chặn giao dịch của bạn, ở tầng nào, và vì sao lớp bạn nhìn thấy không phải lớp duy nhất.

Khác biệt căn bản với một chain công khai thông thường: ở đây, phần lớn luật không nằm trong hợp đồng của bạn. Chúng nằm dưới nó, trong chính cơ chế đồng thuận — cơ chế đầy đủ ở Nền tảng 9Chain, mục Tuân thủ ở tầng giao thức. Hệ quả cho người viết mã:

Bạn làm gìLớp nào nhìn thấyĐiều cần lường
Gửi một giao dịchKhâu tiền xử lý (lớp 1)Ví chưa được duyệt thì bị từ chối trước khi máy ảo chạy — không có gì để bắt lỗi trong hợp đồng
Chuyển tài sảnModule ngân quỹ (lớp 2)Token nhiên liệu không chuyển nhượng được; đừng thiết kế cơ chế dựa vào việc chuyển nó
Triển khai hợp đồngMóc vào máy ảo (lớp 3)Quyền triển khai là một vai, không phải mặc định. Cả mẫu sinh hợp đồng con cũng bị soi
Nhận tài sản từ mạng ngoàiMiddleware liên chuỗi (lớp 4)Người nhận chưa duyệt thì gói báo lỗi ngược và hoàn tiền — tiền không kẹt, nhưng luồng của bạn phải chịu được nhánh đó
Tự hỏi "địa chỉ này có được phép không"Precompile (lớp 5)Đây là lớp bạn gọi được từ trong hợp đồng, và là lớp bù cho điểm mù của lớp 1

Hình 26 — Điểm mù của lớp một, và cách hợp đồng tự bù cho nó.

Điểm mù bạn phải biết, vì tài liệu này không giấu nó: khâu tiền xử lý không nhìn thấy lời gọi giữa hợp đồng với hợp đồng bên trong máy ảo. Một hợp đồng đã được phép có thể gọi tiếp hợp đồng khác mà lớp 1 không hay. Lớp 5 tồn tại chính vì điểm mù đó — nên nếu hợp đồng của bạn chuyển tiếp giá trị cho một địa chỉ do người dùng đưa vào, hỏi precompile là việc của bạn, không phải của giao thức.

Luật đọc chung, bền hơn mọi bảng: mỗi lớp chỉ chặn được đúng thứ nó nhìn thấy. Đừng đếm số lớp rồi yên tâm; hãy hỏi lớp nào nhìn thấy gì.

Chuỗi khách và mạng chung là hai chỗ khác nhau. Hợp đồng của bạn chạy trên chuỗi khách; token nhiên liệu ở đó không có giá thị trường và không phải LOVE9. Ba lớp token, và chỗ dễ lẫn nhất, ở Kinh tế LOVE9.

Câu chốt: trên chuỗi này, hợp đồng viết cẩn thận không đủ để đúng luật, và hợp đồng viết cẩu thả cũng không đủ để lách luật — đó chính là điều mà "tuân thủ ở tầng giao thức" nghĩa là.