Mua Crypto
Thị trường
Spot
FuturesBTC
Tiết kiệm
Trung tâm sự kiện
Trung tâm thưởng
Xem thêm
Lễ hội 0 phí
ERC-777: 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 ERC-777: 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

ERC-777

2026/10/13 15:31
#Advanced
Humanity
H$0.05865+2.53%
Gravity
G$0.00398+3.94%
TokenFi
TOKEN$0.001964+4.13%
MemeCore
M$0.76735-2.66%
o1.exchange
O$0.435+1.87%

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

send
, hook người gửi và người nhận, operator được ủy quyền, hàm burn tích hợp và dữ liệu tùy chọn đính kèm khi chuyển token.

ERC-777 được thiết kế để tương thích ngược với ERC-20, cho phép một hợp đồng token hỗ trợ cả hai giao diện.Tuy nhiên, ERC-777 ít được áp dụng hơn ERC-20 vì hành vi callback và sự phụ thuộc vào ERC-1820 khiến việc tích hợp phức tạp hơn, đồng thời có thể tạo ra rủi ro reentrancy nghiêm trọng.

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

transferFrom
.

ERC-777 đưa ra

send
để chuyển token kèm dữ liệu và thông báo cho bên nhận tương thích trong cùng một giao dịch.

Tiêu chuẩn này cũng giới thiệu operator như một mô hình ủy quyền có tên, dành cho tài khoản hoặc hợp đồng có thể di chuyển token thay mặt người nắm giữ.Tiêu chuẩn hướng đến việc giúp token có thể thay thế hoạt động giống các giao dịch ETH gốc hơn, đồng thời cho phép người gửi và người nhận kiểm soát việc chuyển token bằng lập trình.

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

name
,
symbol
,
totalSupply
và
balanceOf
cung cấp thông tin quen thuộc từ token ERC-20.

Hàm

granularity
cho biết lượng nhỏ nhất không thể chia nhỏ thêm mà có thể được mint, gửi hoặc burn.

Hàm

defaultOperators
trả về các operator mặc định được ủy quyền cho tất cả người nắm giữ, tùy thuộc vào quyền thu hồi của từng người.

Hàm

isOperatorFor
kiểm tra xem một địa chỉ có thể hoạt động với tư cách operator cho một người nắm giữ cụ thể hay không.

Các hàm

authorizeOperator
và
revokeOperator
cho phép người nắm giữ quản lý quyền của operator.

Các hàm

send
và
operatorSend
chuyển token, trong khi
burn
và
operatorBurn
làm giảm vĩnh viễn nguồn cung.

Hàm send

Hàm

send
cho phép người nắm giữ chuyển token trực tiếp đến địa chỉ khác và đính kèm trường bytes có tên
data
.

Dữ liệu đính kèm có thể mô tả khoản thanh toán, thao tác ứng dụng, mã tham chiếu hoặc thông tin khác mà hệ thống nhận hiểu được.Hàm này kích hoạt sender hook và recipient hook đã đăng ký theo quy tắc ERC-777.Khi người nhận là hợp đồng, giao dịch send ERC-777 gốc phải revert nếu hợp đồng chưa đăng ký phần triển khai ERC-777 recipient thông qua ERC-1820.Việc kiểm tra bên nhận nhằm giảm nguy cơ vô tình chuyển token đến hợp đồng không thể xử lý chúng.Điều này không chứng minh rằng bên nhận đã đăng ký là trung thực, an toàn hoặc có giá trị kinh tế đáng tin cậy.

Hàm operatorSend

Hàm

operatorSend
cho phép operator được ủy quyền chuyển token từ người nắm giữ đến người nhận.

Operator phải được ủy quyền trước cho người nắm giữ theo quy tắc operator của token.

Cả

data
do người nắm giữ cung cấp và
operatorData
do operator cung cấp đều có thể được chuyển kèm.

Đị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

Sent
.

Lệnh gọi từ operator chưa được ủy quyền phải revert.Cần xem quyền của operator là thông tin nhạy cảm vì quyền này có thể cho phép địa chỉ khác di chuyển hoặc burn token của người nắm giữ.

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à

tokensToSend
.

Người nắm giữ có thể đăng ký một hợp đồng triển khai hook này thông qua registry ERC-1820.Hợp đồng token phải gọi hook trước khi giảm số dư của người nắm giữ trong thao tác gửi hoặc burn ERC-777.Hook nhận thông tin operator, người gửi, người nhận, số lượng, dữ liệu của người nắm giữ và dữ liệu của operator.Hook có thể kiểm tra thao tác dự kiến và revert nếu các quy tắc được lập trình của người nắm giữ không chấp nhận thao tác đó.Ví thông minh có thể dùng sender hook để áp dụng chính sách chi tiêu, gửi thông báo hoặc thực hiện logic ủy quyền bổ sung.Hợp đồng hook phải xác minh lời gọi đến từ hợp đồng token dự kiến vì cùng một hook đã đăng ký có thể nhận lời gọi liên quan đến nhiều token ERC-777 khác nhau.

Recipient hook

Recipient hook của ERC-777 có tên là

tokensReceived
.

Địa chỉ nhận có thể đăng ký một hợp đồng triển khai hook này thông qua ERC-1820.Token gọi hook sau khi tăng số dư của người nhận trong thao tác gửi hoặc mint.Hook có thể cập nhật kế toán nội bộ, kích hoạt thao tác hợp đồng khác, ghi lại dữ liệu thanh toán hoặc từ chối nhận token bằng cách revert.Thiết kế này cho phép thao tác chuyển token và phản hồi của bên nhận diễn ra trong cùng một giao dịch nguyên tử.Điều đó cũng có nghĩa là việc nhận token ERC-777 có thể thực thi mã bên ngoài trước khi lệnh gọi token ban đầu hoàn tất.Mọi giao thức nhận token ERC-777 phải tính đến hành vi callback này trong tất cả các hàm thay đổi trạng thái có liên quan.

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

Sent
,
Minted
,
Burned
,
AuthorizedOperator
và
RevokedOperator
.

Sự kiện

Sent
xác định operator, người gửi, người nhận, số lượng, dữ liệu người nắm giữ và dữ liệu operator.

Sự kiện

Minted
ghi nhận việc tạo token mới và địa chỉ nhận.

Sự kiện

Burned
ghi nhận việc hủy token và người nắm giữ bị ảnh hưởng.

Sự kiện operator cho phép ví và dịch vụ giám sát theo dõi các thay đổi trong quyền được ủy quyền.

Token đồng thời hỗ trợ ERC-20 có thể phát sự kiện ERC-20

Transfer
ngoài các sự kiện ERC-777 mà đặc tả yêu cầu.

Ứng dụng nên tránh tính trùng một giao dịch chuyển về mặt kinh tế khi cả hai loại sự kiện đều mô tả cùng một lần chuyển.

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

decimals
ERC-20 tùy chọn, đặc tả yêu cầu hàm này trả về 18.

Ứng dụng nên sử dụng phép tính số nguyên và định dạng giá trị để hiển thị, thay vì tính số dư token bằng số dấu phẩy động.

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ư

transfer
,
approve
,
allowance
và
transferFrom
.

Token tương thích kép có thể hoạt động với các ví và ứng dụng cũ chỉ hỗ trợ ERC-20.Hook ERC-777 vẫn có thể áp dụng cho giao dịch ERC-20 tương thích khi người gửi hoặc người nhận liên quan đã đăng ký hook.Tuy nhiên, cơ chế bảo vệ hợp đồng nhận khác nhau giữa hai giao diện.

Lệnh

send
ERC-777 gốc đến hợp đồng nhận chưa đăng ký phải revert, trong khi giao dịch tương thích ERC-20 vẫn có thể tiếp tục và khiến token nằm lại trong hợp đồng đó.

Bên tích hợp phải xác định hàm nào đang được gọi, thay vì cho rằng mọi lần chuyển cùng một token đều có hành vi callback và nhận token giống nhau.

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

send
phải đăng ký phần triển khai ERC-777 recipient, nếu không thao tác sẽ revert.

Cơ chế này chặt chẽ hơn giao dịch ERC-20 cơ bản, vốn có thể thành công ngay cả khi hợp đồng nhận không có logic xử lý token.Tuy nhiên, việc đăng ký chỉ chứng minh rằng một phần triển khai đã được đăng ký cho giao diện đó.Điều này không chứng minh rằng bên nhận ghi nhận số dư chính xác, cho phép rút token hoặc đã vượt qua kiểm toán bảo mật.Bên nhận độc hại có thể cố ý chấp nhận token rồi thực thi logic gây hại.Người dùng vẫn cần xác minh hợp đồng nhận và mục đích giao dịch.

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

ERC777TokensRecipient
thông qua registry ERC-1820.

Người dùng gọi

send
với địa chỉ hợp đồng, số tiền thanh toán và mã tham chiếu đăng ký dịch vụ đã mã hóa.

Token kiểm tra sender hook của người dùng và gọi hook trước khi thay đổi số dư nếu hook đã được đăng ký.Token giảm số dư người dùng và tăng số dư của hợp đồng đăng ký dịch vụ.

Sau đó, token gọi hook

tokensReceived
của hợp đồng với thông tin thanh toán.

Hợp đồng đăng ký dịch vụ xác minh địa chỉ token, người thanh toán, số tiền và mã tham chiếu đính kèm trước khi gia hạn dịch vụ.Nếu hook từ chối khoản thanh toán, toàn bộ giao dịch sẽ revert và số dư token trở về trạng thái ban đầu.Quy trình này minh họa tính năng thanh toán và thông báo nguyên tử là động lực ra đời của ERC-777.

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

tokensReceived
mà không xác minh hợp đồng token gọi hàm.

Lỗi thứ tư là ủy quyền operator mà không hiểu quyền đó có thể bao gồm toàn bộ số dư của người nắm giữ.Lỗi thứ năm là bỏ qua operator mặc định được xác định khi tạo token.

Lỗi thứ sáu là xử lý cả sự kiện

Sent
và
Transfer
như hai giao dịch kinh tế riêng biệt.

Lỗi thứ bảy là gửi token đến hợp đồng thông qua giao diện ERC-20 rồi cho rằng cơ chế bảo vệ bên nhận ERC-777 sẽ buộc giao dịch revert.Lỗi thứ tám là triển khai phần mềm cũ mà không kiểm thử hiện đại và rà soát dependency.Lỗi thứ chín là cho rằng trạng thái EIP Final đồng nghĩa với việc thư viện hiện tại hỗ trợ hoặc hệ sinh thái áp dụng rộng rãi.Lỗi thứ mười là xem việc tuân thủ tiêu chuẩn như bằng chứng token hợp pháp hoặc an toà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ì?

tokensReceived
là recipient hook được gọi sau khi số dư ERC-777 tăng do thao tác gửi hoặc mint.

tokensToSend là gì?

tokensToSend
là sender hook được gọi trước khi số dư ERC-777 giảm do thao tác gửi hoặc burn.

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

decimals
tương thích ERC-20 tùy chọn phải trả về 18.

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

send
có thể chuyển token và thông báo cho hợp đồng nhận tương thích trong cùng một giao dịch nguyên tử.

Các hook

tokensToSend
và
tokensReceived
cho phép lập trình quy tắc cho người gửi và người nhận.

Operator cung cấp cơ chế kiểm soát được ủy quyền tiêu chuẩn, trong khi operator mặc định có thể cung cấp chức năng trên toàn hệ thống nhưng vẫn cho phép người nắm giữ thu hồi quyền.ERC-1820 cung cấp registry dùng để tìm các hook và giao diện này.ERC-777 có thể duy trì khả năng tương thích với ERC-20, nhưng giao dịch qua hai giao diện không phải lúc nào cũng có hành vi nhận token giống nhau.Các tính năng callback giúp tăng khả năng kết hợp cũng có thể tạo điều kiện cho reentrancy và khiến việc tích hợp khó đánh giá hơn.Nhà phát triển phải xác minh bên gọi, bảo vệ mọi hàm liên quan có thay đổi trạng thái, kiểm tra quyền operator, thử nghiệm hook độc hại và hiểu toàn bộ vòng đời chuyển token.Dù tiêu chuẩn vẫn ở trạng thái Final, mức độ áp dụng hạn chế và việc bị xóa khỏi một thư viện hợp đồng lớn hiện hành khiến ERC-777 là lựa chọn chuyên biệt thay vì lựa chọn mặc định cho token mới.Hiểu về ERC-777 giúp người dùng crypto và nhà phát triển nhận biết cả lợi ích của callback token lẫn rủi ro bảo mật phát sinh khi thao tác chuyển token có thể thay thế thực thi mã bên ngoài.
BTC ETFs See $679M in Outflows
BTC ETFs See $679M in OutflowsBTC ETFs See $679M in Outflows
Citi sees BTC at $113K. What do institutions see?