Dapp开发

EOS Blockchain开发(mac版)

2018-05-18  本文已影响194人  野人植树

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非常有用的程序:

构建文件夹 - / 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

所有这些参数都在命令中:

nodeos

-e - 启用块生产,即使链条陈旧

-p <生产者名称> - 由此节点控制的生产者的ID

--plugin arg - 要启用的插件可以多次指定

为了做到这一点,您需要在命令结尾处使用此参数添加并重新启动nodeos:

--resync

3.验证环境

EOSIO附带示例合约,可以上传并运行用于测试目的。

我们将使用eosio.token合约验证我们的单节点设置。

假定节点如上所述正在运行。

3.1创建一个钱包

每份合同都需要一个关联账户,所以首先,您需要创建一个钱包。

要创建钱包,您需要将wallet_api_plugin加载到nodeos进程中。

这可以通过以下两种方式之一来完成:

文件夹中的config.ini文件中的插件条目(即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 

注意:如果您未指定钱包的名称,将使用“默认”名称。另外,不要忘记保存您生成的密钥。

该创建将由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。

总结:

上一篇下一篇

猜你喜欢

热点阅读