生活随笔
收集整理的這篇文章主要介紹了
以太坊私链搭建
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Window上安裝ubuntu系統搭建私有鏈操作步驟
modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
前提是 geth 已經安裝,可以參考上一節內容講解 Step 1: 建立目錄和genesis.json 在命令行模式創建一個目錄,例如geths ,這里geths目錄命名任意。 命令:mkdir geths 然后在ubuntu目錄下會出現一個geths文件夾。 繼續進入到該文件夾目錄下,創建一個文件,genesis.json, 文件名也可以任意。 genesis.json 文件內容: (注意版本太早的復制進去,運行會出錯,可以適當更改內容)
[html] view plaincopy
???{????"config":?{??????????"chainId":?666,??????????"homesteadBlock":?0,??????????"eip155Block":?0,??????????"eip158Block":?0??????},????"alloc"??????:?{},????"coinbase"???:?"0x0000000000000000000000000000000000000000",????"difficulty"?:?"0x20000",????"extraData"??:?"",????"gasLimit"???:?"0x2fefd8",????"nonce"??????:?"0x0000000000000042",????"mixhash"????:?"0x0000000000000000000000000000000000000000000000000000000000000000",????"parentHash"?:?"0x0000000000000000000000000000000000000000000000000000000000000000",????"timestamp"??:?"0x00"??}?? Step 2: 執行命令,創建創世區塊 切換回命令行,執行命令,制造創世區塊 進入到geths 目錄下,執行命令 geth --datadir "./" init genesis.json 此時當前geths目錄下面會新增出兩個文件夾geth和keystore geth中保存的是區塊鏈的相關數據 keystore中保存的是該鏈條中的用戶信息 Step 3:創建自己的私有鏈條 geth --datadir "./" --nodiscover console 2>>geth.log 注意這里輸出打印日志到log文件中 Step 4:在自己的私有鏈條上創建用戶 輸入命令eth.accounts, 我們會發現返回值為[],這是因為此時雖然以太坊的私有鏈已經被創造出來,但還沒有任何賬戶。 輸入命令personal.newAccount("xxx"),該命令將創造一個新的用戶,該用戶的密碼是xxx. 當然用戶也可以將xxx?改為123,或者123456,或者任意密碼 再次輸入命令?eth.accounts, 我們會發現一個新的用戶被創建了出來,這就代表我們已經創建了一個賬戶,重personal.newAccount()?&?eth.accounts?我們可以創建若干個賬戶出來 Step 5: 最重要的一步來了,開始挖礦 在命令行中執行命令?miner.start(), 開始在我們的區塊鏈上進行挖礦 一直等到100%。這個以太坊私有鏈就會正式啟動,并持續不斷的生成出以太坊來。 注意點: 1. 挖礦挖到的ether幣會默認保在第一個賬戶中,即eth.acccounts[0]中。 2. 挖礦是執行智能合約的基礎。如果停止挖礦的話,不僅以太幣會停止生成,所有智能合約的調用也會不起作用。 3. 如果真的要停止挖礦,可以執行命令miner.stop()來停止挖礦 4. 按上面的命令,應該是可以實現以太坊挖礦的。如果不行的話,有可能就是之前有存在的鏈,此時應該刪除之前的數據。即刪除~/.ethash文件夾和里面的文件即可。 5. 通常有人出現miner.start()返回null,,并且沒有信息刷屏,就停留在null,, 原因回到step 3 你將輸出結果打印到日志log,所以無法顯示,exit 退出, 重新運行geth --datadir "./" --nodiscover console 即可。 Step6: 挖礦啟動后,查看主賬戶的以太幣數量 acc0 = eth.accounts[0] eth.getBalance(acc0) 結果只要不為0,那就說明挖礦成功! 退出挖礦:miner.stop() 退出當前geth ,執行:exit 重新運行geth, 直接進入到step 3, 不需要執行前兩步了。
(4)創建一個新賬戶
personal.newAccount(‘密碼')
?
(5)賬戶賦值給某一個變量
user1 = persnal.account[0]
?
(6)上面提到過日志文件,我們再重開一個終端,我們使用以下命令打開日志:
tail -f? log.log
(7)在geth控制臺中啟動挖礦:
miner.start()
?
(8)停止挖礦
miner.stop()
?
(9)查看賬戶的賬戶余額
eth.getBalance(user1)
?
(10)
user1向user2轉移以太幣
eth.sendTransaction({from: user1,to: user2,value: web3.toWei(3,"ether")})
?
(11)解鎖賬戶后
eth.unlockAccount(user1,"123")
?
?
2)下面我們來實現下在geth中編譯一個智能合約
?
[plain]?view plaincopy
contract?test?{??????function?multiply(uint?a)?returns(uint?d)?{??????????return?a?*?7;???????}???}?? 在geth中執行如下:
?
source = "contract test { function multiply(uint a) returns(uint d) { return a * 7; } }"
然后編譯該合約:
contract = eth.compile.solidity(source).test
編譯后的結果如下:
code:就是合約編譯后的字節碼文件,在以太坊虛擬機EVM上運行的就是這個字節碼;
abiDefinition:其實就是合約的二進制接口,可用來外部調用;
其他的一些參數也都是可以見名知意了。
?
然后就要獲取合約的abi(其實該真正要用的abi可以通過https://ethereum.github.io/browser-solidity這個在線編譯器獲得):
abi=[{"constant":false,"inputs":[{"name":"a","type":"uint256"}],"name":"multiply","outputs":[{"name":"d","type":"uint256"}],"payable":false,"type":"function"}]
?
然后是訪問abi接口:
MyContract=eth.contract(abi)
?
?
然后獲得合約的實例:
myContract=MyContract.new({from:user1,data:contract.code})
如果提示你沒有解鎖的話,只要解鎖即可。
?
調用函數傳遞參數
。
函數做了乘以7的操作,輸出符合預期。合約執行成功。
?
? ? ? 以上就是對geth最基本的運用,我們會在以后的開發中學習geth更為深入的功能。
轉載于:https://www.cnblogs.com/felixzuo/p/9018803.html
總結
以上是生活随笔為你收集整理的以太坊私链搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。