1. 链一财经首页
  2. 资讯

【技术篇】EOS 智能合约如何发行代币?

第一步:代码准备

在之前我们已经获取、编译EOS 代码、并运行 EOS 单机节点 eosd 程序和使用 EOS 命令行工具 eosc。

在开始正式编写之前,我们首先要获取 EOS 最新代码,包括两个分支的最新更新(不然会导致编译错误):

git pull

git submodule update –init –recursive

然后对 eos/libraries/chain/include/eos/chain/chain_controller.hpp 文件 339 行,进行修改,将_skip_flags 赋值为 skip_authority_check。

微信图片_20180510145031.jpg

这样可以跳过权限校验过程。重新编译代码,至此已经可以发布和执行智能合约。

第二步:EOS 智能合约编写

按照 EOS 的官方文档,以及代码中给出的例子,EOS 的智能合约主要需要编写abi 接口和用 C++编写逻辑,并使用 WASM 编译器编译成 wast 文件。

C++里面主要实现 init 和 apply 两个函数

微信图片_20180510145152.jpg

以 currency 为例:

微信图片_20180510145228.jpg

实际上 currency 发行了一个代币 CurrencyTokens,并提供了代币之间的转账操作 apply_currency_transfer(currentMessage< TOKEN_NAME::Transfer >()))。

EOS 代码在 eos/contracts/eoslib/token.hpp 给出了代币的模板,并给出了代币的一些简单操作,比如增减、比较等,这样开发者可以直接通过

微信图片_20180510145306.jpg

定义发布自己的代币(参见 eos/contracts/currency/currency.hpp 第 14 行)。

第三步:发布和执行智能合约

通过编译可以得到 wast 文件,然后通过命令行可以发布 currency 合约(代币)。首先创建智能合约账号:

./eosc create account oraclechain currency

EOS4toFS3YXEQCkuuw1aqDLrtHim86Gz9u3hBdcBw5KNPZcursVHq

EOS6KdkmwhPyc2wxN9SAFwo2PU2h74nWs7urN1uRduAwkcns2uXsa

注意,需要保证 oraclechain 账户拥有 eos_balance,可通过账号 eos 进行转账

微信图片_20180510145333.jpg

发布智能合约:

./eosc setcode currency

../../contracts/currency/currency.wast

../../contracts/currency/currency.abi

微信图片_20180510145355.jpg

首先修改 eos/programs/eosc/main.cpp 文件第 261 行,将“cmd_line”改为“args”:

微信图片_20180510145419.jpg

其次修改同一文件第 271 行,将“bincmd_line”该成“binargs”:

微信图片_20180510145442.jpg

此处修改依据参考了

eos/plugins/chain_plugin/include/eos/chain_plugin/chain_plugin.hpp 文件中关于 abi_json_to_bin_params 函数和 abi_bin_to_json_params 函数对参数的定义。

然后可以通过命令行完成代币的转账:

./eosc exec currency transfer

‘{“from”:”currency”,”to”:”oraclechain”,”amount”:”50″}’

‘[“currency”,”oraclechain”]’ ‘[{“account”:”currency”,”permission”:”active”}]’

微信图片_20180510145507.jpg

至此,我们完成了代币发行和转账的智能合约编写。值得注意的是,目前该合约没有涉及到用户权限的控制,任何人都可以完成任意账户间的转账。



文章原标题:[区块链研究实验室]EOS 智能合约:发行代币  原作者: 链三丰

根据国家《关于防范代币发行融资风险的公告》,大家应警惕代币发行融资与交易的风险隐患。

本文来自LIANYI转载,不代表链一财经立场,转载请联系原作者。

发表评论

登录后才能评论

联系我们

微信:kkyves

邮件:kefu@lianyi.com

时间:7x24,节假日bu休息

QR code