EOS的发币逻辑

EOS的发币逻辑

  EOS官网的Guide中(参考[1]),描述了如何发自己的Token:

    1、创建一个contract。

    2、有一些create、transfer、close action。

    3、发布,调用一下create,即发行了一种币。

  发完币后,可以通过cleos命令,获取发币信息:

cleos get currency stats issuer symbol
cleos get currency balance issuer user1 symbol

  但是官方文档并没有说明,为什么发布一个contract,调用一下create action,就算发币了,并且cleos也能查询出结果。

  cleos将查询发送给 nodeos,由nodeos执行实际的查询。一个contract要符合怎样的条件,才能让 nodeos知道这是一个发币合约呢?此处可以有多种猜测:

    1、通过合约名吗?合约命名使用 "eosio.token" 标识了,使得 nodeos 知道这一个发币合约?

      

    2、通过action吗?只要同时拥有 create、issue、retire、transfer、open、close 这些action,nodeos认为这是一个发币合约?

      

  3、还是其它原因?

  经过研究后,结论是3,其它原因。

get currency stats

  当执行 cleos get currency stats issuer symbol 时,请求最终将被发送到 chain_plugin,由chain_plugin执行。看一下相关代码:

    

  get_currency_stats 的实现主法,最给通过调用 walk_key_value_table 来实现功能。

  这里调用的含义是:查询 p.code 账户下 scope 域下的 "stat"表。并且找到后,将表中的 supply、max_supply、issuer字段返回。

  再看一下 eosio.token.hpp,发现我们的合约中确实定义了一个 stat 表。

    

  而 stat 表结构里,刚好有 supply、max_supply、issuer 三个字段。

  至此,事实已经非常清楚了。只要合约中满足以下条件,就能成功调用 cleos get currency stats issuer1 symbol。

    1、定义了名为 "stat"的表

    2、表中有 supply、max_supply、issuer 三个字段。

get currency balance

  再来看一下 get_currency_balance 的实现。

    

  遍历 p.code 账户 p.account 域 "accounts" 表,将唯一个数据解释成 asset。

  再看一下 eosio.contract 中的实现。实现了一个名为"accounts"的表,并且表结构中只有一个 asset 类型的字段。

    

  

  至此,也非常清楚了。只要合约中满足以下条件,就能成功调用 cleos get currency balance issuer1 user1 symbol。

    1、定义了名为 "accounts"的表

    2、表中只有一个字段,类型为 asset。

参考:

1、https://developers.eos.io/eosio-home/docs/token-contract

原文地址:https://www.cnblogs.com/tekkaman/p/10109214.html

时间: 2024-08-30 17:28:07

EOS的发币逻辑的相关文章

ICO发币对接交易所

{I35}.(8868).<83I5>由于新加坡当地对区块链项目是扶持态度,导致越来越多的人选择在新加坡注册基金会,我们都知道注册基金会只是做这个项目的主体,通常基金会注册成功之后我们会找具有相关资质的律师出具法律意见书然后上交易所.区块链ico发币需要做法律意见书吗,答案是肯定的,首先你得证明你的项目是符合新加坡现行法律法规的,而且在对接交易所的时候也需要用到法律意见书,做法律意见书需要什么资料和流程呢?只需要提供注册证书.注册纸.章程.白皮书英文版.就可以找相关律师出具法律意见书,常做的法

我们要做区块链发币该怎么上交易所

![](http://i2.51cto.com/images/blog/201807/27/9eb8c28a7c10799dd6a3a115465fc838.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=) 区块链现在是发展的如火如荼,很多人都想趁着这个风口,投入区块链创业的浪潮

区块链ico项目做法律意见书怎么上交易所发币

随着区块链的越来越热,更多的人投入到了区块链事业的当中.当前区块链的发展还是发币做的比较多,区块链场景应用的比较少.现在就聊一聊怎么发币.发币的话你得上平台发币,而这个平台一般都是交易所.那么你上交易所的话,交易所会需要你提供很多资料.最常见的有,项目主体.法律意见书.这是最常见的两个.项目主体一般会选择在新加坡注册非盈利基金会,新加坡有以下几个优势 :1.新加坡政府支持区块链产业的发展,2.前期知名区块链项目都在新加坡注册,例如:莱特币,比原链,量子链等等.3.后续服务好,性价比高. 所以注册

区块链ico发币的基本流程(一)

今天卓志就带你完整的了解区块链发币的流程.这是第一篇.首先我们来明确一下概念.什么是区块链?区块链(英文:Blockchain)是由一串使用密码学方法产生的数据块组成的,每一个区块都包含了上一个区块的哈希值(Hash),从创始区块开始连接到当前区块,形成块链.每一个区块都确保按照时间顺序在前一个区块之后产生,也可以理解尾一种分布式账本技术(DLT, Distributed Ledger Technology).其基本原理就是在互联网上建立公共账本,由P2P网络中的用户共同在账本上记账(记账的过程

新加坡基金会发币需要ICO法律文件吗?怎么做?

做区块链项目的应该都知道注册基金会只是用来发展区块链ico的项目主体,主体注册好后有些客户需要对接交易所,一些知名的交易所还要求出具法律合规意见书.区块链ico发币应该怎么上交易所呢?需要做什么准备呢?我们很有必要对基金会有所了解,下面给大家介绍下在大陆注册基金会需要的资料及一般流程,首先需要撰写项目白皮书以及注册一个海外主体公司,就目前而言在区块链方面法律相对比较完善的政策扶持的国家就是新加坡了,还有一些知名的币体都是注册在新加坡,新加坡基金会相比较马耳他来说注册费用会低很多,相比较英国等地方

区块链ICO发币的全部流程详细介绍及费用问题

区块链ico发币在我国已经被禁止了,但是仍然有很多人在从事区块链创业工作.并且随着市场的越来越成熟,趋于稳定的常态下.更多的人看到了在区块链创业的可能.下面就来详细说一下怎么进行区块链ico发币.首先就是注册个海外公司做为发币的主体,大部分项目方是注册的新加坡非盈利基金会.注册基金会需要你提供两个东西.第一.基金会名称:第二.两个注册人资料.其他的像新加坡注册地址啊.新加坡籍董事啊都由卓志注册提供.注册时间正常情况下15个工作日内就可以注册好.新加坡因为政府扶持区块链的发展在加上起初优质项目方就

财路网每日原创推送:终于按捺不住,腾讯也要上交易所发币?

据CCN最新消息称,腾讯游戏已经宣布与区块链电子竞技娱乐平台SLIVER.tv合作,创建一个电子竞技直播频道.据财路网记者查阅相关资料显示,该频道还发行了自己的代币Theta,而且还在众多知名交易所上市交易了,这是不是意味着腾讯在变相上交易所发币呢? 与区块链游戏直播合作据悉,腾讯合作的这个平台是一个全天候电子竞技直播频道,其中将包括来自FaZe Clan.Method和NRG的直播主,以及其他互动功能,比如游戏预测.观众奖励等等.新的频道将支持Theta奖励机制,Theta代币可在SLIVER

为什么Facebook发币就不一样

参考: https://baijiahao.baidu.com/s?id=1637182596912694597&wfr=spider&for=pc https://blog.csdn.net/yeasy/article/details/92817229 https://blog.csdn.net/IJXR1A64JI53L/article/details/93142830 https://blog.csdn.net/BEYONDMA/article/details/93300777 ht

新加坡基金会注册发币需要提供什么

注册一家新加坡基今会的要求如下:分非盈利公共基今会公司和普通新加坡私人有限公司做项目发行数字货币.建议可用非盈利公共基今会公司(非盈利可以做法律意见书).比较好客源更容易让投资者信任我司可做法律合规化.法律公正文件.?1.注册名称要求:全英文大写,可缩写.尾缀是有限公司结尾中间可加建立或基金2.董事提供资料:一者提供身F证即可.二者提供hu照需提供地址证明.建议2个人3.注册资金.建议一新币 .注册资金少了可以加.多注册需要交税?4.经营范围,区块链范围内提供给您自己选(两个)也可多选,注册纸上