3
本文作为系列第一篇文章,主要介绍了如何搭建EOS本地环境、运行节点并并进行简单的交互:如创建钱包。

note:笔者用的是macOS系统。

EOS主网正式上线,想必大家都很激动吧。我的第一感觉是,虽然EOS离自己的目标仍然还有一段路要走,但是它依然是被寄予厚望的公链项目。现在似乎是更加深入了解EOS的好时候,一开始,我们会学习一些和EOS平台交互的简单操作。

在正式开始之前,有一点需要提醒大家,你需要掌握下面这些基本知识:

  • 命令行的简单操作(会切换目录就行啦)
  • git的简单使用(会git clone就行啦)

即使你还没有接触过这些,百度一下,十分钟搞定。

1. git clone

进入一个你想要放置eos项目的目录,把下面这行命令复制到终端里,然后按下enter:

(对我来说,我想把eos放在目录/Users/hammer/blockchain中)

cd /Users/hammer/blockchain 
git clone https://github.com/EOSIO/eos --recursive

这会帮你安装一大堆“东西”,--recursive可以确保你安装了属于这个项目的所有“东西”。它会层级式地复制这个目录,一直复制到目录树的最底层(大家可以想象一下俄罗斯套娃?)。关于git的使用解释到这儿就可以啦。

现在,让我们进入这个目录里看看:

cd eos
ls

输入上面的命令就会显示如下界面:

eos项目内容

真的有好多东西!你肯定想,如果有其他更轻量级的方法来和EOS主网交互,该是一件多棒的事情。不过,既然你都读到这儿了,我猜你可能也是蛮拼(认真)的。

做到这儿,我们的主要目的就是在本地搭建EOS。就在你刚刚下载的目录里,有一个脚本可以实现这个功能。比较逊的就是,整个安装工程太浩大了,大概1G多,里面有超级多的依赖包。

并且它需要你提前安装有xcode,mongodb,homebrew还有一堆其他的东西。因为我事先已经装好这些了,所以可能会更省心一些。如果你还没装,估计就要耗时更久了。尽管其实,其中的某些依赖,EOS也并不是非要不可(但是你就要装啊。。?)。

对于一个 getting_start 文章来说,上面这些对于小白的杀伤力依然太强了。咱们就拿MongoDB来举个例子,mongodb简而言之就是一个数据库。那么为什么一个数据库会跟区块链项目扯上关系?是不是区块链就是个数据库?看上去EOS似乎使用mongodb作为主要数据的辅助支撑。这样的话就能理解,为什么大家都说从区块链上查数据是件很痛苦的事情了。我们进一步猜mongodb复制了区块链的部分数据并且支持标准化的查询语法进行访问。(不得不说想象力对理解一个陌生又复杂的系统,确实是个好东西。)

2. build

为了搭建EOS,我们要使用刚刚下载的文件夹里的一个文件:eosio_build.sh。以.sh结尾说明这是一个shell脚本。一句话概括就是,这是一个可以直接通过命令行执行的文件。

./eosio_build.sh

执行这个脚本需要花一段时间,并且它很有可能失败一两次,告诉你你还需要安装其他的软件。对我来说,安装软件最折磨人的地方,永远是那些【为了安装要再安装】的环节。如果你也遇到了这些问题,深呼吸试试??

不过能读到这儿的基本就剩下程序员了吧,那对这种问题估计也见怪不怪了。

如果你是一个为了区块链,连英语和计算机都敢自学的小白,那这些问题对你还算问题么。(为你打call?)

【我自己遇到的问题和解决办法都贴在了下面的附录1里,希望能对大家有所帮助】

这个命令成功完成的画面是:

eos_build_success

3. make install

一旦eosio_build完成之后,你需要在之前下载的eos文件夹中继续找一个叫build的文件夹:

cd build
sudo make install

然后继续等它完成。完成之后,你就可以继续往下走了:

cd programs/nodeos
./nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin

运气好的话,EOS本地安装就完成啦。它会产生block并且记录下来,打印在命令行中。COOL !(虽然有点复杂)

而且我还要很负责地告诉你,现在还没到抱怨复杂的时候,我们离深入了解EOS还差得早呢。

顺便贴一下成功运行的样子:

runnodesuccess

4. 创建钱包

到这里,我们的安装工作就告一段落了,下面就到了真正开始操作EOS的时候了。

我们先来补充一点背景知识。下面这张图展示了,EOS开发系统里主要部分是如何交互的:

eos_main_pieces

你现在就是图中那个小人。现在有三个可用的EOS服务。你正在使用的是cleos服务。cleos = cli + eos,简单来说,这是一个用命令行和EOS进行交互并且管理钱包的工具。这个服务同时也会使用nodeos(后台运行的eos主程序)和keosd(保证钱包中密钥安全的组件)。

下面就到了激动人心的创建钱包环节?:

cleos wallet create

wallet_create

如果看到了这个画面,JUST CELEBRATE!

(在创建钱包大家通常也会遇到一个问题,在附录2中我贴出了解决办法)

除了像刚才那样创建默认钱包外,还可以创建自己命名的钱包。比如就叫mywallet记住打印出来的密码哦

cloes wallet create -n mywallet

创建的钱包文件在~/eosio-wallet/文件夹中,安全起见的话,也可以备份该文件到硬盘再删除,需要用了再拷贝回来。

总结

该篇我们学习了:

  • EOS环境搭建
  • 简单EOS钱包创建

结束语

今天简单介绍了如何入门EOS,下一章将手把手教会你如何连接EOS主网。


附录1 - 在build过程中遇到的问题

我自己在./eosio_build.sh的过程中,遇到了2个error,这里贴出来供大家参考:

1. LLVM_DIR UNSET

详细错误如下:

CMake Error at libraries/wasm-jit/Source/Runtime/CMakeLists.txt:26 (find_package):
  Could not find a package configuration file provided by "LLVM" (requested
  version 4.0) with any of the following names:

    LLVMConfig.cmake
    llvm-config.cmake

  Add the installation prefix of "LLVM" to CMAKE_PREFIX_PATH or set
  "LLVM_DIR" to a directory containing one of the above files.  If "LLVM"
  provides a separate development package or SDK, be sure it has been
  installed.


-- Configuring incomplete, errors occurred!
See also "/Users/hammer/blockchain/eos/build/CMakeFiles/CMakeOutput.log".

    >>>>>>>>>>>>>>>>>>>> CMAKE building EOSIO has exited with the above error

【解决办法】:

指定LLVM_DIR的值。我自己用的是zsh,所以修改的是~/.zshrc文件,使用bash的小伙伴修改~/.bash_profile即可。

~/.zshrc文件中追加一行:

(记得先检查下你的/usr/local/Cellar/里到底有没有llvm@4以及相应版本的文件夹)

export LLVM_DIR=/usr/local/Cellar/llvm@4/4.0.1

最后别忘记source生效:

source ~/.zshrc

2. WRONG WITH GETTEXT

详细错误如下:

Undefined symbols for architecture x86_64:
  "_libintl_bindtextdomain", referenced from:
      _main in main.cpp.o
  "_libintl_gettext", referenced from:
      eosio::client::localize::localized_with_variant(char const*, fc::variant_object const&) in main.cpp.o
      eosio::client::localize::localized_with_variant(char const*, fc::variant_object const&) in help_text.cpp.o
  "_libintl_textdomain", referenced from:
      _main in main.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation

【解决办法】

在命令行中输入:

brew unlink gettext && brew link --force gettext

然后重新进入eos文件夹中执行./eosio_build.sh即可。

附录2 - 在创建钱包时遇到的问题

在执行cleos wallet create的时候,会遇到一个很常见的问题,提示你要kill keosd。详细错误如下:

"/usr/local/bin/keosd" launched
Unable to connect to keosd, if keosd is running please kill the process and try again.

多半是因为端口配置的问题。(虽然官网中说cleos运行时会自动启动keosd,我也没遇到这个问题,但是有小伙伴反映了有这个问题,现在贴一下解决办法)。

在之前说的eos钱包的目录~/eosio-wallet中有一个config.ini文件,在里面找到http-server-address那一行,替换成如下端口号:

http-server-address = 127.0.0.1:8900

将keosd监听端口改为8900,然后再执行如下命令启动keosd:

keosd&

之后我们再来创建钱包:

cleos wallet create -n test

TADA!成功!


王铁塔
33 声望29 粉丝