资产合约¶
简介¶
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