以太坊建立私有鏈
❶ 以太坊多節點私有鏈部署
假設兩台電腦A和B
要求:
1、兩台電腦要在一個網路中,能ping通
2、兩個節點使用相同的創世區塊文件
3、禁用ipc;同時使用參數--nodiscover
4、networkid要相同,埠號可以不同
1.4 搭建私有鏈
1.4.1 創建目錄和genesis.json文件
創建私有鏈根目錄./testnet
創建數據存儲目錄./testnet/data0
創建創世區塊配置文件./testnet/genesis.json
1.4.2 初始化操作
cd ./eth_test
geth --datadir data0 init genesis.json
1.4.3 啟動私有節點
1.4.4 創建賬號
personal.newAccount()
1.4.5 查看賬號
eth.accounts
1.4.6 查看賬號余額
eth.getBalance(eth.accounts[0])
1.4.7 啟動&停止挖礦
啟動挖礦:
miner.start(1)
其中 start 的參數表示挖礦使用的線程數。第一次啟動挖礦會先生成挖礦所需的 DAG 文件,這個過程有點慢,等進度達到 100% 後,就會開始挖礦,此時屏幕會被挖礦信息刷屏。
停止挖礦,在 console 中輸入:
miner.stop()
挖到一個區塊會獎勵5個以太幣,挖礦所得的獎勵會進入礦工的賬戶,這個賬戶叫做 coinbase,默認情況下 coinbase 是本地賬戶中的第一個賬戶,可以通過 miner.setEtherbase() 將其他賬戶設置成 coinbase。
1.4.8 轉賬
目前,賬戶 0 已經挖到了 3 個塊的獎勵,賬戶 1 的余額還是0:
我們要從賬戶 0 向賬戶 1 轉賬,所以要先解鎖賬戶 0,才能發起交易:
發送交易,賬戶 0 -> 賬戶 1:
需要輸入密碼 123456
此時如果沒有挖礦,用 txpool.status 命令可以看到本地交易池中有一個待確認的交易,可以使用 eth.getBlock("pending", true).transactions 查看當前待確認交易。
使用 miner.start() 命令開始挖礦:
miner.start(1);admin.sleepBlocks(1);miner.stop();
新區塊挖出後,挖礦結束,查看賬戶 1 的余額,已經收到了賬戶 0 的以太幣:
web3.fromWei(eth.getBalance(eth.accounts[1]),'ether')
用同樣的genesis.json初始化操作
cd ./eth_test
geth --datadir data1 init genesis.json
啟動私有節點一,修改 rpcport 和port
可以通過 admin.addPeer() 方法連接到其他節點,兩個節點要要指定相同的 chainID。
假設有兩個節點:節點一和節點二,chainID 都是 1024,通過下面的步驟就可以從節點二連接到節點一。
首先要知道節點一的 enode 信息,在節點一的 JavaScript console 中執行下面的命令查看 enode 信息:
admin.nodeInfo.enode
" enode://@[::]:30303 "
然後在節點二的 JavaScript console 中執行 admin.addPeer(),就可以連接到節點一:
addPeer() 的參數就是節點一的 enode 信息,注意要把 enode 中的 [::] 替換成節點一的 IP 地址。連接成功後,節點一就會開始同步節點二的區塊,同步完成後,任意一個節點開始挖礦,另一個節點會自動同步區塊,向任意一個節點發送交易,另一個節點也會收到該筆交易。
通過 admin.peers 可以查看連接到的其他節點信息,通過 net.peerCount 可以查看已連接到的節點數量。
除了上面的方法,也可以在啟動節點的時候指定 --bootnodes 選項連接到其他節點。 bootnode 是一個輕量級的引導節點,方便聯盟鏈的搭建 下一節講 通過 bootnode 自動找到節點
參考: https://cloud.tencent.com/developer/article/1332424
❷ Docker 搭建以太坊私有鏈
首先需要安裝 Docker,Docker 的安裝和使用可以參看阮一峰老師的 《Docker 入門教程》 。
Ethereum 官方是支持 docker 的,可以參看 官方文檔 。
centOS
其中 -v /home/linshan/works/block-chain/ethereum:/root 是把我們當前的 ethereum 目錄,掛到了docker 的 /root 下。
在 Windows 環境下使用 -v /home/linshan/works/block-chain/ethereum:/root 不能啟動容器,原因不明,所以在 Windows 下先不要使用目錄掛載。
各欄位具體用途參看 官方文檔 。
Windows
Windows 不必創建 start-ethereum.sh 文件, genesis.json 也可以在 Docker 容器啟動後創建。
centOS
Windows
運行成功後執行
進入 docker 容器命令行
因為 Windows 沒有掛載共享目錄,所以 root 目錄下沒有 genesis.json 文件,我們要在這裏手動創建 genesis.json 文件,內容要和 centOS 的一致。
data 用來存放區塊數據
geth 的參數參看 以太坊客戶端Geth命令用法-參數詳解
啟動私有節點後進入 geth 命令行執行:
輸出的內容就是節點信息,我們在手動連接節點是會用到,注意要把「0.0.0.0「換成你自己的IP,然後將這個信息發送給其他節點。手動連接節點有兩種方式:
當然不管使用哪種方法連接節點都要保證創世區塊文件 genesis.json 一致,還有在啟動時 networkid 也要一致。
至此以太坊私有鏈已搭建完畢。
geth命令
docker命令
❸ 以太坊私有鏈如何更新版本
以太坊私有鏈更新版本的方法:
1、獲取以太坊私有鏈系統的當前版本對應的當前版本號;
2、基於所述當前版本號,確定所述以太坊私有鏈系統的升級版本的升級版本號;
3、將所述以太坊私有鏈系統升級為所述升級版本號對應的升級版本。
❹ 以太坊開發(2):在以太坊私有鏈上的基本操作
在上一講 如何使用geth搭建以太坊私有鏈 完成了私有鏈的搭建,下面介紹在私有鏈上的基本操作。
啟動私有鏈後在命令行輸入:
執行完之後可以查看到生成的賬戶地址為
查詢賬戶余額:
剛剛創建的私有鏈賬戶都是沒有餘額的,需要通過挖礦才會產生eth,下面介紹如何在私有鏈上挖礦。
在geth環境下執行:
這時候查看日誌geth.log可以看到以太坊私有鏈有個啟動的百分比,到100就正式啟動了:
挖礦開始:
這時候有個疑問,挖礦挖到的eth到哪了,其實默認到了eth.account[0],就是第一個賬戶上:
如何修改挖礦所得的賬戶:
命令如下:
下面開始進行轉賬:
這時候出現報錯,原因是轉賬的賬戶沒有解鎖,需要輸入密碼解鎖轉賬的賬戶才能完成轉賬操作:
❺ 以太坊私有鏈,創建了錢包之後裡面沒錢怎麼給其它轉賬
這個需要充值,但是一定要注意風險,這個鏈並不是特別主流,有可能是資金盤或是山寨幣。
❻ 可以用雲伺服器搭建以太坊私有鏈節點嗎
可以的,但是建議使用海外伺服器會比較好,另外伺服器的配置要中等或以上。
❼ 以太坊私有鏈搭建(2)--修改挖礦難度
官放解釋就不多說了,Difficulty值越大,越難出區塊,意味著交易不容易確認,默認的機制是難度越來越大,對私有鏈一般是不可接受的,當然這個值也不是越小越好,這樣的話也會讓機器的很卡,所以這個值要根據項目自己確定。
創世區塊中的的難度能影響整體的挖礦速度,但是並不能改變難度上升這個趨勢,所以在自己的項目中,僅僅在創世區塊中指定難度是不夠的。
當前geth版本 1.7 unstable
源文件 consensus/ethash/consensus.go 行290
好了,這里也不多想怎麼實現了,我也看不懂,簡單改下返回難度為恆定值就會~~
將這個函數改為
重新make geth,試試看出塊難度是不是恆定了。
❽ 怎麼接以太坊公鏈
建立連接以接儒以太坊公鏈。
一、1、以太坊客戶端下載,注意:需翻牆,下載版本為1.8.23-stable,否則可能出現與以太坊錢包客戶端存在不匹配問題。
2、以太坊錢包客戶端下載。
3、安裝以太坊客戶端。
二、私有鏈創建:創建創世區塊。
三、安裝並啟動以太坊錢包客戶端。
❾ CentOS 6.5上搭建以太坊私有鏈,編譯時報錯: make: *** [geth] Error 1,請各位大神指教
build/env.sh go run build/ci.go install ./cmd/geth
make: *** [geth] Error 1
沒有這個目錄,或者這個目錄許可權不夠
❿ 公有鏈,私有鏈與聯盟鏈有何不同
公有鏈向所有人開放,私有鏈向滿足特定條件的個人開放,聯盟鏈向授權的組織或機構開放。
公有鏈,也就是公共區塊鏈(Public blockchains),是指全世界任何一個人都可以讀取、任何一個人都可以發送交易且交易能夠獲得有效確認的共識區塊鏈。
私有鏈,也就是完全私有區塊鏈(Fully private blockchains),是指寫入許可權完全在一個組織手裡的區塊鏈,所有參與到這個區塊鏈中的節點都會被嚴格控制。
聯盟鏈,即聯盟區塊鏈(Consortium blockchains),是指有若干組織或機構共同參與管理的區塊鏈,每個組織或機構控制一個或多個節點,共同記錄交易數據,並且只有這些組織和機構能夠對聯盟鏈中的數據進行讀寫和發送交易。
(10)以太坊建立私有鏈擴展閱讀:
區塊鏈有公有鏈,私有鏈與聯盟鏈三種。
區塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密演算法等計算機技術的新型應用模式。
區塊鏈(Blockchain)是比特幣的一個重要概念,它本質上是一個去中介化的資料庫,同時作為比特幣的底層技術,是一串使用密碼學方法相關聯產生的數據塊,每一個數據塊中包含了一次比特幣網路交易的信息,用於驗證其信息的有效性(防偽)和生成下一個區塊。