加入节点网络
上一章中,我们介绍了 FIBOS 的节点网络。这一章中,我们将加入其中,成为一个节点,亲身体会区块链网络的魅力。
fibos-nodes
fibos-nodes 是由 FIBOS 社区提供的一款快速启动 FIBOS 主网节点的脚本工具,他能帮助开发者快速启动三种不同类型的节点。
项目地址:https://github.com/FIBOS-Community/fibos-nodes
安装
1 | git clone https://github.com/FIBOS-Community/fibos-nodes.git |
启动
1 | fibos bp.js // 快速启动一个bp节点 |
默认数据,配置存储位置 /blockData/data
全节点数据同步
全节点区块数据同步耗时长,FIBOS 社区提供最新镜像启动服务,极大缩短区块同步时间。
服务地址:http://ghost.bp.fo/
使用方法
下载数据:
访问 http://ghost.bp.fo/ghost/ 选择想要同步的数据包文件,直接点击下载
或者获取文件URL,使用 wget 命令进行下载
1
weget http://ghost.bp.fo/ghost/data_15600397.tar.gz
解压文件:
1
tar -zxvSf data.tar.gz
修改快速启动脚本配置文件 config.json :
将 data_dir 参数指向刚刚数据文件解压的 fibos-data 目录即可。
1
"data_dir": "fibos-data/",
启动全节点
1
fibos full.js
手动加入 FIBOS 节点网络
如果你不使用 fibos-nodes 这个工具进行节点启动的话,你也可以自行编写启动脚本,加入到节点网络中来。
加入 FIBOS 网络配置需要涉及几个关键信息:
获得节点网络的 chainId
TestNet:
1 | chainId : '68cee14f598d88d340b50940b6ddfba28c444b46cd5f33201ace82c78896793a' |
FIBOS 主网:
1 | chainId : '6aa7bd33b6b45192465afa3553dedb531acaaff8928cf64b70bd4c5e49b7ec6a' |
提供 P2P 监听的地址以及端口
1 | 'p2p-listen-endpoint' : '0.0.0.0:9870' |
区块数据同步的目标节点信息
区块数据同步必须先从已经在运行的超级节点中同步数据。
目前 TestNet BP 节点由 FIBOS 基金会提供,p2p 地址为 p2p-testnet.fibos.fo:9870 和 p2p-testnet-02.fibos.fo:9870
1 | 'p2p-peer-address' : ['p2p-testnet.fibos.fo:9870','p2p-testnet-02.fibos.fo:9870'] |
FIBOS 主网的超级节点已全部被社区节点取代,具体的 BP 节点信息,请访问 https://www.fibos123.com/#!/bp
1 | 'p2p-peer-address' : ['p2p.mainnet.fibos.me:80','seed-mainnet.fibscan.io:9103'] |
注意:示例中给出的 FIBOS 主网 BP P2P 地址,会发生变动,请时刻关注。
genesis.json 文件
TestNet:
1 | { |
FIBOS 主网:
1 | { |
如何成为一个同步节点
如果节点仅仅作为同步 FIBOS 区块数据,非常简单。以下代码保存至 sync_node.js:
1 | var fibos = require('fibos'); |
上述代码中,net 模块中的 p2p-peer-address 是一个可变值,请注意修改。
运行同步节点:
1 | fibos sync_node.js |
如何成为一个 BP 节点
(* BP 区块生产者)
重要提示:使用 Producer 身份发起注册申请,最好 producer key 不要和 active key 一样!
如果节点需要申请注册成为 FIBOS 主网的区块生产者,需要涉及到 3 个方面:
- 配置 Producer 信息启动 FIBOS 节点服务
- 使用 Producer 身份发起注册申请
- 发起投票使得成为 Producer
配置 Producer 信息启动 FIBOS 节点服务
只有投票数量达到一定的数量,FIBOS 节点才会真正的成为 Producer,拥有生产区块的权限,其他情况仅仅作为同步区块数据的身份存在。
以下代码实现了配置一个 Producer,保存代码至 producer_node.js:
1 | var fibos = require('fibos'); |
上述代码中可变配置说明:
1 | var config = { |
运行 Producer 节点:
1 | fibos producer_node.js |
使用 Producer 身份发起注册申请
调用方法:
1 | // 初始化一个 fibos 客户端 |
方法说明:
使用 fibos.js 客户端 调用 eosio 合约发起注册 BP 操作
实例:
以下代码保存至 register_bp.js :
1 | var FIBOS = require('fibos.js'); |
实例说明:
实例操作中,配置好 FIBOS MainNet 和 FIBOS RPC 地址 和 FIBOS 私钥后,便初始化了一个 FIBOS 客户端,通过调用 regproducerSync 方法,传入四个参数:
| 参数 | 含义 |
|---|---|
| producerName | 区块生产者账户名 |
| publicKey | 区块生产者公钥 |
| url | 区块生产者宣传网站 |
| location | 区块生产者服务器位置地区代码 |
获取投票数成为 Producer
成为 BP 需要获得一定数量的投票数,你可以让别人给你投票,也可以自己给自己投票。投票需要抵押 FO 获取资源,下面教会大家如何抵押资源以及进行投票。
抵押资源
调用方法:
1 | //初始化一个 fibos 客户端 |
方法说明:
使用 delegatebwSync 方法抵押 FO 获取 NET 和 CPU 资源,用来投票。
实例:
1 | var FIBOS = require('fibos.js'); |
实例说明:
配置了 FIBOS 主网的 chainId 和 Http 服务地址后,便初始化了一个 FIBOS 客户端。调用 delegatebwSync 方法,抵押 FO 获取资源。
| 参数 | 含义 |
|---|---|
| from | 抵押资源者 |
| receiver | 资源接收者 |
| stake_net_quantity | 获取 Net 抵押的 FO 数量 |
| stake_cpu_quantity | 获取 CPU 抵押的 FO 数量 |
| transfer | 0 : 表示使用自己的资源为他人抵押;1 : 表示赠送资源给他人并抵押。注意:自己为自己抵押资源的时候,只能填 0 |
进行投票
调用方法:
1 | //初始化一个 fibos 客户端 |
方法说明:
使用 voteproducerSync 方法,来给 BP 进行投票。
实例:
以下保存代码至 vote_bp.js
1 | var FIBOS = require('fibos.js'); |
实例说明:
上述代码的含义为 fibostest123 这个用户给 fibosbpnodea, fibosbpnodeb, fibosbpnodec 投票,投票节点列表需要由开发者自己按照字母序排序,一次性最多可以给30个 BP 投票。中间空着的参数为代理,不填表示直接给 BP 投票,填入则是通过代理给 BP 投票。
执行投票:
1 | fibos vote_bp.js |
注意:投票结束后,排名必须在 TOP 21 前才可以被选为区块生产者 BP。
领取奖励
成为 BP 并成功出块后,会获得相应的奖励,可以调用下面的接口来领取奖励:
调用方法:
1 | //初始化一个 fibos 客户端 |
方法说明:
使用 claimrewardsSync 方法,来领取 BP 奖励。
实例:
1 | var FIBOS = require('fibos.js'); |
实例说明:
上述代码为 fibosbpnode1 领取了自己出块获得的奖励!
p2p 自发现配置说明
开启 p2p 自发现:
当连接上一个节点后,它如果和你都开启了 p2p 自发现,那么它会把自己连接上的节点共享给你,你也会连上他给你的节点,这样更好增加网络的稳定性。
fibos 支持版本
1 | v1.7.1.4 + |
开启 p2p 自发现实例
net插件配置 p2p-discoverable
1 | fibos.load("net", { |
eth 组件节点配置说明
fibos 版本要求:
1 | v1.7.1.4 + |
普通节点:
1 | //v1.7.1.4 + |
bp 节点:
1 | //v1.7.1.4 + for eth fox |
