ink合约-psp34

psp是ink合约生态参考erc标准制定的,psp34协议类似于erc721。本文使用开源框架openbrush-contracts来讲解,该框架汇总并实现了ink中的主要应用协议,减少了自行开发的风险,同时减少了开发复杂度。

1. 概述

psp34中,包含有4大扩展,可根据需要选择:

  1. psp34Burnable:销毁token
  2. psp34Mintable:生成新的token
  3. psp34Enumerable:提高合约中token的可访问性
  4. psp34Metadata:用于存储元数据,如symbol、name、uri等

2. 协议说明

1. psp34基础方法

  1. psp34::allowance(ownerAccountId, operatorAccountId, tokenId)
    作用:
    查看账户A是否将某token的操作权限授权给账户B
    参数说明:
    ownerAccountId:账户A
    operatorAccountId:账户B
    tokenId:要授权的token编号

  2. psp34::ownerOf(tokenId)
    作用:
    指定的token是属于哪个用户的
    参数说明:
    tokenId:指定的token编号

  3. psp34::approve(operatorAccountId, tokenId, approved)
    作用:
    当前账户A,将指定token授权或者取消授权账户B
    参数说明:
    operatorAccountId:账户B
    tokenId:要授权或取消授权的token编号
    approved:是否授权
    安全问题:将token授权给账户B,归属权仍然在原账户A,如果账户B将该token转账给账户C,则归属权就变成账户C了,因此该授权要注意。

  4. psp34::transfer(toAccountId, tokenId, data: Vec)
    作用:
    当前账户A,将指定token交易给账户B
    参数说明:
    toAccountId:账户B
    tokenId:要交易的token编号
    data:附属信息,如备注等内容

  5. psp34::collectionId()
    作用:
    获取当前合约ID
    参数说明:
    无参数

  6. psp34::totalSupply()
    作用:
    获取token总供应量
    参数说明:
    无参数

  7. psp34::balanceOf(ownerAccountId)
    作用:
    指定账户拥有的token数量
    参数说明:
    ownerAccountId:指定账户

2. psp34Burnable扩展方法

  1. psp34Burnable::burn(accountId, tokenId)
    作用:
    销毁账户A指定的token
    参数说明:
    accountId:账户A
    tokenId:token编号
    备注:这个需要合约管理人可以操作

3. psp34Mintable扩展方法

  1. psp34Mintable::mint(accountId, tokenId)
    作用:
    账户Amint指定编号的token
    参数说明:
    accountId:账户A
    tokenId:token编号

4. psp34Enumerable扩展方法

  1. psp34Enumerable::ownersTokenByIndex(accountId, index)
    作用:
    返回账户A的索引号X拥有的所有token
    参数说明:
    accountId: 账户
    index:索引号X。一个用户不同索引号,可以挂不同token

  2. psp34Enumerable::tokenByIndex(index)
    作用:
    返回索引号X拥有的所有token
    参数说明:
    index:索引号X

说明:按我理解,一个账户下的索引不能相同;而不同账户的索引,有可能相同

5. psp34Metadata扩展方法

  1. psp34Metadata::getAttribute(id,key)
    作用:
    根据id和key,获取参数
    参数说明:
    id:键1
    key:键2

总结

本文编辑完毕

参考

[1] openbrush-contracts合约开源框架
[2] openbrush-contracts文档
[3] ERC-721详解
[4] EIP721: Non-Fungible Token Standard

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2017-2023 Jason
  • Visitors: | Views:

谢谢打赏~

微信