本文做为系列第一篇文章,主要介绍了如何搭建EOS本地环境、运行节点并并进行简单的交互:如建立钱包。note:笔者用的是macOS系统。node
EOS主网正式上线,想必你们都很激动吧。个人第一感受是,虽然EOS离本身的目标仍然还有一段路要走,可是它依然是被寄予厚望的公链项目。如今彷佛是更加深刻了解EOS的好时候,一开始,咱们会学习一些和EOS平台交互的简单操做。git
在正式开始以前,有一点须要提醒你们,你须要掌握下面这些基本知识:程序员
即便你尚未接触过这些,百度一下,十分钟搞定。github
进入一个你想要放置eos项目的目录,把下面这行命令复制到终端里,而后按下enter:mongodb
(对我来讲,我想把eos放在目录/Users/hammer/blockchain
中)shell
cd /Users/hammer/blockchain git clone https://github.com/EOSIO/eos --recursive
这会帮你安装一大堆“东西”,--recursive
能够确保你安装了属于这个项目的全部“东西”。它会层级式地复制这个目录,一直复制到目录树的最底层(你们能够想象一下俄罗斯套娃🌝)。关于git的使用解释到这儿就能够啦。数据库
如今,让咱们进入这个目录里看看:api
cd eos ls
输入上面的命令就会显示以下界面:xcode
真的有好多东西!你确定想,若是有其余更轻量级的方法来和EOS主网交互,该是一件多棒的事情。不过,既然你都读到这儿了,我猜你可能也是蛮拼(认真)的。安全
作到这儿,咱们的主要目的就是在本地搭建EOS。就在你刚刚下载的目录里,有一个脚本能够实现这个功能。比较逊的就是,整个安装工程太浩大了,大概1G多,里面有超级多的依赖包。
而且它须要你提早安装有xcode,mongodb,homebrew还有一堆其余的东西。由于我事先已经装好这些了,因此可能会更省心一些。若是你还没装,估计就要耗时更久了。尽管其实,其中的某些依赖,EOS也并非非要不可(可是你就要装啊。。🌚)。
对于一个 getting_start 文章来讲,上面这些对于小白的杀伤力依然太强了。我们就拿MongoDB来举个例子,mongodb简而言之就是一个数据库。那么为何一个数据库会跟区块链项目扯上关系?是否是区块链就是个数据库?看上去EOS彷佛使用mongodb做为主要数据的辅助支撑。这样的话就能理解,为何你们都说从区块链上查数据是件很痛苦的事情了。咱们进一步猜mongodb复制了区块链的部分数据而且支持标准化的查询语法进行访问。(不得不说想象力对理解一个陌生又复杂的系统,确实是个好东西。)
为了搭建EOS,咱们要使用刚刚下载的文件夹里的一个文件:eosio_build.sh
。以.sh
结尾说明这是一个shell脚本。一句话归纳就是,这是一个能够直接经过命令行执行的文件。
./eosio_build.sh
执行这个脚本须要花一段时间,而且它颇有可能失败一两次,告诉你你还须要安装其余的软件。对我来讲,安装软件最折磨人的地方,永远是那些【为了安装要再安装】的环节。若是你也遇到了这些问题,深呼吸试试?😅
不过能读到这儿的基本就剩下程序员了吧,那对这种问题估计也见怪不怪了。若是你是一个为了区块链,连英语和计算机都敢自学的小白,那这些问题对你还算问题么。(为你打call👏)
【我本身遇到的问题和解决办法都贴在了下面的附录1
里,但愿能对你们有所帮助】
这个命令成功完成的画面是:
一旦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还差得早呢。
顺便贴一下成功运行的样子:
到这里,咱们的安装工做就告一段落了,下面就到了真正开始操做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主网。
我本身在./eosio_build.sh
的过程当中,遇到了2个error,这里贴出来供你们参考:
详细错误以下:
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
详细错误以下:
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
便可。
在执行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!成功!