资产合约

简介

BAC002 是区块链上定义非同质化资产的一种标准,可以用于唯一性资产类型,如房产、汽车、道具、版权等。,并可以做相应增发,销毁,暂停合约,黑白名单等权限控制。

三个基本元素

  • description

    资产的具体描述

  • shortName

    资产简称

  • assetId

    资产编号

五个基本行为

  • 发行

    调用合约的 deploy 方法,传入 description 和 shortName,即在区块链上发行指定名称的资产

  • 转账

    调用 safeSendFrom 方法实现转账,调用 balance 方法可以查看自己的资产数量

  • 增发

    调用 issueWithAssetURI 方法向资产地址增发指定资产编号和资产描述链接信息的资产。另外,可以通过 addIssuer 增加 有权限增发资产的人,也可以通过 renounceIssuer 方法移除增发权限

  • 销毁

    调用 destroy 以及 destroyFrom 销毁自己地址下资产和特定地址下的资产

  • 暂停

    遇到紧急状况,你可以调用 suspend 方法,暂停合约,这样任何人都不能调用 send 函数。故障修复后,可以调用 unSuspend 方法解除暂停。也可以通过 addSuspender 和 renounceSuspender 相应增加和移除暂停者权限

接口说明

  • shortName()

    资产简称

  • description()

    资产描述

  • balance(address owner)

    返回 owner 的资产总数

  • totalSupply()

    获得当前合约总的资产数目

  • ownerOf(uint256 assetId)

    返回资产持有者的地址

  • approve(address to, uint256 assetId)

    授予地址to具有指定资产的控制权

    • 此方法配合 getapproved 使用
  • getApproved(uint256 assetId)

    获得资产授权的地址用户

    • 此方法配合 approve 使用,注意不要配合 setapprovealforall 方法使用
  • setApprovalForAll(address operator, bool approved)

    授予地址operator具有自己所有资产的控制权

  • isApprovedForAll(address owner, address operator)

    查询授权

  • sendFrom(address from, address to, uint256 assetId, bytes memory data)

    安全转账,防止你转到错误的合约地址 ( to如果是合约地址,必须实现接收接口 BAC002Holder 才可以接收转账 ),并可以带转账备注

    • suspend 状态下无法执行此操作
  • batchSendFrom(address from, address[] to, uint256[] assetId, bytes memory data)

    批量安全转账

    • suspend 状态下无法执行此操作
    • to 数组元素个数需要和 assetid 数组元素个数一致
  • issueWithAssetURI(address to, uint256 assetId, string memory assetURI, bytes data)

    给地址 to 创建资产 assetId,data 是转账备注, assetURI 资产描述

  • isIssuer(address account)

    检查account是否有增加资产的权限

  • addIssuer(address account)

    使地址 account 拥有增加资产的权限

  • renounceIssuer()

    移除增加资产的权限

  • suspend()

    暂停合约

    • suspend 后无法进行 safesendfrom / sendfrom / safeBatchSendFrom 操作
  • unSuspend()

    重启合约

    • 此方法配合 suspend 使用
  • isSuspender(address account)

    是否有暂停合约权限

    • 此方法配合 addsuspender 使用
  • addSuspender(address account)

    增加暂停权限者

    • 此方法配合 renouncesuspender / issuspender 放啊发使用
  • renounceSuspender()

    移除暂停权限

  • destroy(uint256 assetId, bytes data)

    减少自己的资产,data 是转账备注

    • 调用时,value 值需要小于等于目前自己的资产总量
  • assetOfOwnerByIndex(address owner, uint256 index)

    根据索引 index 获取 owner 的资产 ID

  • assetByIndex(uint256 index)

    根据索引 index 获取当前合约的资产 ID