EOS开发系列(一)从源码搭建一个EOS测试节点

.wqpc_wechat_view *{max-width: 100%!important;box-sizing:
border-box!important;-webkit-box-sizing: border-box!important;
word-wrap: break-word!important;} Wechat号 功效介绍 EOS
系统主要有多少个应用程序:nodeos: EOS
系统的主导进度,也便是所谓的“节点”。cleos:本地的命令行工具,通过命令行与真人客商人机联作,并与节点(nodeos)和钱包(keosd)通讯。是客商依然开拓者与节点进度并行的桥梁。keosd:本地卡包工具。能够管理多少个带有私钥的卡包并加密。需求本篇教程适用于以下系统,可是无论你的Computer是
windows 照旧 mac,都猛烈提议安装三个设想机,在 Ubuntu 上搞,因为 Mac
上有超级多坑。安装 Ubuntu 设想机有关课程大家能够在英特网搜到。亚马逊(Amazon) 2017.09
and higher.Centos 7.Fedora 25 and higher (Fedora 27 recommended卡塔尔国.Mint
18.Ubuntu 16.04 (Ubuntu 16.10 recommended卡塔尔(قطر‎.MacOS 达尔文 10.12 and higher
(MacOS 10.13.x recommendedState of Qatar.配置需求:8GB 内部存款和储蓄器20GB
硬盘空余空间如若机器内部存款和储蓄器远远不足 8G,自动编写翻译脚本会报错。运营 EOS 须要或多或少
linux 和 github 基本功,可是并不是嫌麻烦,现在开垦 EOS
合约须求多量那上边的学问。推荐你先按步骤搞起来,有不驾驭的能够参照他事他说加以考察以下随笔。别怕,何人亦非生下来就什么样都会的。linux
命令底工: 基础:
EOS 代码若是您是
Mac,须求先下载 git,能够搜寻 “Mac git” 就会找的各类随笔教您在 Mac
上安装
git。首先使用cd命令步入你想安装的文书夹,小编平时正是根目录了,施行以下命令下载
EOS
代码:gitclone
EOS
有多少个子模块,那样就能够整个下载下来,要是忘了这么些命令,使用上面包车型地铁吩咐能够弥补:gitsubmoduleupdate–init–recursive构建EOS有了源代码,我们就足以创设我们本地的 EOS 程序了,EOS
官方特别关切地为我们打算了机动创设的剧本,使用那几个剧本能够大大简化。首先我们走入刚刚下载的
eos
目录,并实践创设脚本:cdeos./eosio_build.sh依据网速和机械品质的例外,恐怕要用
30 分钟 – 1
钟头的日子,请耐烦等待。营造变成后要求对塑造的成品举办认证:Linux
系(Ubuntu等卡塔尔(قطر‎:~/opt/mongodb/bin/mongod-f~/opt/mongodb/mongod.conf&Mac:/usr/local/bin/mongod-f/usr/local/etc/mongod.conf&然后具备操作系统再实行以下命令:cdbuildmaketest为了有助于开拓智能合约,还索要在
build 目录举办 make install:假如已经进来 build 目录请去掉 cd
build。cdbuildsudomakeinstall创设地点单节点测验互连网营造形成后,大家进来
eos/build/programs/nodeos 目录(使用 cd 和 cd .. 命令),运维 nodeos
节点程序:./nodeos-e-peosio–plugineosio::wallet_api_plugin–plugineosio::chain_api_plugin–plugineosio::account_history_api_plugin命令中,
-p 参数表示使用了 eosio
账户的权限,这是地面测量检验系统提供的本来账户。前边的种种 plug in
参数是选用加载的插件。成功后,假若见到相仿下边包车型地铁输出,就是成功创立了贰个地点单节点测验网络:1575001msthread-0chain_controller.cpp:235_push_block]initm#1@2017-09-04T04:26:15|0trx,0pending,exectime_ms=01575001msthread-0producer_plugin.cpp:207block_production_loo]initmgeneratedblock#1@2017-09-04T04:26:15with0trxs0pending1578001msthread-0chain_controller.cpp:235_push_block]initc#2@2017-09-04T04:26:18|0trx,0pending,exectime_ms=01578001msthread-0producer_plugin.cpp:207block_production_loo]initcgeneratedblock#2@2017-09-04T04:26:18with0trxs0pending…eosiogeneratedblock046b9984…#101527@2018-04-01T14:24:58.000with0trxseosiogeneratedblock5e527ee2…#101528@2018-04-01T14:24:58.500with0trxs…表明地点的单节点已经起来平常出块了。如上次小说所讲,大家创立的本地质度量试网络如下如,并不曾单身的
keosd 卡包,而是使用了 nodeos
程序里的钱袋插件。高端设置假如您不满足于上述,能够对节点配置进行改换,配置文件坐落于:Mac
OS: ~/Library/Application Support/eosio/nodeos/configLinux:
~/.local/share/eosio/nodeos/config上述文件夹中暗中认可有genesis.json配置文件,能够直接修正它,或许在其余文件里再写三个新的配备文件,可是运维nodeos 时,将在通过 –config-dir
命令提议新布署文件的职位。配置文件夹还默许有三个config.ini文件。若无的话,nodeos
运转时会自行创立一个,但活动创设的config.ini文件是不让节点出块的,当时你须要动用Ctrl-C甘休nodeos,并编写制定那几个文件:#Loadthetestnetgenesisstate,whichcreatessomeinitialblockproducerswiththedefaultkeygenesis-json=/path/to/eos/source/genesis.json#Enableproductiononastalechain,sinceasingle-nodetestchainisprettymuchalwaysstaleenable-stale-production=true#Enableblockproductionwiththetestnetproducersproducer-name=eosio#Loadtheblockproducerplugin,soyoucanproduceblocksplugin=eosio::producer_plugin#Walletpluginplugin=eosio::wallet_api_plugin#AswellasAPIandHTTPpluginsplugin=eosio::chain_api_pluginplugin=eosio::http_plugin#Thiswillbeusedbythevalidationstepbelow,toviewaccounthistoryplugin=eosio::account_history_api_plugin那样安顿好后,重新启航
nodeos,就能福寿年高出块了。nodeos
的运营数据文件夹(log和分享存储等数据)坐落于以下文件夹:Mac OS:
~/Library/Application Support/eosio/nodeos/dataLinux:
~/.local/share/eosio/nodeos/data但也足以行使 nodeos
的–data-dir命令重新钦赐数据文件夹。来源:圆方圆区块链

从本周最初,小编要EOS义无反顾了。生机勃勃边学习EOS开荒,大器晚成边记录,前日到底开篇。这一个连串不知情会有几篇,看前面包车型客车上学状态吗。理想状态是在EOS主链上线前能对EOS开拓有三个可怜浓重的了解。几日前是首先篇,从源码搭建二个EOS节点。

先啰嗦几句:自个儿区块链小白生机勃勃枚,正在自学EOS应用开垦(当然最近也尚无训练班培养操练),笔者的那些体系文章是自身的读书笔记,由此,鉴于水平有限,难免有成百上千错误之处,犹盼望各位读者海涵,若能留言修正,更是多谢。同一时候也应接热爱EOS开垦的相爱的人加笔者Wechat(微信号:361757),暗号EOS,笔者早就创办了三个交换群,写作本文时(二〇一八年11月9日),群人数已经达到规定的标准柒十九个人。好了,系好安全带,大家的EOS应用开拓之旅,立时初叶!

展开EOS在github上的网站
Sierra的自动化编写翻译安装的本子。作者计算机是MacOS
Sierra上面也装了新星的XCode所以根据表明实施自动化脚本就可以。假设您的Mac系统中绝非遵循brew那么执行上面包车型地铁本子能够先安装brew

正文首要介绍如何在地面搭建EOS运营条件,并经过四个智能合约,完毕代币发行和转变操作。

xcode-select –installruby -e”$(curl -fsSL
)”

参照版本为:dawn3.0

安装实现后就能够实践自动化脚本了,在运转前先cd到你想要编写翻译的目录下,小编是一向在顾客的home目录下也正是cd
~后执行以下脚本的

克隆EOS存款和储蓄库及子模块

git clone –recursive #从github上clone
eos项目到本地

cd eos #进入eos目录

./build.sh darwin #试行编译脚本,若是是ubuntu系统则施行 ./build.sh
ubuntu

git clone –recursive

接下去便是绵绵的等候,笔者遗忘看时间了,用macbook4核的i7
cpu作者倍感要用了大致三时辰以上。

小心:由于本国网络情状原因,建议利用国外服务器搭建。

eos软件编写翻译完成,遵照Readme.md上的呈报就能够运维三个单节点的网络了。先到eos/build/progrems/eosd目录下,假使您中途未有退换过目录那么使用以下命令就可以步入

那边大家利用自动营造脚本安装:

cd build/progrems/eosd

cd eos

./eosio_build.sh

可以看来里边有三个eosd的可试行文件直接利用命令施行./eosd会得到二个荒诞(注意这一步是要做的,因为eosd会在当前目录发生三个data-dir的目录),使用ctrl+c停掉eosd之后,步入data-dir目录修正config.ini

刺探是或不是安装这几个包,输入1承认。安装起来。

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

genesis-json = /path/to/eos/source/genesis.json
#注意这些地点要填genesis.json文件的忠实路线像在自家计算机上正是/Users/wjfree/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 you can produce blocks

plugin = eos::producer_plugin

# Wallet plugin

plugin = eos::wallet_api_plugin

# As well as API and HTTP plugins

plugin = eos::chain_api_plugin

plugin = eos::http_plugin

升迁:提议你在拓宽设置时,使用普通账户举办,因为使用root账户搭建出的条件,会有一群难点。普通账户设置后,安装的eos文件夹目录坐落于:/home/username/eos

只顾就算上述在config.ini有暗许值,需求将该配置该成与上述相通,同期无法有重名配置项出以往布署文件中。

图片 1安装实现

修正产生保存退出,再再次来到eosd目录推行./eosd就可以运营起来。能够见见在该测试互连网中每3秒就能生出贰个块

率先,要求周转mongod数据库,然后运行test,测量试验一下,操作如下

2073005ms thread-0 producer_plugin.cpp:210 block_production_loo ]
initr generated block #7804 @ 2017-09-17T08:34:33 with 0 trxs 0
pending

2076006ms thread-0 chain_controller.cpp:235 _push_block ] initl
#7805 @2017-09-17T08:34:36 | 0 trx, 0 pending, exectime_ms=1

2076006ms thread-0 producer_plugin.cpp:210 block_production_loo ]
initl generated block #7805 @ 2017-09-17T08:34:36 with 0 trxs 0
pending

2079008ms thread-0 chain_controller.cpp:235 _push_block ] initg
#7806 @2017-09-17T08:34:39 | 0 trx, 0 pending, exectime_ms=2

2079008ms thread-0 producer_plugin.cpp:210 block_production_loo ]
initg generated block #7806 @ 2017-09-17T08:34:39 with 0 trxs 0
pending

2082005ms thread-0 chain_controller.cpp:235 _push_block ] inits
#7807 @2017-09-17T08:34:42 | 0 trx, 0 pending, exectime_ms=1

2082005ms thread-0 producer_plugin.cpp:210 block_production_loo ]
inits generated block #7807 @ 2017-09-17T08:34:42 with 0 trxs 0
pending

2085005ms thread-0 chain_controller.cpp:235 _push_block ] initd
#7808 @2017-09-17T08:34:45 | 0 trx, 0 pending, exectime_ms=1

linux下

区块运营起来后就可以利用eos的客商端eosc进行一些操作了,比方说查看区块链的新闻

~/opt/mongodb/bin/mongod -f ~/opt/mongodb/mongod.conf &

先步向eos/build/progrems/eosc目录,实施以下命令

mac下

./eosc get info

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

就足以获得上面好像的结果

接下来运维test

{

“head_block_num”: 7877,

“last_irreversible_block_num”: 7861,

“head_block_id”:
“00001ec50519f2d44ecf77f431a2bb0a665d25529746deb4a83552b6c9c55380”,

“head_block_time”: “2017-09-17T08:38:12”,

“head_block_producer”: “initl”,

“recent_slots”:
“1111111111111111111111111111111111111111111111111111111111111111”,

“participation_rate”: “1.00000000000000000”

}

cd build

make test

好了,几日前就先讲到这里,下少年老成篇会是因而eosc成立钱袋举行贸易。

在乎上边的操作皆以在eos目录下张开。

本身在运营test测量试验时,须要表达大概26项,在那之中24、26项运维战败。(原因不详,但最终小编在测量试验退步的情状下仍然特出的姣好了安装和转账,在完毕后,回来再一次测验,仍然为24/26运营退步。当然后续小编会跟进失败原因。)

cd build

sudo make install

安装完毕如图:

图片 2安装完毕

鉴于在文章本文时,官方不建议采纳官方的公物测量检验网络,所以本人就和谐搭建了一个单身的地头节点做测验。

安装完结后,到build/programs/nodeos文件夹,应该能力所能达到找到nodeos,大家品尝运营它。

cd build/programs/nodeos

nodeos

那时应该会报错,作者那边的报错大约是如此的:

图片 3运转nodeos时的报错

这时候供给改进config.ini,config.ini坐落于这些目录下

cd ~/.local/share/eosio/nodeos/config

品尝在config.ini的终极追加以下内容:

# 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 = eosio

# Load the block producer plugin, so you can produce blocks

plugin = eosio::producer_plugin

# Wallet plugin

plugin = eosio::wallet_api_plugin

# As well as API and HTTP plugins

plugin = eosio::chain_api_plugin

plugin = eosio::http_plugin

# This will be used by the validation step below, to view account
history

plugin = eosio::account_history_api_plugin

这时候大家品尝运维三个十足测验节点:

cd build/programs/nodeos

nodeos

即便也像自身同一仍然报错,请重启服务器。作者在重启后,符合规律了,如图:

图片 4正规出块

在演习中,我们会尝试创设三个账户currency和eosio,然后发行大器晚成种叫做MGD的代币,然后尝试二回转变操作,最后再查询余额,分明转账成功。

持有的操作,都是基于cleos落成的。

率先大家要求保持nodeos的运作。

下一场,用下边包车型大巴授命创制叁个卡包。

cd build/programs/cleos

./cleos wallet create

好端端意况下会创制三个卡包,还有恐怕会显得私钥。

图片 5创办钱袋

加载BIOS合约(注意要到/eos/build/programs/cleos目录下操作)

$ ./cleos set contract eosio ../../contracts/eosio.bios -p eosio

为货币合约创造一个账户currency,首先生成两组key,分别对应OwnerKey和ActiveKey

在cleos目录下:

./cleos create key # OwnerKey

./cleos create key # ActiveKey

然后,将key导入到卡包

./cleos wallet import <private-OwnerKey>

./cleos wallet import <private-ActiveKey>

接下去,用cleos create account命令,创制账户currency

./cleos create account eosio currency <public-OwnerKey>
<public-ActiveKey>

那儿能够接到一个Json相应,比方:

executed transaction:
fe5c9db1b5173dd4bd1ed79c23056104427ab62b0086cf117175abb322532d93 346
bytes 101544 cycles#eosio <= eosio::newaccount
{“creator”:”eosio”,”name”:”currency”,”owner”:{“threshold”:1,”keys”:[{“key”:”EOS6eRfSRYNcrsLmLMomWbBk…”
+

接下去,大家利用 get account命令,看以下currency是不是早就创建产生功:

./cleos get account currency

那会儿,假如一切常常,将会收下雷同上边包车型客车代码:

图片 6再次来到结果

接下去,将示例货币合约上传至区块链

在上传合约前,确认一下当下公约尚未创制

./cleos get code currency

回去结果:

code hash:
0000000000000000000000000000000000000000000000000000000000000000

重返结果hash均为0,表示尚未创设合约。当hash不为0时,表示合同已经创制。

接受货币账户上传样板货币合约

./cleos set contract currency ../../contracts/currency

响应包括一个transaction_id的JSON,代表合同上传成功:

图片 7合约上传成功

接下去,能够再试三次,看看是否成功:

./cleos get code currency

总的来看再次来到结果差非常的少是:

code hash:
9b9db1a7940503a88535517049e64467a6e8f4e9e03af15e9968ec89dd794975

如此那般就意味着成功上传了合约。

接下去,是激动的时刻,你将发行你的率先个货币了:

在动用前,你必须要先创设它,然后发行代币:

./cleos push action currency create
‘{“issuer”:”currency”,”maximum_supply”:”1000000.0000
MGD”,”can_freeze”:”0″,”can_recall”:”0″,”can_whitelist”:”0″}’–permission
currency@active

./cleos push action currency
issue'{“to”:”currency”,”quantity”:”1000.0000
MGD”,”memo”:””}’–permission currency@active

接下去,看看账户里的余额

./cleos get table currency currency accounts

图片 8好了,有羊驼了!

上面大家应用currency合约来转变资金:

以此命令现实发送到货币合约的转速操作,将20.0000
MGD从货币账户转移到eosio账户

./cleos push action currency
transfer'{“from”:”currency”,”to”:”eosio”,”quantity”:”20.0000
MGD”,”memo”:”my first transfer”}’–permission currency@active

转载成功:

图片 9中标截图

来看一下余额的成形

./cleos get table currency eosio accounts

能够看来余额变为20

接下来看看currency账户

./cleos get table currency currency accounts

看样子余额变成了980

时至前几日,大家整整的依葫芦画瓢进程停止。

在这里个进度中,小编也凌驾了好多的坑,然则大约都是因为非常不足细致认真导致的。

关于全部的操作中的种种参数是何许意思,通过稳步找寻,相信大家急忙都能左右。

到头来产生了EOS.IO世界的“Hello World”!

翻过了最根本的一步!

后边提出大家还足以品味发型差异数额的货币,创立不一致的账户,以至分歧的合约,尽快熟识各类操作。

更是是cleos,通过平素输入cleos,能够看看它的各个用法,可以二个一个去钻探探讨。

本文完。

本人是王越,EOS应用开荒小白生龙活虎枚,渴望与你链接,作者早就建构了二个沟通开垦技艺的微信群,期望你的投入!请加小编微信361757,暗号EOS

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

CopyRight © 2015-2020 普京集团娱乐网 All Rights Reserved.
网站地图xml地图