# 安装 EOS #### 预编译二进制文件安装 ```bash wget https://github.com/EOSIO/eos/releases/download/v1.5.0/eosio_1.5.0-1-ubuntu-16.04_amd64.deb apt install ./eosio_1.5.0-1-ubuntu-16.04_amd64.deb ``` 这样 eos 的执行文件就在 `/usr/opt/eosio/1.5.0/bin/` 目录下。 #### 源码安装 ```bash git clone https://github.com/EOSIO/eos --recursive cd eos git checkout v1.5.0 git submodule update --init --recursive ./eosio_build.sh ``` 接下来会检查各种依赖包的安装情况,然后询问是否安装缺失依赖,选择 yes。 然后就等待长时间的编译,安装。 ### 安装 Jungle2.0 测试网节点 #### 自动脚本安装 自动脚本安装说明 [https://github.com/EOS-Jungle-Testnet/Node-Auto-installation](https://github.com/EOS-Jungle-Testnet/Node-Auto-installation) 填写注册信息 之后安装指示一步步操作就可以了。Jungle 模式的同步会下载一份历史块数据文件,这样能更快的同步到最新区块。 ### 安装正式环境同步节点 克隆 CryptoLions 的正式环境配置仓库 ```bash # 假如我需要把节点内容放在 /eos 里。 cd /eos git clone https://github.com/CryptoLions/EOS-MainNet.git ./ # 调整权限 chmod -R 777 ./*.sh chmod -R 777 ./Wallet/*.sh ``` 因为这些脚本默认的安装目录在 `/opt/EosmainNet`,和我设置的不一样,我需要把 cleos.sh, start.sh, stop.sh, Wallet/start_wallet.sh, Wallet/stop_wallet.sh 这几个文件里的路径都改掉。 #### 指定 genesis.json 文件 我之前有次启动发现链的 id 与正式环境的并不相同,所以就指定了 genesis.json 文件。在 `/eos/start.sh` 里给 nodeos 添加启动参数 `nodeos --genesis-json /eos/genesis.json` 然后 `./start.sh` 启动节点。日志在 `stderr.txt` 里。启动成功就可以看到日志里真在同步块了。 执行 `curl http://127.0.0.1:8888/v1/chain/get_info` 如果看到结果如下 ``` { "server_version": "ea08cfd3", "chain_id": "aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906", "head_block_num": 2419, "last_irreversible_block_num": 2418, "last_irreversible_block_id": "00000972cbd9fef42d781baaced83abc26f26767d8f27f4380b7dec7a7ed2762", "head_block_id": "0000097310faf39ebe9a664e0f99ac882cd3b607cc1a8722ba4c48f6551983e3", "head_block_time": "2018-06-09T12:18:22.500", "head_block_producer": "eosio", "virtual_block_cpu_limit": 733745732, "virtual_block_net_limit": 11777754, "block_cpu_limit": 100000000, "block_net_limit": 1048576, "server_version_string": "v1.5.0" } ``` 这个 chain_id 就是正式环境的 chain id。 #### 修改默认的钱包配置文件地址 默认的钱包配置文件地址在 `~/eosio-wallet`,我需要修改到指定的位置,在 `/eos/Wallet/start_wallet.sh` 里的 keosd 的启动参数加上 `--config-dir /eos/xxx` 就好。 然后启动 `Wallet/start_wallet.sh` 就好了。 这里启动遇到了一个 `unix socket service failed to start: No such file or directory` 的错误,在 keosd 的配置文件里将 `unix-socket-path` 的地址写上绝对路径就可以了。 ### 其他 #### 启动本机单节点测试网络 执行 `nodeos --help` 可以查看帮助说明。 执行下面的命令启动本地节点 ```shell ./nodeos -e -p eosio --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin ``` #### 报错 "database dirty flag set (likely due to unclean shutdown" 如果遇到这个错误,删掉下面这个文件夹即可 ``` Mac OS: ~/Library/Application Support/eosio/nodeos/data Linux: ~/.local/share/eosio/nodeos/data ``` 启动成功后就能看到生产区块的输出了。因为没有交易所以每个 trxs 都是 0。 执行的输出如下 ![](http://static.laily.net/img/20181220192325.png) #### eos 相关二进制文件说明 编译完成后可以在 build 目录下找到 program 目录。如果是直接安装的二进制文件就是在 /usr/opt/eosio/1.5.0/bin 下。里面是编译出来的可执行程序。分别有一下二进制文件。 ``` nodeos: 区块链服务器节点生成组建 cleos: 和区块链交互的接口命令 keosd: EOS 钱包 eosio-launcher:节点网络组成和部署的应用 ``` ##### nodeos eos 的核心守护进程,运行时可以添加参数来配置插件。 ##### cleos nodeos 的客户端,用来和 nodeos 提供的 REST API 交互。 `./cleos` 不带任何参数则显示帮助文档。 ``` create 用来创建各种对象,比如 account, key, producer get 获取 create 创建的对象的信息 set 一个对区块链的吸入操作,部署智能合约,修改智能合约。 transfer 转账,account 和 account 之间互转 eos。 net wallet 和本地钱包交互 sign 对交易进行签名 push 把交易发送到区块链上。 ``` ##### keosd eos 钱包的守护进程。启动这个进程之后可以用 cleos wallet 与其交互。 ##### luncher 用来创建多节点区块链。nodeos 用来创建单节点区块链。 #### 报错 "Error 3090003: Provided keys, permissions, and delays do not satisfy declared authorizations transaction declares authority" 错误提示 ``` Error 3090003: Provided keys, permissions, and delays do not satisfy declared authorizations transaction declares authority '{"actor":"lailyadmin22","permission":"active"}', but does not have signatures for it. ``` 原因是需要签名的账户的 owner key 或者 active key 不在打开的钱包里,或者操作的智能合约的拥有者的 key 不在。 这种情况下需要添加签名的账户的 key 或者添加 eosio 账户的 private key。 ``` eosio public key: EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8BhtHuGYqET5GDW5CV eosio private key: 5KQwrPbwdL6PhXujxW37FSSQZ1JiwsST4cqQzDeyXtP79zkvFD3 注意,这只是测试环境的 ``` #### 主网/测试网信息 **主网** 区块链浏览器 [http://eosnetworkmonitor.io/#home](http://eosnetworkmonitor.io/#home ) EOSTEA : [https://eosmonitor.io/](https://eosmonitor.io/) EOSpark: [https://eospark.com/](https://eospark.com/) **测试网** Jungle Testnet:[http://jungle.cryptolions.io/](http://jungle.cryptolions.io/) EOSTEA:[https://party.eosmonitor.io/](https://party.eosmonitor.io/) **eos 主网 rpc 地址** EOS New York: https://api.eosnewyork.io eos DAC: https://eu2.eosdac.io **主网的 chain id** aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906 **测试链的 chain id** 038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca #### eos 配置文件说明 [https://developers.eos.io/eosio-nodeos/docs/configuration-file](https://developers.eos.io/eosio-nodeos/docs/configuration-file) #### 报错:_S_create_c_locale name not valid 加上 export LC_ALL="C" #### 报错: block log can not be found clear this folder Mac OS: ~/Library/Application Support/eosio/nodeos/data Linux: ~/.local/share/eosio/nodeos/data #### get transaction 总是空的 在启动nodeos时,添加参数:`--filter-on "*"` #### 常见错误 [http://blog.eosdata.io/index.php/2018/07/20/eos_errorcode/](http://blog.eosdata.io/index.php/2018/07/20/eos_errorcode/) > 参考: >[https://blog.csdn.net/w7849516230/article/details/80809329](https://blog.csdn.net/w7849516230/article/details/80809329) > ###### tags: `区块链` `EOS`