[EOS代码解读]Day1: 编译程序,让EOS在本地电脑跑起来!

在这一系列文章里面,我将努力达成我今年的一个夙愿: 写一本关于EOS技术的入门书籍.
这一篇,先从构建EOS源代码开始,写到如何让本地的出块节点跑起来.

[EOS代码解读]Day1: 编译程序,让EOS在本地电脑跑起来!_第1张图片
image

官方文档: [[https://github.com/eosio/eos#gettingstarted](](https://github.com/eosio/eos#gettingstarted]())
我的本地环境是Ubuntu16.04,就主要写一下Ubuntu环境下的运行.

1 构建编译/开发环境

编译过程比较流畅,按照官方教程来即可.
我在编译过程中没有遇到什么问题,如果需要帮助的话,可以留言.
官方文档
把最主要的部分列出如下; 注意,这里列出的是如何运行本地的节点,我们之后会探讨如何运行一个多节点的本地网络,以及,如何链接到测试主网.
UBUNTU和Mac,这部分的运行代码都是一样的.

假设你把eos放在主目录中.

   git clone https://github.com/eosio/eos --recursive 
   cd eos
   ./eosio_build.sh

文档中,建议运行如下命令,以让合约开发更加便利:


sudo make install

编译完成之后,在eos的文件夹会多出来一个build的文件夹.编译好的文件位于其中.

2 修改配置文件,运行节点

在编译好的目录中,找到你的genesis.json的位置

  cd ~/eos/build
  cd etc/eosio/node_00

这部分请注意,并没有在文档之中提到,而是我实际运行master分支时候找到的.
在node_00里面,你会发现两个文件: config.ini, 和genesis.json

前者是配置文件; 后者是链的创世信息,包含了一个私钥.

在config.ini文件末尾,加上如下一行:

  producer-name = eosio

增加这一行,是为了确保等下eosiod能够运行起来. eosiod是节点出块所运行的程序.
另外,你会注意到,在config.ini之中,有如下的一行密钥对:

private-key = ["EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV","5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3"]

这是用于账户eosio的,供测试用.

注意EOS开头的是公钥,而5KQ这一串,是私钥.

现在master分支的文件中,在本地测试节点,并非像文档中所言那样,有21个出块人,而是本地测试网络之中,只用到了一个出块节点,账户就是eosio.

这一点是我在遇到问题翻查issue时候发现的,文档之中还没有体现.我相信这一改动是暂时的,之后还会修改为inita…initu的设置,不过,为了先运行起来,我们暂时做一下修改.

现在,可以启动eosiod了.

cd ~/eos/build/programs/eosiod/ 
./eosiod

命令行下,会有如下的信息:

[EOS代码解读]Day1: 编译程序,让EOS在本地电脑跑起来!_第2张图片
image

表示, 节点运行已经正常了.

由于我本地节点已经非第一次运行,我找了一张图,是首次运行时候的图:

[EOS代码解读]Day1: 编译程序,让EOS在本地电脑跑起来!_第3张图片
image

这张图片来自王伟的一篇文章,也是讲关于eos构建的:
https://www.jianshu.com/p/b26f198663bb

至此,eosd可以顺利在你的本地机器运行了.

运行客户端命令,与节点交互

eos/build/programs/eosioc这个文件夹中,你会找到一个可执行文件: eosc.

直接运行:

cd ~/eos/build/programs/eosioc
./eosioc

会看到:

[EOS代码解读]Day1: 编译程序,让EOS在本地电脑跑起来!_第4张图片
image

列出来了一些常用的命令.简单介绍几个:

version, 查看客户端编译的版本:

./eosioc version client

运行结果是:

Build version: b78ddd27

wallet命令: 用于钱包操作,包括如下的操作:

## 创建一个新的本地钱包,默认是default
./eosioc wallet create 

注意,创建钱包之后,会提供一串密码给你,请务必保存好,这个密码是用于钱包解锁的.

## 也可以通过传入参数,来创建一个自定义名称的钱包
./eosioc wallet create -n test_wallet

 ## 打开钱包,默认是default钱包
./eosioc wallet open

## lock, lock_all, unlock:
对钱包的解锁和锁定操作

## import: 导入私钥,以eosio这个账户为例

./eosioc wallet import 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3

## list: 列出来钱包列表
./eosioc wallet list

关于eosioc更多的信息,可以查看wiki: https://github.com/EOSIO/eos/wiki/Programs-&-Tools#eosc

明天,我会结合一个具体的例子,写一下如何使用eosc的命令,如何上传智能合约Currency到区块链上,并且,运行该合约进行转账操作.

主要参考官方的文档,但是,有一点你需要注意到,如果运行master分支的话,我们所导入的账户,是eosio,而不是官方文档之中所写到的: inita. 误解了这一点,可能会让你花费很多时间.

如果喜欢的话,请留言留下你的意见吧.
这篇文章主要写给有一点编程经验想要体验一下eos的.也欢迎各路大牛来留言指教.

你可能感兴趣的:([EOS代码解读]Day1: 编译程序,让EOS在本地电脑跑起来!)