1. 链一财经首页
  2. 资讯

【技术篇】eosio系统代码编译与运行

微信图片_20180509114721.jpg

上一步,我们已经把所有的准备工作都已经做完。接下来,时候要撸起袖子干了。

第二步,获取 EOS 代码

EOS 代码使用了三个子模块,包括两个 EOS 自己维护的插件管理模块 AppBase 和区块链结构模块 ChainBase,以及 WASM 模块。

我们可以通过 git clone https://github.com/eosio/eos –recursive 获取全部代码,或者在获取 EOS 代码后通过 git submodule update –init –recursive 补全子模块。

第三步,编译 EOS 代码

建议使用前面准备的 WASM 编译器对 EOS 进行完整编译:

1. cd eos

2. mkdir build && cd build

3. export WASM_LLVM_CONFIG=~/wasm-compiler/llvm/bin/llvm-config

4. cmake ..

5. cd ..

6. make -j4

其中~/wasm-compiler/llvm/bin/llvm-config 为之前编译的 WASM 编译器地址。

开发者可以将 WASM_LLVM_CONFIG=~/wasm-compiler/llvm/bin/llvm-config 添加到.bash_profile 中去。

OK,至此,eos 已经编译完成。离成功又近了一步。

第四步,运行 EOS

eos/programs 文件加下,eosd 是单机版的 EOS 节点,会模拟多个账号轮流出块。eosc 通过 REST 访问 eosd,并提供命令行工具。

运行 eosd

首次运行 eosd 下的 eosd 将会报错,并会在 eosd 文件夹下生成 data-dir 文件夹,此时需要对文件夹下的 config.ini 文件进行修改然后再重新运行 eosd。

注释掉原文中的 enable-stale-production = false。

在 config.ini 文件末尾添加:

# Load the testnet genesis state, which creates some initial block producers with the default key

genesis-json = /path/to/eos/genesis.json

# Enable production on a stale chain, since a single-node test chain is pretty much always stale

enable-stale-production = true

# Enable block production with the testnet producers

producer-name = inita

producer-name = initb

producer-name = initc

producer-name = initd

producer-name = inite

producer-name = initf

producer-name = initg

producer-name = inith

producer-name = initi

producer-name = initj

producer-name = initk

producer-name = initl

producer-name = initm

producer-name = initn

producer-name = inito

producer-name = initp

producer-name = initq

producer-name = initr

producer-name = inits

producer-name = initt

producer-name = initu

# Load the block producer plugin, so we can produce blocks plugin = eos::producer_plugin

plugin = eos::chain_api_plugin

其中/path/to/eos/genesis.json 是 genesis.json 文件的全地址,在 eos 文件夹下,

随后再次运行 eosd,将启动 EOS。

微信图片_20180509114831.jpg

通过 eosc 调用 eos

此时已经可以通过 eosc 调用 eos。

./eosc info 可以查看目前的最新区块信息,例如:

微信图片_20180509114851.jpg

./eosc account inita 可以查看账号 inita 的信息。在配置文件 config.ini 和初始文件 genesis.json 中预制了 inita-initu 共 21 个账号作为 producer。

微信图片_20180509114912.jpg

该条测试网络中内置了一个“eos”账号,拥有 9000000000000000 eos_balance。

用户可以通过./eosc create key 生成密钥对:

微信图片_20180509114933.jpg

然后通过任意一个 producer 注册账号:

./eosc create account initb oraclechain EOS5TSHW4G5mZ4KWrARetzWG2PBKjhkfV1Vqun9xnDvDyGDD3rM8x EOS8TDzn2gkmMzBv56xLA8TFxVd5Sm4stuT8Nq3fFxCjhoz7GMYB5

两个公钥分别为 OWNERKEY 和 ACTIVEKEY。

随后可以./eosc account oraclechain 查看账号信息:

微信图片_20180509114948.jpg

调用./eosc transfer eos oraclechain 1000 可以完成账号间的转账,然后再次查看账号:

微信图片_20180509115008.jpg

至此 EOS 的测试版本就已经跑起来了。开发者还可以通过 RPC 直接访问 eosd:

1. curl http://127.0.0.1:8888/v1/chain/get_info

2. curl http://localhost:8888/v1/chain/get_block -X POST -d ‘{“block_num_or_id”:5}’

3. curl http://localhost:8888/v1/chain/get_block -X POST -d

‘{“block_num_or_id”:0000000445a9f27898383fd7de32835d5d6a978cc14ce40d9f327

b5329de796b}’

4. curl http://localhost:8888/v1/chain/push_transaction -X POST -d ‘{“refBlockNum”:”5″,”refBlockPrefix”:”27728114″,”expiration”:”2017-07-

18T22:28:49″,”scope”:[“initb”,”initc”],”messages”:[{“code”:”currency”,”type”:”transfe r”,”recipients”:[“initb”,”initc”],”authorization”:[{“account”:”initb”,”permission”:”activ e”}],”data”:”c9252a0000000000050f14dc29000000d00700000000000008454f530000 000000″}],”signatures”:[],”authorizations”:[]}’

目前 EOS 还没有提供签名机制,账户权限机制也还不够完善。相信 EOS 团队会在近期补充相关内容。

在下一篇文章中对 EOS 的智能合约进行更详细的分析,相信能更进一步帮助开发者认识 EOS。


文章原标题:[区块链研究实验室]eosio系统代码编译与运行  原作者:链三丰

根据国家《关于防范代币发行融资风险的公告》,大家应警惕代币发行融资与交易的风险隐患。

本文来自LIANYI转载,不代表链一财经立场,转载请联系原作者。

发表评论

登录后才能评论

联系我们

微信:kkyves

邮件:kefu@lianyi.com

时间:7x24,节假日bu休息

QR code