首先可以在conflux官方开发者文档中找到相应教程,只不过官方教程有点不详细,我摸了很久才摸出来:conflux开发者文档中文,然后我演示的环境是在windows环境,其实也是通过linux工具git bash来运行的节点,所以在Linux环境下步骤也差不多。
下面开始conflux的私链搭建:
首先从github上下载conflux源代码:conflux源码,选择版本下载就行了,我下载的版本是v1.1.2,下载完成后打开文件夹可以看到里面有很多文件:
其实下载完成源文件后我们可以用源文件来构建用于运行conflux节点的可执行二进制文件,需要先按照官网的教程安装构建依赖项比如Rust1.42.0、clang和sqlite等,如果大家想从头开始构建可以参考官网教程:conflux构建依赖,这里我已经构建过可执行二进制文件了,大家直接可以直接拿来用点这里下载
有了可执行文件后我们打开run文件夹
打开run文件夹,这里面的toml就是运行节点所需的配置文件,这个tethys.toml是官方提供的一个配置文件示例,里面包含了所有配置选项,可以在这里面定制链的配置。
打开这个文件:可以看到这里面有很多配置信息的字段都是以
配置属性 = 属性值 来配置的,如果未设置的话一般会有默认值,如果需要自己设置其他值要把前面的#去掉,关于这些配置属性的作用,可以通过运行
./conflux --help
来列出所有 CLI 选项。绝大多数 CLI 选项都会对应到 TOML 文件内的设置
我们这里简单的介绍几个重要的配置属性:
1.bootnodes:这个属性是设置这个节点的引导节点的地址,在这个文件中默认给出的是conflux团队维护的全节点,也就是如果要连接到主网或测试网络或私链,这里的值应该设置为所在网络的引导节点地址,如果是要运行单节点的开发链(私链),或是多节点开发链的引导节点,则这个属性不应该被设置。
2.node_type:这个属性是设置这个节点的类型,有"full", “archive”, or "light"三种选项的值可以选择,这三种类型的不同之处大家可以上网查询,这里不多做介绍,默认是full。
3.mode:这个属性是设置节点的模式,可以选择dev和test,dev模式即为单节点,test模式为多节点,这两个模式的配置文件里有介绍。
4.mining_author:这个属性是接受挖矿奖励的账户地址
5.mining_type:同样可以选择"stratum", “cpu”, and “disable”
6.public_address:它应被设置为从互联网上公开访问你节点的IP地址。如果节点被覆盖于公共网关下,则可以通过在百度中搜索"ip"来获取公共地址。
7.# jsonrpc_ws_port=12535
# jsonrpc_tcp_port=12536
# jsonrpc_http_port=12537
#jsonrpc_local_tcp_port=12538
这些为rpc服务的端口,如果要与节点进行交互则需要去掉注释即#,开放端口
8.dev_allow_phase_change_without_peer:这个属性文件里没有,需要自己添加,在单节点的配置文件中设置为true,作用为可以让没有连上其它节点的单节点也开始挖矿。
9.genesis_secrets:设置创世账户,应该新建一个文件,其中存放创世账户的密钥,并设置该属性的值为该文件即可设置创世账户,创世账户的余额设置默认为10000000000000000000000
10.dev_block_interval_ms:dev模式下的出块速度
11.initial_difficulty:初始难度,用来控制出块的速度
12.chain_id:设置自己在conflux网络的链id,1为conflux测试网,1029为conflux主网,可随意设置
剩下的配置属性大家自己去了解,有不懂得可以一起讨论。
接下来修改tethys.toml配置文件来配置单节点的配置环境:
首先bootnodes这一个属性需要加上#注释掉,或者直接删掉也行
然后mode=“dev”,设置节点模式为单节点
然后添加dev_allow_phase_change_without_peer=true,让单节点能够挖矿
然后mining_author=“你的conflux账户地址”
然后public_address=“你百度搜索ip得到的ip地址”
然后把# jsonrpc_http_port=12537前面的注释去掉让节点能够通过rpc服务交互
然后chain_id=1234 除了1和1029应该都可以设置
保存以上配置后将该配置文件命名为dev.toml,并将可执行文件conflux放入此文件夹,打开Linux命令工具,或者在Linux环境下,输入命令:
./conflux --config dev.toml 或 ./conflux.exe --config dev.toml
出现如下界面说明运行成功,要是./conflux无法执行则试试更换为conflux.exe,点击获取
接下来我们通过conflux portal即conflux官方钱包来与这个节点交互,在网络中选择自定义RPC:
网络名称与符号都可以随便填,RPC URL为http://你运行节点的主机:12537/,然后保存
如果添加成功则说明节点配置正确并且正确运行,如下所示其中的cfx余额表明这个账户是挖矿的收益地址
接下来是多节点开发链文件配置,需要有两台主机,一台主机先运行一个引导节点,另一台主机随后连接上这个引导节点,加入网络
引导节点配置属性:
首先bootnodes这一个属性需要加上#注释掉,或者直接删掉也行
然后mode=“test”
引导节点本身是可以挖矿的。只是默认情况下,如果没有连上别的节点就不开始挖矿,因为如果不是在最新的链上挖矿是没有奖励的。
若需要设置引导节点挖矿,则设置dev_allow_phase_change_without_peer=true,mining_type = “cpu”
然后mining_author=“你的conflux账户地址”
然后public_address=“你百度搜索ip得到的ip地址”
然后把# jsonrpc_http_port=12537前面的注释去掉让节点能够通过rpc服务交互
然后chain_id=1234 除了1和1029应该都可以设置
保存以上配置后将该配置文件命名为bootnode.toml,并将可执行文件conflux放入此文件夹,打开Linux命令工具,或者在Linux环境下,输入命令:
./conflux --config bootnode.toml 或 ./conflux.exe --config bootnode.toml
接下来再在另外一台主机上运行一个节点加入引导节点的网络:
首先bootnodes属性设置为bootnodes=“BOOTNODE_URL”
BOOTNODE_URL格式为:cfxnode://NODEID@IP:PORT,NODEID为引导节点的ID,可在引导节点的输出日志中找到:Self node id: $ID,这个ID即为节点的ID,去掉前面的0x前缀即可填入NODEID中,IP为引导节点的ip地址,端口号一般为12537,
设置mode=“test”
设置mining_type = “cpu”
然后mining_author=“你的conflux账户地址”
然后public_address=“你百度搜索ip得到的ip地址”
然后把# jsonrpc_http_port=12537前面的注释去掉让节点能够通过rpc服务交互
然后chain_id=引导节点设置的chainID
保存以上配置后将该配置文件命名为dev1.toml,并将可执行文件conflux放入此文件夹,打开Linux命令工具,或者在Linux环境下,输入命令:
./conflux --config dev1.toml 或 ./conflux.exe --config dev1.toml
如果节点成功加入则该节点应该开始挖矿,且过一段时间后在加入节点和引导节点的运行文件夹中的/blockchain_data/net_config文件路径中会生成一个untrusted_nodes.json文件,打开其中可以看到连接到本节点的其他节点的信息,untrusted表明该节点还处于不可信任状态。
官网文档里是这么说的:连接到引导节点的其他节点将暂时处于不可信状态(默认为3天),在我们的发现协议中不可信节点将不会被广播。因此,在其他节点晋升到受信任状态之前,网络结构将是一个以引导节点为中心的星形结构。您通过修改配置文件内的node_table_promotion_timeout_s来缩短该周期。
如果出现以上文件,则说明节点成功连接,这个文件的出现需要一定时间,如果一直没有,则需要先检查下node id,ip,port都配置对了,而且没有被防火墙/路由器拦截。然后确认下引导节点和加入的节点在除了bootnode和mining_type外的参数都完全一致,比如genesis_secrets,mode,initial_difficulty。
节点搭建完并成功运行后我们可以通过conflux官方提供的SDK与节点进行交互,具体的看这里,推荐JavaScript,方便快捷,当然Java也可以,这里有个老哥整挺好:https://blog.csdn.net/qq_42511414/article/details/115594609
与节点交互需要注意节点的url和chainId要设置对。
最后大家如果发现什么错误或有啥疑问,可以一起探讨。