一、從網站https://github.com/ethereum/go-ethereum/releases/下載最新版本node
#tar -zxvf geth.tar.gzgit
#cd gethgithub
#建立init.json的文本文件,內容以下:web
{json
"nonce": "0x0000000000000042",api
"config": { "chainId": 15, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 },網絡
"difficulty": "0x4000",app
"alloc": {cors
"e0953e0a2ae54cfa0e72426de4ad654af5fd3669": {dom
"balance": "20000009800000000000000000000"
}
},
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",
"gasLimit": "0xb2d05e00"
}
參數描述
mixhash 與nonce配合用於挖礦,由上一個區塊的一部分生成的hash。注意他和nonce的設置須要知足以太坊的Yellow paper, 4.3.4. Block Header Validity,。
nonce nonce就是一個64位隨機數,用於挖礦,注意他和mixhash的設置須要知足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件。
difficulty 設置當前區塊的難度,若是難度過大,cpu挖礦就很難,這裏設置較小難度
alloc 用來預置帳號以及帳號的以太幣數量,由於私有鏈挖礦比較容易,因此咱們不須要預置有幣的帳號,須要的時候本身建立便可以。
coinbase 礦工的帳號,隨便填
timestamp 設置創世塊的時間戳
parentHash 上一個區塊的hash值,由於是創世塊,因此這個值是0
extraData 附加信息,隨便填,能夠填你的個性信息
gasLimit 該值設置對GAS的消耗總量限制,用來限制區塊能包含的交易信息總和,由於咱們是私有鏈,因此填最大。
二、創世區塊初始化
#geth --datadir "./app/" init init.json 初始化
注意:上面命令中--datadir後面的 /app/chain能夠任意指定而且目錄不用提早建立,可是必定要保證有足夠的磁盤空間,init.json是咱們在上一步建立的創世區塊文件
三、啓動以太坊
#nohup ./geth --identity "dapp" --rpc --rpcport "8545" --rpccorsdomain "*" --rpcaddr "0.0.0.0" --datadir "app" --port "30303" --nodiscover --rpcapi "db,eth,net,web3,personal,admin" --networkid 95518 --nat "any" 2>log.txt&
#./geth attach ipc:./app/geth.ipc 以ipc方式調用console控制檯
#./geth attach http://127.0.0.1:8545 以rpc方式調用console控制檯
參數描述
identity 區塊鏈的標示,隨便填寫,用於標示目前網絡的名字
init 指定創世塊文件的位置,並建立初始塊
datadir 設置當前區塊鏈網絡數據存放的位置
port 網絡監聽端口
rpc 啓動rpc通訊,能夠進行智能合約的部署和調試
rpcapi 設置容許鏈接的rpc的客戶端,通常爲db,eth,net,web3
networkid 設置當前區塊鏈的網絡ID,用於區分不一樣的網絡,是一個數字
console 啓動命令行模式,能夠在Geth中執行命令
nodiscover 禁止被網絡中其它節點發現,須要手動添加該節點到網絡
verbosity 打印詳細的日誌信息
四、建立主帳戶,挖礦,轉帳,組網
>personal.newAccount(「111111」)
>personal.listAccounts 查看主帳戶
>web3.fromWei(eth.getBalance(eth.coinbase), "ether") 查詢默認賬號餘額
>miner.start(1) 挖礦,當出現mined block時,只有挖到礦了才能夠轉帳
>miner.stop() 中止探礦
>personal.unlockAccount("0x5a5116d5b2c27d77214134c81593974bc5abd6f9","111111",3600) 解鎖
> eth.sendTransaction({from: '0x325d05e04c7f62fbaaee83745e90a9b90bdbd089', to: '0xd841a08defddc93285b45ed4187d791170168daf', value:web3.toWei(1,"ether")}) 轉帳
> web3.fromWei(eth.getBalance(eth.accounts[1]), "ether") 其餘賬號
> txpool.status 查看交易狀態
組網創建區塊鏈,組網有二個要求:
>>>創世塊文件要同樣
>>>geth啓動時的networkid要同樣,即啓動中的--networkid 95518 這個參數值要同樣
在二臺不一樣機器上搭建二個以太坊私有鏈,而後執行如下命令
>admin.nodeInfo 查看當前節點的peer信息
而後把另外1臺上面的節點信息複製下來執行admin.addPeer便可,小括號裏面的enode信息爲另外1臺機器的信息
> admin.addPeer("enode://505b0b845e48d17db5bc8e7a5d8a8743a64007b36028907bb5bb6d24575265ce24b534fe39d0b437e057c1ffe380387d65632deb1ce023c5fa6707447c9bb386@192.168.37.40:30303")
查看組網是否成功
> admin.peers
五、Mist 鏈接到搭建好的私網
Mist.exe . --rpc "http://192.168.37.40:8545" --node-networkid 95518 --swarmurl "null"