简介
@neo-one/node-consensus
是 NEO 开源的一个可定制的共识算法实现。它提供了多种共识算法的实现,并可以基于现有的共识算法实现定制化需求。
本文旨在提供该包的使用教程,包括如何进行安装、如何使用以及一些常用的 API 介绍。
安装
使@neo-one/node-consensus
作为你的项目的一部分:
npm install --save @neo-one/node-consensus
使用
首先,我们导入该包:
const consensus = require('@neo-one/node-consensus');
初始化
我们需要先进行初始化操作:
const options = { type: 'default', // consensus algorithm type, default is dBFT privateKey: '', // private key to use as node identity privateNet: false, // private or public network mode peers: [], // list of network peers, if privateNet==true }; await consensus.init(options);
其中,privateKey
是用作节点身份识别的私钥,如果你不提供,将会生成一个。
peers
是如果你是使用私有网络,需要提供一些网络节点用于进行共识算法。
开始共识
-- -------------------- ---- ------- ----- ------------- - ------- -- - ----- ------ - ----- ------------------------- ------ ------- ----- --- -- ---------------- - -- --- ----- --- ------- -- --- ---- -- --- ------- - --
在收到区块时执行 blockReceived
函数。
consensus.blockReceived
检查收到的区块是否有效的过程是艰难而繁琐的,因为它涉及验证区块的签名、交易的资格和 UTXO 状态、高度、挑战、以及很多其他事情。
如果收到的区块是有效的,blockReceived
函数将通过 result.relayed
表示该区块是否已转发给网络中的其他节点。
处理状态
const changeView = (newViewNumber) => { consensus.changeView(newViewNumber); }; consensus.on('change_view', changeView);
consensus.changeView
方法用于更改当前视图编号。在共识算法中,视图编号是至关重要的,因为它决定了哪个节点为领导者。
当视图编号更改时,change_view
事件将触发,你可以通过注册监听此事件实现自己的业务逻辑。
关闭
await consensus.close();
在最后一步,当你需要关闭共识算法时,可以调用 consensus.close()
方法。
API 介绍
init(options: Object): void
该方法用于初始化共识算法,需传入一个 options
对象。
blockReceived(options: Object): Object
该方法用于处理收到的区块,返回 Object
表示处理结果。
changeView(newViewNumber: number): void
该方法用于更改当前视图编号。
close(): void
该方法用于关闭共识算法。
示例代码
-- -------------------- ---- ------- ----- --------- - ----------------------------------- ------ -- -- - ----- ------- - - ----- ---------- -- --------- --------- ----- ------- -- ---- ----------- --- -- ------- --- -- --- -- ---- -------- ----------- ------ -- ------- -- ------ ------- ---- ------ --- -- ---- -- ------- ------ -- ---------------- -- ----- ------------------------ ----- ------------- - ------- -- - ----- ------ - ----- ------------------------- ------ ------- ----- --- -- ---------------- - -- --- ----- --- ------- -- --- ---- -- --- ------- - -- --------------------------- --------------- -- - ----------------- ------- ---- --------------- --- -------------- -- - ------------------------ ------------------ -- ------ -- ---- ---- ----- ------------------ -----
总结
本文提供了 @neo-one/node-consensus
使用教程,介绍了该包的安装、初始化、开始共识、处理状态以及关闭共识算法等方面。希望能对使用该包的读者有帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/neo-one-node-consensus