npm 包 @neo-one/node-consensus 使用教程

阅读时长 5 分钟读完

简介

@neo-one/node-consensus 是 NEO 开源的一个可定制的共识算法实现。它提供了多种共识算法的实现,并可以基于现有的共识算法实现定制化需求。

本文旨在提供该包的使用教程,包括如何进行安装、如何使用以及一些常用的 API 介绍。

安装

使@neo-one/node-consensus作为你的项目的一部分:

使用

首先,我们导入该包:

初始化

我们需要先进行初始化操作:

其中,privateKey是用作节点身份识别的私钥,如果你不提供,将会生成一个。

peers 是如果你是使用私有网络,需要提供一些网络节点用于进行共识算法。

开始共识

-- -------------------- ---- -------
----- ------------- - ------- -- -
    ----- ------ - ----- -------------------------
        ------
        ------- -----
    ---

    -- ---------------- -
        -- --- ----- --- ------- -- --- ---- -- --- -------
    -
--

在收到区块时执行 blockReceived 函数。

consensus.blockReceived 检查收到的区块是否有效的过程是艰难而繁琐的,因为它涉及验证区块的签名、交易的资格和 UTXO 状态、高度、挑战、以及很多其他事情。

如果收到的区块是有效的,blockReceived 函数将通过 result.relayed 表示该区块是否已转发给网络中的其他节点。

处理状态

consensus.changeView 方法用于更改当前视图编号。在共识算法中,视图编号是至关重要的,因为它决定了哪个节点为领导者。

当视图编号更改时,change_view 事件将触发,你可以通过注册监听此事件实现自己的业务逻辑。

关闭

在最后一步,当你需要关闭共识算法时,可以调用 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