摘要:本文所搭建的環(huán)境是在上的開發(fā)環(huán)境,其他操作系統(tǒng)上與此非常相似,依然有參考價值。作為一枚區(qū)塊鏈開發(fā)工程師,本地的開發(fā)環(huán)境是必不可少的。因為我們是私有鏈,所以可以寫的大一些,方便開發(fā)測試。
本文所搭建的環(huán)境是在 Mac 上的開發(fā)環(huán)境,其他操作系統(tǒng)上與此非常相似,依然有參考價值。
作為一枚區(qū)塊鏈開發(fā)工程師,本地的開發(fā)環(huán)境是必不可少的。我們首先看看需要哪些工具:
go-ethereum
solc
Ethereum Wallet
這些工具的安裝在官方文檔上都有非常詳細的講解,這邊就不多贅述了。
目錄結(jié)構(gòu)下文中的文件均已該目錄為當前路徑。
先新建好如下初始目錄,
. ├── data └── genesis.json
genesis.json:初始化私有鏈的配置文件。
data:存放區(qū)塊鏈數(shù)據(jù)的目錄。
配置文件以太坊支持自定義創(chuàng)世區(qū)塊,要運行私有鏈那么就必須定義自己的創(chuàng)世區(qū)塊。創(chuàng)世區(qū)塊的信息就寫在 genesis.json 中,內(nèi)容如下:
{ "config": { "chainId": 15, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc": {}, "nonce": "0x0000000000000042", "difficulty": "0x020000", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x0000000000000000000000000000000000000000", "timestamp": "0x00", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa", "gasLimit": "0x4c4b40" }
大概解釋下其中的幾個參數(shù):
alloc:用來預(yù)設(shè)置賬號以及賬號的 ether 數(shù)量。因為私有鏈挖礦比較容易,所以我們不需要預(yù)設(shè)置賬號。比如,{"0x880004bb64282fb01a3a2500ddf1f4bb5ad4b64a":{"balance":"100000000000000000000000000000"}}
nonce:一個64位隨機數(shù),用于挖礦。
mixhash:和 nonce 配合用于挖礦,由上一個區(qū)塊的一部分生成的 hash。
difficulty:設(shè)置當前區(qū)塊的難度,如果難度過大,cpu挖礦就很難,所以這邊設(shè)置的很小,不要跟自己過不去嘛。
coinbase:默認挖礦的礦工賬號。
timestamp:設(shè)置創(chuàng)世塊的時間戳。
parentHash:上一個區(qū)塊的hash值,因為是創(chuàng)世塊,所以值是0。
extraData:附加信息,隨便填。
gasLimit:設(shè)置對GAS的消耗總量限制,用來限制區(qū)塊能包含的交易信息總和。因為我們是私有鏈,所以可以寫的大一些,方便開發(fā)測試。
初始化接下來我們就需要將創(chuàng)世區(qū)塊的初始信息寫入?yún)^(qū)塊鏈中,使用 geth init 命令。
# geth --datadir "./data" --networkid 31415926 --rpc --rpccorsdomain "*" init ./genesis.json
大致會輸出如下信息:
INFO [03-12|19:36:02] Allocated cache and file handles INFO [03-12|19:36:02] Writing custom genesis block INFO [03-12|19:36:02] Persisted trie from memory database INFO [03-12|19:36:02] Successfully wrote genesis state
此時的目錄結(jié)構(gòu)就變成如下:
. ├── data │ ├── geth │ │ ├── chaindata │ │ │ ├── 000001.log │ │ │ ├── CURRENT │ │ │ ├── LOCK │ │ │ ├── LOG │ │ │ └── MANIFEST-000000 │ │ └── lightchaindata │ │ ├── 000001.log │ │ ├── CURRENT │ │ ├── LOCK │ │ ├── LOG │ │ └── MANIFEST-000000 │ └── keystore └── genesis.json
其中 keystore 目錄用來保存賬戶信息,geth 目錄用來保存區(qū)塊信息。
啟動讓我們接下來啟動私有鏈吧!
# geth --datadir data --networkid 31415926 --rpc --rpccorsdomain "*" --nodiscover console
輸出如下即表示成功進入 geth 的控制臺:
Welcome to the Geth JavaScript console! instance: Geth/v1.8.2-stable/darwin-amd64/go1.10 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 >創(chuàng)建賬戶
先別急著去挖礦,我們得先創(chuàng)建一個賬戶,不然挖出的 ether 塞哪里去呢!
ether 也就是我們說的以太幣(ETH)。
先來看看是否已存在賬戶了,
> eth.accounts []
那我們新建兩個(用于后面賬戶間的轉(zhuǎn)賬演示),
> personal.newAccount() Passphrase: Repeat passphrase: "0x880004bb64282fb01a3a2500ddf1f4bb5ad4b64a" > personal.newAccount() Passphrase: Repeat passphrase: "0x29a079bdbc6d4d122178fbe01558e5df2d008523"
現(xiàn)在我們就有兩個賬戶了,
> eth.accounts ["0x880004bb64282fb01a3a2500ddf1f4bb5ad4b64a", "0x29a079bdbc6d4d122178fbe01558e5df2d008523"]
多說一句,我們此時去看看 keystore 目錄,多出了兩個文件,也就是我們剛才創(chuàng)建的兩個賬戶密鑰(丟了它,你就等于丟了幣)
. ├── UTC--2018-03-12T11-46-09.722094891Z--880004bb64282fb01a3a2500ddf1f4bb5ad4b64a └── UTC--2018-03-12T11-48-04.771328116Z--29a079bdbc6d4d122178fbe01558e5df2d008523
這時候讓我們看看賬戶里有沒有 ether,
> eth.getBalance(eth.accounts[0]) 0挖礦
一開始大家的賬戶里都沒有 ether,那么都需要通過挖礦來獲取。使用 miner.start() 命令開啟挖礦,默認挖出的 ether 是存到 eth.coinbase 賬戶中的,也就是第一個賬戶。
> eth.coinbase INFO [03-12|19:55:13] Etherbase automatically configured address=0x880004Bb64282fb01A3A2500DDF1F4bB5AD4b64A "0x880004bb64282fb01a3a2500ddf1f4bb5ad4b64a"
如果我們想要把挖到的礦存入其他賬戶,可以這樣:
> miner.setEtherbase(eth.accounts[1]) true
好了,我們開始挖吧~
> miner.start(1) > INFO [03-12|20:00:44] Commit new mining work number=1 txs=0 uncles=0 elapsed=513.188μs INFO [03-12|20:00:47] Generating DAG in progress epoch=0 percentage=0 elapsed=1.668s INFO [03-12|20:00:49] Generating DAG in progress epoch=0 percentage=1 elapsed=3.368s
等到 percentage 達到100就能挖出來了,請耐心等待~
INFO [03-12|20:04:15] Successfully sealed new block number=4 hash=81db99…4db568 INFO [03-12|20:04:15]
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/24058.html
摘要:和比特幣協(xié)議有所不同的是,以太坊的設(shè)計十分靈活,極具適應(yīng)性。超級賬本區(qū)塊鏈的商業(yè)應(yīng)用超級賬本超級賬本是基金會下的眾多項目中的一個。證書頒發(fā)機構(gòu)負責簽發(fā)撤 showImg(https://segmentfault.com/img/bV2ge9?w=900&h=385); 從比特幣開始 一個故事告訴你比特幣的原理及運作機制 這篇文章的定位會比較科普,盡量用類比的方法將比特幣的基本原理講出來...
摘要:本文所搭建的環(huán)境是在上的開發(fā)環(huán)境,其他操作系統(tǒng)上與此非常相似,依然有參考價值。作為一枚區(qū)塊鏈開發(fā)工程師,本地的開發(fā)環(huán)境是必不可少的。因為我們是私有鏈,所以可以寫的大一些,方便開發(fā)測試。 本文所搭建的環(huán)境是在 Mac 上的開發(fā)環(huán)境,其他操作系統(tǒng)上與此非常相似,依然有參考價值。 作為一枚區(qū)塊鏈開發(fā)工程師,本地的開發(fā)環(huán)境是必不可少的。我們首先看看需要哪些工具: go-ethereum so...
摘要:以太坊是什么以太坊是一個建立在區(qū)塊鏈技術(shù)之上,去中心化應(yīng)用平臺。運行環(huán)境以太坊虛擬機是以太坊中智能合約的運行環(huán)境。是由以太坊客戶端提供的是典型的開發(fā)以太坊時使用的客戶端,基于語言開發(fā)。 本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)原文鏈接:以太坊是什么 - 以太坊開發(fā)入門指南原文已更新,請讀者前往原文閱讀 很多同學(xué)已經(jīng)躍躍欲試投入到區(qū)塊鏈開發(fā)隊伍當中來,可是又感覺無從下手,本文將基于以太坊平臺,以通俗...
摘要:再也不用傻乎乎找人開發(fā)以太坊錢包了,直接拿去用吧再也不用擔心私鑰會被上傳到別人的服務(wù)器上。功能夠全面吧,尤其是最后一個功能支持以太坊官方測試網(wǎng)絡(luò)及及本地測試網(wǎng)絡(luò),估計是開發(fā)者的最愛,做為開發(fā)者的我,懂你們的痛可以獲取到免費的以太幣用于測試。 你是否和我前段時間一樣,苦苦的尋找一款好用的開源以太坊錢包,你會發(fā)現(xiàn)可用都很少,因為很多錢包說開源,僅僅是開源部分代碼,現(xiàn)在不需要再找了, 登鏈錢...
摘要:原文地址石匠的為了測試以太坊智能合約,最方便的是在本地搭建一個以太坊私有鏈。網(wǎng)絡(luò)在連接到其他節(jié)點的時候會用到,以太坊公網(wǎng)的網(wǎng)絡(luò)是,為了不與公有鏈網(wǎng)絡(luò)沖突,運行私有鏈節(jié)點的時候要指定自己的網(wǎng)絡(luò)。當設(shè)置為表示使用發(fā)布該鏈。 原文地址: 石匠的blog 為了測試以太坊智能合約,最方便的是在本地搭建一個以太坊私有鏈。在mac上搭建環(huán)境主要需要以下步驟。 geth安裝 geth是go-ether...
閱讀 3960·2021-09-22 10:02
閱讀 3377·2019-08-30 15:52
閱讀 3071·2019-08-30 12:51
閱讀 769·2019-08-30 11:08
閱讀 2072·2019-08-29 15:18
閱讀 3115·2019-08-29 12:13
閱讀 3605·2019-08-29 11:29
閱讀 1882·2019-08-29 11:13