ERC-777 là gì?
ERC-777 là tiêu chuẩn token Ethereum dành cho tài sản crypto có thể thay thế, bổ sung hook chuyển token, quyền cho operator, dữ liệu giao dịch và cơ chế kiểm tra an toàn hơn đối với hợp đồng nhận token vào mô hình token cơ bản.Tương tự ERC-20, tiêu chuẩn này đại diện cho các đơn vị có thể hoán đổi, trong đó một đơn vị token có cùng giá trị và thuộc tính với đơn vị khác của cùng token.Đặc tả ERC-777 chính thức là tiêu chuẩn Ethereum Request for Comments đã hoàn tất, được tạo ra nhằm cải thiện cách token có thể thay thế tương tác với ví và hợp đồng thông minh.
Các tính năng chính gồm hàm
ERC-777 còn là tiêu chuẩn đang hoạt động không?
ERC-777 vẫn được liệt kê là tiêu chuẩn Final trong kho lưu trữ Đề xuất cải tiến Ethereum chính thức.Trạng thái Final có nghĩa là đặc tả đã hoàn tất quy trình tiêu chuẩn hóa EIP, nhưng không đảm bảo tiêu chuẩn được áp dụng rộng rãi, được thư viện hỗ trợ tích cực hoặc phù hợp với mọi token mới.Một thư viện hợp đồng thông minh lớn đã ngừng sử dụng phần triển khai ERC-777 ở phiên bản 4.9 và xóa phần triển khai này khỏi phiên bản 5.0.Nhật ký thay đổi OpenZeppelin Contracts hiện tại ghi nhận việc kết thúc hỗ trợ phần triển khai, trong khi các giao diện tiêu chuẩn liên quan vẫn có thể sử dụng.
Quyết định của thư viện này không hủy ERC-777 hoặc làm thay đổi trạng thái Final của tiêu chuẩn.Điều đó có nghĩa là nhà phát triển không nên kỳ vọng có phần triển khai token ERC-777 được duy trì trong các phiên bản hiện tại của thư viện đó.Các hợp đồng ERC-777 hiện có vẫn có thể tiếp tục hoạt động theo mã đã triển khai, nhưng các tích hợp mới cần đánh giá cẩn thận hành vi callback, dependency, kiểm toán và mức hỗ trợ trong hệ sinh thái.Vì sao ERC-777 được tạo ra?
ERC-777 được tạo ra nhằm giải quyết một số hạn chế về khả năng sử dụng và an toàn liên quan đến thao tác chuyển ERC-20 cơ bản.Giao dịch ERC-20 chuyển token đến hợp đồng không yêu cầu hợp đồng nhận xác nhận hoặc xử lý token.Điều này có thể khiến token bị mắc kẹt nếu hợp đồng không có chức năng khôi phục hoặc ghi nhận chúng.Ứng dụng ERC-20 cũng thường sử dụng quy trình hai bước: người dùng phê duyệt bên chi tiêu trước, sau đó bên chi tiêu gọi
ERC-777 đưa ra
ERC-777 hoạt động như thế nào?
Hợp đồng ERC-777 lưu số dư token và tổng nguồn cung, đồng thời cung cấp các hàm tiêu chuẩn để gửi, burn và ủy quyền kiểm soát token.Khi token được gửi, hợp đồng sẽ kiểm tra xem người gửi có đăng ký sender hook thông qua ERC-1820 hay không.Nếu có sender hook, token sẽ gọi hook đó trước khi thay đổi số dư.Sau đó, token giảm số dư người gửi và tăng số dư người nhận.Sau khi cập nhật số dư, token kiểm tra xem người nhận có đăng ký recipient hook hay không và gọi hook đó khi cần.Hook có thể chấp nhận giao dịch, thực hiện logic bổ sung hoặc revert toàn bộ giao dịch.Vì thao tác có tính nguyên tử, việc revert trong một hook bắt buộc thường sẽ hủy giao dịch chuyển token cùng mọi thay đổi trạng thái liên quan trong giao dịch đó.Các hàm cốt lõi của ERC-777
Giao diện ERC-777 bao gồm các hàm về metadata token, số dư, granularity, operator, chuyển token và burn.Các hàm
Hàm
Hàm
Hàm
Các hàm
Các hàm
Hàm send
Hàm
Hàm operatorSend
Hàm
Cả
Địa chỉ operator, người nắm giữ, người nhận, số lượng và dữ liệu được đưa vào sự kiện tiêu chuẩn
Operator ERC-777 là gì?
Operator là địa chỉ được ủy quyền gửi hoặc burn token ERC-777 thay mặt người nắm giữ.Người nắm giữ token luôn là operator đối với số dư của chính mình.Người nắm giữ có thể ủy quyền cho tài khoản hoặc hợp đồng thông minh khác rồi thu hồi quyền đó về sau.Operator có thể hỗ trợ thanh toán tự động, quản lý tài khoản bằng hợp đồng, hoạt động theo lịch, hệ thống khôi phục hoặc các quy trình ủy quyền token khác.Khác với allowance dạng số của ERC-20, quyền operator thông thường không giới hạn ở một lượng token cụ thể.Quyền rộng hơn này có thể cải thiện trải nghiệm sử dụng nhưng làm tăng nguy cơ tổn thất nếu operator có hành vi độc hại hoặc bị xâm nhập.Ví nên giải thích rõ rằng việc ủy quyền operator có thể trao quyền kiểm soát liên tục đối với số dư của người nắm giữ.Operator mặc định
Token ERC-777 có thể xác định các operator mặc định được ủy quyền ban đầu cho mọi người nắm giữ.Danh sách operator mặc định phải được cố định khi tạo hợp đồng token và không thể mở rộng hoặc thu hẹp về sau theo tiêu chuẩn.Mỗi người nắm giữ phải có khả năng thu hồi quyền của operator mặc định đối với token của chính mình.Người nắm giữ cũng phải có khả năng ủy quyền lại cho operator mặc định đã thu hồi trước đó.Operator mặc định có thể hỗ trợ dịch vụ trên toàn hệ thống mà không yêu cầu từng người nắm giữ thực hiện giao dịch ủy quyền ban đầu.Đồng thời, đây là yếu tố cần cân nhắc nghiêm túc về mức độ tin cậy vì operator mặc định có quyền rộng đối với người nắm giữ token ngay từ đầu.Người dùng nên kiểm tra danh sách operator mặc định và hiểu mục đích của từng operator trước khi nắm giữ lượng lớn token ERC-777.Sender hook
Sender hook của ERC-777 có tên là
Recipient hook
Recipient hook của ERC-777 có tên là
ERC-1820 là gì?
ERC-777 dựa vào ERC-1820 để tìm sender hook, recipient hook và các giao diện được hỗ trợ.Đặc tả ERC-1820 xác định registry chung, nơi một địa chỉ có thể công bố những giao diện nó hỗ trợ và hợp đồng nào triển khai các giao diện đó.
Registry có thể biểu thị giao diện cho cả tài khoản thông thường lẫn hợp đồng thông minh.Tài khoản có thể tự đăng ký làm đơn vị triển khai hoặc chỉ định một hợp đồng riêng xử lý giao diện thay mình.Trước khi gọi hook ERC-777, token truy vấn registry để tìm phần triển khai tương ứng của người gửi hoặc người nhận.Việc phụ thuộc vào registry bổ sung một lần tra cứu hợp đồng bên ngoài trong các thao tác ERC-777.Mạng được hỗ trợ phải có bản triển khai registry ERC-1820 dự kiến và hành vi tích hợp phù hợp để phần triển khai tiêu chuẩn hoạt động chính xác.Sự kiện ERC-777
ERC-777 định nghĩa các sự kiện
Sự kiện
Sự kiện
Sự kiện
Token đồng thời hỗ trợ ERC-20 có thể phát sự kiện ERC-20
Granularity và cách hiển thị số thập phân
Granularity là lượng token nội bộ nhỏ nhất mà hợp đồng ERC-777 cho phép mint, gửi hoặc burn.Giá trị này được đặt khi tạo hợp đồng và không thể thay đổi theo tiêu chuẩn.Mọi số dư và lượng chuyển phải là bội số của granularity của token.Hầu hết token sử dụng granularity bằng một, cho phép chuyển mọi đơn vị nội bộ nguyên.ERC-777 quy định đơn vị hiển thị có 18 chữ số thập phân so với đơn vị nội bộ.Nếu token ERC-777 cũng cung cấp hàm
ERC-777 và khả năng tương thích ERC-20
ERC-777 được thiết kế để token có thể triển khai các hàm ERC-20 song song với giao diện ERC-777.Tiêu chuẩn ERC-20 định nghĩa các hàm quen thuộc như
Lệnh
ERC-777 so với allowance ERC-20
ERC-20 thường cấp cho bên chi tiêu một allowance dạng số, giới hạn số token họ có thể chuyển từ chủ sở hữu.ERC-777 trao cho operator quyền thao tác với số dư của người nắm giữ cho đến khi quyền đó bị thu hồi.Mô hình operator cung cấp một vai trò có tên rõ ràng hơn và hỗ trợ các thao tác gửi, burn tiêu chuẩn.Mô hình allowance có thể giới hạn số lượng chặt chẽ hơn, dù đôi khi người dùng phê duyệt số lượng lớn hơn nhiều so với nhu cầu.Cả hai hệ thống đều có thể gây tổn thất nếu người dùng ủy quyền cho hợp đồng độc hại hoặc bị xâm nhập.Ví nên cho biết thao tác sẽ tạo allowance cố định, allowance không giới hạn hay quyền operator ERC-777.Thu hồi một loại quyền không nhất thiết thu hồi loại quyền còn lại nếu token hỗ trợ cả hai tiêu chuẩn.Rủi ro reentrancy của ERC-777
Rủi ro tích hợp quan trọng nhất của ERC-777 đến từ các hook.Recipient hook thực thi mã hợp đồng bên ngoài trong quá trình chuyển token.Mã bên ngoài đó có thể gọi lại giao thức gửi token trước khi hàm ban đầu của giao thức hoàn tất.Hành vi này được gọi là reentrancy.Giao thức dễ bị tấn công có thể tính số dư, gửi token ERC-777, nhận callback rồi cho phép callback lặp lại một thao tác bằng dữ liệu kế toán nội bộ đã lỗi thời.Vấn đề vẫn có thể xảy ra khi giao thức gọi hàm kiểu ERC-20 vì token ERC-777 tương thích kép vẫn có thể kích hoạt các hook đã đăng ký.Nhà phát triển không bao giờ nên cho rằng việc chuyển token có thể thay thế không kích hoạt callback chỉ vì tên hàm giống với thao tác chuyển ERC-20 thông thường.Giảm rủi ro reentrancy
Khi logic dự kiến cho phép, giao thức nên cập nhật phần kế toán quan trọng của chính mình trước khi gọi token bên ngoài.Giao thức nên sử dụng reentrancy guard phù hợp cho các điểm vào nhạy cảm.Cần xem xét các hàm liên quan cùng nhau vì chặn tái nhập vào một hàm vẫn có thể để lại lỗ hổng khai thác ở hàm khác.Giao thức nên xác thực hợp đồng token thay vì chấp nhận tài sản tùy ý có hành vi callback chưa rõ.Kiểm thử nên bao gồm sender hook độc hại, recipient hook độc hại, chuyển token lồng nhau, callback bị revert và tái nhập giữa các hàm.Nhà phát triển cũng nên rà soát đường đi mint và burn vì hook ERC-777 không chỉ áp dụng cho thao tác gửi thông thường.Kiểm toán có thể giảm rủi ro nhưng không thể đảm bảo mọi tương tác callback đều an toàn.Bảo vệ bên nhận và giới hạn
Cơ chế kiểm tra bên nhận ERC-777 nhằm giảm nguy cơ token bị mắc kẹt vĩnh viễn trong hợp đồng không thể xử lý chúng.Hợp đồng nhận token qua
Lợi ích của ERC-777
ERC-777 có thể thông báo cho hợp đồng khi nhận token có thể thay thế.Tiêu chuẩn này có thể kết hợp thao tác chuyển token và xử lý của bên nhận trong một giao dịch.Nó cho phép người gửi và người nhận từ chối giao dịch thông qua hook có thể lập trình.Tiêu chuẩn hỗ trợ dữ liệu đính kèm mà ứng dụng có thể dùng để diễn giải khoản thanh toán hoặc thao tác.Mô hình operator cung cấp cơ chế kiểm soát được ủy quyền tiêu chuẩn và khả năng thu hồi rõ ràng.Lệnh send ERC-777 gốc giảm nguy cơ vô tình chuyển token đến hợp đồng chưa đăng ký hỗ trợ nhận token.Khả năng tương thích ngược có thể cho phép một token hoạt động với cơ sở hạ tầng ERC-20, đồng thời cung cấp hành vi nâng cao hơn cho ứng dụng hỗ trợ ERC-777.Hạn chế của ERC-777
Hook khiến hợp đồng thông minh khó suy luận an toàn hơn về quá trình chuyển token.Tra cứu ERC-1820 tạo thêm dependency bên ngoài và làm tăng độ phức tạp khi tích hợp.Quyền operator có thể rộng hơn người dùng nghĩ.Operator mặc định tạo ra yếu tố quan trọng cần cân nhắc về niềm tin và quyền hạn.Khả năng tương thích ERC-20 kép khiến hành vi khác nhau tùy theo giao diện chuyển token được sử dụng.Ứng dụng có thể tính trùng giao dịch chuyển khi xử lý sai cả sự kiện ERC-777 lẫn ERC-20.Nhiều công cụ và ứng dụng phát triển hiện tại chủ yếu tập trung vào ERC-20, làm giảm lợi ích thực tế của việc triển khai ERC-777.Việc xóa phần triển khai ERC-777 được duy trì khỏi một thư viện hợp đồng được sử dụng rộng rãi khiến việc xây dựng và bảo trì an toàn một triển khai mới tốn nhiều công sức hơn.Vì sao ERC-777 ít được áp dụng?
Khi ERC-777 được giới thiệu, ERC-20 đã được hỗ trợ sâu rộng trong ví, ứng dụng, công cụ phân tích và hệ thống hợp đồng thông minh.Muốn thay thế hiệu ứng mạng lưới đó, lợi ích mang lại phải đủ lớn để bù đắp cho logic callback và registry mới.Nhiều giao thức được xây dựng dựa trên hành vi chuyển và allowance dễ dự đoán của ERC-20.Hook ERC-777 đưa các lệnh gọi bên ngoài không được dự đoán vào những thao tác mà bên tích hợp đôi khi cho là chỉ cập nhật số dư đơn giản.Phần lý do của ERC-2612 lưu ý rằng ERC-777 bổ sung lượng chức năng đáng kể, có thể tạo ra hành vi không mong đợi trong các hợp đồng phổ biến.
Nhà phát triển ngày càng giải quyết từng vấn đề về khả năng sử dụng bằng các phần mở rộng ERC-20 hẹp hơn, thay vì áp dụng một vòng đời chuyển token hoàn toàn khác.Vì vậy, ERC-777 vẫn có ý nghĩa về mặt kỹ thuật nhưng không phải lựa chọn mặc định cho token có thể thay thế của hầu hết dự án Ethereum mới.Nhà phát triển có nên tạo token ERC-777 mới không?
Trước tiên, nhà phát triển nên xác định tính năng ERC-777 nào là thiết yếu đối với token dự kiến.Nếu mục tiêu chính là phê duyệt có chữ ký, phần mở rộng ERC-20 hẹp hơn có thể cung cấp tính năng đó mà không cần thêm hook chuyển token áp dụng chung.Nếu cần callback từ bên nhận, nhà phát triển phải xem xét liệu hợp đồng ứng dụng được thiết kế riêng có thể cung cấp hành vi an toàn và rõ ràng hơn hay không.Việc triển khai ERC-777 mới đòi hỏi rà soát cẩn thận toàn bộ đặc tả, đăng ký ERC-1820, hook, operator, sự kiện, quá trình mint, burn và khả năng tương thích ERC-20.Sử dụng lại phần triển khai cũ không còn được duy trì mà không xem xét thay đổi trình biên dịch và các giả định bảo mật đã biết là không an toàn.Trước khi quản lý tài sản có giá trị, hợp đồng cần được kiểm thử đơn vị, fuzz test, kiểm thử bất biến, kiểm thử tích hợp và rà soát bảo mật độc lập ở mức toàn diện.Nhà phát triển cũng nên xác nhận rằng các ví, hệ thống lưu ký, bridge và ứng dụng phi tập trung dự kiến sử dụng có hỗ trợ hành vi callback của token.Cách người dùng đánh giá token ERC-777
Bước đầu tiên là xác minh địa chỉ hợp đồng token thông qua nguồn có thẩm quyền.Bước thứ hai là xác nhận hợp đồng chỉ hỗ trợ ERC-777 hay đồng thời cung cấp các hàm ERC-20.Bước thứ ba là kiểm tra operator mặc định và xác định quyền hạn của họ.Bước thứ tư là rà soát quyền mint, burn, tạm dừng, đóng băng, nâng cấp và quyền quản trị.Bước thứ năm là xác định hợp đồng có sử dụng proxy với logic có thể thay đổi sau khi mua hay không.Bước thứ sáu là kiểm tra kiểm toán, xác minh mã nguồn, phạm vi kiểm thử và lịch sử sự cố.Bước thứ bảy là kiểm tra các quyền operator đã cấp và thu hồi những quyền không còn cần thiết.Bước thứ tám là xác minh ứng dụng nhận hỗ trợ rõ ràng ERC-777 và các hook của tiêu chuẩn.Bước thứ chín là thử một giao dịch nhỏ trước khi chuyển lượng token đáng kể.Bước thứ mười là nhớ rằng tuân thủ giao diện token không chứng minh giá trị tài chính, khả năng thanh toán hoặc mức độ an toàn khi đầu tư.Ví dụ về khoản thanh toán ERC-777
Giả sử người dùng muốn thanh toán cho hợp đồng đăng ký on-chain bằng token ERC-777.Hợp đồng đăng ký dịch vụ đăng ký phần triển khai
Người dùng gọi
Sau đó, token gọi hook
Các lỗi thường gặp với ERC-777
Một lỗi phổ biến là cho rằng ERC-777 chỉ đơn giản là phiên bản mới thay thế ERC-20.Một lỗi khác là xem thao tác chuyển token như một quy trình không có callback.Lỗi thứ ba là chấp nhận lệnh gọi đến
Lỗi thứ sáu là xử lý cả sự kiện
FAQ
ERC-777 có nghĩa là gì?
ERC-777 là tiêu chuẩn token có thể thay thế của Ethereum đã đạt trạng thái Final, quy định hook, operator, trường dữ liệu, thao tác gửi và burn token.ERC-777 là token có thể thay thế hay không thể thay thế?
ERC-777 là tiêu chuẩn token có thể thay thế, trong đó các đơn vị của cùng một token có thể hoán đổi cho nhau.ERC-777 còn hợp lệ không?
Có, đề xuất chính thức vẫn ở trạng thái Final, dù mức độ áp dụng còn hạn chế và một thư viện hợp đồng lớn đã xóa phần triển khai ERC-777.ERC-777 có giống ERC-20 không?
Không, ERC-777 bổ sung hook, operator, dữ liệu đính kèm và kiểm tra bên nhận, dù một token có thể hỗ trợ cả hai tiêu chuẩn.Tính năng chính của ERC-777 là gì?
Tính năng nổi bật nhất là khả năng thông báo cho hợp đồng người gửi và người nhận đã đăng ký khi token được chuyển.tokensReceived là gì?
tokensToSend là gì?
Operator ERC-777 là gì?
Operator là địa chỉ được ủy quyền gửi hoặc burn token thay mặt người nắm giữ.Operator ERC-777 có thể chuyển toàn bộ token của người dùng không?
Quyền operator thông thường không phải allowance dạng số, vì vậy operator được ủy quyền có thể có quyền kiểm soát rộng cho đến khi người nắm giữ thu hồi quyền.Operator mặc định là gì?
Operator mặc định là địa chỉ được ủy quyền cho mọi người nắm giữ khi tạo token, dù mỗi người nắm giữ phải có khả năng tự thu hồi quyền đó.Vì sao ERC-777 sử dụng ERC-1820?
ERC-1820 cho phép token tìm các hợp đồng triển khai sender hook, recipient hook và giao diện token được hỗ trợ.Có thể gửi token ERC-777 đến hợp đồng thông minh không?
Có, nhưng lệnh send ERC-777 gốc phải revert nếu hợp đồng nhận chưa đăng ký recipient hook bắt buộc.Token ERC-777 có thể bị mắc kẹt trong hợp đồng không?
Cơ chế kiểm tra bên nhận giảm rủi ro này đối với lệnh send gốc, nhưng giao dịch tương thích ERC-20 và logic nhận lỗi vẫn có thể khiến số dư không thể truy cập.ERC-777 có decimals không?
Tiêu chuẩn sử dụng đơn vị hiển thị có 18 chữ số thập phân và hàm
Granularity của ERC-777 là gì?
Granularity là lượng nội bộ nhỏ nhất có thể được mint, gửi hoặc burn.Vì sao ERC-777 có thể gây reentrancy?
Hook của tiêu chuẩn thực thi mã hợp đồng bên ngoài trong các thao tác token, cho phép phần triển khai của bên nhận hoặc người gửi gọi các hàm khác trước khi lệnh gọi ban đầu hoàn tất.Mọi token ERC-777 đều không an toàn phải không?
Không, nhưng mọi tích hợp đều phải chủ động xử lý callback, quyền operator, tra cứu ERC-1820 và logic hợp đồng cụ thể của token.Vì sao phần triển khai ERC-777 bị xóa khỏi OpenZeppelin Contracts?
Phần triển khai này ít được áp dụng và hành vi hook phức tạp khó được hỗ trợ an toàn như một thành phần đa dụng.Token ERC-777 hiện có thể tiếp tục hoạt động không?
Có, hợp đồng đã triển khai tiếp tục hoạt động theo mã của mình, trừ khi cơ chế nâng cấp hoặc quản trị riêng của hợp đồng làm thay đổi chúng.Token mới có nên sử dụng ERC-777 không?
Quyết định phụ thuộc vào việc hook và operator có mang lại lợi ích thiết yếu đủ để bù đắp độ phức tạp bổ sung về bảo mật, tích hợp và bảo trì hay không.Kết luận
ERC-777 là tiêu chuẩn token có thể thay thế của Ethereum ở trạng thái Final, được thiết kế để cải thiện tương tác token thông qua hook, operator, dữ liệu giao dịch và kiểm tra hợp đồng nhận.Hàm
Các hook
Có thể bạn cũng thích
WhatsMiner M30S++
Tên miền Web3
Dự án Web3
HOT
Tiền mã hoá thịnh hành hiện nay đang thu hút sự chú ý đáng kể của thị trường
TOP KL
Tiền mã hoá có khối lượng giao dịch cao nhất
Mới được thêm vào
Tiền mã hoá được niêm yết gần đây có thể giao dịch

