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-rc12021 年 7 月 29 日

2660神奇豆

Download history 70/week @ 2024-03-13 73/week @ 2024-03-20 95/week @ 2024-03-27 65/week @ 2024-04-03 49/week @ 2024-04-10 171/week @ 2024-04-17 107/week @ 2024-04-24 62/week @ 2024-05-01 63/week @ 2024-05-08 58/week @ 2024-05-15 65/week @ 2024-05-22 54/week @ 2024-05-29 92/week @ 2024-06-05 100/week @ 2024-06-12 97/week @ 2024-06-19 79/week @ 2024-06-26

每月 375 次下载
12 个 crate 中使用 (通过 cw1155-base)

Apache-2.0

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代币的合约必须实现Cw1155ReceiveMsgCw1155BatchReceiveMsg

Cw1155ReceiveMsg{操作者,来自,代币ID,数量,消息} -

Cw1155BatchReceiveMsg{操作者,来自,批量,消息} -

事件

  • 转账(来自,,代币ID,)

    from/to是可选的,没有from属性表示铸造,没有to属性表示销毁,但它们不能同时忽略。

元数据

查询

TokenInfo{ token_id } - 查询token_id的元数据URL。

事件

token_info(url,代币ID)

token_id的元数据URL已更改,url应指向一个json文件。

可枚举

查询

分页通过start_afterlimit实现。限制是客户端设置的请求,如果未设置,合约将自动将其设置为DefaultLimit(建议10)。如果设置,它将使用到MaxLimit值(建议30)。合约可以定义其他DefaultLimitMaxLimit值,而不违反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