1.建立构建/开发环境
为了构建EOS dApps,首先需要建立我们的环境。大多数情况下,当构建dApp时,先可以使用testnet。EOS为我们提供了在建立本地测试网或公共测试网之间的选择。在编写本教程时,公共测试网目前不可用,因此我们将使用本地测试网。
由于EOSIO的自动生成脚本,设置环境非常简单。它安装所有的依赖关系并构建EOSIO。在运行脚本之前,作为第一步,使用以下命令递归克隆EOS repo:
git clone https://github.com/eosio/eos --recursive
完成此操作后,转至eos文件夹并使用以下命令运行eosio_build.sh脚本:
sh ./eosio_build.sh darwin
请注意,在安装并构建所有依赖关系之前可能需要一段时间。
看到提示成功后我们看一下文件夹里的内容:
程序文件夹 - / eos / programs
该程序的文件夹包含一些EOSIO非常有用的程序:
-
nodeos - 服务器端区块链节点组件。核心EOSIO守护进程,可以使用插件配置以运行节点。示例用途是块生产,专用API端点和本地开发。
-
cleos - 命令行界面与区块链交互
-
keosd - 加载钱包相关插件的EOSIO钱包守护程序,例如HTTP接口和RPC API
-
eosio-launcher - 应用程序协助部署多节点区块链网络
构建文件夹 - / eos / build
构建文件夹是所有构建的内容所在的位置。您可以在eos / build / programs的子文件夹中找到eos / programs文件夹的可执行文件。
build文件夹是我们要进行构建验证的地方。这是一组测试,可以针对您的构建执行一些基本验证。为了在构建完成后运行测试套件,我们需要启动mongo守护进程,然后运行make test命令。
/usr/local/bin/mongod -f /usr/local/etc/mongod.conf &cd build
make test
注意:为了运行该命令,您必须位于生成文件夹内
如果一切顺利,所有的测试都应该通过。
为了便于合同开发,可以使用make install命令将内容安装在
/ urs / local文件夹中。这一步从build文件夹运行。
安装需要足够的权限。
cd build
sudo make install
2.创建和启动单个节点Testnet
成功构建EOSIO项目后,nodeos二进制文件应存
在于build / programs / nodeos文件夹中。
nodeos可以使用可执行文件直接从build文件夹运行。
或者可以使用以下命令启动自己的单节点区块链:
nodeos -e -p eosio --plugin eosio :: wallet_api_plugin --plugin eosio :: chain_api_plugin --plugin eosio :: account_history_api_plugin
所有这些参数都在命令中:
- 1.主要指挥
nodeos
- eosio :: producer_plugin的配置选项
-e - 启用块生产,即使链条陈旧
-p <生产者名称> - 由此节点控制的生产者的ID
- 3.应用程序配置选项
--plugin arg - 要启用的插件可以多次指定
- 4.在某些情况下,需要重置节点,以便从一开始就开始生成块。
为了做到这一点,您需要在命令结尾处使用此参数添加并重新启动nodeos:
--resync
3.验证环境
EOSIO附带示例合约,可以上传并运行用于测试目的。
我们将使用eosio.token合约验证我们的单节点设置。
假定节点如上所述正在运行。
3.1创建一个钱包
每份合同都需要一个关联账户,所以首先,您需要创建一个钱包。
要创建钱包,您需要将wallet_api_plugin加载到nodeos进程中。
这可以通过以下两种方式之一来完成:
- 通过~/Library/Application Support/eosio/nodeos/config
文件夹中的config.ini文件中的插件条目(即plugin = eosio :: wallet_api_plugin)
- 通过调用nodeos时的插件命令行选项(即 - plugin eosio :: wallet_api_plugin)
3.2导入eosio帐户的私钥
注意:使用最新版本的EOSIO,私钥会自动添加到您的钱包中
不过,我们希望与您分享如何在需要时手动添加它。该密钥可以在位于
〜/ Library / Application Support / eosio / nodeos / config
中的config.ini文件中找到。
# faucet-private-key = [公钥,WIF私钥]用于签名龙头创建者账户(eosio :: faucet_testnet_plugin)
[EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV,5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3]
一旦你得到钥匙,你需要将它导入钱包:
cleos wallet import
3.3为“eosio.token”合同创建一个帐户
名为“token”的账户将用于“eosio.token”合同。生成两个公钥/私钥对,
稍后将其分配为public-OwnerKey和public-ActiveKey。
cd ~/eos/build/programs/cleos/
cleos create key # OwnerKey
cleos create key # ActiveKey
这将输出两对公钥和私钥的形式:
私钥:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
公钥:EOSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
将两个私钥导入钱包。
cleos wallet import
cleos wallet import
注意:如果您未指定钱包的名称,将使用“默认”名称。另外,不要忘记保存您生成的密钥。
- 使用cleos create account命令创建令牌帐户。
该创建将由eosio帐户授权。上面生成的两个公钥将与该账户关联,
一个作为其OwnerKey,另一个作为其ActiveKey。
应该返回一个JSON响应,并返回一个确认成功执行的事务ID。
cleos create account eosio token
executed transaction: b0a04ab4579658345dbe52cc3e4d6266dd3fd99db8660fab6c24d46983017ca9 352 bytes 102400 cycles
# eosio <= eosio::newaccount {"creator":"eosio","name":"token","owner":{"threshold":1,"keys":[{"key":"EOS8guUEVKWUCsA58id2SKMpUHB...
使用以下命令验证帐户是否已成功创建:
cleos get account token
3.4将“eosio.token”合约上传至区块链
使用令牌帐户上传合约。响应应该是带有一些JSON的transaction_id。这表示您的合同已成功上传:
# cleos set contract token {path_to_contract_folder} {path_to_wast_file} {path_to_abi_file}
cleos set contract token ./contracts/eosio.token/ ./contracts/eosio.token/eosio.token.wast ./contracts/eosio.token/eosio.token.abiReading WAST/WASM from ./contracts/eosio.token/eosio.token.wast...
Assembling WASM...
Publishing contract...
executed transaction: a4cbbbe999def95c25470982374fcd4d498146610f391d0e17e8766fc1b6d985 8320 bytes 2200576 cycles
#eosio <= eosio::setcode {"account":"token","vmtype":0,"vmversion":0,"code":"0061736d010000000181011560067f7e7f7f7f7f0060057f...
#eosio <= eosio::setabi {"account":"token","abi":{"types":[],"structs":[{"name":"transfer","base":"","fields":[{"name":"from...
您还可以使用以下命令验证代码是否已设置:
cleos get code token
code hash: 48a05166e9a5493b422288d137a08a7b2ccf7fb2c3473b630909440d7bbf177a
在使用eosio.token合同之前,您必须先创建并发布令牌。
cleos push action token create '{"issuer":"token","maximum_supply":"1000000.0000 TKN","can_freeze":"0","can_recall":"0","can_whitelist":"0"}' -p token@active
executed transaction: 0869043bc86b8b9f4514e5f6610446fbf97834a545cbf5e0ab9d8f4cc2731899 248 bytes 104448 cycles
# token <= token::create {"issuer":"token","maximum_supply":"1000000.0000 TKN","can_freeze":0,"can_recall":0,"can_whitelist":...
cleos push action token issue '{"to":"token","quantity":"1000.0000 TKN","memo":""}' -p token@active
executed transaction: 66b9bc38a5eed7ee8bdeb89aa0e9cf90bfe8b5dbe024404a9c51d049aeab03df 248 bytes 107520 cycles
# token <= token::issue {"to":"token","quantity":"1000.0000 TKN","memo":""}
>> issue
接下来,验证初始余额:
cleos get table token token accounts
3.5使用“eosio.token”合同转移资金
以下命令显示发送给eosio.token合约的“转帐”操作,将“20.0000 TKN”从“代币”账户转移到
“eosio”账户。成功提交的事务将生成类似于以下内容的事务ID和JSON输出。
成功提交的事务将生成事务ID和JSON输出。
cleos push action token transfer '{"from":"token","to":"eosio","quantity":"20.0000 TKN","memo":"my first transfer"}' -p token
executed transaction: 7f617d7a41a2b498f7392bf5d9d14ed7ee1cb384d3cdcb17f5d79bea607354de 272 bytes 113664 cycles
# token <= token::transfer {"from":"token","to":"eosio","quantity":"20.0000 TKN","memo":"my first transfer"}
>> transfer
# eosio <= token::transfer {"from":"token","to":"eosio","quantity":"20.0000 TKN","memo":"my first transfer"}
3.6检查余额
检查前一个交易涉及的两个账户的状态如下:
cleos get table token eosio accounts
接收账户eosio现在具有20个TKN的余额,并且发送账户令牌现在比最初的问题少20个TKN。
总结:
-
首先安装EOSIO,并建立了我们的开发环境。
-
安装合约开发所需的可执行程序,并且开始了我们的第一个testnet节点,它在区块链上生成块。
-
学习如何生成公钥/私钥并将它们导入我们的钱包。
-
使用公钥 - OwnerKey和ActiveKey创建了一个账户,并且部署了eosio.token合约。
-
作为压轴,使用账户之间的eosio.token合约转移资金。
网友评论