本文作为系列第一篇文章,主要介绍了如何搭建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。就在你刚刚下载的目录里,有一个脚本可以实现这个功能。比较逊的就是,整个安装工程太浩大了,大概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
里,希望能对大家有所帮助】
这个命令成功完成的画面是:
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还差得早呢。
顺便贴一下成功运行的样子:
4. 创建钱包
到这里,我们的安装工作就告一段落了,下面就到了真正开始操作EOS的时候了。
我们先来补充一点背景知识。下面这张图展示了,EOS开发系统里主要部分是如何交互的:
你现在就是图中那个小人。现在有三个可用的EOS服务。你正在使用的是cleos
服务。cleos
= cli
+ eos
,简单来说,这是一个用命令行和EOS进行交互并且管理钱包的工具。这个服务同时也会使用nodeos
(后台运行的eos主程序)和keosd
(保证钱包中密钥安全的组件)。
下面就到了激动人心的创建钱包环节🤩:
cleos 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!成功!