我是靠谱客的博主 大方含羞草,最近开发中收集的这篇文章主要介绍DCore应用案例(七): 发行自定义代币(UIA),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

自定义代币

要创建一个新的自定义代币(user_issued_asset),请使用 create_user_issued_asset 方法。除了 symbol (符号)和 precision (精确值)两个参数外,可以通过调用 update_asset 命令变更其他的参数。请注意,如果在第一步把参数 is_fixed_max_supply 设置为 true ,那么便无法通过调用 update_asset 方法更新 max_supply 参数。参数一经设置,便无法修改。代币发行人也可以修改,但仅限当前有效的发行人修改。另外请注意, core_exchange_rate (核心汇率)使用的是DCT代币的中本聪表示法,并且定义为名为“基础”(base)和“引用”(quote)的比率,在这里“引用”为分母。

方法介绍:
create_user_issued_asset - 创建新的用户发布的资产。部分选项在之后可以通过使用 update_asset 方法进行变更。

signed_transaction
create_user_issued_asset(string issuer,
                         string symbol,
                         uint8_t precision,
                         string description,
                         uint64_t max_supply,
                         price core_exchange_rate,
                         bool is_exchangeable,
                         bool is_fixed_max_supply,
                         bool broadcast = false);

参数:

  • issuer - 支付费用并成为新创建资产发行者的账户名称或id。发行者名称可以在之后更新
  • symbol - 新创建资产的符号
  • precision - 小数点右边精确到的数值,即币种精度,必须小于等于12。举例说明:如果数值的设置是0,即币种精度为0,也就是说资产数之后没有小数点。
  • description - 资产的详细介绍。最大长度为1000字符。
  • max_supply - 资产的最大发行量。该资产一旦发行,将永久存在。
  • core_exchange_rate - Core_exchange_rate(核心汇率)技术上要求存储新创建资产的资产id。由于该id在创建此资产时还没有产生,所以创建价格的时候可以把id当成1(之前提供的例子当中,我们使用的是1.3.1,DCT代币码为1.3.0),之后区块链会用新的资产id覆盖之前的id。
  • is_exchangeable - 允许资产与核心资产之间的间接转换,则显示为true
  • is_fixed_max_supply - 否定之后对max_supply参数进行修改,则显示为true
  • broadcast - 若想在网络上广播交易,则显示为true

返回值:

  • 创建新的自定义代币的已签名交易。

举例说明:

create_user_issued_asset alien MCCC 0 "Mick credits" 10000 {"base":{"amount":200000000,"asset_id":1.3.0},"quote":{"amount":1,"asset_id":1.3.1}} true false true

回应:

{
  "ref_block_num": 59571,
  "ref_block_prefix": 4222948911,
  "expiration": "2018-04-23T14:06:20",
  "operations": [[
      3,{
        "fee": {
          "amount": 100000000,
          "asset_id": "1.3.0"
        },
        "issuer": "1.2.30",
        "symbol": "MCCC",
        "precision": 0,
        "description": "Mick credits",
        "options": {
          "max_supply": 10000,
          "core_exchange_rate": {
            "base": {
              "amount": 200000000,
              "asset_id": "1.3.0"
            },
            "quote": {
              "amount": 1,
              "asset_id": "1.3.1"
            }
          },
          "is_exchangeable": true,
          "extensions": [[
              1,{
                "is_fixed_max_supply": false
              }
            ]
          ]
        },
        "is_exchangeable": true,
        "extensions": []
      }
    ]
  ],
  "extensions": [],
  "signatures": [
    "20331fca29ff7de6dafb3cb180d1a1920b601c1c2587b2e7634a609f689a55a9575600e4553381362731cfe2dd07a0ab8a2ec7ac7a5b2f764d68d506012658acfe"
  ]
}

创建用户发行资产的API开发者文档

发行已创建资产

自定义代币发行者可以在任意时间发行自定义代币。唯一的限制是以 max_supply (最大发行量)为准。

方法介绍:

  • issue_asset - 发行自定义代币新的所得份额。
signed_transaction issue_asset(string to_account,
                               string amount,
                               string symbol,
                               string memo,
                               bool broadcast = false);

参数:

  • to_account - 获得新的所得份额的账户名称或id
  • amount - 每个代币的金额数量
  • symbol - 代发行资产的符号
  • memo - 交易中包含的信息,对接收者可读
  • broadcast - 若要在网络上广播交,则显示为true

返回值:
• 发行新所得份额的已签字交易。

举例说明:

issue_asset mickey 500 MCC "creating funds" true

回应:

issue_asset mickey 500 MCC "creating funds" true
{
  "ref_block_num": 39762,
  "ref_block_prefix": 3654765070,
  "expiration": "2017-11-14T13:11:50",
  "operations": [[
      4,{
        "fee": {
          "amount": 552734,
          "asset_id": "1.3.0"
        },
        "issuer": "1.2.73",
        "asset_to_issue": {
          "amount": 500,
          "asset_id": "1.3.34"
        },
        "issue_to_account": "1.2.73",
        "memo": {
          "from": "DCT5VrGVjdjUqmg8bKDXZAC3C8ib28WXJVTmWQ8A9SKXTgGPMX7yP",
          "to": "DCT5wSrG4yDau5ADsCizp6XDiMfYezmUWc81ieakMcxr8EcnkS2Xa",
          "nonce": "12179244057494284541",
          "message": "91d85802da178df3f5f74f419084481a2a01b843449f82a7788bed829fa2b50a"
        },
        "extensions": []
      }
    ]
  ],
  "extensions": [],
  "signatures": [
    "1f215bca01f517105bb8649828abdca0799bea89ec00bfaca992572a5b6a0983571a8c961705fc39dce8d2f024f2eecaea6132e80b6a18d4463ec04f5103272669"
  ]
}

发行资产的API开发者文档

通过访问 list_account_balances 确认资产是否已创建。

举例说明:

list_account_balances mickey

回应:

list_account_balances mickey
[{
    "amount": "100037396947266",
    "asset_id": "1.3.0"
  },{
    "amount": 500,
    "asset_id": "1.3.34"
  }
]

列出账户余额的API开发者文档

资金池

一旦资产发行,您可以向资产池投放资金。资产池用于资金和DCT代币的相互转换。对于以相对稳定的货币设置内容价格很有益。

方法介绍:

fund_asset_pools - 用指定资产向资产池付费。自定义代币可以选择为核心资产(DCT代币)创建资产池,资产池可用于自动使用资产为任意交易支付交易费用(使用资产核心汇率)。任意用户可将核心/资产存入资产池。资产需要转换的时候,资产池便会发挥作用(例如付费,使用其他资产为内容付费)。

signed_transaction fund_asset_pools(string from,
                                    string uia_amount,
                                    string uia_symbol,
                                    string dct_amount,
                                    string dct_symbol,
                                    bool broadcast = false);

参数:

  • from - 发送核心资产的账户名称或id
  • uia_amount - “此项”资产的待存储数额
  • uia_symbol - 您希望投入资金的资产池名称或id
  • dct_amount - 待存入的核心资产数额
  • dct_symbol - DCT资产的名称或id
  • broadcast - 若在全网广播交易,则显示为true

返回值:

  • 为付费资产池投入资金的已签字交易。

举例说明:

fund_asset_pools mickey 900 MCC 1000 DCT true

回应:

fund_asset_pools mickey 900 MCC 1000 DCT true
{
  "ref_block_num": 40906,
  "ref_block_prefix": 3394212377,
  "expiration": "2017-11-14T15:03:00",
  "operations": [[
      33,{
        "fee": {
          "amount": 0,
          "asset_id": "1.3.0"
        },
        "from_account": "1.2.73",
        "uia_asset": {
          "amount": 900,
          "asset_id": "1.3.34"
        },
        "dct_asset": {
          "amount": "100000000000",
          "asset_id": "1.3.0"
        },
        "extensions": []
      }
    ]
  ],
  "extensions": [],
  "signatures": [
    "1f54b76013f3fe6082951703201943e9266b1269edf3f4ac2aefac43ea2bdf9831509f6191de0a3b88df1bd16d1126f88ef1f6db4d81a9ba78f1854d7e8ddf5a7f"
  ]
}

为资产池投入资金的API开发者文档

找到资产id

查找资产 id 以及 dynamic_asset_data_id (动态资产数据)目标项id,用于提供有关资金供应池或资金池的信息。

方法介绍:
get_asset - 返回有关指定资产的信息

asset_object get_asset(string asset_name_or_id);

参数:

  • asset_name_or_id - 被询问资产的符号或id

返回值:

  • 存储于区块链中的资产信息。

举例说明:

get_asset MCC

回应:

get_asset MCC
{
  "id": "1.3.34",
  "symbol": "MCC",
  "precision": 0,
  "issuer": "1.2.73",
  "description": "Mickey credits",
  "options": {
    "max_supply": 10000,
    "core_exchange_rate": {
      "base": {
        "amount": 200000000,
        "asset_id": "1.3.0"
      },
      "quote": {
        "amount": 1,
        "asset_id": "1.3.34"
      }
    },
    "is_exchangeable": true,
    "extensions": []
  },
  "dynamic_asset_data_id": "2.3.34"
}

获取资产的API开发者文档

dynamic_asset_data_id (动态资产数据)目标id

举例说明:

get_object "2.3.34"

回应:

[{
    "id": "2.3.33",
    "current_supply": 0,
    "asset_pool": 0,
    "core_pool": 1250000
  }
]

core_pool 参数的单位为DCT代币以及Satoshi表示法。

获取目标项的API开发者文档

更新资产参数

使用 update_user_issued_asset 方法更新已存在的资产参数。请注意只有资产发行者可以更新资产参数。若变更汇率参数,请确认资产id是正确的 - 此例中资产id为1.3.34。在此提醒下,DCT的id为1.3.0。您可以通过使用上一部分提到的 get_asset 方法获取资产id。

方法介绍:
update_user_issued_asset - 更新指定自定义代币的选项。自定义代币的一些选项与其他资产类型并不相关。此操作就是用来更新这些选项的。

signed_transaction update_user_issued_asset(string symbol,
                                            string new_issuer,
                                            string description,
                                            uint64_t max_supply,
                                            price core_exchange_rate,
                                            bool is_exchangeable,
                                            bool broadcast = false);

参数:

  • symbol - 待更新资产的名称或id,资产必须为市场上发行的资产
  • new_issuer - 若资产将交于新的发行者,以此指令指定新发行者id
  • description - 资产详细介绍
  • max_supply - 资产最大发行量,该资产一旦发行,将永久存在。
  • core_exchange_rate - 用于将非核心资产转移为核心资产的价值
  • is_exchangeable - 允许资产与核心资产之间的转换,则显示为true
  • broadcast - 若要在网络上广播交易,则显示为true

返回值:

  • 更新用户发行资产的已签字交易

举例说明:

update_user_issued_asset MCC "" "" 20000 {"base":{"amount":200000000,"asset_id":1.3.0},"quote":{"amount":1,"asset_id":1.3.34}} true true

回应:

{
  "ref_block_num": 5707,
  "ref_block_prefix": 3762837208,
  "expiration": "2017-11-16T13:22:55",
  "operations": [[
      36,{
        "fee": {
          "amount": 0,
          "asset_id": "1.3.0"
        },
        "issuer": "1.2.73",
        "asset_to_update": "1.3.34",
        "new_description": "",
        "max_supply": 20000,
        "core_exchange_rate": {
          "base": {
            "amount": 200000000,
            "asset_id": "1.3.0"
          },
          "quote": {
            "amount": 1,
            "asset_id": "1.3.34"
          }
        },
        "is_exchangeable": true,
        "extensions": []
      }
    ]
  ],
  "extensions": [],
  "signatures": [
    "20323b8730d22cad290b935baaf0612be39f71780a32fb94d65c81bb408b882dc7247a593c8a00e64194eb1a8876db94716751eecc9e38d5d83c1fe1f25a04a4bb"
  ]
}

更新用户发行资产的API开发者文档

最后

以上就是大方含羞草为你收集整理的DCore应用案例(七): 发行自定义代币(UIA)的全部内容,希望文章能够帮你解决DCore应用案例(七): 发行自定义代币(UIA)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部