【區(qū)塊鏈】在Mac使用Geth創(chuàng)建以太坊私有鏈

目前有4種語(yǔ)言編寫(xiě)以太坊的客戶端。分別是Go語(yǔ)言實(shí)現(xiàn)的客戶端Geth、用C++實(shí)現(xiàn)的客戶端cpp-ethereum、用Python語(yǔ)言實(shí)現(xiàn)的客戶端pyethereum、用Java實(shí)現(xiàn)的客戶端EthereumJ。Go語(yǔ)言版是以太坊官方一直維護(hù)并推薦使用的客戶端。

使用Geth命令可以創(chuàng)建以太坊私有鏈,Geth命令行包含了以太坊的大多數(shù)命令,包括賬戶創(chuàng)建,賬戶之間的ETH轉(zhuǎn)賬,挖礦、獲取余額,部署以太坊的智能合約。

本章主要講述在macOS操作系統(tǒng)怎么樣創(chuàng)建以太坊的私有鏈。步驟如下:

1.安裝Geth

在Terminal終端輸入如下命令:

brew tap ethereum/ethereum
brew install ethereum

如在Linux或Windows系統(tǒng)安裝Geth請(qǐng)參考官方安裝文檔。如果已經(jīng)安裝ethereum,可以執(zhí)行以下命令更新:
brew upgrade ethereum

如果安裝完成通過(guò)查看Geth版本號(hào)檢驗(yàn)是否安裝成功,查看Geth版本命令:

geth version

出現(xiàn)了Geth的版本號(hào),說(shuō)明Geth安裝成功。見(jiàn)下圖:

2.創(chuàng)建genesis.json

可以指定某一個(gè)目錄創(chuàng)建genesis.json文件。創(chuàng)建genesis.json文件的目錄如下:


genesis.json的內(nèi)容如下:

{
 "nonce": "0x0000000000000042",
 "timestamp": "0x0",
 "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "extraData": "0x",
 "gasLimit": "0x80000000",
 "difficulty": "0x1",
 "config":{},
 "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
 "coinbase": "0x3333333333333333333333333333333333333333",
 "alloc": {     }
}

對(duì)genesis.json文件說(shuō)明:

nonce:64位隨機(jī)數(shù)
timestamp:時(shí)間戳
parentHash:上一個(gè)區(qū)塊的hash值
extraData:附加信息,任意填寫(xiě)
gasLimit :gas 的消耗總量限制,用來(lái)限制區(qū)塊能包含的交易信息總和。
difficulty:難度值,越大越難
mixhash:與 nonce 配合用于挖礦,由上一個(gè)區(qū)塊的一部分生成的 hash
coinbase:礦工賬號(hào),第一個(gè)區(qū)塊挖出后將給這個(gè)礦工賬號(hào)發(fā)送獎(jiǎng)勵(lì)的以太幣
alloc: 預(yù)設(shè)賬號(hào)以及賬號(hào)的以太幣數(shù)量,私有鏈挖礦比較容易可以不配置

3.創(chuàng)建創(chuàng)世區(qū)塊

使用Terminal進(jìn)入到genesis.json的目錄。執(zhí)行如下命令:

geth --datadir "./" init genesis.json

執(zhí)行結(jié)果如下:

注意:當(dāng)前目錄新增兩個(gè)文件夾,分別是geth和keystore。

geth:保存區(qū)塊鏈的相關(guān)數(shù)據(jù)。
keystore:保存鏈條的用戶信息。創(chuàng)建賬戶后,賬戶信息的文件都放在該目錄下。

4.啟動(dòng)私有鏈

geth --datadir "./" --nodiscover console 2>>geth.log

啟動(dòng)結(jié)果:

5.創(chuàng)建賬戶

查看賬戶信息命令如下:

eth.accounts

創(chuàng)建賬戶命令如下,xxx是密碼。

personal.newAccount("xxx")

執(zhí)行結(jié)果如下圖:

在keystore目錄里有為每個(gè)賬戶生成對(duì)應(yīng)的文件。

文件內(nèi)容:

{
 "address":"3f169a42d19042569f9ff931b8965b1f31970457",
   "crypto":{
   "cipher":"aes-128-ctr",
   "ciphertext":"fe612ce984314fead40a2390240120ed6828d40c972d16f9f32eb94c9333b2a3",
   "cipherparams":{
     "iv":"8f08601909677b252221168bcd3eccf5"
     },
   "kdf":"scrypt",
   "kdfparams":{
     "dklen":32,
     "n":262144,
     "p":1,
     "r":8,
     "salt":"3a158cb28e0cae3e3200e948ed02d1854034359c4ae8e3ad006aaac887b91c9f"
   }, 
   "mac":"13322eeecb12e7c4e5f647a6d52748e667426d48fece5a1134c51751d5035cdf"
   },
 "id":"0df65b18-1625-4c9b-9b51-b152ab2a1235",
 "version":3
} 

6.挖礦

挖礦命令:

miner.start()

此時(shí)geth.log日志輸出:


注意:

  1. 挖礦挖到的ETH幣會(huì)默認(rèn)保在第一個(gè)賬戶中,即eth.acccounts[0]中。

  2. 挖礦是執(zhí)行智能合約的基礎(chǔ)。如果停止挖礦的話,不僅以太幣會(huì)停止生成,所有智能合約的調(diào)用也會(huì)不起作用。

如果要停止挖礦,可以執(zhí)行命令miner.stop()來(lái)停止挖礦。

根據(jù)上面操作步驟,是應(yīng)該可以搭建出一個(gè)私有鏈。如有問(wèn)題,歡迎留言。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文是對(duì)以太坊文檔 Ethereum Frontier Guide 和 Ethereum Homestead 的整...
    趁風(fēng)卷閱讀 9,759評(píng)論 0 16
  • 雖然以太坊是一個(gè)公有鏈系統(tǒng),但是我們可以通過(guò)設(shè)置一些參數(shù)來(lái)運(yùn)行自己的私有鏈節(jié)點(diǎn),在自己的私有鏈上進(jìn)行開(kāi)發(fā)和測(cè)試不需...
    duanyu閱讀 7,017評(píng)論 2 26
  • 區(qū)塊鏈學(xué)習(xí)一 MAC上以太坊私有鏈搭建 標(biāo)簽(空格分隔): 區(qū)塊鏈 MAC上以太坊私有鏈搭建 go-ethereu...
    袁俊亮技術(shù)博客閱讀 3,645評(píng)論 3 4
  • 八十年代初,三四歲的我出生就體弱多病,害苦了我的父母,藥罐子成了我必不可少的`餐具'。這不,我又被父親抱到萍鄉(xiāng)...
    秋月依舊閱讀 570評(píng)論 3 2
  • 文/文子先生 我愿是一只小魚(yú) 游出花開(kāi) 游過(guò)四季 游進(jìn)你的夢(mèng)里 陪你 我愿是一只小魚(yú) 擁有快樂(lè) 也會(huì)憂郁 猜測(cè)你表...
    文子先生閱讀 272評(píng)論 1 3

友情鏈接更多精彩內(nèi)容