linux搭建eos节点,EOS的三种测试环境的搭建 - babbal的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

最近开始研究EOS,首先需要搭建EOS的测试环境,目前主要有3种方式:

· docker

· 搭建私网

· 连接测试网

本文将逐一进行介绍,大家可以比较一下,自行选择适合自己的方式。

1.概览

EOS三大组件:

· nodeos:EOS节点程序,维护完整的区块链

· cleos:EOS命令行程序,完成和节点的交互

· keosd:EOS钱包/密钥管理程序

635a74036f810bd1c7919b4bdd1f9192.png

2.docker方式运行EOS

这是EOS官方推荐的方式,用来测试合约也比较方便。缺点是这是一个裸系统,如果你想模拟真实主网环境,需要自己手动完成系统合约部署、账号创建、发币转币等操作。

2.1下载&运行EOS镜像

首先去docker官网上下载安装docker软件: https://www.docker.com

然后创建一个contracts目录,用于映射到docker容器中。比如我创建了一个/Users/macbook/Code/EOS/contracts目录,然后用下面的命令下载、运行EOS镜像:

$ docker pull eosio/eos-dev:v1.4.2

$ docker run --name eosio \

--publish 7777:7777 \

--publish 127.0.0.1:5555:5555 \

--volume /Users/macbook/Code/EOS/contracts:/Users/macbook/Code/EOS/contracts \

--detach \

eosio/eos:v1.4.2 \

/bin/bash -c \

"keosd --http-server-address=0.0.0.0:5555 \

--unlock-timeout=86400 & \

exec nodeos -e -p eosio \

--plugin eosio::producer_plugin \

--plugin eosio::chain_api_plugin \

--plugin eosio::history_plugin \

--plugin eosio::history_api_plugin \

--plugin eosio::http_plugin \

-d /mnt/dev/data \

--config-dir /mnt/dev/config \

--http-server-address=0.0.0.0:7777 \

--access-control-allow-origin=* \

--contracts-console \

--http-validate-host=false \

--filter-on='*'"

查看运行状态:

$ docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                              NAMES

5cea17bfff0e        eosio/eos:v1.4.2    "/bin/bash -c 'keosd…"   3 seconds ago       Up 3 seconds        127.0.0.1:5555->5555/tcp, 0.0.0.0:7777->7777/tcp   eosio

查看控制台日志:(最后10行log)

$ docker logs --tail 10 eosio

info  2018-11-22T08:37:13.003 thread-0  producer_plugin.cpp:1490      produce_block        ] Produced block 00000128e8cbaf9e... #296 @ 2018-11-22T08:37:13.000 signed by eosio [trxs: 0, lib: 295, confirmed: 0]

info  2018

... ...

验证RPC是否正常工作:

$ curl http://localhost:7777/v1/chain/get_info

{"server_version":"60c8bace","chain_id":"cf057bbfb72640471fd910bcb67639c22df9f92470936cddc1ade0e2f2e7dc4f","head_block_num":116,"last_irreversible_block_num":115,"last_irreversible_block_id":"00000073914654e0f55617d76b21433c68bf41830b45cee109699b58779a6e2d","head_block_id":"00000074c94790a92d9819daae0546a1f225c98f82f5f5aeb78eb79d2db9f336","head_block_time":"2018-11-23T05:13:32.500","head_block_producer":"eosio","virtual_block_cpu_limit":224328,"virtual_block_net_limit":1176376,"block_cpu_limit":199900,"block_net_limit":1048576,"server_version_string":"v1.4.2"}

2.2启动&停止EOS运行

EOS启动后就开始出块了,如果你不想运行它了,可以用下面的命令停止:(eosio就是我们刚刚给这个容器取的名字)

$ docker stop eosio

如果你想重新启动EOS,用下面的命令:

$ docker start eosio

2.3为cleos设置别名

把下面的内容添加到~/.profile文件(MacOS)或者~/.bash_rc文件(Linux)中,这样每次需要和keosd或者nodeos交互时就不用进入docker容器的bash了:

alias cleos='docker exec -it eosio /opt/eosio/bin/cleos --url http://127.0.0.1:7777 --wallet-url http://127.0.0.1:5555'

比如我们想查看当前的钱包列表,可以直接用下面的命令:

$ cleos wallet list

2.4创建&解锁一个钱包

钱包是用来存储私钥的,后面发起交易的时候需要用私钥签名。使用钱包功能之前,需要先打开并解锁钱包:

$ cleos wallet create --to-console

Creating wallet: default

Save password to use in the future to unlock this wallet.

Without password imported keys will not be retrievable.

"PW5JafE14dyVvUsTcr1Uiz9Exmwb8Hcxa9JF64sipNmR7f6WKntyv"

$ cleos wallet open

Opened: default

$ cleos wallet list

Wallets:

[

"default"

]

$ cleos wallet unlock

password: Unlocked: default

$ cleos wallet list

Wallets:

[

"default *"

]

上面的星号就表示钱包目前处于解锁状态。

2.5创建私钥

有两种创建私钥的方式,一种是先创建,再导入钱包:

$ cleos create key --to-console

Private key: 5JeubT8b6kJU4qGDaBH5Gj4y7qt37NFu8z1yHe9GD7SQ3gCoWoP

Public key: EOS5X1A5DqEEPuRwQm55g7zxZMaycuD2PnJheVHLaSHHUVw5sdsBV

$ cleos wallet import

还有一种是官方推荐的做法,只需要一条命令就可以完成(可以通过cleos wallet private_keys命令查看私钥):

$ cleos wallet create_key

Created new private key with a public key of: "EOS6YW9HQiHmToWjpzR89tAX3G3uy4T4KBQR2FytwnKpAZSbtVPvu"

同时还要导入一个超级账户eosio的私钥:

$ cleos wallet import

5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

可以用下面的命令查看钱包中所有私钥:

$ cleos wallet keys

[

"EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV",

"EOS6YW9HQiHmToWjpzR89tAX3G3uy4T4KBQR2FytwnKpAZSbtVPvu"

]

2.6创建账号

$ cleos create account eosio bob EOS6YW9HQiHmToWjpzR89tAX3G3uy4T4KBQR2FytwnKpAZSbtVPvu

$ cleos create account eosio alice EOS6YW9HQiHmToWjpzR89tAX3G3uy4T4KBQR2FytwnKpAZSbtVPvu

其中eosio就是那个超级账户,bob/alice是要创建的新账户,后面需要跟上两个公钥,分别给owner和active权限使用。这里只配置了owner权的公钥,没有配置active权限。

有了账号以后后面就可以愉快地测试智能合约了~

3.搭建私网

3.1下载编译EOS源码

$ git clone https://github.com/EOSIO/eos --recursive

$ cd eos

$ ./eos_build.sh

编译成功后会出现下面的图案:

6424d977468efca6ed48bd05026af021.png

然后进行安装:

$ cd build

$ sudo make install

测试是否安装成功:

$ mongod -f /usr/local/etc/mongod.conf &

$ cd build

$ make test

3.2启动EOS

在EOS源码的tutorials/bios-boot-tutorial目录中有一个脚本,可以帮我们完成一系列的系统配置操作,生成和主网相同的运行环境。执行脚本之前先确保你安装了numpy:

$ pip install numpy

然后执行脚本:

$ cd tutorials/bios-boot-tutorial

$ ./

我们可以看一下这个脚本具体帮我们做了哪些事情:

4622342d4b04051683620da6cb20d3ed.png

可以看到,部署了3个系统合约token、msig、system,并完成了一系列的配置操作。

3.3手动部署系统合约(不推荐)

这个是我没发现上面的脚本之前的手动部署过程,不推荐使用,仅作参考。

首先下载系统合约代码:

$ git clone https://github.com/EOSIO/eosio.contracts --branch v1.4.0 --single-branch

$ cd eosio.contracts/eosio.token

创建新账户,编译部署合约:

$ cleos create account eosio eosio.token EOS6YW9HQiHmToWjpzR89tAX3G3uy4T4KBQR2FytwnKpAZSbtVPvu

$ eosio-cpp -I include -o eosio.token.wasm src/eosio.token.cpp --abigen

$ cleos set contract eosio.token CONTRACTS_DIR/eosio.contracts/eosio.token --abi eosio.token.abi -p eosio.token@active

创建新代币:(两种方法等价,后一种JSON格式和以太坊类似)

$ cleos push action eosio.token create '[ "eosio", "1000000000.0000 EOS"]' -p eosio.token@active

$ cleos push action eosio.token create '{"issuer":"eosio", "maximum_supply":"1000000000.0000 EOS"}' -p eosio.token@active

铸币:(会产生一个internal transfer,方便统计)

$ cleos push action eosio.token issue '[ "alice", "100.0000 EOS", "memo" ]' -p eosio@active

转币:(会给两个账户发通知,类似于以太坊的event,但可以指定账户)

$ cleos push action eosio.token transfer '[ "alice", "bob", "25.0000 EOS", "m" ]' -p alice@active

executed transaction: 304b47afb4b704646a19283c26c7e41a5e7304f892960ea9ea43e6e2776d445a  128 bytes  1652 us

#   eosio.token <= eosio.token::transfer        {"from":"alice","to":"bob","quantity":"25.0000 EOS","memo":"m"}

#         alice <= eosio.token::transfer        {"from":"alice","to":"bob","quantity":"25.0000 EOS","memo":"m"}

#           bob <= eosio.token::transfer        {"from":"alice","to":"bob","quantity":"25.0000 EOS","memo":"m"}

查看余额:(类似于以太坊ERC20中的getBalance())

$ cleos get currency balance eosio.token bob EOS

25.0000 EOS

这里只部署了token合约,还需要部署system合约,过程类似,这里就不说了~

4.连接测试网

如果不想本地跑节点,可以直接连测试网,比较常用的是Jungle: https://monitor.jungletestnet.io

首先你需要申请账户,点击导航栏上的"Create Account"。注意账户名只能由a~z以及1~5这些字符组成,另外由于测试网上有system合约,你的账户名长度必须是12。

d4ad612f37d838794fdab43d1901df79.png

然后你可以免费申请一些EOS,点击导航栏上的Faucet:

624c67388442f4c7e842797f69b4d25f.png

点击“Send Coins”,100个EOS就发到你的账户了。

要连接到测试网,需要一个节点URL,点击导航栏上的“API”可以查看所有可用的URL:

e6d5bf2ba1931b21dbfdb6421b5362a6.png

接下来你就可以通过cleos的-u选项跟测试网交互了,比如查询你的账户信息:

$ cleos -u https://jungle2.cryptolions.io:443 get account

另外一个常见的问题,部署合约是需要消耗RAM和CPU的,如果发现资源不够,可以用下面的命令购买和抵押:

$ cleos -u http://jungle2.cryptolions.io:80 system buyram --kbytes 200

$ cleos -u http://jungle2.cryptolions.io:80 system delegatebw "1 EOS" "1 EOS"

EOS的三种测试环境的搭建就介绍到这里,相信总有一款适合你~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值