安裝客戶端
安裝之前請搭建golang環(huán)境以及自行安裝homebrew包管理器
brew tap ethereum/ethereum
brew install ethereum
安裝完成之后檢查安裝是否成功
geth --help
連接公有鏈
geth --fast --cache=1024 --datadir "./data/00" --port "30303" console
geth 執(zhí)行參數(shù)
參數(shù)名稱 | 參數(shù)描述 |
---|---|
identity | 區(qū)塊鏈的標(biāo)示,隨便填寫,用于標(biāo)示目前網(wǎng)絡(luò)的名字 |
init | 指定創(chuàng)世塊文件的位置昼扛,并創(chuàng)建初始塊 |
datadir | 設(shè)置當(dāng)前區(qū)塊鏈網(wǎng)絡(luò)數(shù)據(jù)存放的位置 |
port | P2P的網(wǎng)絡(luò)端口 |
rpc | 啟動(dòng)rpc通信苏研,可以進(jìn)行智能合約的部署和調(diào)試 |
rpcapi | 設(shè)置允許連接的rpc的客戶端等浊,一般為db,eth,net,web3 |
networkid | 設(shè)置當(dāng)前區(qū)塊鏈的網(wǎng)絡(luò)ID,用于區(qū)分不同的網(wǎng)絡(luò)楣富,是一個(gè)數(shù)字,配置rpc服務(wù)時(shí)需要配置一致 |
console | 啟動(dòng)命令行模式伴榔,可以在Geth中執(zhí)行命令 |
創(chuàng)世塊
在以上安裝成功之后纹蝴,直接啟動(dòng),即可連接公有鏈∽偕伲現(xiàn)在通過配置創(chuàng)世塊來創(chuàng)建私有鏈塘安。同一個(gè)網(wǎng)絡(luò)中,創(chuàng)世塊必須是一樣的援奢,否則無法聯(lián)通兼犯。
創(chuàng)建一個(gè)eth的根目錄,在根目錄下新建創(chuàng)世塊json文件genesis.json集漾。內(nèi)容如下:
{
"config": {
"chainId": 12345,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x400",
"extraData" : "0x123456",
"gasLimit" : "0xffffffff",
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00",
"alloc": { }
}
初始化創(chuàng)世塊參數(shù)說明
參數(shù)名稱 | 參數(shù)描述 |
---|---|
mixhash | 與nonce配合用于挖礦切黔,由上一個(gè)區(qū)塊的一部分生成的hash。注意他和nonce的設(shè)置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity |
nonce | nonce就是一個(gè)64位隨機(jī)數(shù)具篇,用于挖礦纬霞,注意他和mixhash的設(shè)置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity |
difficulty | 設(shè)置當(dāng)前區(qū)塊的難度,如果難度過大驱显,cpu挖礦就很難诗芜,這里設(shè)置較小難度 |
alloc | 用來預(yù)置賬號以及賬號的以太幣數(shù)量,因?yàn)樗接墟溚诘V比較容易埃疫,所以我們不需要預(yù)置有幣的賬號伏恐,需要的時(shí)候自己創(chuàng)建即可。 |
coinbase | 礦工的賬號栓霜,隨便填 |
timestamp | 設(shè)置創(chuàng)世塊的時(shí)間戳 |
parentHash | 上一個(gè)區(qū)塊的hash值翠桦,因?yàn)槭莿?chuàng)世塊,所以這個(gè)值是0 |
extraData | 附加信息胳蛮,隨便填秤掌,可以填你的個(gè)性信息 |
gasLimit | 該值設(shè)置對GAS的消耗總量限制,用來限制區(qū)塊能包含的交易信息總和鹰霍,因?yàn)槲覀兪撬接墟溛偶蕴钭畲?/td> |
初始化私有鏈
geth --datadir ./data/00 init genesis.json
清空db
geth removedb
私有鏈啟動(dòng)
geth --identity "cmcm" --rpc --rpccorsdomain "*" --datadir "./data/00" --port "30303" --rpcapi "personal,db,eth,net,web3,miner" --networkid 15 --rpcport 8545 console
日志輸出到文本文件當(dāng)中:
geth --dev console 2>> file_to_log_output