EOSIO概述
EOSIO是用于创建和部署智能合约和分布式应用程序的下一代区块链平台。EOSIO附带了许多程序。EOSIO中包含的主要内容如下:
● Nodeos(node+eos=Nodeos)-核心服务守护进程,运行用于块生产、API端点或本地开发的节点。
● Cleos(cli+eos=Cleos)-与区块链交互(通过nodeos)和管理钱包(通过keosd)的命令行界面。
● Keosd(key+eos=Keosd)-管理钱包中EOSIO密钥的组件,并为数字签名提供安全的包围区。
这些组件之间的基本关系如下图所示。
EOSIO软件安装
安装和使用EOSIO软件有多种方法:
● 安装EOSIO预制二进制文件
● 从源代码生成EOSIO
如果您是EOSIO新手,建议您安装EOSIO预建二进制文件,然后转到EOSIO开发者门户的入门部分。如果您是高级开发人员、块生产者,或者没有适用于您的平台的二进制文件,您可能需要从源代码构建EOSIO。
支持的操作系统
EOSIO软件支持以下开发和/或部署环境:
Linux发行版
- Amazon Linux 2
- CentOS Linux 8.x
- CentOS Linux 7.x
- Ubuntu 20.04
- Ubuntu 18.04
macOS
- macOS 10.14 (Mojave) or later
可以在其他基于Unix的操作系统上安装EOSIO。不过,这并没有得到官方的支持。
安装预构建二进制文件
如果以前使用shell脚本从源代码安装过EOSIO,则必须先运行卸载脚本,然后才能在同一操作系统上安装任何预构建的二进制文件。
预构建二进制文件
预构建的EOSIO软件包可用于以下操作系统。查找并遵循操作系统的说明:
Mac OS X:
Mac OS X Brew 安装
brew tap eosio/eosio
brew install eosio
Mac OS X Brew 卸载
brew remove eosio
Ubuntu Linux:
Ubuntu 20.04 软件包安装
wget https://github.com/eosio/eos/releases/download/v2.1.0/eosio_2.1.0-1-ubuntu-20.04_amd64.deb
sudo apt install ./eosio_2.1.0-1-ubuntu-20.04_amd64.deb
Ubuntu 18.04 软件包安装
wget https://github.com/eosio/eos/releases/download/v2.1.0/eosio_2.1.0-1-ubuntu-18.04_amd64.deb
sudo apt install ./eosio_2.1.0-1-ubuntu-18.04_amd64.deb
Ubuntu 软件包卸载
sudo apt remove eosio
基于RPM(CentOS、Amazon Linux等):
RPM软件包安装CentOS 7
wget https://github.com/eosio/eos/releases/download/v2.1.0/eosio-2.1.0-1.el7.x86_64.rpm
sudo yum install ./eosio-2.1.0-1.el7.x86_64.rpm
RPM软件包安装CentOS 8
wget https://github.com/eosio/eos/releases/download/v2.1.0/eosio-2.1.0-1.el8.x86_64.rpm
sudo yum install ./eosio-2.1.0-1.el8.x86_64.rpm
RPM软件包卸载
sudo yum remove eosio
EOSIO二进制文件的位置
安装预构建包后,实际EOSIO二进制文件将位于以下位置:
- /usr/opt/eosio//bin (Linux-based); or
- /usr/local/Cellar/eosio//bin (MacOS)
其中版本字符串是安装的EOSIO版本。
此外,每个EOSIO程序(nodeos、cleos、keosd等)的软链接将在usr/bin或usr/local/bin下创建,以允许从任何目录执行它们。
以前的版本
要安装EOSIO预构建二进制文件的早期版本,请执行以下操作:
- 浏览到https://github.com/EOSIO/eos/tags并选择需要安装的EOSIO软件的实际版本。
- 向下滚动到发行说明,下载操作系统所需的软件包或存档。
- 按照上面第一段的说明在给定的操作系统上安装所选的预构建二进制文件。
从源代码生成EOSIO
为高级开发人员构建EOSIO
如果您是EOSIO新手,建议您安装EOSIO预构建二进制文件,而不是从源代码构建二进制文件。
EOSIO可以使用不同的构建方法在多个平台上构建。高级用户可以选择使用我们的shell脚本构建EOSIO。希望部署公共节点的节点运营商或块生产商可能更喜欢我们的手动构建说明。
- Shell脚本-适合大多数开发人员,这些脚本构建在Mac OS和多种风格的Linux上。
- 手动构建-适用于那些可能对shell脚本有敌意的平台或需要对其构建进行更多控制的操作员。
建议EOSIO安装
成功构建EOSIO后,强烈建议从默认构建目录安装EOSIO二进制文件。这会将EOSIO二进制文件复制到一个中心位置,例如/usr/local/bin或~/eoso/x.y/bin,其中x.y是EOSIO发布版本。
Shell脚本
Shell脚本自动化了EOSIO软件和依赖项的构建、安装、测试和卸载过程。
要使用shell脚本从源代码构建EOSIO,请访问以下部分:
- 下载EOSIO源
- 构建EOSIO二进制文件
- 安装EOSIO二进制文件
- 测试EOSIO二进制文件
- 卸载EOSIO
如果您是EOSIO新手,建议您安装EOSIO预构建二进制文件,而不是从源代码构建二进制文件。
下载EOSIO源
要下载EOSIO源代码,请克隆eos repo及其子模块。建议先创建一个eosio目录文件夹,然后在那里下载所有与eosio相关的软件:
mkdir -p ~/eosio && cd ~/eosio
git clone --recursive https://github.com/EOSIO/eos
更新子模块
如果克隆存储库时没有–recursive标志,则必须在开始构建过程之前更新子模块:
cd ~/eosio/eos
git submodule update --init --recursive
拉取更改
在进行更改时,尤其是在切换分支后,还必须更新子模块。这可以通过上面的git子模块命令实现,也可以直接使用git pull:
[git checkout -b <branch>] (optional)
git pull --recurse-submodules //或者:git submodule update --init --recursive
构建EOSIO二进制文件
构建脚本是EOSIO存储库中提供的各种自动化shell脚本之一,用于构建、安装和卸载EOSIO软件及其依赖项。它们位于eos/scripts文件夹中。
构建脚本首先安装所有依赖项,然后构建EOSIO。脚本支持这些操作系统。要运行它,请首先切换到~/eoso/eos文件夹,然后启动脚本:
cd ~/eosio/eos
./scripts/eosio_build.sh
构建过程将临时内容写入eos/build文件夹。构建后,程序二进制文件可以在eos/build/programs中找到。
安装EOSIO二进制文件
EOSIO安装脚本
为了便于合同开发,可以使用eos/scripts文件夹中的eosio_install.sh脚本将内容安装在/usr/local文件夹中。需要足够的权限才能在系统文件夹上安装:
cd ~/eosio/eos
./scripts/eosio_install.sh
EOSIO手动安装
代替eosio_install.sh脚本,您可以通过调用eos/build文件夹中的make install来直接安装eosio二进制文件。同样,需要足够的权限才能在系统文件夹上安装:
cd ~/eosio/eos/build
make install
测试EOSIO二进制文件
可选地,可以针对您的构建运行一组测试,以执行EOSIO软件安装的一些基本验证。
要在生成后运行测试套件,请运行:
cd ~/eosio/eos/build
make test
卸载EOSIO
如果您以前从源代码构建EOSIO,现在希望安装预构建的二进制文件,或者再次从源代码进行构建,建议在eos/scripts文件夹中运行EOSIO_uninstall.sh脚本:
cd ~/eosio/eos
./scripts/eosio_uninstall.sh
卸载脚本还将提示用户卸载EOSIO依赖项。如果安装预构建的EOSIO二进制文件或首次构建EOSIO,建议使用此选项。
EOSIO手动构建
手动构建适用于高级开发人员
这些手册说明适用于高级开发人员。Shell脚本应该是从源代码构建EOSIO的首选方法。如果脚本失败或您的平台不受支持,请按照以下说明继续。
EOSIO依赖项
执行手动构建时,需要安装EOSIO软件所依赖的特定软件包。要了解有关这些依赖关系的更多信息,请访问EOSIO software dependencies部分。
EOSIO软件依赖性
EOSIO软件需要特定的软件依赖性来构建EOSIO二进制文件。这些依赖关系可以从源代码构建,也可以直接从二进制文件安装。依赖项可以固定到特定版本版本,也可以取消固定到当前版本,通常是最新版本。EOSIO repo外部托管的主要EOSIO依赖项包括:
- Clang-EOSIO使用的C++17兼容编译器
- CMake-EOSIO使用的构建系统
- Boost-EOSIO使用的C++Boost库
- OpenSSL-安全通信(和加密)库
- LLVM-LLVM编译器/工具链基础设施
其他依赖项要么在EOSIO repo中,例如secp256k1椭圆曲线DSA库,要么用于测试或内务管理,例如:
- automake, autoconf, autotools
- doxygen, graphviz
- python2, python3
- bzip2, zlib
- etc.
固定的依赖项
为了保证不同EOSIO软件版本之间的互操作性,开发人员可以选择复制内部使用的精确的“固定”依赖二进制文件。出于可移植性和稳定性的原因,区块生产商可能希望安装和运行使用这些固定依赖项构建的EOSIO软件。固定的依赖关系通常是从源代码构建的。
未固定的依赖项
普通用户或应用程序开发人员可能更喜欢安装EOSIO依赖项的未固定版本。这些对应于依赖项的最新版本或稳定版本。未固定依赖项的主要优点是减少了安装时间,也许性能更好。固定的依赖项通常从二进制文件安装。
自动安装依赖项
从源代码构建EOSIO时,可以从构建脚本自动构建或安装EOSIO依赖项。为了构建固定的依赖关系,可以在调用脚本时指定可选的-P参数。否则,将安装未固定的依赖项,但始终固定的boost和cmake除外:
cd ~/eosio/eos
./scripts/eosio_build.sh [-P]
不支持的平台
EOSIO依赖项也可以通过复制由构建脚本调用的相同命令来手动构建和安装。通过在调用时将特定环境变量和CLI参数导出到脚本,可以直接从脚本生成实际命令:
cd ~/eosio/eos
export VERBOSE=true && export DRYRUN=true && ./scripts/eosio_build.sh -y [-P]
平台
Shell命令可用于手动下载、构建、安装、测试和卸载EOSIO软件以及这些平台的依赖项。
- Amazon Linux 2
- CentOS 7.7
- MacOS 10.14
- Ubuntu 18.04
源外构建
在构建依赖项和EOSIO二进制文件时,也支持源外构建。有关更多信息,请参阅cmake帮助。
其他编译器
要覆盖clang的默认编译器工具链,请在上面的指令中将这些标志添加到cmake命令中:
-DCMAKE_CXX_COMPILER=/path/to/c++ -DCMAKE_C_COMPILER=/path/to/cc
调试生成
对于调试版本,添加-DCMAKE_BILD_TYPE=debug。其他常见的构建类型包括Release和RelWithDebInfo。
文章引用与参考
【1】https://developers.eos.io/manuals/eos/latest/index