在 上一期 我们搭建了 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 开发的大门,创建了钱包与账户,通过默认的智能合约发行了「新垣结衣币」。如果愿意,你可以试着发行自己的偶像币:)。
但是,操作也要和理论相结合。下一期,IMEOS将解析这一期实操背后的一些原理。
下期见!
Hi! I am a robot. I just upvoted you! I found similar content that readers might be interested in:
https://www.jianshu.com/p/2ac46301d07f
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Yep. All from IMEOS :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit