npm 包 @owstack/bch-channel 使用教程

阅读时长 9 分钟读完

前言

近年来,比特币现金(Bitcoin Cash)成为了越来越多人的关注点,同时也出现了越来越多的相关技术和工具。其中,@owstack/bch-channel 是一款值得推荐的 npm 包,可以用于创建和管理比特币现金通道。本文将详细介绍如何使用 @owstack/bch-channel 这一工具包,并提供示例代码以及实用技巧。

第一步:安装

使用 npm 安装 @owstack/bch-channel:

第二步:创建通道

在开始创建通道之前,您需要准备好两个具有钱包功能的比特币现金地址,以便用于通道的开启和结算。

以下是创建通道的示例代码:

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

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

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

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

脚本中,fundingKeyPairpayoutKeyPair 分别表示开启通道的双方的地址和私钥。fundingAmount 是用于开启通道的总额。multisigredeemScript 是用于创建开放式交易的 Multisig 地址和赎回脚本。timeoutBlockHeight 是表示取消通道的区块高度。paymentChannelNonce 是用于生成 channel 的唯一标识符。

最后,将返回 value,此时 channel 就是我们创建的 channel。

第三步:签署交易

在创建了开放式交易中使用的 P2SH 地址和赎回脚本之后,需要将交易提交到比特币现金网络中。在提交交易之前,需要获取待签名的交易,然后使用比特币现金地址的私钥进行签名。

以下是一个签署交易的示例代码:

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

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

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

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

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

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

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

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

在此示例代码中,我们使用了 BCHChannel.SigHashPreimage() 方法来获取交易数据的哈希值,并将其用于签署交易。使用私钥进行签名后,我们将签名转换成了 signatureScript ,然后将其添加到交易输入的脚本中。

第四步:提交交易

在签署交易后,您可以向比特币现金网络提交交易。

以下是一个提交交易的示例代码:

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

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

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

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

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

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

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

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

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

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

在本示例代码中,我们使用 BCHChannel.TransactionBuilder.build() 方法构建交易,并将其编码为十六进制格式。然后,我们将编码的交易发送到比特币现金网络中进行广播。

第五步:结算通道

在本示例代码中,需要进行 channel 的结算。结算包括取回通道中的资金。您需要提供一个结算账户,用于接收通道中未使用资金的退款。

以下是一个 channel 结算的示例代码:

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

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

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

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

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

在此示例代码中,我们使用 createSettlementTx() 方法来创建结算交易。在结算交易上的多重签名输出中,我们只使用了一个结算账户,用于接收通道中未使用资金的退款。

结论

通过以上详细的使用教程和示例代码,您已经了解了如何使用 @owstack/bch-channel 这一工具包来创建和管理比特币现金通道。同时,在此过程中也掌握了签署交易、提交交易、结算通道等实用技巧。本文希望能够对您的前端类技术学习和应用提供一定的指导和帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056cc981e8991b448e6503

纠错
反馈