2. 数字资产交易

代码样例参看:contractsdk/go/example/erc721.go

2.1. ERC721简介

ERC721是数字资产合约,交易的商品是非同质性商品。其中,每一份资产,也就是token_id都是独一无二的类似收藏品交易。

2.2. ERC721具备哪些功能

  • 通过initialize方法,向交易池注入自己的token_id
    • 注意token_id必须是全局唯一

  • 通过invoke方法,执行不同的交易功能
    • transfer: userA将自己的某个收藏品token_id转给userB

    • approve: userA将自己的某个收藏品token_id的售卖权限授予userB

    • transferFrom: userB替userA将赋予权限的收藏品token_id卖给userC

    • pproveAll: userA将自己的所有收藏品token_id的售卖权限授予userB

  • 通过query方法,执行不同的查询功能
    • balanceOf: userA的所有收藏品的数量

    • totalSupply: 交易池中所有的收藏品的数量

    • approvalOf: userA授权给userB的收藏品的数量

2.3. 调用json文件示例

Initialize

./xchain-cli wasm invoke -a ‘下面json中args字段的内容’ –method initialize -H localhost:37101 erc721

1{
2    "module_name": "native",      # native或wasm
3    "contract_name": "erc721",    # contract name
4    "method_name": "initialize",  # initialize or query or invoke
5    "args": {
6        "from": "dudu",           # userName
7        "supply": "1,2"           # token_ids
8    }
9}

Invoke

./xchain-cli native invoke -a ‘args内容’ –method invoke -H localhost:37101 erc721

 1{
 2    "module_name": "native",      # native或wasm
 3    "contract_name": "erc721",    # contract name
 4    "method_name": "invoke",      # initialize or query or invoke
 5    "args": {
 6        "action": "transfer",     # action name
 7        "from": "dudu",           # usera
 8        "to": "chengcheng",       # userb
 9        "token_id": "1"           # token_ids
10    }
11}
12{
13    "module_name": "native",      # native或wasm
14    "contract_name": "erc721",    # contract name
15    "method_name": "invoke",      # initialize or query or invoke
16    "args": {
17        "action": "transferFrom", # action name
18        "from": "dudu",           # userA
19        "caller": "chengcheng",   # userB
20        "to": "miaomiao",         # userC
21        "token_id": "1"           # token_ids
22    }
23}
24{
25    "module_name": "native",      # native或wasm
26    "contract_name": "erc721",    # contract name
27    "method_name": "invoke",      # initialize or query or invoke
28    "args": {
29        "action": "approve",      # action name
30        "from": "dudu",           # userA
31        "to": "chengcheng",       # userB
32        "token_id": "1"           # token_ids
33    }
34}

Query

./xchain-cli native query -a ‘args内容’ –method query -H localhost:37101 erc721

 1{
 2    "module_name": "native",     # native或wasm
 3    "contract_name": "erc721",   # contract name
 4    "method_name": "query",      # initialize or query or invoke
 5    "args": {
 6        "action": "balanceOf",   # action name
 7        "from": "dudu"           # userA
 8    }
 9}
10{
11    "module_name": "native",     # native或wasm
12    "contract_name": "erc721",   # contract name
13    "method_name": "query",      # initialize or query or invoke
14    "args": {
15        "action": "totalSupply"  # action name
16    }
17}
18{
19    "module_name": "native",      # native或wasm
20    "contract_name": "erc721",    # contract name
21    "method_name": "query",       # initialize or query or invoke
22    "args": {
23        "action": "approvalOf",   # action name
24        "from": "dudu",           # userA
25        "to": "chengcheng"        # userB
26    }
27}