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í
Tiêu chuẩn Multi-Token ERC-1155: Tiêu chuẩn Multi-Token ERC-1155 là gì?ERC-1155 là tiêu chuẩn token trên Ethereum, cho phép một hợp đồng thông minh quản lý đồng thời nhiều loại token.Một hợp đồng ERC-1155 có thể đại diện cho token cóTiêu chuẩn Multi-Token ERC-1155: Tiêu chuẩn Multi-Token ERC-1155 là gì?ERC-1155 là tiêu chuẩn token trên Ethereum, cho phép một hợp đồng thông minh quản lý đồng thời nhiều loại token.Một hợp đồng ERC-1155 có thể đại diện cho token có

Tiêu chuẩn Multi-Token ERC-1155

2026/10/13 15:30
#Intermediate
TokenFi
TOKEN$0.001851-4.39%
Humanity
H$0.05671-2.74%
Gravity
G$0.003764-4.17%
MemeCore
M$0.89891+18.66%
Autheo
THEO$0.00359-22.46%

Tiêu chuẩn Multi-Token ERC-1155 là gì?

ERC-1155 là tiêu chuẩn token trên Ethereum, cho phép một hợp đồng thông minh quản lý đồng thời nhiều loại token.Một hợp đồng ERC-1155 có thể đại diện cho token có thể thay thế, token không thể thay thế, token bán thay thế hoặc kết hợp các loại tài sản này.

Đặc tả ERC-1155 chính thức quy định các truy vấn số dư, giao dịch chuyển đơn lẻ, chuyển hàng loạt, phê duyệt operator, callback của bên nhận, sự kiện và metadata tùy chọn theo tiêu chuẩn.

ERC-1155 được phân loại là tiêu chuẩn Ethereum Request for Comments ở trạng thái Final.Tiêu chuẩn này thường được gọi là Multi-Token Standard vì mỗi token ID trong một hợp đồng có thể đại diện cho một tài sản crypto riêng biệt.Mỗi token ID có thể có nguồn cung, số dư, metadata, độ hiếm, mục đích và đặc điểm kinh tế riêng.ERC-1155 được thiết kế để giảm chi phí và độ phức tạp khi triển khai cũng như tương tác với các bộ sưu tập tài sản blockchain quy mô lớn.

Vì sao ERC-1155 được tạo ra?

Các mô hình token trước đây thường yêu cầu hợp đồng riêng cho từng tài sản có thể thay thế hoặc từng bộ sưu tập NFT.Do đó, một trò chơi blockchain có hàng trăm loại tiền tệ, tài nguyên, vũ khí, nhân vật và vật phẩm sự kiện có thể cần đến rất nhiều hợp đồng.Việc triển khai hợp đồng lặp lại làm tăng lượng bytecode, công việc quản trị, công sức tích hợp và chi phí giao dịch.ERC-1155 đưa nhiều loại token vào một hợp đồng và áp dụng chung hệ thống chuyển token, phê duyệt cho các token đó.Tiêu chuẩn này cũng hỗ trợ các thao tác hàng loạt theo chuẩn, cho phép chuyển nhiều token ID trong một giao dịch.Nhờ vậy, tiêu chuẩn này hữu ích cho trò chơi, vật phẩm sưu tầm kỹ thuật số, hệ thống thành viên, kho token hóa, vị thế tài chính, chương trình thưởng và các ứng dụng crypto khác có nhiều nhóm tài sản.Tiêu chuẩn này không chỉ dành cho trò chơi mà có thể được sử dụng ở bất cứ nơi nào hợp đồng cần quản lý hiệu quả nhiều loại token.

Cách ERC-1155 hoạt động

Hợp đồng ERC-1155 duy trì số dư riêng cho từng tổ hợp giữa địa chỉ tài khoản và token ID.Trong cùng một hợp đồng, một địa chỉ có thể sở hữu 10 đơn vị token ID 1, một đơn vị token ID 2 và không có đơn vị nào của token ID 3.Mỗi token ID có thể hoạt động như một tài sản có thể thay thế, một NFT độc nhất hoặc một tài sản có nguồn cung giới hạn gồm các đơn vị có thể hoán đổi.Khi token được chuyển, hợp đồng giảm số dư của người gửi đối với từng ID liên quan và tăng số dư tương ứng của người nhận.Hợp đồng phát ra các sự kiện theo chuẩn để ví và indexer có thể dựng lại thông tin về việc tạo, chuyển và hủy token.Nếu bên nhận là hợp đồng thông minh, hợp đồng ERC-1155 sẽ gọi một hàm receiver để xác nhận bên nhận chấp nhận tài sản.Các node Ethereum thực thi những quy tắc này và xác minh thay đổi số dư theo mã hợp đồng đã triển khai.

Token ID trong ERC-1155 là gì?

Token ID là một số nguyên không dấu dùng để xác định một loại token trong hợp đồng ERC-1155.Cùng một token ID có thể tồn tại trong một hợp đồng khác nhưng không đại diện cho cùng một tài sản.Vì vậy, tài sản ERC-1155 được xác định đồng thời bằng mạng blockchain, địa chỉ hợp đồng và token ID.Token ID 25 có thể đại diện cho một tài nguyên game có thể thay thế trong hợp đồng này và một vật phẩm sưu tầm độc nhất trong hợp đồng khác.Tiêu chuẩn không yêu cầu ID phải bắt đầu từ 0, tăng tuần tự hay mã hóa một ý nghĩa cụ thể.Nhà phát triển có thể gán ID theo kiến trúc ứng dụng của mình.Ứng dụng nên truy vấn dữ liệu đáng tin cậy từ hợp đồng thay vì phỏng đoán những token ID nào đang tồn tại.

Token có thể thay thế trong ERC-1155

Token ID ERC-1155 có thể đại diện cho một tài sản có thể thay thế nếu tồn tại nhiều đơn vị cùng ID có thể hoán đổi cho nhau.Ví dụ, token ID 1 có thể đại diện cho một loại tiền tệ trong game gồm một triệu đơn vị giống hệt nhau.Mỗi người nắm giữ có số dư số lượng gắn với token ID 1.Các đơn vị có cùng ID thường có các thuộc tính giống nhau do hợp đồng quy định.Khác với ERC-20, giao diện cốt lõi của ERC-1155 không quy định hàm tổng nguồn cung, symbol, tên hoặc decimals riêng cho từng token ID.Dự án cần cung cấp thông tin nguồn cung hoặc thông tin hiển thị cần thiết thông qua phần mở rộng, metadata hoặc hàm tùy chỉnh.

NFT trong ERC-1155

Token ID ERC-1155 có thể đại diện cho tài sản không thể thay thế nếu giới hạn nguồn cung của ID đó ở một đơn vị.Địa chỉ nắm giữ đơn vị duy nhất đó được xem là chủ sở hữu token.Một token ID khác trong cùng hợp đồng có thể đại diện cho một vật phẩm độc nhất khác.Ví dụ, token ID 1001 có thể đại diện cho một thanh kiếm, còn token ID 1002 đại diện cho một mảnh đất ảo.Tiêu chuẩn cốt lõi không bắt buộc nguồn cung tối đa của token ID phải là một.Logic mint của hợp đồng phải đảm bảo tính độc nhất nếu một ID được dự định hoạt động như NFT.

Token bán thay thế

Token bán thay thế ban đầu gồm các đơn vị có thể hoán đổi cho nhau nhưng sau đó có thể mang ý nghĩa riêng hoặc công dụng hạn chế.Vé sự kiện là ví dụ phổ biến: nhiều vé cùng khu vực có thể hoán đổi trước khi sự kiện diễn ra.Sau khi sử dụng, mỗi vé có thể trở thành một bản ghi sưu tầm gắn với một trải nghiệm cụ thể.Vật phẩm game phiên bản giới hạn hoặc có trạng thái thay đổi cũng có thể sử dụng mô hình bán thay thế.ERC-1155 không chính thức phân loại ID là có thể thay thế, không thể thay thế hay bán thay thế.Việc phân loại dựa trên nguồn cung, metadata, quy tắc chuyển token và thiết kế ứng dụng.

Các hàm cốt lõi của ERC-1155

Giao diện cốt lõi gồm các hàm truy vấn số dư, chuyển token và quản lý phê duyệt operator.

Các hàm bắt buộc là

balanceOf
,
balanceOfBatch
,
setApprovalForAll
,
isApprovedForAll
,
safeTransferFrom
và
safeBatchTransferFrom
.

ERC-1155 cũng yêu cầu phát hiện giao diện ERC-165.Giao diện cốt lõi không yêu cầu các hàm mint công khai, burn, tổng nguồn cung, royalty, tên token, symbol hoặc decimals.Có thể bổ sung các tính năng đó bằng phần mở rộng hoặc logic triển khai tùy chỉnh.

Hàm balanceOf

Hàm

balanceOf
trả về số lượng của một token ID mà một địa chỉ sở hữu.

Hàm này cần địa chỉ tài khoản và token ID làm đầu vào.Điều này khác với ERC-20, trong đó một hợp đồng thường chỉ đại diện cho một loại token và hàm chỉ cần địa chỉ tài khoản.

Hàm này cũng khác với ERC-721, trong đó

balanceOf
cho biết một địa chỉ sở hữu bao nhiêu NFT riêng biệt trong một bộ sưu tập.

Số dư ERC-1155 có thể bằng 0, 1 hoặc bất kỳ số nguyên lớn hơn nào mà hợp đồng cho phép.Tiêu chuẩn yêu cầu truy vấn số dư cho địa chỉ zero phải thất bại.

Hàm balanceOfBatch

Hàm

balanceOfBatch
lấy số dư của nhiều tổ hợp tài khoản và token ID trong một lần gọi.

Bên gọi cung cấp một mảng địa chỉ tài khoản và một mảng token ID tương ứng.Mỗi giá trị trả về ứng với tài khoản và ID ở cùng vị trí trong mảng.Hai mảng đầu vào phải có độ dài bằng nhau.Hàm này có thể truy vấn nhiều tài sản của một tài khoản hoặc một tài sản thuộc nhiều tài khoản.Truy vấn số dư hàng loạt giúp ví, trò chơi và ứng dụng phân tích giảm số lần gọi riêng lẻ cần thực hiện.

Hàm safeTransferFrom

Hàm

safeTransferFrom
chuyển một số lượng của một token ID từ địa chỉ này sang địa chỉ khác.

Bên gọi phải là người nắm giữ token hoặc operator được người nắm giữ đó phê duyệt.Người gửi phải có đủ số dư của token ID được chọn.Địa chỉ zero không thể là bên nhận.Hàm cũng nhận một trường bytes có thể chứa thông tin riêng của ứng dụng.Nếu bên nhận là hợp đồng thông minh, hợp đồng đó phải chấp nhận giao dịch thông qua callback receiver ERC-1155 bắt buộc.

Giao dịch chuyển thành công sẽ phát ra sự kiện

TransferSingle
.

Hàm safeBatchTransferFrom

Hàm

safeBatchTransferFrom
chuyển nhiều token ID và số lượng trong một giao dịch.

Bên gọi cung cấp các mảng token ID và giá trị tương ứng.Token ID tại mỗi vị trí trong mảng được chuyển theo số lượng ở vị trí tương ứng trong mảng giá trị.Các mảng phải có độ dài bằng nhau.Bên gọi phải là người nắm giữ hoặc operator được phê duyệt; người nắm giữ cũng phải có đủ số dư cho mọi tài sản trong lô.Nếu bất kỳ giao dịch chuyển bắt buộc nào thất bại, toàn bộ giao dịch thường sẽ bị hoàn tác.

Giao dịch chuyển hàng loạt thành công phát ra một sự kiện

TransferBatch
thay vì một sự kiện chuyển riêng cho từng token ID.

Vì sao chuyển hàng loạt quan trọng?

Chuyển hàng loạt cho phép nhiều loại tài sản được chuyển trong một giao dịch blockchain.Người chơi có thể chuyển đồng thời tiền tệ, nguyên liệu, áo giáp và vật phẩm sưu tầm.Ứng dụng cũng có thể phân phối nhiều loại phần thưởng cho một người nhận trong một thao tác.Gộp giao dịch có thể giảm chi phí phát sinh lặp lại và hạ tổng chi phí so với việc gửi nhiều giao dịch riêng.Mức tiết kiệm cụ thể tùy thuộc vào số lượng ID, cách triển khai hợp đồng, thay đổi trạng thái lưu trữ, điều kiện mạng và logic bên nhận.Các lô rất lớn vẫn có thể tiêu thụ quá nhiều gas và thất bại do giới hạn gas của block.Ứng dụng nên đặt giới hạn hợp lý cho kích thước lô do người dùng kiểm soát.

Phê duyệt operator ERC-1155

ERC-1155 sử dụng mô hình phê duyệt operator trên toàn bộ bộ sưu tập.

Hàm

setApprovalForAll
cho phép người nắm giữ ủy quyền hoặc thu hồi quyền của operator.

Operator được phê duyệt có thể quản lý mọi token ID ERC-1155 mà người nắm giữ sở hữu trong hợp đồng đó.Quyền phê duyệt áp dụng cho số dư hiện có và cả token mà người nắm giữ nhận sau này từ cùng hợp đồng.Tiêu chuẩn không cung cấp hàm cốt lõi để phê duyệt riêng một token ID hoặc số lượng giới hạn.Quyền rộng này giúp ứng dụng dễ sử dụng hơn nhưng tạo ra rủi ro bảo mật đáng kể.Người dùng nên xác minh địa chỉ operator và hợp đồng trước khi phê duyệt.

Hàm isApprovedForAll

Hàm

isApprovedForAll
cho biết một địa chỉ có quyền operator đối với token của địa chỉ khác hay không.

Hàm trả về

true
hoặc
false
.

Phê duyệt chỉ áp dụng cho hợp đồng ERC-1155 nơi quyền đó được ghi nhận.Quyền này không tự động áp dụng cho token ERC-20, NFT ERC-721 hoặc tài sản trong một hợp đồng ERC-1155 khác.Người dùng nên định kỳ rà soát các quyền operator đang hoạt động và thu hồi những quyền không còn cần thiết.Ngắt kết nối ví khỏi website không xóa quyền operator đã lưu on-chain.

Phần mở rộng phê duyệt chi tiết

Mô hình phê duyệt rộng của ERC-1155 có thể không phù hợp nếu người dùng chỉ muốn cấp quyền cho một số token ID hoặc số lượng nhất định.Các tiêu chuẩn bổ sung hoặc hợp đồng tùy chỉnh có thể cung cấp quyền hạn chế hơn.

Phần mở rộng allowance ERC-5216 quy định số lượng được phê duyệt cho các token ID ERC-1155 cụ thể.

Việc hỗ trợ phần mở rộng này là tùy chọn và không nên mặc định là có.Ví phải phân biệt rõ allowance giới hạn theo token ID với phê duyệt tiêu chuẩn áp dụng cho toàn bộ bộ sưu tập.

Giao diện receiver ERC-1155

Hợp đồng thông minh nhận token ERC-1155 qua giao dịch chuyển an toàn tiêu chuẩn phải triển khai hàm receiver phù hợp.

Giao diện receiver gồm

onERC1155Received
cho giao dịch chuyển đơn lẻ và
onERC1155BatchReceived
cho giao dịch chuyển hàng loạt.

Mã định danh ERC-165 của giao diện receiver là

0x4e2312e0
.

Hợp đồng nhận kiểm tra operator, người nắm giữ trước đó, token ID, số lượng và dữ liệu đính kèm.Hợp đồng phải trả về giá trị chấp nhận được yêu cầu; nếu không, giao dịch chuyển sẽ bị hoàn tác.Cơ chế này giảm nguy cơ vô tình chuyển token đến hợp đồng không thể xử lý tài sản ERC-1155.

Callback receiver khi chuyển đơn lẻ

Hàm

onERC1155Received
được gọi sau khi số dư của bên nhận đã được cập nhật cho giao dịch chuyển đơn lẻ.

Giá trị chấp nhận được yêu cầu là

0xf23a6e61
.

Bên nhận có thể xác thực hợp đồng token, operator, người gửi, token ID, số lượng và dữ liệu đính kèm.Bên nhận chấp nhận giao dịch bằng cách trả về giá trị bắt buộc.Bên nhận có thể từ chối giao dịch bằng cách revert hoặc trả về giá trị khác.Hợp đồng nhận không bao giờ nên ghi nhận khoản nạp chỉ dựa trên dữ liệu callback mà không xác minh hợp đồng token gọi hàm.

Callback receiver khi chuyển hàng loạt

Hàm

onERC1155BatchReceived
xử lý việc nhận nhiều token ID trong một giao dịch chuyển.

Giá trị chấp nhận được yêu cầu là

0xbc197c81
.

Phải diễn giải các mảng ID và số lượng theo đúng thứ tự tương ứng.Bên nhận nên xác thực độ dài của các mảng và xác nhận mọi token ID được hỗ trợ đều tuân thủ quy tắc ứng dụng.Trả về giá trị không chính xác hoặc revert sẽ khiến toàn bộ giao dịch chuyển hàng loạt thất bại.Phải thiết kế cẩn thận receiver hàng loạt vì một giao dịch có thể chuyển nhiều loại tài sản khác nhau.

Callback receiver và reentrancy

Callback receiver ERC-1155 thực thi mã hợp đồng bên ngoài trước khi giao dịch chuyển ban đầu hoàn tất.Hợp đồng nhận có thể gọi lại hợp đồng token hoặc ứng dụng khác trong callback.Điều này tạo ra khả năng xảy ra reentrancy.Đặc tả ERC-1155 yêu cầu cập nhật số dư và sự kiện chuyển trước khi gọi receiver hook.Các hợp đồng ứng dụng vẫn cần bảo vệ logic kế toán và phân quyền của riêng mình.

Hướng dẫn bảo mật của Solidity khuyến nghị hoàn tất các bước kiểm tra và thay đổi trạng thái quan trọng trước khi tương tác với bên ngoài, nếu logic dự kiến cho phép.

Nhà phát triển nên kiểm thử cả hai hàm receiver bằng các hợp đồng độc hại cố gắng reentrancy cùng hàm và chéo hàm.

Sự kiện ERC-1155

Tiêu chuẩn cốt lõi định nghĩa các sự kiện

TransferSingle
,
TransferBatch
,
ApprovalForAll
và
URI
.

Các log này cho phép ví, trình khám phá blockchain, indexer và hệ thống phân tích theo dõi hoạt động token.Tiêu chuẩn được thiết kế để có thể dựng lại số dư token và thay đổi nguồn cung từ các sự kiện chuyển.Bản triển khai phải phát ra sự kiện chính xác mỗi khi token được tạo, chuyển hoặc hủy.Luôn phải diễn giải một sự kiện cùng với địa chỉ hợp đồng đã phát ra sự kiện đó.

Sự kiện TransferSingle

Sự kiện

TransferSingle
ghi lại operator, người gửi, người nhận, token ID và số lượng của một loại token.

Giao dịch chuyển thông thường có địa chỉ người gửi và người nhận khác zero.Khi mint, địa chỉ zero được dùng làm người gửi.Khi burn, địa chỉ zero được dùng làm người nhận.Giao dịch chuyển có giá trị bằng zero cũng phải phát ra sự kiện phù hợp.Các bên theo dõi có thể sử dụng những log này để cập nhật bản ghi số dư đã lập chỉ mục.

Sự kiện TransferBatch

Sự kiện

TransferBatch
ghi lại nhiều token ID và số lượng được chuyển trong một thao tác.

ID và số lượng xuất hiện tại các vị trí tương ứng trong mảng.Sự kiện cũng ghi lại operator, người gửi và người nhận.Khi mint hàng loạt, địa chỉ zero được dùng làm người gửi; khi burn hàng loạt, địa chỉ zero được dùng làm người nhận.Indexer phải xử lý mọi phần tử trong mảng để tính số dư và nguồn cung chính xác.

Sự kiện ApprovalForAll

Sự kiện

ApprovalForAll
ghi lại việc chủ sở hữu bật hoặc tắt quyền cho operator.

Sự kiện xác định chủ sở hữu, operator và trạng thái phê duyệt.Bản thân sự kiện không chuyển token.Sự kiện thay đổi việc operator có thể khởi tạo các giao dịch chuyển trong tương lai từ chủ sở hữu hay không.Thu hồi operator không đảo ngược các giao dịch đã hoàn tất trong thời gian quyền còn hiệu lực.

Phát hiện giao diện ERC-1155

ERC-1155 yêu cầu hỗ trợ tiêu chuẩn phát hiện giao diện ERC-165.

ID giao diện ERC-1155 cốt lõi là

0xd9b67a26
.

Hợp đồng tương thích phải trả về

true
khi gọi
supportsInterface
với giá trị này.

Tiêu chuẩn ERC-165 quy định cách hợp đồng thông minh công bố và phát hiện các giao diện được hỗ trợ.

Phát hiện giao diện giúp ứng dụng tránh gọi các hàm không được hỗ trợ.Hợp đồng có thể khai báo hỗ trợ sai hoặc triển khai hàm không chính xác, vì vậy phản hồi tích cực không phải là bảo đảm an ninh toàn diện.

Metadata ERC-1155

ERC-1155 có phần mở rộng URI metadata tùy chọn.

Phần mở rộng bổ sung hàm

uri
, trả về vị trí metadata của một token ID.

ID giao diện của phần mở rộng là

0x0e89341c
.

Vị trí được trả về thường trỏ đến tài liệu JSON có thông tin như tên, mô tả, hình ảnh, thuộc tính và tài nguyên bên ngoài.

Khác với giao diện metadata ERC-20 và ERC-721, thiết kế cốt lõi của ERC-1155 không yêu cầu hàm

name
hoặc
symbol
on-chain.

Dự án vẫn có thể bổ sung các hàm này thông qua phần mở rộng tùy chỉnh.

Thay thế metadata bằng {id}

URI metadata ERC-1155 có thể chứa ký hiệu giữ chỗ

{id}
.

Ứng dụng thay ký hiệu này bằng token ID được yêu cầu ở dạng giá trị hexadecimal viết thường.

Giá trị phải có 64 ký tự, bao gồm các số 0 ở đầu, và không được có tiền tố

0x
.

Cấu trúc này cho phép một URI cơ sở mô tả vị trí metadata của nhiều token ID.Ứng dụng phải thay thế chính xác, nếu không có thể yêu cầu nhầm tệp metadata.

Sự kiện URI

Sự kiện

URI
thông báo URI metadata gắn với một token ID.

Khi URI không mang tính lập trình thay đổi, bản triển khai sử dụng phần mở rộng metadata phải phát ra sự kiện khi có thể biểu thị thay đổi đó qua sự kiện.

Nếu sự kiện như vậy đã được phát ra, hàm

uri
nên trả về cùng giá trị với sự kiện URI mới nhất của ID đó.

URI hợp lệ không chứng minh rằng token ID đã được mint.Ứng dụng nên dùng số dư và sự kiện chuyển thay vì khả năng truy cập metadata để xác định token có tồn tại hay không.

Rủi ro lưu trữ metadata

Metadata ERC-1155 có thể được lưu trên máy chủ truyền thống, mạng lưu trữ định danh theo nội dung hoặc trực tiếp on-chain.Nội dung lưu trên máy chủ có thể bị thay đổi hoặc biến mất.Lưu trữ định danh theo nội dung giúp tăng tính toàn vẹn khi mã định danh khớp với tệp, nhưng vẫn phụ thuộc vào việc nội dung tiếp tục khả dụng.Metadata on-chain giảm sự phụ thuộc vào lưu trữ bên ngoài nhưng làm tăng chi phí lưu trữ và triển khai.URI có thể thay đổi cho phép chỉnh sửa tên, hình ảnh, thuộc tính hoặc mô tả sau khi người dùng đã nhận token.Người dùng nên kiểm tra ai có thể thay đổi metadata và nội dung được tham chiếu có dự kiến tiếp tục khả dụng hay không.

Mint token ERC-1155

Mint tạo các đơn vị token và gán chúng cho một địa chỉ.Giao diện cốt lõi ERC-1155 không quy định hàm mint công khai.Mỗi bản triển khai quyết định ai có thể mint, ID nào có thể được tạo và có áp dụng giới hạn nguồn cung hay không.

Thao tác mint phải phát ra

TransferSingle
hoặc
TransferBatch
với địa chỉ zero làm người gửi.

Nếu token được mint cho hợp đồng thông minh, thông thường phải gọi callback receiver phù hợp.Người dùng nên kiểm tra quyền mint thay vì cho rằng ID giống NFT có nguồn cung giới hạn vĩnh viễn.

Burn token ERC-1155

Burn xóa vĩnh viễn các đơn vị token khỏi số dư theo cách triển khai của hợp đồng.Giao diện cốt lõi không yêu cầu hàm burn công khai.Dự án có thể cho phép người nắm giữ, operator được phê duyệt, quản trị viên hoặc logic giao thức khác burn tài sản.Thao tác burn phải phát ra sự kiện chuyển phù hợp với địa chỉ zero làm người nhận.Burn toàn bộ các đơn vị hiện có của một ID không nhất thiết ngăn hợp đồng mint lại ID đó.Kết quả phụ thuộc vào quy tắc nguồn cung và kiểm soát truy cập của hợp đồng.

Tổng nguồn cung ERC-1155

Tiêu chuẩn ERC-1155 cốt lõi không định nghĩa hàm

totalSupply
.

Có thể tính nguồn cung của từng token ID từ các sự kiện mint và burn nếu bản triển khai tuân thủ quy tắc phát sự kiện bắt buộc.Hợp đồng có thể bổ sung phần mở rộng theo dõi nguồn cung để truy vấn on-chain dễ dàng hơn.

API triển khai ERC-1155 hiện tại có phần mở rộng tùy chọn theo dõi tổng nguồn cung theo token ID.

Ứng dụng không nên mặc định mọi hợp đồng ERC-1155 đều cung cấp cùng các hàm nguồn cung.

Liệt kê ERC-1155

ERC-1155 không định nghĩa hàm cốt lõi để liệt kê mọi token ID hoặc mọi người nắm giữ.

Tiêu chuẩn kỳ vọng các hệ thống off-chain dựng lại hoạt động token từ sự kiện

TransferSingle
,
TransferBatch
và
URI
.

Indexer thường bắt đầu từ block triển khai hợp đồng và xử lý sự kiện đến block mới nhất.Bỏ sót sự kiện có thể dẫn đến bản ghi số dư hoặc nguồn cung không chính xác.Hợp đồng có thể bổ sung hàm liệt kê tùy chỉnh, nhưng không phải lúc nào cũng có.

Royalty ERC-1155

Tiêu chuẩn ERC-1155 cốt lõi không quy định royalty cho nhà sáng tạo.

Tiêu chuẩn royalty ERC-2981 tùy chọn có thể cung cấp người nhận royalty và số tiền đề xuất cho một giao dịch bán token.

ERC-2981 tương thích với ERC-1155 và có thể thiết lập thông tin royalty mặc định hoặc riêng cho từng token.Tiêu chuẩn royalty cung cấp thông tin thanh toán nhưng không buộc mọi ứng dụng phải thanh toán.Cài đặt royalty cũng có thể thay đổi nếu bản triển khai trao quyền đó cho quản trị viên.

Lỗi ERC-1155 theo chuẩn

Tiêu chuẩn ERC-1155 ban đầu không định nghĩa custom error hiện đại của Solidity.

Tiêu chuẩn ERC-6093 ở trạng thái Final định nghĩa các lỗi phổ biến cho bản triển khai ERC-1155.

Các lỗi này bao gồm số dư không đủ, người gửi không hợp lệ, người nhận không hợp lệ, thiếu phê duyệt operator, operator không hợp lệ và độ dài mảng không khớp.Lỗi theo chuẩn giúp ví và nhà phát triển giải thích nhất quán các giao dịch thất bại.Các hợp đồng ERC-1155 hiện có không bắt buộc phải áp dụng chúng.

ERC-1155 và ERC-20

ERC-20 thường đại diện cho một loại token có thể thay thế trong mỗi hợp đồng.ERC-1155 có thể đại diện cho nhiều token ID có thể thay thế và không thể thay thế trong một hợp đồng.ERC-20 dùng allowance bằng số lượng cho từng bên chi tiêu, trong khi ERC-1155 cốt lõi sử dụng phê duyệt operator trên toàn bộ bộ sưu tập.ERC-1155 hỗ trợ chuyển hàng loạt và callback receiver theo chuẩn.Tiêu chuẩn ERC-20 cốt lõi không cung cấp hai tính năng này.ERC-20 có thể đơn giản hơn nếu dự án chỉ cần một tài sản crypto có thể thay thế.

ERC-1155 và ERC-721

ERC-721 đại diện cho các token ID không thể thay thế thuộc sở hữu riêng lẻ.Một token ID ERC-721 hợp lệ có một chủ sở hữu thay vì số dư số lượng cho từng tài khoản.ERC-1155 lưu số lượng cho mỗi tổ hợp tài khoản và token ID.Nhờ vậy, một ID có thể có nhiều đơn vị hoán đổi cho nhau, trong khi một ID khác trong cùng hợp đồng chỉ có nguồn cung một đơn vị.ERC-1155 cũng hỗ trợ chuyển hàng loạt theo chuẩn, còn ERC-721 thường chuyển từng NFT một.ERC-721 có thể cung cấp mô hình sở hữu đơn giản hơn khi mọi token đều độc nhất.

Các trường hợp sử dụng ERC-1155

Trò chơi blockchain có thể sử dụng một hợp đồng ERC-1155 cho tiền tệ, nguyên liệu, nhân vật, vũ khí, đất đai và vật phẩm phiên bản giới hạn.Hệ thống sự kiện có thể phát hành nhiều hạng vé và số lượng vé từ một hợp đồng.Dự án thành viên có thể quản lý các cấp độ truy cập, nhóm thời hạn hoặc gói quyền lợi khác nhau thông qua các token ID riêng.Dự án vật phẩm sưu tầm kỹ thuật số có thể tạo các phiên bản gồm nhiều bản sao có thể hoán đổi của mỗi tác phẩm.Ứng dụng tài chính có thể dùng ID để đại diện cho ngày đáo hạn, nhóm rủi ro, quyền yêu cầu hoặc nhóm vị thế.Hệ thống phần thưởng có thể phân phối nhiều loại điểm hoặc vật phẩm thành tích trong một lô.Tiêu chuẩn không xác minh token có đại diện cho quyền pháp lý hợp lệ hoặc tài sản ngoài đời thực hay không.

Rủi ro phishing phê duyệt

Ứng dụng độc hại có thể yêu cầu người dùng gọi

setApprovalForAll
nhưng mô tả yêu cầu đó là xác minh hoặc kết nối ví.

Sau khi được phê duyệt, operator có thể chuyển mọi token ID trong hợp đồng ERC-1155 đó mà người dùng sở hữu.Quyền này cũng có thể áp dụng cho token người dùng nhận sau đó.Người dùng nên kiểm tra mạng, hợp đồng token, địa chỉ operator và loại quyền trước khi ký.Thu hồi quyền truy cập website trong giao diện ví không tự động thu hồi phê duyệt trên blockchain.Không bao giờ cần cụm từ khôi phục hoặc khóa riêng tư để hủy quyền operator ERC-1155.

Rủi ro xử lý hàng loạt

Các thao tác hàng loạt xử lý những mảng có phần tử phải luôn được căn chỉnh chính xác.Giao dịch phải thất bại nếu ID và số lượng không khớp.Đánh chỉ mục sai có thể chuyển nhầm số lượng tài sản.Các lô lớn có thể vượt giới hạn gas giao dịch hoặc tạo điều kiện tấn công từ chối dịch vụ.Receiver có thể chấp nhận một số token ID về mặt kinh tế nhưng không chấp nhận các ID khác, vì vậy cần xác thực toàn bộ lô trước khi xác nhận nhận token.Ứng dụng nên giới hạn kích thước lô và kiểm thử token ID lặp lại hoặc không được sắp xếp theo quy tắc triển khai.

Rủi ro receiver và reentrancy

Giao dịch chuyển an toàn gọi mã receiver bên ngoài sau khi cập nhật số dư.Receiver độc hại có thể cố reentrancy vào các hàm mint, chuyển, bán, staking, cho vay hoặc rút tiền.Hợp đồng vẫn có thể dễ bị tấn công dù một hàm có khóa chống reentrancy, nếu một hàm khác để lộ trạng thái liên quan.Nhà phát triển nên sử dụng logic chuyển trạng thái nhất quán cho thao tác đơn lẻ và hàng loạt.Callback receiver cần xác minh hợp đồng token gọi hàm và không nên tự động tin cậy dữ liệu do người dùng cung cấp.Kiểm thử bảo mật nên bao gồm giao dịch chuyển lồng nhau, receiver chuyển tiếp, callback bị hoàn tác và tương tác giữa các hợp đồng.

Rủi ro về nguồn cung và tính xác thực

Token ID ERC-1155 có thể trông như độc nhất vì hiện chỉ có một đơn vị tồn tại.Tuy nhiên, minter được ủy quyền vẫn có thể tạo thêm đơn vị sau này.Tên bộ sưu tập, hình ảnh hoặc token ID cũng có thể bị sao chép trong hợp đồng khác.Địa chỉ hợp đồng và mạng là những phần thiết yếu trong danh tính tài sản.Người dùng nên kiểm tra quyền mint, phần mở rộng nguồn cung, quyền quản trị viên và quyền nâng cấp trước khi tin vào tuyên bố về độ khan hiếm.Tuân thủ ERC-1155 không chứng minh tính xác thực, độ khan hiếm, tài sản bảo chứng hay giá trị tài chính.

Rủi ro hợp đồng có thể nâng cấp

Hợp đồng ERC-1155 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 việc mint, chuyển token, phê duyệt, metadata, phí hoặc hành vi receiver.Nâng cấp có thể sửa lỗi nhưng cũng có thể đưa vào mã độc hoặc không an toàn.Khóa nâng cấp bị xâm phạm có thể khiến mọi token ID trong hợp đồng gặp rủi ro.Người dùng nên kiểm tra quyền nâng cấp, thời gian trì hoãn, yêu cầu chữ ký đa bên và các biện pháp kiểm soát khẩn cấp.Hợp đồng có thể hỗ trợ giao diện chính xác nhưng vẫn duy trì các quyền tập trung mạnh mẽ.

Cách nhà phát triển nên triển khai ERC-1155

Nhà phát triển nên bắt đầu từ một bản triển khai được duy trì và rà soát thường xuyên thay vì tự viết lại logic số dư nhạy cảm nếu không có lý do chính đáng.

Hướng dẫn phát triển ERC-1155 hiện tại cung cấp các hợp đồng cốt lõi và giải thích số dư đa token cũng như thao tác hàng loạt.

Các hàm mint và quản trị nên áp dụng cơ chế kiểm soát truy cập rõ ràng.Giới hạn nguồn cung phải được thực thi trong logic hợp đồng, không chỉ được mô tả trong tài liệu dự án.Nhà phát triển nên phát ra mọi sự kiện bắt buộc và trả về giá trị giao diện ERC-165 chính xác.Kiểm thử nên bao gồm chuyển đơn lẻ, chuyển hàng loạt, phê duyệt, burn, mint, mảng không khớp, receiver không hợp lệ, callback độc hại và thay đổi metadata.

Cách người dùng đánh giá token ERC-1155

Bước đầu tiên là xác minh mạng blockchain, địa chỉ hợp đồng và token ID.Bước thứ hai là xác định ID được dự định là token có thể thay thế, không thể thay thế hay bán thay thế.Bước thứ ba là kiểm tra nguồn cung hiện tại, quyền mint và giới hạn nguồn cung.Bước thứ tư là rà soát các phê duyệt operator gắn với ví.Bước thứ năm là xem xét nơi lưu metadata và xác định metadata có thể thay đổi hay không.Bước thứ sáu là xác định quyền quản trị viên, tạm dừng, đóng băng và nâng cấp.Bước thứ bảy là tìm hiểu callback receiver hoặc hợp đồng bên ngoài có tạo thêm rủi ro hay không.Bước thứ tám là xem xét các cuộc kiểm toán và mã nguồn đã xác minh nhưng không coi chúng là bảo đảm an toàn.Bước thứ chín là xác nhận token thực sự cung cấp quyền hoặc tiện ích gì.Bước thứ mười là thử nghiệm hợp đồng chưa quen thuộc với số lượng nhỏ trước khi chuyển tài sản có giá trị.

Ví dụ về giao dịch chuyển hàng loạt ERC-1155

Giả sử Alice sở hữu 100 đơn vị token ID 1, năm đơn vị token ID 2 và một đơn vị token ID 3.Cô ấy muốn gửi cho Bob 10 đơn vị ID 1, hai đơn vị ID 2 và một đơn vị ID 3.

Ví của cô ấy gọi

safeBatchTransferFrom
với các mảng chứa ba ID và số lượng tương ứng.

Hợp đồng xác minh số dư của Alice và quyền của bên gọi.Hợp đồng giảm số dư của Alice và tăng số dư của Bob đối với từng ID được liệt kê.

Hợp đồng phát ra một sự kiện

TransferBatch
mô tả toàn bộ giao dịch chuyển.

Nếu Bob là hợp đồng thông minh, hợp đồng token sẽ gọi

onERC1155BatchReceived
.

Nếu receiver trả về giá trị chấp nhận chính xác, giao dịch hoàn tất.Nếu bất kỳ bước kiểm tra số dư hoặc yêu cầu receiver nào thất bại, toàn bộ giao dịch chuyển hàng loạt sẽ bị hoàn tác.

Các lỗi ERC-1155 thường gặp

Một lỗi thường gặp là cho rằng mọi token ID ERC-1155 đều là NFT.Một lỗi khác là cho rằng một đơn vị là nguồn cung tối đa của token ID.Lỗi thứ ba là cấp quyền operator mà không hiểu quyền đó áp dụng cho mọi ID trong hợp đồng.Lỗi thứ tư là tin rằng ngắt kết nối ví sẽ xóa phê duyệt on-chain.Lỗi thứ năm là xem khả năng truy cập metadata như bằng chứng token tồn tại.Lỗi thứ sáu là cho rằng ERC-1155 định nghĩa hàm tổng nguồn cung cho từng ID.Lỗi thứ bảy là xử lý mảng hàng loạt mà không kiểm tra độ dài và vị trí có khớp nhau hay không.Lỗi thứ tám là bỏ qua callback receiver và reentrancy.Lỗi thứ chín là cho rằng royalty tự động được thực thi.Lỗi thứ mười là xem việc tuân thủ giao diện như bằng chứng về tính xác thực, độ khan hiếm hoặc bảo mật.

Câu hỏi thường gặp

ERC-1155 nghĩa là gì?

ERC-1155 là Multi-Token Standard của Ethereum, dùng để quản lý nhiều loại token có thể thay thế, không thể thay thế và bán thay thế trong một hợp đồng.

ERC-1155 có phải là tiền mã hóa không?

ERC-1155 là một tiêu chuẩn kỹ thuật, còn các hợp đồng triển khai tiêu chuẩn này có thể tạo ra nhiều loại tài sản crypto.

ID giao diện ERC-1155 là gì?

ID giao diện ERC-1155 cốt lõi là

0xd9b67a26
.

ID giao diện receiver ERC-1155 là gì?

ID giao diện receiver là

0x4e2312e0
.

ERC-1155 có thể tạo token có thể thay thế không?

Có. Một token ID có thể có nhiều đơn vị hoán đổi cho nhau được phân bổ cho nhiều tài khoản.

ERC-1155 có thể tạo NFT không?

Có. Một token ID có thể hoạt động như NFT khi nguồn cung được hợp đồng giới hạn ở một đơn vị.

Token ERC-1155 bán thay thế là gì?

Đó là token có các đơn vị hoán đổi cho nhau trong một bối cảnh nhưng sau đó có thể mang ý nghĩa, trạng thái hoặc tiện ích riêng.

Một hợp đồng ERC-1155 có thể chứa nhiều loại tài sản không?

Có. Một hợp đồng có thể quản lý nhiều ID với nguồn cung, metadata và mục đích khác nhau.

balanceOf trả về gì?

Hàm trả về số lượng của một token ID ERC-1155 được chỉ định mà tài khoản sở hữu.

balanceOfBatch thực hiện việc gì?

Hàm trả về số dư của nhiều cặp tài khoản và token ID trong một lần gọi.

safeBatchTransferFrom là gì?

Hàm chuyển nhiều token ID và số lượng trong một giao dịch, đồng thời kiểm tra receiver nếu bên nhận là hợp đồng.

setApprovalForAll thực hiện việc gì?

Hàm cho phép operator quản lý mọi token ID mà bên gọi sở hữu trong một hợp đồng ERC-1155.

Người dùng có thể chỉ phê duyệt một token ID không?

Không thông qua hàm phê duyệt cốt lõi, dù phần mở rộng tùy chọn hoặc hợp đồng tùy chỉnh có thể cung cấp quyền hạn chế hơn.

Phê duyệt operator ERC-1155 có hết hạn không?

Không. Phê duyệt tiêu chuẩn vẫn có hiệu lực cho đến khi bị thu hồi hoặc logic tùy chỉnh của hợp đồng thay đổi hiệu lực đó.

ERC-1155 có yêu cầu kiểm tra receiver an toàn không?

Có. Giao dịch chuyển tiêu chuẩn đến hợp đồng thông minh phải tuân thủ quy tắc callback receiver phù hợp cho giao dịch đơn lẻ hoặc hàng loạt.

Receiver ERC-1155 có thể từ chối token không?

Có. Receiver có thể revert hoặc trả về giá trị chấp nhận không chính xác, khiến giao dịch chuyển thất bại.

ERC-1155 có hỗ trợ metadata không?

Có. Tiêu chuẩn định nghĩa phần mở rộng URI metadata tùy chọn với ID giao diện

0x0e89341c
.

Mọi token ERC-1155 đều có tên và symbol không?

Không. Tiêu chuẩn cốt lõi không yêu cầu hàm tên hoặc symbol on-chain.

ERC-1155 có định nghĩa decimals không?

Không. Khi cần, ứng dụng phải lấy thông tin mệnh giá từ metadata hoặc logic riêng của dự án.

ERC-1155 có bao gồm totalSupply không?

Không. Muốn truy vấn tổng nguồn cung cần lập chỉ mục sự kiện hoặc dùng phần mở rộng nguồn cung tùy chọn.

Metadata ERC-1155 có thể thay đổi không?

Có. Metadata có thể thay đổi nếu hợp đồng hoặc hệ thống lưu trữ bên ngoài cho phép cập nhật.

ERC-1155 có thực thi royalty không?

Không. Thông tin royalty cần một tiêu chuẩn riêng và hợp đồng token cốt lõi không tự động thực thi khoản royalty được báo cáo.

Chuyển hàng loạt ERC-1155 có thể tiết kiệm gas không?

Có. Chuyển nhiều token ID trong một giao dịch có thể giảm chi phí phát sinh lặp lại.

Callback ERC-1155 có thể gây reentrancy không?

Có. Callback receiver thực thi mã bên ngoài và có thể gọi lại các hàm hợp đồng khác trước khi giao dịch ban đầu hoàn tất.

Tuân thủ ERC-1155 có chứng minh token an toàn không?

Không. Hợp đồng tương thích vẫn có thể chứa mã không an toàn, quyền hạn quá rộng, metadata có thể thay đổi, kiểm soát nguồn cung yếu hoặc tuyên bố gian lận.

Kết luận

ERC-1155 là tiêu chuẩn của Ethereum để quản lý nhiều loại token thông qua một hợp đồng thông minh.Mỗi token ID có thể đại diện cho tài sản có thể thay thế, NFT độc nhất, vật phẩm bán thay thế hoặc tài sản crypto khác dựa trên số dư.Tiêu chuẩn quy định truy vấn số dư đơn lẻ và hàng loạt, giao dịch chuyển an toàn, phê duyệt operator trên toàn bộ bộ sưu tập, callback receiver, sự kiện và phát hiện giao diện.Thao tác hàng loạt có thể giảm chi phí giao dịch khi cần truy vấn hoặc chuyển nhiều token ID cùng lúc.Callback receiver bắt buộc giúp giảm nguy cơ chuyển nhầm đến hợp đồng không tương thích nhưng tạo ra rủi ro gọi bên ngoài và reentrancy.Tiêu chuẩn cốt lõi không quy định mint công khai, burn, tổng nguồn cung, decimals, royalty hoặc metadata vĩnh viễn.Các thuộc tính này phụ thuộc vào phần mở rộng tùy chọn và bản triển khai của từng hợp đồng.Người dùng nên xác minh mạng, địa chỉ hợp đồng, token ID, cơ chế kiểm soát nguồn cung, phê duyệt operator, hệ thống metadata và quyền quản trị viên.Nhà phát triển nên dùng bản triển khai được duy trì, phát ra mọi sự kiện bắt buộc, bảo vệ callback receiver, giới hạn độ phức tạp của lô và kiểm thử mọi luồng phân quyền.ERC-1155 cung cấp cơ sở hạ tầng đa token linh hoạt và hiệu quả, nhưng khả năng tương thích kỹ thuật không bảo đảm tính xác thực, độ khan hiếm, giá trị tài chính hoặc độ an toàn của hợp đồng thông minh.
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?