Skip to content

共识算法插件化设计文档

jzhe edited this page Mar 30, 2020 · 1 revision

1. 项目结构

该项目为BitXHub提供共识算法的插件化,具体项目结构如下:


./
├── Makefile //编译文件
├── README.md
├── build
│   └── consensus.so //编译后的共识算法二进制插件
├── go.mod
├── go.sum
├── order.toml //共识配置文件
└── consensus //共识算法项目代码
    ├── config.go
    ├── node.go
    └── stack.go

其中注意在go.mod中需要引用BitXHub项目源码,需要让该插件项目与BitXHub在同一目录下(建议在$GOPATH路径下)。

replace github.com/meshplus/bitxhub => ../bitxhub/

2. 编译Plugin

我们采用GO语言提供的插件模式,实现BitXHub对于Plugin的动态加载。

编写Makefile编译文件:

SHELL := /bin/bash
CURRENT_PATH = $(shell pwd)
GO  = GO111MODULE=on go
plugin:
   @mkdir -p build
   $(GO) build --buildmode=plugin -o build/consensus.so consensus/*.go

运行下面的命令,能够得到 consensus.so文件。

$ make plugin

修改节点的bitxhub.toml

[order]
  plugin = "plugins/consensus.so"

将你编写的动态链接文件和order.toml文件,分别放到节点的plugins文件夹和配置文件下。

./
├── api
├── bitxhub.toml
├── certs 
│   ├── agency.cert
│   ├── ca.cert
│   ├── node.cert
│   └── node.priv
├── key.json 
├── logs
├── network.toml
├── order.toml //共识算法配置文件
├── plugins
│   ├── consensus.so //共识算法插件
├── start.sh
└── storage

结合我们提供的BitXHub中继链,就能接入到跨链平台来。