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