區塊鏈全節點的JavaScript實現:Bcoin 入門 - pradyuman

banq發表於2021-07-22

在本文中,我們將介紹“如何使用 Bcoin 安裝和執行比特幣的完整節點”。
我們將建立一個錢包,傳送一些硬幣並在 regtest 模式下挖掘一些塊。那麼,讓我們開始吧。
比特幣區塊鏈被設計為一個去中心化的 P2P 網路,沒有人擁有或控制比特幣,每個人都可以參與。全節點是完全驗證交易和區塊的程式。透過執行比特幣全節點,您正在支援比特幣網路變得更加去中心化並促進比特幣的增長。
“Bcoin”是用 Javascript 構建的比特幣協議的另一種實現。完整節點可用於完整的區塊鏈驗證,並瞭解所有已知的共識規則。與其他類似的競爭實現相比,它更易於使用、學習更快且文件更齊全。
Bcoin 出於安全目的,只透過 Git 安裝,因為透過 npm 安裝時存在安全問題。

$ mkdir Bcoin && cd Bcoin
$ git clone https://github.com/bcoin-org/bcoin
$ cd bcoin


使用 npm 全域性構建和安裝:

$ npm rebuild
$ npm install --global



在 Nodejs 專案中,通常使用npm install,它將獲取依賴樹中提到的所有依賴項。我們擔心 npm 作為單一的中心故障點以及如何驗證下載的原始碼。因此,現在不需要npm install。

在本地執行測試:
從Bcoinrepo 目錄中,執行

$ npm run test

現在,我們已準備好執行我們的bcoin完整節點
 

啟動你的第一個 bcoin 節點
如果bcoin是全域性安裝,bcoin則應在您的 PATH 中。如果沒有,bcoin引導指令碼駐留在/path/to/bcoin/bin/bcoin. 我們將在regtest模式下執行完整節點。
$ bcoin --network=regtest

這將在本地測試模式下啟動一個bcoin全節點,沒有對等點和 0 難度挖掘。在bcoin整個節點將使用預設選項透過讀取啟動。在配置嚮導你可以看到其他設定可用。
現在在第二個終端中,使用該bcoin-cli工具獲取節點資訊。

$ bcoin-cli --network=regtest info
  

玩錢包
預設情況下,該Bcoin軟體執行一個錢包,該錢包在第一次啟動時被初始化。錢包被呼叫,primary並且有一個名為 的帳戶default。
Bcoin錢包結構使用BIP44,錢包Bcoin使用BIP39種子短語。
獲取錢包的種子短語:

$ bwallet-cli master --id=primary


此命令將返回JSON有關您的錢包主金鑰的包含資訊:

{
  "encrypted": false,
  "key": {
    "xprivkey": "tprv8ZgxMBicQKsPfNKy1Wf9EV1cTmz1Cmm6MVrvYdgcR6Hf8sEDUAzhnnoiVbw5jejp4EZWXynQEJhB62oSfANpHRAJqfiZarh1gVMowcJZ2Mn"
  },
  "mnemonic": {
    "bits": 128,
    "language": "english",
    "entropy": "e35833c318d677945ec21efff032bb64",
    "phrase": "today screen valid coyote guess sketch kitchen duck zoo light put siege"
  }
}


獲取您錢包的當前接收地址
$ bwallet-cli --id=primary --account=default address

它將返回JSON有關您當前接收地址的響應。

{
  "name": "default",
  "account": 0,
  "branch": 0,
  "index": 3,
  "witness": false,
  "nested": false,
  "publicKey": "03af169e5a186bbd7b380cb4553c72af243e18f243785b1597f192bbedd4a94fc3",
  "script": null,
  "program": null,
  "type": "pubkeyhash",
  "address": "n2eoT9D8txT5ZymDvCFPA8PHs2CmTV6oJT"
}

現在你有了一個接收地址,所以我們可以在當前(regtest)網路中挖掘一些虛擬塊來為我們的錢包提供資金。
$ bcoin-cli rpc generatetoaddress 10 n2eoT9D8txT5ZymDvCFPA8PHs2CmTV6oJT
此命令將在 regtest 網路中挖掘 10 個區塊,地址為您的 coinbase 地址。現在我們可以檢查我們的錢包餘額。
檢查您的錢包餘額:
$ bwallet-cli --id=primary balance --account=default
它將返回JSON包含您的帳戶餘額的響應:

{
  "account": 0,
  "tx": 307,
  "coin": 287,
  "unconfirmed": 1122500000000,
  "confirmed": 1122500000000
}


現在讓我們建立第二個錢包,一個使用Segregated Witness. 這個錢包型別的簡要說明是 在這裡.
 

建立隔離見證錢包
你可以隨意命名這個錢包(這裡我們將它命名為 test1

$ bwallet-cli mkwallet test1 --witness=true

它將返回包含JSON您的新錢包詳細資訊的響應,

{
  "network": "regtest",
  "wid": 11,
  "id": "test1",
  "watchOnly": false,
  "accountDepth": 1,
  "token": "489d43e398dad34e69653e5edb5cb39b6d55be3364753c07d084d4b3d0292af7",
  "tokenDepth": 0,
  "master": {
    "encrypted": true,
    "until": 1571763677,
    "iv": "4e24f2a5908e20da0b8ba3e88dcda272",
    "algorithm": "pbkdf2",
    "n": 50000,
    "r": 0,
    "p": 0
  },
  "balance": {
    "tx": 0,
    "coin": 0,
    "unconfirmed": 0,
    "confirmed": 0
  }
}


獲取這個新錢包的地址:
$ bwallet-cli --id=test1 --account=default address

現在,我們有了新的錢包地址,讓我們從第一個錢包向第二個錢包傳送一些硬幣。
 

匯款

$ bwallet-cli send --id=primary --value=1000 --address=<your segwit wallet address>

現在,檢查我們的segwit wallet.

$ bwallet-cli --id=test1 balance

它顯示了一個JSON響應,

{
  "account": -1,
  "tx": 1,
  "coin": 1,
  "unconfirmed": 100000000000,
  "confirmed": 0
}

因此,我們建立了兩個錢包,並將一些 regtest 硬幣從一個錢包傳送到另一個錢包,我們還挖掘了一些 regtest 區塊。



 

相關文章