• 2. 数字资产交易
    • 2.1. ERC721简介
    • 2.2. ERC721具备哪些功能
    • 2.3. 调用json文件示例

    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. }