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