最为领先的内容公链,COS公链的代码全部开源免费。开源地址:https://github.com/coschain/
“没有基础知识,不用担心!
零基础,开启COS公链本地化运行。”
本文从源代码编译开始,带领大家一步步搭建一个可运行的环境,直到可以正常运行COS公链并出块。
考虑到可能出现的编译错误,我们也提供了一个能正常运行本地链的 docker。不过,对于那些想要深入理解本地链的编译和运行原理的开发者来说,我们强烈建议从源码开始编译哦~
第一步:获取源代码
从 github 上获取 master 分支的代码
git clone git@github.com:coschain/contentos-go.git
第二步: 编译
Go 的版本
内容公链 Contentos 的主要开发语言是 golang,并且使用了 golang 官方提供的 go modules 作为管理工具。所以,必须使用 Go 1.11 以上支持go modules功能的版本。由于 Go 1.12 对 modules 机制做出进一步的更新,推荐使用 Go 1.12 以后的版本(目前最标准的版本是 Go 1.11.4)。
编译 cosd
和 wallet
contentos-go 可以编译出的可执行文件均在 cmd
文件夹里,最重要的是 cosd
和 wallet-cli
。前者是 contentos 主链,后者是与主链交互的命令行工具。
cd build
go build ../cmd/cosd
go build ../cmd/wallet-cli
当然,你也可以通过 go build -o
指定名字和位置。
第三步: 运行
初始化
contentos 需要初始化 ~/.coschain
文件夹用于存放配置文件和数据,以下命令将会创建默认文件夹 ~/.coschain/cosd
。
cosd init
也可以指定文件夹名字,以下命令将会创建文件夹 ~/.coschain/testnode
。
cosd init -n testnode
指定配置文件名字的意义在于,可以通过这种方式实现本地同时运行多个节点。它们会读取不同的配置文件,并创建互相独立的 db 数据。
启动
启动 cosd
并完成正常出块的流程较为繁琐,如果只是需要启动并快速继续后面的操作,我们提供了一键启动的脚本,以便完成多个节点启动并且正常出块。当然,如果想要了解整个启动流程,建议跳过“一键启动”的方式。
单节点
初始化完成之后,通过执行 start
命令启动 cosd
。
cosd start
上述命令会使用 ~/.coschain/cosd
下的配置文件,并写入数据到该文件夹下。
同样,也可以指定配置文件夹。
cosd start -n testnode
会使用 ~/.coschain/testnode
下的配置文件,并且写入数据到这个文件夹下。
执行后,cosd
节点就可以正常启动了。
多节点
虽然我们可以手动创建多个配置文件并启动,但是这个过程比较繁琐。对于此,我们提供了 multinodetester
用于批量创建和启动。
multinodetester
存储在 cmd
文件下,需要编译。
cd build
go build ../cmd/multinodetester
批量初始化
multinodetester init 4
可以初始化 4 个配置文件夹。该命令可以在 ~/.coschain
下找到,分别为 testcosd_0
、 testcosd_1
、 testcosd_2
、 testcosd_3
, 对应 4 个节点。
批量启动
multinodetester start path/to/cosd 4
path/to/cosd 是 cosd 可执行文件的路线,如果 mltinodetester 和 cosd 都在 build 文件夹下,那么路径就是 ./cosd
。
通过以上步骤,本地就会有 4 个节点运行啦。
手动选择第一轮出块节点
即使有多个节点在本地运行,但如果没有选择出块节点,默认的只有 testcosd_0
这个特殊节点( 也就是initminer )出块,其他节点都处于同步模式。所以,我们需要手动选择出块节点。
一般情况下,节点需要通过 wallet
去注册节点,节点投票之后才能成为出块节点,这个过程同样繁琐。在本地环境下,简化了这个流程,在 wallet
下提供了同名 multinodetester
的方法来批量注册和选举出块节点。
如果严格按照上文的流程,那么现在本地应该有 wallet-cli
这个可执行文件。
执行wallet-cli
文件,进入交互界面。输入 multinodetester 4
来批量注册选举出块节点。 也可以通过非交互模式完成,执行:
wallet-cli multinodetester 4
经过以上操作步骤,contentos 主链就已经成功在本地运行起来了。
欢迎加入COS技术社群,领取bounty奖励!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。