Giao diện ERC-721 là gì?
Giao diện ERC-721 là tập hợp tiêu chuẩn gồm các hàm và sự kiện của hợp đồng thông minh, được sử dụng để đại diện và chuyển token không thể thay thế trên Ethereum và các mạng blockchain tương thích.Token không thể thay thế (NFT) đại diện cho một token có mã định danh duy nhất, thay vì một lượng đơn vị giống hệt nhau có thể hoán đổi.Đặc tả ERC-721 chính thức xác định cách ví, ứng dụng, hợp đồng thông minh và công cụ blockchain có thể kiểm tra quyền sở hữu NFT và thực hiện giao dịch chuyển theo tiêu chuẩn.
Giao diện này không xác định NFT đại diện cho điều gì, có giá trị ra sao hoặc nội dung liên kết với NFT có xác thực hay không.Giao diện cung cấp ngôn ngữ kỹ thuật chung để các ứng dụng crypto khác nhau có thể tương tác với hợp đồng NFT.Tiêu chuẩn ERC-721 đã đạt trạng thái Final trong quy trình Đề xuất cải tiến Ethereum và vẫn là một trong những tiêu chuẩn chính dành cho tài sản blockchain độc nhất.ERC-721 có thể được dùng cho vật phẩm sưu tầm kỹ thuật số, vật phẩm trong game, thông tin thành viên, đất ảo, vé sự kiện, tài sản dạng tên miền, vị thế tài chính và hồ sơ được token hóa.Vì sao giao diện lại quan trọng?
Giao diện hợp đồng thông minh mô tả các hàm và sự kiện bên ngoài mà phần mềm tương thích kỳ vọng hợp đồng cung cấp.Nếu không có giao diện chung, mỗi dự án NFT có thể sử dụng tên hàm và quy tắc chuyển token khác nhau.Khi đó, ví và ứng dụng phi tập trung sẽ cần mã tùy chỉnh cho từng bộ sưu tập.Giao diện ERC-721 cho phép phần mềm gọi các hàm quen thuộc như
Điều gì khiến token ERC-721 không thể thay thế?
Mỗi token ERC-721 có một số nguyên không dấu duy nhất gọi là token ID.Token được xác định đầy đủ bằng sự kết hợp của mạng blockchain, địa chỉ hợp đồng và token ID.Token ID 100 trong một hợp đồng không liên quan đến token ID 100 trong hợp đồng khác.Tiêu chuẩn không yêu cầu token ID bắt đầu từ 0, tăng theo thứ tự hoặc tuân theo quy luật có thể dự đoán.Ứng dụng nên xem mỗi token ID là mã định danh không mang ý nghĩa nội tại, thay vì đoán những ID nào tồn tại.Theo mô hình quyền sở hữu ERC-721 cốt lõi, mỗi token ID hợp lệ có một chủ sở hữu tại một thời điểm.NFT có thể được chuyển nguyên vẹn như một token, còn quyền sở hữu phân đoạn cần một hợp đồng hoặc cấu trúc token riêng nằm ngoài giao diện cơ bản.Interface ID cốt lõi của ERC-721
Giao diện ERC-721 cốt lõi được nhận diện thông qua ERC-165 bằng giá trị
Hợp đồng tương thích cần trả về
Tiêu chuẩn phát hiện giao diện ERC-165 tính interface ID bằng cách áp dụng phép XOR cho các function selector có trong giao diện đó.
ERC-165 cho phép ứng dụng hỏi hợp đồng xem hợp đồng tuyên bố hỗ trợ những giao diện tiêu chuẩn nào trước khi thử tương tác.Phản hồi tích cực hữu ích cho việc kiểm tra khả năng tương thích, nhưng không tự chứng minh rằng mọi hàm đều được triển khai chính xác.Ứng dụng xử lý tài sản có giá trị cũng có thể cần rà soát mã, kiểm thử và mô phỏng giao dịch.Các hàm cốt lõi của ERC-721
Giao diện ERC-721 bắt buộc bao gồm các hàm truy vấn quyền sở hữu, chuyển token và quản lý phê duyệt.Các hàm chính là
Hàm balanceOf
Hàm
Hàm ownerOf
Hàm
Hàm transferFrom
Hàm
Địa chỉ
NFT được gửi bằng
Các hàm safeTransferFrom
ERC-721 định nghĩa hai phiên bản nạp chồng của
Nếu người nhận là hợp đồng thông minh, quy trình chuyển sẽ gọi
IERC721Receiver là gì?
Hàm bắt buộc của giao diện là
Bên nhận hợp lệ trả về function selector của mình, thường được biểu thị là
Tài liệu triển khai ERC-721 hiện tại bao gồm giao diện receiver và tiện ích lưu giữ cơ bản cho hợp đồng cần nhận giao dịch chuyển an toàn.
Receiver nên xác minh hợp đồng NFT nào đã gọi nó trước khi dùng callback để cập nhật dữ liệu kế toán quan trọng.Rủi ro callback của ERC-721 receiver
Giao dịch chuyển an toàn đến hợp đồng tạo ra một lệnh gọi bên ngoài đến bên nhận.Bên nhận có thể thực thi mã bổ sung trước khi giao dịch ban đầu hoàn tất.Điều này tạo ra khả năng tái nhập nếu ứng dụng gửi chưa hoàn tất việc cập nhật trạng thái nội bộ.Receiver độc hại có thể cố gọi một hàm khác trong hợp đồng ban đầu trong callback.Hướng dẫn bảo mật hợp đồng thông minh của Solidity khuyến nghị hoàn tất các bước kiểm tra và cập nhật trạng thái quan trọng trước khi tương tác với bên ngoài, khi thiết kế dự kiến cho phép thứ tự đó.
Nhà phát triển nên kiểm thử giao dịch chuyển NFT an toàn với hợp đồng receiver độc hại, thay vì cho rằng callback vô hại.Hàm approve
Hàm
Gọi
Hàm getApproved
Hàm
Khi xác định một địa chỉ khác có thể chuyển token hay không, ứng dụng cũng nên kiểm tra
Hàm setApprovalForAll
Hàm
Hàm isApprovedForAll
Hàm
Sự kiện ERC-721
Giao diện ERC-721 cốt lõi định nghĩa các sự kiện
Sự kiện Transfer
Sự kiện
Sự kiện Approval
Sự kiện
Sự kiện ApprovalForAll
Sự kiện
Giao diện metadata ERC-721 tùy chọn
Phần mở rộng metadata bổ sung các hàm
Interface ID ERC-165 của phần mở rộng này là
Hàm
Hàm
Hàm
tokenURI hoạt động như thế nào?
Hàm
Hướng dẫn phát triển ERC-721 hiện tại lưu ý rằng bên kiểm soát vị trí lưu trữ có thể thay đổi metadata off-chain.
Quyền sở hữu token không tự động đảm bảo ảnh hoặc tệp bên ngoài luôn có thể truy cập.Giao diện enumerable ERC-721 tùy chọn
Phần mở rộng enumerable cho phép ứng dụng tìm token ID thông qua truy vấn on-chain.Interface ID ERC-165 của phần mở rộng này là
Phần mở rộng bổ sung các hàm
Hàm
Nhiều ứng dụng thay vào đó tái dựng danh sách NFT sở hữu từ sự kiện
Mint và burn
Giao diện ERC-721 cốt lõi không yêu cầu hàm mint công khai.Mỗi dự án tự quyết định việc mint được mở cho tất cả, giới hạn, lên lịch, giới hạn nguồn cung hay vô hiệu hóa vĩnh viễn.Tiêu chuẩn cũng không yêu cầu hàm burn công khai.Việc burn xóa token khỏi hồ sơ quyền sở hữu hợp lệ theo cách triển khai của hợp đồng.Người dùng nên tìm hiểu ai có quyền mint hoặc burn NFT và liệu quản trị viên có thể tác động đến token do tài khoản khác nắm giữ hay không.Giao diện chuyển tuân thủ tiêu chuẩn không chứng minh nguồn cung token là cố định.Giao diện ERC-721 và phần triển khai ERC-721
Giao diện định nghĩa hành vi bên ngoài cần thiết để đảm bảo khả năng tương thích.Phần triển khai chứa logic thực tế về lưu trữ, quyền hạn, chuyển token, mint, metadata và quản trị.Hai hợp đồng có thể hỗ trợ cùng một giao diện ERC-721 nhưng sử dụng thiết kế nội bộ rất khác nhau.Một phần triển khai có thể bất biến, trong khi phần khác hoạt động thông qua proxy có thể nâng cấp.Một hợp đồng có thể có nguồn cung cố định, trong khi hợp đồng khác cho phép quản trị viên mint không giới hạn.Một hợp đồng có thể lưu metadata on-chain, trong khi hợp đồng khác trỏ đến máy chủ có thể thay đổi.Người dùng nên rà soát phần triển khai thay vì xem việc hỗ trợ giao diện là đánh giá bảo mật toàn diện.ERC-721 so với ERC-20
ERC-20 đại diện cho số dư có thể thay thế, còn ERC-721 đại diện cho các token có mã định danh riêng.Tài khoản ERC-20 có thể nắm giữ một lượng chia nhỏ như 250 đơn vị.Tài khoản ERC-721 sở hữu một số lượng token ID riêng biệt.Hàm
ERC-721 so với ERC-1155
ERC-721 tập trung vào các token không thể thay thế có mã định danh riêng.ERC-1155 cho phép một hợp đồng quản lý nhiều token ID, bao gồm tài sản có thể thay thế, bán thay thế và không thể thay thế.Tài khoản ERC-1155 có thể nắm giữ nhiều đơn vị của cùng một token ID.Token ID ERC-721 có một chủ sở hữu và không duy trì số lượng của từng token cho mỗi tài khoản.Tiêu chuẩn phù hợp nhất phụ thuộc vào mô hình tài sản, phương thức chuyển, nhu cầu thao tác theo lô và yêu cầu ứng dụng.Tiền bản quyền và giao diện ERC-721
Giao diện ERC-721 cốt lõi không định nghĩa tiền bản quyền cho nhà sáng tạo.Một giao diện tiền bản quyền riêng có thể cung cấp thông tin về người nhận khoản thanh toán đề xuất và số tiền.Thông tin tiền bản quyền không tự động buộc mọi hệ thống chuyển token phải thực hiện thanh toán.Bộ sưu tập có công bố tiền bản quyền nên giải thích cách tính thông tin đó và liệu thông tin có thể thay đổi hay không.Người dùng không nên cho rằng NFT ERC-721 bao gồm quyền tiền bản quyền vĩnh viễn hoặc có thể thực thi.Rủi ro bảo mật từ phê duyệt ERC-721
Lừa đảo xin cấp quyền là một trong những rủi ro quan trọng nhất đối với người nắm giữ NFT.Trang web độc hại có thể yêu cầu
Rủi ro khi chuyển không an toàn
Hàm
Đây là lý do nên dùng
Rủi ro về metadata và tính xác thực
Bất kỳ ai cũng có thể triển khai hợp đồng ERC-721 bằng tên hoặc ký hiệu bộ sưu tập quen thuộc.Địa chỉ hợp đồng là mã định danh kỹ thuật quan trọng nhất của một bộ sưu tập.Metadata cũng có thể chứa tên gây hiểu lầm, tác phẩm nghệ thuật sao chép, liên kết ngoài không an toàn hoặc tệp không thể truy cập.Token URI do quản trị viên dự án kiểm soát có thể trỏ đến nội dung khác về sau.Quyền sở hữu on-chain không tự xác minh danh tính nhà sáng tạo hoặc quyền sở hữu trí tuệ.Người dùng nên xác nhận địa chỉ bộ sưu tập và thông tin dự án qua các nguồn có thẩm quyền.Rủi ro từ hợp đồng có thể nâng cấp
Phần triển khai ERC-721 có thể hoạt động thông qua proxy có thể nâng cấp.Quản trị viên được ủy quyền có thể thay đổi quy tắc chuyển token, logic metadata, quyền mint hoặc hành vi khác sau khi người dùng mua NFT.Nâng cấp có thể sửa lỗi nhưng cũng tạo ra rủi ro về quản trị và lộ khóa.Người dùng nên kiểm tra quyền nâng cấp, độ trễ thời gian, biện pháp kiểm soát bằng đa chữ ký và vai trò quản trị viên.Việc hỗ trợ giao diện ERC-721 không cho biết mọi hàm đặc quyền trong phần triển khai.Cách nhà phát triển nên triển khai ERC-721
Nhà phát triển nên bắt đầu với một phần triển khai đã được rà soát và vẫn được duy trì tích cực, thay vì viết lại logic quyền sở hữu nhạy cảm nếu không có lý do chính đáng.API ERC-721 của OpenZeppelin hiện tại cung cấp các thành phần cốt lõi, metadata, enumerable, pausable, burnable, tiền bản quyền, voting và receiver.
Quyền mint cần được giới hạn theo chính sách nguồn cung đã công bố của bộ sưu tập.Nên cân nhắc mint an toàn khi NFT có thể được mint trực tiếp đến hợp đồng thông minh.Cần xem callback của receiver là lệnh gọi bên ngoài có khả năng gây reentrancy.Kiểm thử cần bao quát quyền sở hữu, phê duyệt, quyền operator, receiver an toàn, receiver độc hại, burn, token ID không hợp lệ và chuyển trái phép.Nhà phát triển cũng nên kiểm thử xem phát hiện giao diện có trả về giá trị chính xác cho mọi phần mở rộng đã triển khai hay không.Cách ứng dụng phát hiện hỗ trợ ERC-721
Ứng dụng có thể gọi
Giá trị trả về
Ví dụ về giao dịch chuyển ERC-721
Giả sử Alice sở hữu token ID 42 trong một hợp đồng ERC-721.Hàm
Ví của Alice gọi
Hợp đồng cập nhật quyền sở hữu và gọi
Nếu bên nhận trả về selector chính xác, giao dịch chuyển hoàn tất và sự kiện
Các lỗi thường gặp với giao diện ERC-721
Một lỗi phổ biến là cho rằng tên bộ sưu tập định danh duy nhất hợp đồng NFT.Một lỗi khác là xem
Lỗi thứ ba là dùng
FAQ
Giao diện ERC-721 là gì?
Giao diện ERC-721 là tập hợp tiêu chuẩn gồm các hàm và sự kiện để theo dõi quyền sở hữu, phê duyệt và giao dịch chuyển token không thể thay thế.Interface ID ERC-721 là gì?
Interface ID cốt lõi của ERC-721 là
balanceOf trả về gì với hợp đồng ERC-721?
Hàm trả về số NFT riêng biệt trong hợp đồng đó mà một địa chỉ sở hữu.ownerOf có chức năng gì?
Hàm trả về chủ sở hữu hiện tại của một token ID hợp lệ.transferFrom khác safeTransferFrom như thế nào?
onERC721Received là gì?
Đây là callback mà hợp đồng thông minh triển khai để xác nhận có thể nhận NFT qua giao dịch chuyển an toàn.Giao dịch chuyển NFT an toàn có thể thất bại không?
Có, giao dịch sẽ thất bại nếu không đạt bước kiểm tra quyền hoặc hợp đồng nhận không trả về selector callback dự kiến.approve có chức năng gì?
Hàm này ủy quyền cho một địa chỉ chuyển một NFT cụ thể.setApprovalForAll có chức năng gì?
Hàm cấp cho operator quyền đối với mọi NFT mà bên gọi sở hữu trong hợp đồng ERC-721 đó.Phê duyệt operator có tự động hết hạn không?
Không, phê duyệt tiêu chuẩn trên toàn bộ bộ sưu tập vẫn hoạt động cho đến khi chủ sở hữu thu hồi hoặc hợp đồng áp dụng quy tắc tùy chỉnh bổ sung.Chuyển NFT có xóa phê duyệt riêng của token đó không?
Có, phần triển khai ERC-721 thông thường xóa phê duyệt gắn với token đó trong khi chuyển.ERC-721 có bắt buộc dùng metadata không?
Không, giao diện metadata là tùy chọn, dù hầu hết bộ sưu tập NFT đều triển khai.Interface ID metadata ERC-721 là gì?
Phần mở rộng metadata sử dụng interface ID
Interface ID enumerable ERC-721 là gì?
Phần mở rộng enumerable sử dụng interface ID
Mọi hợp đồng ERC-721 đều hỗ trợ totalSupply phải không?
Không,
ERC-721 có yêu cầu hàm mint không?
Không, giao diện cốt lõi không quy định cách người dùng hoặc quản trị viên mint NFT.ERC-721 có yêu cầu hàm burn không?
Không, burn là tính năng của phần triển khai chứ không phải hàm cốt lõi bắt buộc.ERC-721 có thực thi tiền bản quyền không?
Không, tiền bản quyền nằm ngoài giao diện ERC-721 cốt lõi và cần logic hoặc tiêu chuẩn riêng.Metadata ERC-721 có thể thay đổi không?
Có, tiêu chuẩn cho phép token URI thay đổi, trừ khi phần triển khai đưa ra cam kết bất biến mạnh hơn.Tuân thủ ERC-721 có chứng minh NFT xác thực không?
Không, bất kỳ ai cũng có thể triển khai hợp đồng tương thích, vì vậy người dùng phải tự xác minh địa chỉ hợp đồng và đơn vị phát hành.Kết luận
Giao diện ERC-721 cung cấp các quy tắc chung về quyền sở hữu, phê duyệt, chuyển token và sự kiện được NFT sử dụng trong các ứng dụng tương thích Ethereum.Interface ID cốt lõi là
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

