Create IRC721 Token
IRC721 草案标准
不可替代 token 的标准接口。
摘要
在 IOST 上发行的不可替代 token 必须基于系统合约token721.iost来实现。 大多数时候,您可以直接通过token721.iost合约发行 token,但是如果您想通过自定义方式发行 token,则需要实现并发布自己的 token 合同。
注意:尽管 token721.iost 现在可以使用,但尚未完全完成。 我们计划在不久的将来发布功能齐全的版本,因此在此之前请勿在生产环境中使用它。
定制的不可替代的 token 合约需要实现以下接口,以支持诸如钱包和浏览器之类的应用程序。
ABI
{
"lang": "*",
"version": "*",
"abi": [
// optional
{
"name": "issue",
"args": [
"string", // token_symbol
"string", // to
"string" // meta
]
},
// required
{
"name": "transfer",
"args": [
"string", // token_symbol
"string", // from
"string", // to
"string" // token_id
]
},
// required
{
"name": "approve",
"args": [
"string", // token_symbol
"string", // from
"string", // operator
"string" // token_id
]
},
// optional
{
"name": "balanceOf",
"args": [
"string", // token_symbol
"string" // owner
]
},
// optional
{
"name": "ownerOf",
"args": [
"string", // token_symbol
"string" // token_id
]
},
// optional
{
"name": "tokenOfOwnerByIndex",
"args": [
"string", // token_symbol
"string", // owner
"number" // index
]
},
// optional
{
"name": "tokenMetadata",
"args": [
"string", // token_symbol
"string" // token_id
]
}
]
}
标准规范
token 信息
token 信息存储在 token721.iost 中,并且诸如钱包之类的应用程序应直接使用 token721.iost 合约中存储的信息以确保信息的可靠性。
issue(tokenSymbol, acc, metaJson)
可选: 应用程序的非必须方法、
所需权限: tokenSymbol 的发行者
发行 tokenSymbol 到acc帐户,metaJson 是新发行 token 的 json 字符串。
transfer(tokenSymbol,accFrom,accTo,tokenId)
所需权限: tokenSymbol 的发行者
使用 tokenId 将 tokenSymbol 从 accFrom 发送到 accTo,
如果合同或其他与accFrom不同的用户需要调用transfer,则accFrom必须首先调用approve,否则将触发代码异常。
如果是合同调用,您可以先调用approve,然后再在同一笔交易中调用合同。
成功发送的标准与token721.iost合约的标准一致:成功交易的前提是tx_receipt中receipts字段的func_name字段等于token721.iost/transfer。货币,帐户和 token ID 可以从此项的content字段中进一步解析。
approve(tokenSymbol, accFrom, accTrans, tokenId)
所需权限: accFrom
允许accTrans发送特定tokenId的tokenSymboltoken。
如果tokenId不属于accFrom,则抛出该异常。
如果合同调用approve时,则抛出该异常。
成功批准的标准与token721.iost合同的标准一致:成功交易的前提是tx_receipt中receipts字段的func_name字段等于token721.iost/approve。货币,帐户和 token ID 可以从此项的content字段中进一步解析。
balanceOf(tokenSymbol,acc)
可选: 应用程序的非必须方法
所需权限: 无
查询tokenSymbol的账户余额。
ownerOf(tokenSymbol,tokenId)
可选: 应用程序的非必须方法
所需权限: 无
使用tokenId查询特定tokenSymbol token 的所有者。
tokenOfOwnerByIndex(tokenSymbol, owner, index)
可选: 应用程序的非必须方法
所需权限: 无
使用index来查询owner拥有的特定tokenSymboltoken 的 meta 信息。
tokenMetadata(tokenSymbol,tokenId)
可选: 应用程序的非必须方法
所需权限: 无
使用tokenId查询特定tokenSymboltoken 的 meta 信息。
实现
该实现尚不可用。 您现在可以使用当前token721.iost进行测试。
