35 个版本 (10 个破坏性版本)
0.16.0 | 2022 年 10 月 17 日 |
---|---|
0.14.0 | 2022 年 7 月 28 日 |
0.13.1 | 2022 年 3 月 25 日 |
0.11.1 | 2021 年 12 月 28 日 |
0.8.0-rc1 | 2021 年 7 月 29 日 |
2660 在 神奇豆
每月 375 次下载
在 12 个 crate 中使用 (通过 cw1155-base)
17KB
242 行
CW1155 规范:多代币
CW1155 是基于 CosmWasm 管理多个代币的规范。其名称和设计基于以太坊的 ERC1155 标准。
规范分为多个部分,一个合约可能只实现其中一些功能,但必须实现基础。
可互换代币和非可互换代币被同等对待,非可互换代币只有一个最大供应量。
批准设置为或取消设置以某个操作员在整个代币集合上。 (更细致的控制定义在 ERC1761)
基础
消息
SendFrom{from, to, token_id, value, msg}
- 这在两个账户之间转移一定数量的代币。如果 to
是由智能合约控制的地址,则它必须实现 CW1155Receiver
接口,msg
将与其余字段一起传递给它,否则,msg
应该是 None
。操作员应该是 from
账户或拥有其批准。
BatchSendFrom{from, to, batch: Vec<(token_id, value)>, msg}
- SendFrom
的批量版本,可以一次性处理多种类型的代币。
Mint {to, token_id, value, msg}
- 向 to
账户铸造一些代币。如果 to
由智能合约控制,则它应实现 CW1155Receiver
接口,msg
将与其它字段一起传递给它,否则,msg
应为 None
。
BatchMint {to, batch: Vec<(token_id, value)>, msg}
- Mint
的批量版本。
Burn {from, token_id, value}
- 从 from
账户销毁一些代币。
BatchBurn {from, batch: Vec<(token_id, value)>
- Burn
的批量版本。
ApproveAll{ operator, expires }
- 允许操作者从所有者账户转账/发送任何代币。如果设置了过期时间,则此授权有时间/高度限制。
RevokeAll { operator }
- 取消之前授予的 ApproveAll 权限
查询
Balance { owner, token_id }
- 查询特定类型的代币上 owner
的余额,当记录不存在时默认为 0
。
BatchBalance { owner, token_ids }
- 查询 owner
在多种类型代币上的余额,是 Balance
的批量版本。
ApprovedForAll{owner, include_expired, start_after, limit}
- 列出可以访问所有所有者代币的所有操作者。返回类型是 ApprovedForAllResponse
。如果设置了 include_expired
,则在结果中显示已过期的所有者,否则忽略它们。
IsApprovedForAll{owner, operator}
- 查询 owner
授予 operator
的批准状态。返回类型是 IsApprovedForAllResponse
。
接收者
任何想要接收CW1155代币的合约必须实现Cw1155ReceiveMsg
和Cw1155BatchReceiveMsg
。
Cw1155ReceiveMsg{操作者,来自,代币ID,数量,消息}
-
Cw1155BatchReceiveMsg{操作者,来自,批量,消息}
-
事件
-
转账(来自,到,代币ID,值)
from
/to
是可选的,没有from
属性表示铸造,没有to
属性表示销毁,但它们不能同时忽略。
元数据
查询
TokenInfo{ token_id }
- 查询token_id
的元数据URL。
事件
token_info(url,代币ID)
token_id
的元数据URL已更改,url
应指向一个json文件。
可枚举
查询
分页通过start_after
和limit
实现。限制是客户端设置的请求,如果未设置,合约将自动将其设置为DefaultLimit
(建议10)。如果设置,它将使用到MaxLimit
值(建议30)。合约可以定义其他DefaultLimit
和MaxLimit
值,而不违反CW1155规范,客户端不应依赖于任何特定值。
如果start_after
未设置,查询返回第一个结果,按token_id
的字典顺序排序。如果设置了start_after
,则返回给定代币之后的第一个limit
个代币。这允许通过取返回的最后一个结果(一个token_id
)并使用它作为未来查询中的start_after
值来实现简单的分页。
Tokens{owner, start_after, limit}
- 列出属于指定所有者的所有代币ID。返回类型是TokensResponse{tokens: Vec<token_id>}
。
AllTokens{start_after, limit}
- 需要分页。列出合约控制的所有代币ID。
依赖关系
~4.5–6.5MB
~137K SLoC