fibos bp 搭建中的那些坑。

中国 BM 响马大叔,8 月 28 日,一声令下,fibos 主网上线。主网上线之后的火爆程度,堪比春运。
奶哥我也凑了个热闹,搞了个 bp 节点,在没有文档的情况下挣扎了两天,踩坑无数,最后勉强把 bp 给部署上去咯。在这里我就总结一下,bp 搭建过程中几个比较大的坑。写成 Q&A 形式。

1.bp 的搭建的基础文档在哪里呀

兄弟,多看官网呀,官网上有的,戳这里:https://fibos.io/docs/guide/joinfibos/howtobeproducerinfibos.md.html

2. 做 bp 需要很棒棒的那种服务器么

现在 fibos 的交易压力还不大,所以 4 核 8g 的配置差不多就可以上了,当然未来随着 fibos 上的交易量增加,你的服务器自然也需要一点一点的升级上去。

3.bp 注册是啥意思

因为 fibos 用的是 dpos 共识,所以出块节点都线需要注册,注册了之后,你的节点就会出现在 bp 的列表里面,就可以让人投票啦。你甚至可以先注册一个 bp,然后慢慢得搭建 bp 服务。

4. 为啥我启动脚本的时候其他节点叫我“go way wrong chainid”

因为你在第一次启动的时候,需要一个genesis.json 文件,然后在 loadchain 的时候指定这个文件,代码如下
fibos.load("chain", { "genesis-json": "genesis.json" });

5. 为啥每次我重启的之后,都要重新下载节点

因为官方代码里写了每次删除之后,重新下载,所以删掉"delete-all-blocks": true 这句话。

6. 为啥我重启之后数据损坏了,启动不了了呢,咋办!

只能删掉原来都 data 和 conf 文件目录,重新下载。所以 kill 进程重启的时候,小心一点。kill -2 就好。

7. 为啥我的 rpc 接口调不通过

http 的配置里面,需要关掉跨站请求。代码是:
"access-control-allow-origin": "*", "http-validate-host": false

8. 奶老师,能不能直接把你的代码贴出来啊,我抄一份就好了

你想得真美,那就让你美一下吧。

var  fibos  =  require("fibos");

var  fs  =  require("fs");

var  config  = {

"producer-name":  "你的节点",

"public-key":  "你的pk",

"private-key":  "你的prik"

};

console.notice("正在启动FIBOS name:", config["producer-name"]);

fibos.config_dir  =  "你的conf目录";

fibos.data_dir  =  "你的data目录";

console.notice("config_dir:", fibos.config_dir);

console.notice("data_dir:", fibos.data_dir);

fibos.load("http", {

"http-server-address":  "0.0.0.0:8870",

"access-control-allow-origin":  "*",

"http-validate-host":  false

});

fibos.load("net", {

"p2p-listen-endpoint":  "0.0.0.0:9870",

"p2p-peer-address":  "ln-p2p.fibos.io:9870"

});

fibos.load("producer", {

"producer-name":  config["producer-name"],

"enable-stale-production":  true,

"private-key":  JSON.stringify([config["public-key"], config["private-key"]])

});

if (fs.exists(fibos.data_dir) ||  fs.exists(fibos.config_dir)) {

console.notice("data_dir or config_dir is exists");

fibos.load("chain");

} else {

console.notice("I will run as a blank node");

fibos.load("chain", {

"genesis-json":  "genesis.json"

});

}

fibos.load("chain_api");

fibos.load("wallet");

fibos.load("wallet_api");

fibos.start();

9. 奶老师,求求你了,我想要投你的 bp,但是我老是投失败,咋办

官方代码有个写错的地方. 投票的接口第三个参数是个数组,所以请传入数组。
并且这个数组需要是经过排序的,所以还特么要 sort 一下。代码在下面。

ctx.voteproducerSync("你的账号", "", ['fibosgenesis','fibos4imondo'].sort());

最后,请大家认准 imondo 官方的节点’fibos4imondo’和奶哥个人节点’fibosgenesis’。
欢迎来投,大小啊长短啊多少啊都不限。

爱你们的奶哥。