如何建立一個(gè)比特幣測(cè)試鏈
首先,我們將建立一個(gè)回歸比特幣測(cè)試鏈作為一個(gè)操場(chǎng),我們可以觀察事物的運(yùn)作方式以及如何與區(qū)塊鏈進(jìn)行交互。因?yàn)檫@個(gè)鏈沒(méi)有任何價(jià)值,我們可以隨時(shí)生成新的塊,所以它是學(xué)習(xí)的理想選擇,而不會(huì)有實(shí)際損失金錢的風(fēng)險(xiǎn)。稍后,我將展示coinbase交易的樣子以及它的優(yōu)點(diǎn)。最后,我們將使用比特幣核心附帶的命令行工具Bitcoin -tx創(chuàng)建我們自己的事務(wù)。比特幣核心是比特幣協(xié)議的參考實(shí)現(xiàn)。圖形版本稱為bitcoin-qt,它附帶一個(gè)命令行工具,可以創(chuàng)建名為bitcoin-tx的事務(wù)。
先決條件:你要擁有bitcoin-qt (v0.17.1或更高版本)。
那我們開始吧?
Mainnet, testnet, regtest——它們是啥意思?
比特幣和大多數(shù)其他加密貨幣都有三種操作模式。
Mainnet(主網(wǎng))是作為官方版本使用的網(wǎng)絡(luò),它具有一定的價(jià)值。所有真實(shí)的交易都發(fā)生在這個(gè)網(wǎng)絡(luò)上,人們通過(guò)mainnet獲得報(bào)酬。
Testnet(測(cè)試網(wǎng)),一個(gè)與主網(wǎng)具有幾乎相同規(guī)則的網(wǎng)絡(luò)(一些操作碼在mainnet上是禁止的,而在Testnet上取消了這個(gè)限制)。它有對(duì)等點(diǎn)發(fā)現(xiàn)功能,即它可以在testnet網(wǎng)絡(luò)上找到類似于mainnet的對(duì)等點(diǎn),并且運(yùn)行它的是一個(gè)對(duì)等點(diǎn)(p2p)網(wǎng)絡(luò)。
Regtest是一個(gè)私有的區(qū)塊鏈,它具有與testnet相同的規(guī)則和地址格式,但是沒(méi)有要連接到的全局p2p網(wǎng)絡(luò)。
由于mainnet幣有價(jià)值,而testnet/regtest幣沒(méi)有價(jià)值,所以它們由不同的前綴來(lái)區(qū)分。Mainnet地址以“1”、“3”或“bc1”開頭,testnet/regtest地址以“m”、“n”、“2”或“tb1”開頭。記住,testnet/regtest地址沒(méi)有值,所以了解它們之間的區(qū)別很重要!錢包可以檢測(cè)出其中的差別,但也有一些情況下,人們也會(huì)被人用testnet的幣忽悠!
我們將使用regtest,因?yàn)槲覀兛梢暂p松地創(chuàng)建自己的區(qū)塊鏈,并且可以使用一個(gè)方便的命令在不挖掘硬件的情況下挖掘塊,我將在稍后討論這個(gè)命令。
圖形化的比特幣核心客戶端Bitcoin-qt也能在視覺上區(qū)分不同的網(wǎng)絡(luò),以幫助您識(shí)別其運(yùn)行的模式。當(dāng)您第一次安裝Bitcoin -qt時(shí),它將運(yùn)行在使用熟悉的橙色比特幣符號(hào)的mainnet上。Testnet使用綠色,regtest使用藍(lán)色。
圖1所示。運(yùn)行mainnet、testnet和regtest時(shí)使用Bitcoin-qt。
好的,但是如何切換到regtest呢?
不用擔(dān)心,切換到regtest非常容易。你只需要編輯比特幣的配置文件。幸運(yùn)的是,可以通過(guò)GUI選項(xiàng)輕松地訪問(wèn)它。
bitcoin-qt開始。當(dāng)您第一次啟動(dòng)它時(shí),它將如圖2所示。點(diǎn)擊設(shè)置-》選項(xiàng)-》打開配置文件。
圖2所示。訪問(wèn)bitcoin-qt設(shè)置。
圖3所示。打開配置文件。
將以下行添加到配置文件中,然后保存:
regtest= 1
關(guān)閉bitcoin-qt并重新打開它。 您的加載屏幕應(yīng)該如圖3所示。
恭喜你,你現(xiàn)在已經(jīng)準(zhǔn)備好研究比特幣內(nèi)部了!
熟悉控制臺(tái)
Bitcoin-qt使得與比特幣守護(hù)進(jìn)程交互變得非常容易??刂婆_(tái)在GUI中很容易訪問(wèn)。您可以在幫助-》調(diào)試窗口-》控制臺(tái)中找到它。
圖4所示,調(diào)試窗口中的信息頁(yè)。
如您所見,將出現(xiàn)一個(gè)新窗口,其中包含關(guān)于bitcoin-qt及其運(yùn)行的網(wǎng)絡(luò)模式的各種信息。注意,網(wǎng)絡(luò)名稱是regtest。確保你的也是。
讓我們單擊console選項(xiàng)卡,如圖5所示
圖5,調(diào)試窗口信息頁(yè)面。
有幾個(gè)命令可以用來(lái)與比特幣守護(hù)進(jìn)程交互。要查看它們,請(qǐng)?jiān)诖翱诘撞挎I入help并按Enter。您可以向上滾動(dòng)查看命令的完整列表。如果需要對(duì)特定命令的幫助,請(qǐng)鍵入help 《command name》。
圖6所示。help命令的部分輸出。
如果仔細(xì)觀察,第三個(gè)命令稱為getblockchaininfo。看看它能做什么?命令help可以幫到你很多。)
輸入help getblockchain信息。正如help系統(tǒng)所述,這個(gè)命令將提供有關(guān)區(qū)塊鏈的信息。
圖7所示。getblockchaininfo的help頁(yè)面。
在console (RPC)窗口中輸入blockchaininfo命令并檢查輸出。輸出是一種奇怪的(至少對(duì)非程序員來(lái)說(shuō))格式,稱為JSON (JavaScript對(duì)象表示法)。它是一種計(jì)算機(jī)可以很容易理解的格式,而且只需了解一下相關(guān)知識(shí),我們也可以理解。help getblockchaininfo命令描述了每個(gè)鍵的含義。
圖8所示。getblockchaininfo的JSON輸出。
生成我們自己的塊
Regtest現(xiàn)在已經(jīng)設(shè)置好,但是還沒(méi)有塊。什么樣的區(qū)塊鏈沒(méi)有塊?
Generate 命令救援!
正如前面提到的,regtest環(huán)境允許我們創(chuàng)建任意數(shù)量的塊,而不需要使用任何挖掘asic或?qū)S糜布?。這使得測(cè)試在比特幣運(yùn)行過(guò)程中可能發(fā)生的不同情況這一點(diǎn),變得很容易,而且我們還可以隨時(shí)創(chuàng)建塊來(lái)節(jié)省時(shí)間。
讓我們生成一些塊,以便稍后測(cè)試BTC。我們必須考慮挖掘規(guī)則,即一個(gè)人只能花費(fèi)一個(gè)塊獎(jiǎng)勵(lì),前提是他之前已經(jīng)挖掘了100個(gè)塊。這意味著我們必須生成101個(gè)塊來(lái)使50 regtest BTC可使用。打開控制臺(tái),輸入: generate 101
圖9所示。generate命令輸出。
你會(huì)看到很多彈出窗口寫著“傳入的交易”。等幾秒鐘,直到它們消失。奇怪的數(shù)字和字母是生成的塊的散列。
請(qǐng)注意圖11中“balance”標(biāo)簽下面的數(shù)字。我們現(xiàn)在有50個(gè)rBTC可用,記住,我們生成了101個(gè)塊,所以第1塊已經(jīng)成熟,獎(jiǎng)勵(lì)可以使用。
對(duì)如何使用獎(jiǎng)勵(lì)、coinbase交易是什么以及比特幣交易如何工作感興趣?