區塊鏈(八) - 以太坊私有鏈多個節點連結

劇情回顧: 區塊鏈(一) - 建立以太坊私有鏈 區塊鏈(二) - 創建虛擬錢包 區塊鏈(三) - MetaMask 加密貨幣錢包 區塊鏈(四) - 智能合約的開發工具 區塊鏈(五) - 在私有鏈上部署智能合約 Part 1 區塊鏈(六) - 在私有鏈上部署智能合約 Part 2 區塊鏈(七) - Windows10 建立以太坊私有鏈 獲取節點資訊 已經在 MacOS 和 Windows10 上架設好私有鏈,接下來要做的事情就是使兩個節點連接到同一個鏈上,這樣就可以模擬不同的使用者在公有鏈上交易的環境與過程。 取得本機端節點資訊的指令如下: $ admin.nodeInfo.enode Fig. 1. nodeInfo. 在兩個冒號 :: 後面的連接是該節點電腦的 IP,30303 是端口號。 要讓兩個節點連接在一起,需要使用以下指令: $ admin.addPeer("enode://...") 在連接之前,先確認一下節點情況。如果還沒有連接,會顯示 -> [ ]。 $ admin.peers Fig. 2. peers. 兩台測試機連線 以下是兩台測試機連結的情況,當兩台節點連接後,請注意將 @ 後面的 IP 更換為本機連接網絡的 IP。 MacOS 節點連接資訊: enode://5db35aae54803ead9be476db5b7b20633c13ba129fd040c9520731f85f845bf52fbb24da46b3c48eb1a5672b36c3713fc880ebad0c0d2b58f478dbbf55dcd3cc@127.0.0.1:30303?discport=0 Windows10 節點連接資訊: enode://f06ecc138441e7a61076c9bc5f1d149b5f4907a96b3f630b64574facfd30342b5a3d6f660c9450dce39108bbb06210847b809482e67c7a9c639890c61583c9db@127.0.0.1:30303?discport=0 連接成功後,你可以使用以下方法測試連接情況:...

December 8, 2022 · 1 min · 76 words · Xubo

區塊鏈(七) - Windows10 建立以太坊私有鏈

劇情回顧: 區塊鏈(一) - 建立以太坊私有鏈 區塊鏈(二) - 創建虛擬錢包 區塊鏈(三) - MetaMask 加密貨幣錢包 區塊鏈(四) - 智能合約的開發工具 區塊鏈(五) - 在私有鏈上部署智能合約 Part 1 區塊鏈(六) - 在私有鏈上部署智能合約 Part 2 對於多數人使用的系統是 Windows,所以本篇將描述如何在 Windows 上建立以太坊私有鏈。 下載 Go Ethereum Windows 版本 下載方式和 MacOS 是一樣的,可以到 Go Ethereum網站 下載,這部分可以參考第一篇文章。 Fig. 1. go-ethereum for windows. 啟動以太坊 安裝完成後,打開命令提示字元(CMD),輸入以下指令來啟動以太坊節點。 $ geth 在資訊欄中找到 dir,這是存放鏈數據的位置。 接下來的步驟是創建一個「創世區塊」。 你可以根據需要進行細部修改,將下面的內容保存到 genesis.json 文件中,並將該文件放入鏈數據目錄中。 # genesis.json { "config": { "chainId": 10, "homesteadBlock": 0, "eip150Block": 0, "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000", "eip155Block": 0, "eip158Block": 0, "byzantiumBlock": 0, "constantinopleBlock": 0, "petersburgBlock": 0, "istanbulBlock": 0, "ethash": {} }, "nonce": "0x0", "timestamp": "0x5e4a53b2", "extraData": "0x0000000000000000000000000000000000000000000000000000000000000000", "gasLimit": "0x47b760", "difficulty": "0x80000", "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x0000000000000000000000000000000000000000", "alloc": { "0000000000000000000000000000000000000088": { "balance": "0x200000000000000000000000000000000000000000000000000000000000000" } }, "number": "0x0", "gasUsed": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000" } 啟動私有鏈 從 CMD 切換到鏈數據目錄下,並輸入以下指令來初始化私有鏈。...

December 8, 2022 · 1 min · 142 words · Xubo

區塊鏈(六) - 在私有鏈上部署智能合約 Part 2

劇情回顧: 區塊鏈(一) - 建立以太坊私有鏈 區塊鏈(二) - 創建虛擬錢包 區塊鏈(三) - MetaMask 加密貨幣錢包 區塊鏈(四) - 智能合約的開發工具 區塊鏈(五) - 在私有鏈上部署智能合約 Part 1 此篇是第五集的延伸,希望從 Remix 上測試好智能合約以後,就直接部署到私有鏈中。還記不記得前幾集,我們安裝了 MetaMask 的錢包,這時候我們可以利用它當作 Remix 和私有鏈之間的橋樑。 說得簡單一點,就是 Remix 透過 MetaMask 錢包替我們發送 智能合約 到私有鏈中等待驗證。 完成編譯後的智能合約,可以到部署的頁面先選擇環境「Injected Web3」,然後按下「Deploy」。 Fig. 1. injected web3. Google Chrome 會自動彈出 MetaMask 的視窗,這是要我們授權它使用 MetaMask 錢包。 Fig. 2. google chrome extension metamask. 請記得選擇從私有鏈建立的帳戶(Account)。 確認部署資訊後,可以按下「Confirm」。這樣在你的 Cmd 端就會看到有一項交易正在等待驗證。 Fig. 3. confirm-transaction. 只需要進行挖礦來驗證這筆交易,即可完成部署。 Fig. 4. miner. 當這個合約成功加入區塊後,從 Remix 網頁的下方會出現一個智能合約。這個區域就像上集介紹的部分,可以操作合約。 Fig. 5. remix smart contract....

December 6, 2022 · 1 min · 84 words · Xubo

區塊鏈(五) - 在私有鏈上部署智能合約 Part 1

劇情回顧: 區塊鏈(一) - 建立以太坊私有鏈 區塊鏈(二) - 創建虛擬錢包 區塊鏈(三) - MetaMask 加密貨幣錢包 區塊鏈(四) - 智能合約的開發工具 上一集提到可以利用 Remix-Ethereum IDE 來撰寫智能合約以及測試智能合約,如果還不熟悉過程的快去看看喔! 首先,這是很多人的疑問,就是雖然可以在線上進行智能合約的測試,但如果要將寫好的合約部署到私有鏈上該怎麼做呢? 其中,有兩個方法可以進行: 第一種部署智能合約的方法 當我們寫好一個智能合約時,就像寫一段程式碼一樣,需要將這段程式碼進行編譯。完成編譯後,可以將目光轉移到下方的三個按鈕。 最下面一個「Compilation Details」點擊後會出現有關這項合約的詳細資訊。 Fig. 1. compilation details. 在這裡,我們可以找到「WEB3DEPLOY」的標題。 下方所寫的內容其實就是這項合約部署的指令。根據這些指令,我們可以在開啟私有鏈的 CMD 環境中執行來部署合約。 Fig. 2. WEB3DEPLOY. 部屬時可能會發生的錯誤訊息 請注意,如果你輸入指令後出現錯誤訊息,可以嘗試以下步驟進行修改,來完成「透過指令來部署合約」。 當你遇到相同的錯誤時,需要更正指令為 new web3.eth.contract。請注意,new 需要刪除,同時 C 需要改為小寫。最後,只需要輸入以下指令: var testContract = web3.eth.contract([...]) Fig. 3. var testContract. 可以呼叫 testContract 出來查看合約。 Fig. 4. testContract. 再來 testContract.deploy 需要改成 testContract.new,然後將註解部分移動到正確位置。 var test = testContract.new({ data: '0x60806...(數字太長省略)', arguments: [], // 將 from 和 gas 移動上來,其餘不變。 from: web3....

December 5, 2022 · 1 min · 178 words · Xubo

區塊鏈(四) - 智能合約的開發工具

劇情回顧: 區塊鏈(一) - 建立以太坊私有鏈 區塊鏈(二) - 創建虛擬錢包 區塊鏈(三) - MetaMask 加密貨幣錢包 現在我們已經擁有私有鏈的環境,也有了可以進行挖礦和帳戶,這次稍微進階一點,說一點有關於智能合約。 Remix 介紹一個智能合約編譯器 Remix - Ethereum IDE 可以在上面進行智能合約的撰寫、測試等。 這邊就寫一個簡單的智能合約,我們希望合約來幫助我們做運算,簡單的說明一下,合約中存著一個變數,用戶可以對合約輸入一個數字,合約會將數字乘上 10 倍,並且可以透過公開的變數來查看當前數字是多少。 // SPDX-License-Identifier: MIT pragma solidity ^0.8.4; contract TestContract { uint public number; function multiply(uint a) public { number = a * 10; } } 許多人可能會遇到在 Remix 編譯後警告訊息,若是出現有關「SPDX license identifier」的訊息,就需要在程式碼第一行加入喔! 參考來源:Warning: SPDX license identifier not provided in source file。 Remix compiler 切記寫好程式碼以後,要記得先點選「Compile TestContract.sol」,才會對你的程式碼進行編譯喔! Fig. 1. solidity compiler. 接下來我們就簡單進行操作一下,來觀察一下合約的執行動作。 先從環境中使用「JavaScript VM」進行合約測試,如果直接將智能合約部署到私有鏈中,想修改都沒辦法喔,只有重新部署一個新的才行,這點要非常注意。...

December 5, 2022 · 1 min · 106 words · Xubo