比特帝国

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

比特帝国 首页 EOS EOS教程 EOS高级教程 查看内容

如何发行「新垣结衣币」 | 大狗教你EOS开发(二)

2018-6-28 10:24| 发布者: IMEOS| 查看: 160| 评论: 0|原作者: IMEOS



在 上一期 我们搭建了 EOS 的开发环境。在此基础上,本期教大家一件令人兴奋的事——发币。我们将在本地发行货币单位为「 GAKKI 」的新垣结衣币。


特别提醒:安装 EOS 的时候出现问题先尝试更新 boost :brew reinstall boost ,有可能是 boost 安装不正确!


注:本文的撰写有所参考 EOS 的官方文档、「余年还做垄亩民」的学习笔记和 EOSgeek 群的分享,特此表示感谢,另感谢 IMEOS 的技术人员、运营和设计的支持!

1 更新 EOS

EOS 系统还在不断迭代中,新的内容不断上线,所以有时候需要更新 EOS 的开发环境。
进入 EOS 的目录,输入以下几行代码,即可更新。

git add .
git commit -m "update"
git pull -v origin master
git submodule update --init --recursive
./eosio_build.sh

2 构建可执行环境

更新完 EOS 后,就要构建可执行环境。

确认当前文件夹是 eos 后,进入 build 文件夹:

cd build

构建可执行环境:

sudo make install

3 运行区块链

什么是区块链?简而言之,区块链就是一个记载交易信息的「超级账本」——在下一期我们会更详细的讲解它。

现在,我们只要在 iTerm 里输入以下两个命令,就能在本机上运行EOS区块链系统了。

cd programs/nodeos #路径为eos/build/programs/nodeos

./nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::account_history_api_plugin

执行命令后,EOS 系统会不断打包新的区块。其中,# 号后面的数字就是区块的编号。

如果想要重置区块链,进入以下文件夹:

/Users/[ 当前用户名 ]/Library/Application Support/eosio/nodeos/data

将其中所有内容清空即可。

4 钱包与账户的创建

  4.1 创建钱包

在 iTerm 上右击,点击右键菜单中的「 Split Pane Vertically 」开双屏。这时第 3 步运行的区块链系统便会在左侧跑着,我们接下来的操作则会在右侧进行。

首先要做的是,创建一个钱包。

(1)进入 cleos 文件夹:

cd programs/cleos    #路径为eos/build/programs/cleos

(2)创建钱包:

./cleos wallet create

如果成功,系统会返回给你一个钱包的私钥。

4.2 加载 bios 合约

如果我们把 EOS 看做一个操作系统,那么 bios 合约就是让我们能进行最底层的操作的合约,其它合约的运行建立在 bios 合约的基础之上,所以我们先来加载 bios 合约。

加载 bios 合约的命令如下:

./cleos set contract eosio ../../contracts/eosio.bios -p eosio

4.3 三行代码创建账户

在 EOS 中,一个钱包可以对应多个账户。在本例中,我们创建两个账户,一个是 currency 账户,用来执行「发币合约」的账户。另一个是 gakkifans 账户,用来测试转账操作的普通账户。

(1)生成密钥对。

./cleos create key

返回的结果是一个公钥和一个私钥。

(2)钱包导入私钥。

./cleos wallet import [ 生成的私钥 ]

(3)用公钥创建账户 currency 。

注意了,创建账户本来需要两个公钥:OwnerKey 与 ActiveKey 。但是在本期中从简,第一步生成的密钥对用两次。

./cleos create account eosio currency [ 生成的公钥 ] [ 生成的公钥 ]

(4)重复步骤123,创建账户 gakkifans 。

./cleos create key
./cleos wallet import [ 生成的私钥 ]
./cleos create account eosio gakkifans [ 生成的公钥 ] [ 生成的公钥 ]

(5)检查一下两个账户是否已经存在了。

./cleos get account [ 账户名 ]

如果返回的内容不是如下图所示的空值,就说明账户建好了。

5 发行「新垣结衣币」

现在有三个账户—— eosio 账户(默认)、currency 账户和 gakkifans 账户。现在我们用 currency 账户加载并执行「发币合约」,发行新垣结衣币。

5.1 加载合约

(1)我们先看一下 currency 账户的合约情况:

./cleos get code currency

返回的结果是一串为0的hash,说明合约还未创建。

(2)加载系统自带的发币合约

./cleos set contract currency ../../contracts/currency

(3)再次运行第一步,如果发现 code hash 不是 0 了,就说明发币合约加载成功!

5.2 用 currency 账户执行「发币合约」,创建新垣结衣币

执行下面命令:

./cleos push action currency create '{"issuer":"currency", "maximum_supply": "1000000000.0000 GAKKI", "can_freeze": 1, "can_recall": 1, "can_whitelist": 1}' -p currency@active

如果返回以下结果,就说明我们发币成功了!


5.3 发送新垣结衣币给 currency 账户


虽然目前新垣结衣币创建成功了,但还没有账户持有新垣结衣币。所以,我们要给账户「发币」。

(1)执行下面命令:

./cleos push action currency issue '{"to":"currency","quantity":"1000.0000 GAKKI","memo":""}' --permission currency@active

我们就给 currency 账户发了 1000 个 GAKKI 币。

(2)验证一下,通过以下命令查看 currency 账户余额。

./cleos get table currency currency accounts

返回的结果告诉我们,currency 的账户里的确有 1000 个 GAKKI 了!


5.4 测试转账操作

(1)通过如下命令,currency 账户会将 20 个 GAKKI币 转给 gakkifans 账户:

./cleos push action currency transfer '{"from":"currency","to":"gakkifans","quantity":"20.0000 GAKKI","memo":"my first transfer"}' --permission currency@active

(2)查看 currency 和 gakkifans 两个账户的余额。

./cleos get table currency gakkifans accounts
./cleos get table currency currency accounts

如图所示,20 GAKKI 币成功发给了gakkifans !

6 总结与预告

通过本期内容,我们踏进了 EOS 开发的大门,创建了钱包与账户,通过默认的智能合约发行了「新垣结衣币」。如果愿意,你可以试着发行自己的偶像币:)。

但是,操作也要和理论相结合。下一期,大狗将解析这一期实操背后的一些原理。

下期见!

欢迎大家关注我们的公众号。同时,如果你有什么建议或者想讨论的问题,或想加入 EOS 测试群,请通过下方二维码联系我↓。


= END =


长按识别下方二维码

即可关注IMEOS.ONE公众号


比特帝国区块链交易所

最新评论

返回顶部