ETH 001 私有鏈的搭建

最近想給同事做一次以太坊智能合約編寫的分享,PPT寫著寫著越來(lái)越多。想想還算是把它弄成文章。

1.1 ETH介紹

???? ETH 是我們的V神發(fā)起的一個(gè)開源的去中心化的數(shù)字貨幣項(xiàng)目。ETH在比特幣的基礎(chǔ)上提出了“智能合約”(Smart Contract)的概念。ETH更像是一個(gè)底層的操作系統(tǒng)。就像IOS 和安卓一樣,提供豐富的API接口。 學(xué)習(xí)ETH 的相關(guān)的地址如下:

    白皮書:https://github.com/ethereum/wiki/wiki/%5BEnglish%5D-White-Paper
    官方網(wǎng)站:https://www.ethereum.org
    區(qū)塊查詢:https://etherscan.io/   https://etherchain.org/

1.2 ETC 介紹

????老有朋友問ETC 和ETH是什么關(guān)系。其實(shí)他們就是親兄弟。ETH 是ETC出現(xiàn)了一次BUG,導(dǎo)致有人損失了資產(chǎn)以后分裂出來(lái)的項(xiàng)目。但是有一些認(rèn)為數(shù)字貨幣就是去中心化,是民主的,BUG的產(chǎn)生本身也是系統(tǒng)規(guī)則本身。 于是他們堅(jiān)持在了ETC社區(qū)。

2.2 私有鏈搭建

  • 代碼安裝方式
  • 創(chuàng)世塊配置
  • 編譯代碼

2.2.1 代碼安裝方式

初學(xué)者我們推薦使用 Installing from PPA 安裝

本人的安裝目錄 : ~/Library/Ethereum/geth

sudo apt-get install software-properties-common
sudo add-apt-repository -y ppa:ethereum/ethereum
sudo add-apt-repository -y ppa:ethereum/ethereum-dev
sudo apt-get update
sudo apt-get install ethereum

2.2.2 機(jī)器環(huán)境

localhost:~ lei$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.13.2
BuildVersion:   17C88

2.2.3 GO 環(huán)境安裝

這里先不介紹GO的環(huán)境配置,請(qǐng)自行查詢。

版本需求為: version 1.7+ 本人使用的GO版本

localhost:~ lei$ go version
go version go1.9.3 darwin/amd64

2.3 私有鏈數(shù)據(jù)準(zhǔn)備

2.3.1 初始化文件 genesis.json

{
 “config”: {“
    chainId”: 88888,
    “homesteadBlock”: 0,
    “eip155Block”: 0,
    “eip158Block”: 0
  },
  “coinbase”: “0x0000000000000000000000000000000000000000”,
  “difficulty”: “0x1”,
  “extraData”: “0x00”,
  “gasLimit”: “0x47e7c5”,
  “nonce”: “0x0000000000000042”,
  “mixhash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
  “parentHash”: “0x0000000000000000000000000000000000000000000000000000000000000000”,
  “timestamp”: “0x00”,
  “alloc”: {
   “430e986e0cca10a174baad96871ec9cb308c6d05”: {
      “balance”: “111111”
    }
  }
}

2.3.2參數(shù)說明

參數(shù) 解釋說明
mixhash 與nonce配合用于挖礦,由上一個(gè)區(qū)塊的一部分生成的hash。注意他和nonce的設(shè)置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity,(44)章節(jié)所描述的條件。.
nonce nonce就是一個(gè)64位隨機(jī)數(shù),用于挖礦,注意他和mixhash的設(shè)置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節(jié)所描述的條件。
difficulty 設(shè)置當(dāng)前區(qū)塊的難度,如果難度過大,cpu挖礦就很難,這里設(shè)置較小難度
alloc 用來(lái)預(yù)置賬號(hào)以及賬號(hào)的以太幣數(shù)量,因?yàn)樗接墟溚诘V比較容易,所以我們不需要預(yù)置有幣的賬號(hào),需要的時(shí)候自己創(chuàng)建即可以。
coinbase 礦工的賬號(hào),(可以隨便填寫)
timestamp 設(shè)置創(chuàng)世塊的時(shí)間戳
parentHash 上一個(gè)區(qū)塊的hash值,因?yàn)槭莿?chuàng)世塊,所以這個(gè)值是0
Data 附加信息,隨便填,可以填你的個(gè)性信息
gasLimit 該值設(shè)置對(duì)GAS的消耗總量限制,用來(lái)限制區(qū)塊能包含的交易信息總和,因?yàn)槲覀兪撬接墟湥蕴钭畲蟆?/td>

3啟動(dòng)步驟

初始化數(shù)據(jù)

geth --datadir "./" init genesis.json
運(yùn)行以后會(huì)出現(xiàn)兩個(gè)目錄
geth中保存的是區(qū)塊鏈的相關(guān)數(shù)據(jù)
keystore中保存的是該鏈條中的用戶信息
image.png

啟動(dòng)控制臺(tái)

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

在這個(gè)環(huán)境里也內(nèi)置了一些用來(lái)操作以太坊的Javascript對(duì)象,可以直接使用這些對(duì)象。這些對(duì)象主要包括:

  1. eth:包含一些跟操作區(qū)塊鏈相關(guān)的方法
  2. net:包含以下查看p2p網(wǎng)絡(luò)狀態(tài)的方法
  3. admin:包含一些與管理節(jié)點(diǎn)相關(guān)的方法
  4. miner:包含啟動(dòng)&停止挖礦的一些方法
  5. personal:主要包含一些管理賬戶的方法
  6. txpool:包含一些查看交易內(nèi)存池的方法
  7. web3:包含了以上對(duì)象,還包含一些單位換算的方法
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,936評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,537評(píng)論 19 139
  • 文|少女小漁 先講個(gè)故事,逗君一笑。 01. 二羊小時(shí)候是個(gè)很內(nèi)向、不愛說話的孩子, 不嚴(yán)重, 大概就是很多人曾經(jīng)...
    漁書家的少女小漁閱讀 357評(píng)論 0 0
  • 在《開講啦》舞臺(tái)俞敏洪給當(dāng)代大學(xué)生作問題解答,其中有個(gè)大學(xué)生問到“俞老師,我學(xué)的專業(yè)是國(guó)學(xué),我很喜歡自己的專業(yè),可...
    你本來(lái)就很好閱讀 377評(píng)論 0 0

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