7*24快訊如何創建P...

如何創建PoW 區塊鍊網絡l Chainlink 博客

有沒有想過如何創建自己的區塊鍊網絡?

雖然像以太坊和比特幣這樣的網絡是大型公共網絡,但可以使用以太坊客戶端為自己的目的建立一個新的私有區塊鍊網絡(在這種情況下,私有並不意味著受保護或安全,而是保留或隔離)。

在本教程中,您將學習如何使用以下方法開始創建自己的區塊鍊網絡 格思,以太坊的Go語言實現。

安裝Geth

有幾種安裝Geth 的方法:

  • 使用包管理器
  • 下載獨立的預構建捆綁包
  • 在docker 容器中運行它
  • 自己建造

您的選擇將取決於您的計算機、操作系統和先驗知識。查看 官方文檔 學習如何安裝Geth。

檢查是否安裝了Geth

您可以通過檢查其版本來檢查您是否安裝了Geth 客戶端。

在終端中,運行此命令。如果它運行並返回您正在使用的版本的詳細信息,則Geth 已成功安裝:

geth version

格思幫助

Geth 自帶一個有用的 help 命令,您可以像這樣運行:

geth --help

顯示運行geth --help 結果的屏幕截圖

運行Geth

默認情況下,Geth 運行一個主網節點,它將開始為以太坊主網下載整個數據庫。

如果您的目標是使用Geth 創建自己的區塊鏈,請不要運行 geth 不指定參數。

共識算法

以太坊主網使用工作量證明(PoW) ethash 以保護區塊鏈。可以使用相同的共識算法創建私有區塊鏈。

Geth 還支持“集團”權威證明(PoA) 共識算法作為私有網絡的替代方案,其中新區塊只能由授權的“簽名者”創建。授權簽名者的初始列表在創世塊中配置。集團共識協議在 EIP-225.

在本教程中,我們使用PoW 共識算法來演示礦工流程。

區塊鍊網絡文件夾

讓我們在文件夾中創建區塊鍊網絡 C:ETHLocalNode. 以下示例適用於Windows 操作系統。

在命令提示符下,運行以下命令:

cd C:ETH
mkdir LocalNode
cd LocalNode

使用Geth 創建本地節點

安裝Geth 客戶端后,下一步是創建本地節點。

網絡中所有參與的計算機都必須完成此步驟才能創建您的區塊鍊網絡。

創世紀文件

每個區塊鏈都從創世區塊開始。這是一個特殊的genesis.json 文件,專為創建您的區塊鍊網絡而定制。

在您選擇的文本編輯器中,創建一個名為genesis.json 的文件。

複製並粘貼此配置:

{
    "config": {
        "chainId": 9183,
        "homesteadBlock": 0,
        "eip150Block": 0,
        "eip155Block": 0,
        "eip158Block": 0,
        "byzantiumBlock": 0,
        "constantinopleBlock": 0,
        "petersburgBlock": 0
    },
    "difficulty": "0x1",
    "gasLimit": "8000000",
    "alloc": {}
}

了解參數

當您創建自己的區塊鍊網絡時,有一些與參數相關的註釋對您了解很重要。

鏈ID

在我們的區塊鍊網絡中 chainID 將與網絡ID 相同,這是一個隔離以太坊點對點網絡的整數。

只有當兩個對等點使用相同的創世塊並且 chainID. 為了創建私有區塊鍊網絡,您必須使用一個尚未使用的數字。您可以在以下位置找到由社區運行的以太坊網絡註冊表 https://chainid.network.

主網絡的ID 為“1”。如果您提供與主網絡或其他已知網絡不同的自定義網絡ID,您的節點將不會連接到其他節點,而是會加入私有區塊鍊網絡。

注意: chainId 對於該區塊鍊網絡中的所有參與者,創世文件中的內容必須相同。在我們的網絡中, chainId 是9183。

您可以在 文檔.

困難

注意如何 difficulty 設置得非常低,只有1。

氣體限制

這是初始塊氣體限制(gasLimit)。它會影響單個塊內可以發生多少EVM 計算。

初始化你的區塊鏈

轉到您在終端中創建genesis.json 文件的文件夾,然後 運行這個命令來初始化一個新的區塊鏈:

geth init --datadir data genesis.json

區塊鏈的數據庫將位於文件夾中 data

運行geth init 的結果截圖

運行Geth

下面的命令將啟動客戶端節點:

geth --datadir ".data" --networkid 9183 --identity "Node1"

您應該會看到與此類似的輸出:

顯示啟動客戶端節點的命令輸出的屏幕截圖

如果您收到錯誤消息“快照擴展註冊失敗”,則錯誤出現在另一端,現在您獨自在網絡中- 該對等方將被丟棄。您的節點運行良好,您無需擔心。

IPC 路徑

稍後將使用IPC 路徑連接到您的節點,因此請記下它。

IPC路徑截圖

在本例中,IPC 路徑為:

\.pipegeth.ipc

Geth JavaScript 控制台

Geth有一個 JavaScript 控制台 可以在Geth 節點中用於向其發送命令。以下是如何使用 geth attach 命令連接到已經在運行的Geth 本地節點並在其中運行一些命令。

使用IPC 附加Geth

打開第二個終端窗口。

執行節點時可以獲得IPC路徑(上一步收到了)。

運行此命令:

geth attach ipc:\.pipegeth.ipc

這是結果:

geth attach ipc:\.pipegeth.ipc 的輸出截圖

警告

此過程僅適用於在您的機器上或您有權訪問的網絡上運行的節點。 geth attach 使您可以完全控制遠程實例,因此不要指望其他人可以讓您訪問他們的機器。

創建帳戶

每個節點必須至少有一個帳戶,特別是如果要接收礦工獎勵。在附加的Geth 終端內,運行以下命令:

personal.newAccount("yourpassword")

“yourpassword”文本是用於加密您的私鑰的密碼。如果您忘記了它,您將無法再使用您的帳戶。

顯示personal.newAccount("你的密碼")

在Node1 上創建的帳戶是 0xe3badc04240a4fa99e758e030024560bde46ea11.

創建第二個節點

我們本教程的目標是創建一個網絡,在同一台計算機內運行兩個連接到不同端口的Geth 節點。

讓我們創建第二個節點Node2。

以下是我們將在Node2 中使用的信息:

  • 數據目錄:data2
  • 監聽端口:30305
  • ipc路徑:geth2
  • 身份:Node2

現在讓我們在文件夾中創建第二個節點 C:ETHLocalNode2.

請務必記住,此示例使用的是Windows 操作系統——如果您使用的是其他操作系統,則需要相應地進行調整。

在命令提示符下,運行:

cd C:ETH
mkdir LocalNode2
cd LocalNode2

最後的路徑是 C:ETHLocalNode2.

Geth初始化節點2

將genesis.json 文件從LocalNode1 複製到LocalNode2。

運行以下命令來初始化Node2:

geth init --datadir data2 genesis.json

區塊鏈的數據庫將位於文件夾中 data2.

geth attach 為Node2 使用IPC

我們已經定義Node2 將具有 geth2 工業PC。

IPC路徑也可以在節點執行時獲取。就像對Node1 所做的那樣,在IPC 路徑中檢查它。

打開第二個終端窗口並運行以下命令:

geth attach ipc:\.pipegeth2.ipc

為Node2 創建一個帳戶

Node2 也必須至少有一個帳戶。在附加的Geth 終端內,運行以下命令:

personal.newAccount("yourpassword")

“yourpassword”文本是用於加密您的私鑰的密碼,如果您忘記了,您將無法再使用您的帳戶。

personal.newAccount("你的密碼")

Node2上的賬戶是 0x4d11a54211f8a5a83ea2275aa0065f3eef4f623c.

為了創建您的區塊鍊網絡,您需要了解 enode 您的節點之一,以便您的節點可以相互通信。

來自Node2 的Enode

在終端運行 geth attach,連接到Node2 並運行此命令以發現 enode

admin.nodeInfo.enode

這是 enode 對於節點2:

"enode://b9b9200ee68b324f0b4486cd9719f876763a3b9c8c9fe9cfe20a13221055472b664af3f31bdf1c85f8895c9e54b47680d818d4a3ff66a6ec735f90afa5d7756f@89.20.185.250:30305"

我們的目標是在同一台計算機上設置運行Geth 節點的區塊鍊網絡,所以讓我們將IP 更新為我們的本地IP:

127.0.0.1

更新IP後, enode 對於node2 應該是:

"enode://b9b9200ee68b324f0b4486cd9719f876763a3b9c8c9fe9cfe20a13221055472b664af3f31bdf1c85f8895c9e54b47680d818d4a3ff66a6ec735f90afa5d7756f@127.0.0.1:30305"

使用不同的計算機

雖然在本教程中,我們通過不同的端口在同一台計算機內創建一個運行兩個Geth 節點的網絡,但如果您想使用不同的計算機創建區塊鍊網絡,您需要知道每台計算機的IP。

設置對等網絡取決於您的要求。如果您通過Internet 連接節點,則需要確保您的bootnode 和所有其他節點都分配了公共IP 地址,並且TCP 和UDP 流量都可以通過防火牆。

連接節點

讓我們運行我們的區塊鍊網絡!

轉到終端運行 geth attach 在Node1 中並添加 enode 對於節點2。

更新 enode2 在命令中 admin.addPeer.

admin.addPeer("enode")

像這樣:

admin.addPeer("enode://b9b9200ee68b324f0b4486cd9719f876763a3b9c8c9fe9cfe20a13221055472b664af3f31bdf1c85f8895c9e54b47680d818d4a3ff66a6ec735f90afa5d7756f@127.0.0.1:30305")

這是結果:

admin.addPeer 的輸出截圖

完畢!現在一個節點知道另一個節點存在。

驗證網絡

net.peerCount

此命令告訴您有多少節點連接到您的節點。

在任何連接Geth 的終端中,您可以運行:

net.peerCount

結果應該是 1,因為我們有一個節點連接到另一個節點,如下所示:

節點1

節點1

節點2

節點2

admin.peers

此命令顯示連接到您的其他節點的詳細信息。在附加Geth 的終端中運行它:

admin.peers

可以看到Node2連接到Node1:

顯示Node2 連接到Node1 的屏幕截圖

並且Node1 也連接到Node2:

顯示Node1 連接到Node2 的屏幕截圖

賬戶

讓我們了解更多與帳戶相關的命令。

個人的

此命令列出節點中所有帳戶的詳細信息。

personal

這是Node1 的結果:

個人運行結果截圖

平衡

此命令檢索帳戶的餘額:

eth.getBalance(eth.accounts[0])

如果我們運行這個命令,我們會得到一個很大的結果,因為結果是以wei 為單位的。讓我們轉換為以太:

web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")

web3.fromWei(eth.getBalance(eth.accounts)運行結果截圖[0]),醚)

特定賬戶餘額

讓我們使用這個地址檢查一個賬戶的餘額: 0x942b17d335321128225d23bd7e8451fe78ce9547.

web3.fromWei(eth.getBalance("0x942b17d335321128225d23bd7e8451fe78ce9547"),"ether")

結果:

web3.fromWei(eth.getBalance("0x942b17d335321128225d23bd7e8451fe78ce9547"),"醚")

礦業

如果我們想在我們的區塊鏈上創建新塊,就需要挖掘它們,因為我們使用的是PoW 共識算法。

我們已經在網絡中配置了兩個節點,所以讓我們挖一些以太幣吧!請記住,這些代幣一文不值——它們只存在於我們的私有網絡中。

開始挖礦

在兩個節點的Geth 附加終端中,運行:

miner.start(1)

參數 1 是計算機中使用的線程數。在我們的例子中,我們沒有啟用並行挖掘線程。默認值為處理器內核總數。

您可以了解有關採礦的更多信息 這裡.

挖礦後餘額

在每個Geth 連接的節點中,幾分鐘後檢查餘額。

web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")

看看下圖:Node2 比Node1 擁有更多的以太幣。

顯示Node2 比Node1 擁有更多以太的屏幕截圖

您在兩個節點上使用相同的計算能力進行挖礦,所以當第二個開始時,第一個將不再能夠通過挖礦獲得獎勵。

使用不同的計算機安裝網絡以避免此問題。

蓋斯出口

要退出任何geth 控制台,請運行:

exit

下一步

現在您已經創建了自己的PoW 區塊鍊網絡,您可以使用許多可能性:您可以將以太幣從一個節點轉移到另一個節點,發布智能合約,或與其他已發布的智能合約交互——儘管您的網絡的效用將是考慮到它是私人的,因此有些有限。

通過訪問了解有關Chainlink 的更多信息 鏈環 或閱讀文檔 docs.chain.link. 要討論集成, 聯繫專家。

Source Link

最受歡迎

繼續閱讀

長期持有者持有的比特幣(BTC)供應量達到最高水平

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打...

現在讀

$COOKIE, the Cookie3 Mark...

Tallinn, Estonia, March 26th, 2024...

長期持有者持有的比特幣(BTC)供應量達到最高水平...

根據Glassnode 的估計,比特幣的長期持有者(LTH)目前擁有1452 萬枚BTC,創歷史新高,只剩下25% 留給短期持有者和投機者。 儘管BTC 的價格在過去一個月中保持相對平穩,範圍在約29,000 美元至31,000 美元之間,但人們還是開始瘋狂囤積。 ...

Caldera 宣布與Espresso Syste...

Caldera 開發人員可以利用Espresso Sequence...

抓住Web3 遊戲的先發優勢:成功策略

Web3和區塊鏈技術的出現徹底改變了遊戲行業,為開發者和企業家提供了前所未有的機遇。 Web3 遊戲的去中心化性質為創新遊戲貨幣化模式、玩家所有權和社區參與打開了大門。對於那些尋求利用Web3 遊戲巨大潛力的人來說,確保先發優勢至關重要。 了解Web3 遊戲生態系統在深入研究Web3 遊戲之前,有...

Taapsee Pannu 推出NFT 平台,介紹...

企業家貢獻者表達的意見是他們自己的。 您正在閱讀《企業家印度》,這是企業家媒體的國際特許經營刊物。 女演員Taapsee Pannu 最近推出了“taapseeclub.com”,這是她自己的非同質代...

比特幣(BTC) 地址休眠超過11 年,轉移310...

經過11 年多的閒置之後,一個包含3100 萬美元BTC 的休眠比特幣地址最近突然活躍起來。 2023年7月22日,地址 轉入 將其全部餘額轉移到新地址。 早期BTC 地址復活 比特幣自2009 年以來就已經存在,因此存在多年來不活躍的休眠地址,其中包含大量BTC。這種加密貨幣的一些早期採用者能夠...

加密貨幣死了嗎?當今加密貨幣的現狀

您之前可能聽說過加密貨幣正在消亡(或比特幣已消亡)。在這篇文章中,我們將研究加密貨幣的狀態,並嘗試回答這個問題:加密貨幣現在已經死了嗎? 在我們開始之前,我們想澄清一下,本文指的是最廣泛意義上的“加密貨幣行業”; 在裡面 網絡3 感覺。該定義包括加密資產市場; 但它還包括其他非財務用例。 隨著近來加...

Chancer 可能成為體育和社交博彩領域的下一個...

加密貨幣 隨著企業財報季節的繼續,本週股市表現好壞參半。在Ne...

以太坊(ETH) 創下兩個月來CEX 流入最高紀錄...

過去一周,以太坊(ETH)流入中心化交易所(CEX)的資金量創下了過去兩個月來的最高水平。這些重大的資產變動表明ETH 的價格可能會下跌。 CoinGecko 數據顯示,第二大加密貨幣的價格一直在小幅下跌,過去一周價值下跌了2.5%。截至撰寫本文時,以太幣易手價格為1,892.65 美元,過去24...

新的DeFi 法案有“不可行的義務”

加密貨幣創新委員會表示,新的反洗錢法案沒有為DeFi 中的非法金融...

幣安大幅削減成本,瑞波幣為美國銀行和加密貨幣風險投...

美國證券交易委員會(SEC)對加密貨幣公司的打擊似乎嚴重影響了幣安的業務。據報導,在過去幾週內,該加密貨幣交易所解雇了1,000 多名員工,並削減了一些福利。 幣安表示,“當前的市場環境和監管環境”導致利潤下降,這表明可能正在進行更多削減。一位發言人告訴Cointelegraph,該公司將考慮縮減“...

Automata 雙週更新:第48 期| 通過自動...

迎接新的季度意味著設定我們的意圖並為團隊規劃下一步的行動。幕後醞釀的一切——合作、產品功能和營銷發布——很難抑制我們的興奮。我們一開始就在1RPC(2 個備受期待的第2 層主網)上添加了對Linea 和Base 的支持。科技載體更新頁腳以顯示界面版本平滑的用戶體驗 USDC CCTP 支持 關於仲裁...