• APP內打開
    風險提示:防范以虛擬貨幣/區塊鏈名義進行的非法集資風險。 ——銀保監會等五部門

    Nervos CKB挖礦教程文字版 MacOS+JS SDK(文末有視頻教程鏈接)

    白話區塊鏈 2019-05-24 15:42:14
    微信分享

    掃碼分享

    Nervos CKB 是 Nervos 的第一層,是一條無需許可的公鏈,CKB 的測試網剛剛5月18號上線了。所以本期的快樂加密學院,咱們一起看看如何運行一個 CKB 的節點,然后進行挖礦獲得獎勵。操作會基于 MacOS 和官方提供的 Javascript 的 SDK 來進行,然后通過 CKB 的區塊鏈瀏覽器來查看最終結果。

    作者:Happypeter / 來源:Nervos Talk

    基本原理介紹

    動手之前,先對各個組件和概念進行一下介紹。

    挖 CKB 之前,我得先有一個自己的 CKB 節點,那么什么叫一個節點,也就是 node 呢?答案其實很簡單

    節點就是一個安裝了 CKB 客戶端的計算機

    稍后我會給大家演示怎么下載客戶端并進行安裝的。

    另外,什么是 CKB 的測試網呢?CKB 是一個區塊鏈項目,所以基本結構是點對點的,這就意味著整個網絡上沒有服務器,所有的節點就組成了整個網絡,各個節點間通過平等通信來達成對數據的共識,這樣保證了整條區塊鏈是可以被信賴的。測試網是區別于主網來說的,主要是用于測試目的。

    CKB測試網挖礦

    SDK 是一些方便我們跟 CKB 網絡進行交互的代碼。本期咱們會使用 Javascript 版本的 SDK 。所以最好你對 Nodejs 和 Javascript 要有基本的了解。如果你平常喜歡用其他語言開發的話,官方的文檔網站上 https://docs.nervos.org 有其他語言的 SDK 的介紹。

    整個的過程是這樣的。首先要搭建一個節點,然后使用 SDK 來生成自己的錢包,修改節點配置使用自己的錢包,這樣挖礦獎勵才能到自己手里。然后就開始挖礦過程,也就是用我的筆記本的算力去運算一個滿足網絡要求的哈希值,運算成功之后就相當于找到了當前 block 的 Seal 也就是封印。有了封印就成功制作了這個區塊,也就可以把這個區塊廣播到全網獲得挖礦獎勵了。最后,可以到測試網的區塊瀏覽器上去查看一下最終的結果,例如看看是不是地址上真正有了幣。

    Nervos CKB挖礦流程

    最后要提醒的是,測試網每兩周就會重置一次,到時候所有的幣也就都清空了。

    運行一個節點

    下面來搭建一下節點。

    首先,從官方的 Github 倉庫,下載二進制包

    wget https://github.com/nervosnetwork/ckb/releases/download/v0.12.0/ckb_v0.12.0_darwin_amd64.zip
    

    解壓縮

    unzip ckb_v0.12.0_darwin_amd64.zipcd ckb_v0.12.0_darwin_amd64

    接下來把 ckb 變成一個系統命令。我們這里做的就是一個常見的 Unix 操作,創建了一個符號鏈接,不過如果你不理解什么是符號鏈接也沒關系的,不影響后續的操作。

    sudo ln -snf "$(pwd)/ckb" /usr/local/bin/ckb

    到底這個命令是不是生效了呢?

    ckb --version

    可以看到輸出的版本號即可。

    這樣 CKB 客戶端安裝就成功了。接下來可以運行命令來生成測試網的配置文件。

    ckb init -C ckb-testnet --spec testnet

    創建一個文件夾叫 ckb-testnet ,里面保存了配置文件。

    進入這個文件夾,啟動 CKB 。

    cd ckb-testnet
    ckb run

    終端輸出中可以看到正在從其他節點下載整條區塊鏈,過程的確是需要一些時間的。區塊鏈瀏覽器的首頁 https://explorer.nervos.org/ 2 上可以看到最新的塊高度,這樣我們可以大概感覺出下載整條鏈需要多久。

    下載完畢之后,我們的節點就運行起來了,可以慶祝一下了。

    使用自己的錢包

    現在需要來生成自己的錢包,替換掉節點配置中默認的錢包,這樣挖礦獎勵才能到我們自己手里。

    首先要創建一個 Nodejs 的項目。注意,這個項目不是節點的一部分,我們只是用它來生成一下錢包。

    $ node --version
    v10.10.0

    代碼里面會用到 async/await 這樣的比較新的 Javascript 的功能,所以要確保 Nodejs 版本不能太老。我本地是10.10.0,你那邊保證不低于這個版本就好了。

    mkdir gen-walletcd gen-wallet
    npm init -y

    創建文件夾來存放這個項目,運行 node init 來創建 package.json 文件。

    yarn add @nervosnetwork/ckb-sdk-core

    SDK 可以作為一個 npm 包來安裝。

    下面創建一下 index.js 文件,里面的代碼是從 SDK 倉庫 https://github.com/nervosnetwork/ckb-sdk-js 的 demo 里面摘出來的。

    const EC = require('elliptic').ecconst Core = require('@nervosnetwork/ckb-sdk-core').defaultconst Address = require('@nervosnetwork/ckb-sdk-address').defaultconst ec = new EC('secp256k1')const privateKey = ec.genKeyPair()const address = new Address(privateKey, { prefix: 'ckt' })console.log('privateKey: ', '0x' + address.getPrivateKey())console.log('address: ', address.value)const nodeUrl = process.env.NODE_URL || 'http://localhost:8114'const core = new Core(nodeUrl)const bootstrap = async () => {  const systemCellInfo = await core.loadSystemCell()  const SYSTEM_ENCRYPTION_CODE_HASH = core.rpc.paramsFormatter.toHash(
        systemCellInfo.codeHash
      )  const myAddressObj = core.generateAddress(privateKey)  const blake160edPublicKey = core.utils.blake160(myAddressObj.publicKey, 'hex')  const script = {    codeHash: SYSTEM_ENCRYPTION_CODE_HASH,    args: ['0x' + blake160edPublicKey]
      }  console.log('\nscript: ', script)
    }
    
    bootstrap()

    要生成新的錢包,運行

    $ node index.jsprivateKey:  0x25395da41ffb99c007ef1e0e2621381577faeeeec486d0943894bba0edacbaebaddress:  ckt1q9gry5zgckljj20cxh4k33ufu3q2kxxx2jv0cmk4ykgkhcscript:  { codeHash:
       '0x9e3b3557f11b2b3532ce352bfe8017e9fd11d154c4c7f9b7aaaa1e621b539a08',
      args: [ '0xc5bf2929f835eb68c789e440ab18c65498fc6ed5' ] }

    輸出中的前兩項就是錢包了,錢包就是一個公鑰加一個私鑰。下面的 script 這一項是錢包的另外一種形式,當前其中是不包含私鑰的。可以用這些內容區替換 ckb.toml 中的對應內容。

    Ctrl-C 停下 ckb 進程,然后重啟一下,就可以加載新的配置了。

    要進行挖礦,還要新開一個終端窗口,運行

    ckb miner

    這樣就開始了挖礦。注意這里的輸出,一般幾分鐘之后,就可以看到彈出了這樣的信息

    2019-05-22 22:04:56.210 +08:00 main INFO miner  found seal: Seal { nonce: 12598543649063525489, proof: 0xf9030000ab350000ad3a0000ab4000007f4600001e4b00005d5200003e5b0000625d00003d6200001e6f000069780000 }

    這就意味著找到 Seal 了,也就是找到了一個區塊的封印了,這就意味著成功挖出了一個區塊。

    可以到區塊鏈瀏覽器 https://explorer.nervos.org 2 中,搜索一下我的錢包地址,這樣就可以看到是否收到獎勵了。

    結論

    好,這就是本期的主體內容。咱們一起搭建了一個 CKB 的節點,然后挖出了區塊。希望你能喜歡這個視頻,我是 Peter ,咱們下次再見。

    鏈接:

    • 原文鏈接:https://happycryptoschool.org/007-ckb-mine/( 內含視頻教程)

    下載白話區塊鏈APP

    區塊鏈世界入口第一站,人人都能看懂的區塊鏈;24 小時熱點實時追蹤。

    毛片免费看