區(qū)塊鏈(一)windows 以太坊私有鏈搭建并轉賬

環(huán)境win10,*64?

所有操作都在D:\work\geth里進行

以太坊客戶端會在C:\Users\Administrator\AppData下生成ethash的文件夾用來存放運行時信息枷餐。etherum-wallet在C:\Users\Administrator\AppData\Roaming里生成臨時文件夾etherum wallet,保存信息赁遗,初始化錢包需要刪除

廢話不多說了添坊,趟過了很多坑,開始以太坊私有鏈搭建。

一.geth,mist 客戶端下載

? ? ?1.這里我給大家介紹下胁后,以太坊客戶端讯泣,以太坊客戶端主要分成兩類衅枫。一個是后臺命令行客戶端嫁艇,如:geth(go語言),parity(Rust語言),他們是一個與以太坊網絡交互的命令行客戶端。

其余的命令行客戶還有?ethereumjs-lib(javascript),pyethapp(python),ruby-ethereum(ruby) ....主要 geth 使用的比較普遍弦撩,這里我就使用geth作為命令行客戶端步咪。

? ? 2.mist 是屬于可視化錢包,這么說吧益楼,你在geth 客戶端中生成的用戶猾漫,以太坊幣數量可以通過mist 錢包可視化展示。當然mist 不只有這些簡單的功能感凤,最重要的是能部署智能合約悯周,發(fā)布,調用陪竿。其他還有很多輕錢包队橙,如 lightWallet,metamask...

? ?下面是geth和mist下載地址,這里我使用的是windows系統(tǒng)安裝萨惑。

https://pan.baidu.com/s/1SksXj4siKj2OgX2Dn4TF7A? ?密碼:4sm6

Geth : 版本:1.8.12 (當時最新版)

Mist :0.11.1

安裝完geth,可以打開命令行工具:


下載地址:

二.創(chuàng)建以太坊初始區(qū)塊文件?genesis.json

{

? "config": {

? ? "chainId": 101,

? ? "homesteadBlock": 0,

? ? "eip155Block": 0,

? ? "eip158Block": 0

? },

? "alloc": {},

? "coinbase": "0x0000000000000000000000000000000000000000",

? "difficulty": "0x400",

? "extraData": "",

? "gasLimit": "0xffffffff",

? "nonce": "0x0000000000000042",

? "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",

? "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",

? "timestamp": "0x00"

}

chainId : 以太坊區(qū)塊鏈網絡Id,ethereum主鏈是1仇矾,私有鏈只用不要與主鏈沖突即可庸蔼。此時設置的chainId可以和啟動時指定的networdid不一致,以啟動時的為主

alloc : 預留賬戶贮匕,一般留空姐仅,如下

??"alloc":{

???"0x0000000000000000000000000000000000000001":{"balance":"121312321"},

???"0x0000000000000000000000000000000000000002":{"balance":"121312321"},

??}

Coinbase: 礦工賬戶

Difficulty: 挖礦難度,0x400刻盐,這個是簡單掏膏。

extraData:相當于備注

gasLimit:最小消耗gas

nonce :?64位隨機數,用于挖礦敦锌,注意他和mixhash的設置需要滿足以太坊黃皮書中的要求

parentHash : 上一個區(qū)塊的Hash值馒疹,因為是創(chuàng)世塊,石頭里蹦出來的乙墙,沒有在它前面的颖变,所以是0

Timestamp : 時間戳

三.初始化區(qū)塊節(jié)點

geth --datadir data0 init genesis.json

data0 是當前文件夾存儲節(jié)點數據,位于D:\work\geth\下听想,可以自動創(chuàng)建

出現如下內容就成功了

Successfully wrote genesis state? ? ? ? database=lightchaindatahash=84e71d…97246e

初始化成功后腥刹,會在數據目錄{dataDir} (d:\work\geth\data0)中生成?geth?和?keystore?(存儲加密后的賬戶信息)兩個文件夾.


三、啟動私有鏈節(jié)點

geth --identity "TestNode1" --datadir "data0" --rpc --rpcapi "db,eth,net,web3" --rpcaddr "127.0.0.1" --rpcport "8486" --port "30304" --networkid "29382" console

選擇web3接口連接本地私鏈時汉买,需要在啟動私鏈時添加如下參數? --rpccorsdomain "*" 衔峰,不然鏈接不上。如下:

geth --identity "TestNode1" --datadir "data0" --rpc --rpcapi "db,eth,net,web3" --rpcaddr "127.0.0.1" --rpccorsdomain "*" --rpcport "8486" --port "30304" --networkid "29382" console

使用命令 geth -h 可以查看geth 相關的幫助文檔。這里我說幾個常用的屬性垫卤。

?   --Identity : 節(jié)點身份標識威彰,起個名字

?   --datadir : 指定節(jié)點存在位置,“data0”

?   --rpc : 啟用http-rpc服務器

?   --rpcapi : 基于http-rpc提供的api接口葫男。eth,net,web3,db...

  ? --rpcaddr : http-rpc服務器接口地址:默認“127.0.0.1”

?   --rpcport : http-rpc 端口(多節(jié)點時抱冷,不要重復)

?   --port : 節(jié)點端口號(多節(jié)點時,不要重復)

?   --networkid : 網絡標識符 隨便指定一個id(確保多節(jié)點是統(tǒng)一網絡梢褐,保持一致)

? ? 下圖表示啟動成功旺遮,進入geth命令行客戶端:

注意:如果想將Ubuntu作為永久區(qū)塊鏈節(jié)點使用,當使用nohup命令時盈咳,Geth啟動參數console必須去掉耿眉,否則Geth會自動停止。

啟動完成之后進入控制臺鱼响,這是一個交互式的 JavaScript 執(zhí)行環(huán)境鸣剪,在這里面可以執(zhí)行 JavaScript 代碼,其中?>?是命令提示符丈积。在這個環(huán)境里也內置了一些用來操作以太坊的 JavaScript 對象筐骇,可以直接使用這些對象。這些對象主要包括:

eth:包含一些跟操作區(qū)塊鏈相關的方法江滨;

net:包含一些查看p2p網絡狀態(tài)的方法铛纬;

admin:包含一些與管理節(jié)點相關的方法;

miner:包含啟動&停止挖礦的一些方法唬滑;

personal:主要包含一些管理賬戶的方法告唆;

txpool:包含一些查看交易內存池的方法;

web3:包含了以上對象晶密,還包含一些單位換算的方法擒悬。

>eth.accounts

[]

>

創(chuàng)建賬戶1:

> personal.newAccount("123456")

"0x1078f82b17790664b3d931b91eb1f17ec109df09"

創(chuàng)建賬戶2:

> personal.newAccount("654321")

"0x1be3d41d02408d11e13eb5191520f3b2fa002dd1"

>

3、查看賬戶余額

> eth.getBalance(eth.accounts[0])


0

> eth.getBalance(eth.accounts[1])

0

>


查詢余額有多種方式稻艰,可以通過創(chuàng)建時的16進制碼懂牧,也可以通過賬戶下標查詢,下標默認從0開始尊勿。

啟動&停止挖礦

> miner.start(1)

其中 start 的參數表示挖礦使用的線程數归苍。第一次啟動挖礦會先生成挖礦所需的 DAG 文件,這個過程有點慢运怖,等進度達到 100% 后拼弃,就會開始挖礦,此時屏幕會被挖礦信息刷屏摇展。實際你看到的挖礦速度很快吻氧,這是因為我們已經在初始化創(chuàng)世區(qū)塊時配置為:"nonce": "0x400"。 “0x400”難度能讓你在私有測試網鏈上快速挖以太幣。

提示

挖礦時必然有礦工賬戶盯孙,而系統(tǒng)默認使用創(chuàng)建的第一個賬號鲁森。

停止挖礦

> miner.stop()

挖到一個區(qū)塊會獎勵n個以太幣,挖礦所得的獎勵會進入礦工的賬戶振惰,這個賬戶叫做 coinbase歌溉,默認情況下 coinbase 是本地賬戶中的第一個賬戶,可以通過 miner.setEtherbase() 將其他賬戶設置成 coinbase骑晶。只要是能產生區(qū)塊痛垛,就有獎勵,即使區(qū)塊中沒有任何有用信息桶蛔。

交易

假如0賬戶向1賬戶轉賬匙头,需要先把0賬戶鎖定,然后才能進行交易

> personal.unlockAccount(eth.accounts[0])

Unlock account0x6594cc2f72908c0fea54d5c9dd297ce68f735411

Passphrase:

true

>


轉賬 賬戶0 –> 賬戶1

> amount = web3.toWei(5,'ether')"

5000000000000000000"

> eth.sendTransaction({from:eth.accounts[0],to:eth.accounts[1],value:amount})

INFO [01-18|17:56:14] Submitted transaction? ? ? ? ? ? ? ? ? ? fullhash=0x065c698cceaf996ab9ab06c6eddc8b035704defbcff0d65227d32c06a5b17637recipient=0x4BD9F7b3c365D35C50757AF4CC7Bdb1307A083C0"0x065c698cceaf996ab9ab06c6eddc8b035704defbcff0d65227d32c06a5b17637

>

此時如果沒有挖礦仔雷,用?txpool.status?命令可以看到本地交易池中有一個待確認的交易蹂析,可以使用?eth.getBlock("pending", true).transactions?查看當前待確認交易。

> txpool.status

{

? pending: 1,

? queued: 0

}

查交易和區(qū)塊

> eth.blockNumber

200

通過交易 Hash 查看交易(Hash 值包含在上面交易返回值中):

>eth.getTransaction("0x65a8278d571d7cf3f2ca36ce721900d61e9d6eadd1ed5f24f39b646c2b194427")

{

? blockHash: "0x0101b5f9e9c50ee45156f0631df18a97176aef5215bde40b3e167195d367ed80",

? blockNumber: 342,

? from: "0x16671cdabbc9b3f0f1b31380d972dcd9725f7d8a",

? gas: 90000,

? gasPrice: 18000000000,

? hash: "0x65a8278d571d7cf3f2ca36ce721900d61e9d6eadd1ed5f24f39b646c2b194427",

? input: "0x",

? nonce: 1,

? r: "0x52b7fce530ebd67527d4fe684cb3b5a4b96909154aeedcc5f371ab27e9e7f1ba",

? s: "0x141268e8fef639b79773f6ab7fb778b958be77bd05944f305dc4f1ec68f21962",

? to: "0x4bd9f7b3c365d35c50757af4cc7bdb1307a083c0",

? transactionIndex: 0,

? v: "0x823",

? value: 5000000000000000000

}

>

通過區(qū)塊號查看區(qū)塊:

> eth.getBlock(0)

{

? difficulty: 131072,

? extraData: "0x6d6f7475692d32",

? gasLimit: 4294967295,

? gasUsed: 0,

? hash: "0x5117726df3040cb5cbd6e8d59cdaacaaa1cd8df4a20072d0e8242e96ea5c893f",

? logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",

? miner: "0x0000000000000000000000000000000000000000",

? mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",

? nonce: "0x0000000000000042",

? number: 0,

? parentHash: "0x0000000000000000000000000000000000000000000000000000000000000000",

? receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",

? sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",

? size: 515,

? stateRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",

? timestamp: 0,

? totalDifficulty: 131072,

? transactions: [],

? transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",

? uncles: []

}

>


連接遠程控制臺

geth attach http://127.0.0.1:8486


==================================================

過創(chuàng)始塊預分配賬戶余額

按照上面的步驟將第一節(jié)點啟動后碟婆,創(chuàng)建一個賬戶电抚,復制地址

編輯genesis.json,在alloc段竖共,增加如下內容:

? ? "alloc": {

? ? ? ? "0x81e71d34e8a9e4382c36fd90c3f234549106addd": { "balance": "20000000000000000000" }

? ? }

這里的地址就是剛才創(chuàng)建的地址喻频,后面的balance就是你想預分配的余額

然后將數據目錄下的geth目錄刪掉,重新創(chuàng)建創(chuàng)始塊(keystore目錄不要動)

rm -rf /data/testchain/geth

然后再重新執(zhí)行geth init創(chuàng)建創(chuàng)始塊的命令肘迎,然后再啟動geth,就可以在console中查看到賬戶被預分配的余額了

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末锻煌,一起剝皮案震驚了整個濱河市妓布,隨后出現的幾起案子,更是在濱河造成了極大的恐慌宋梧,老刑警劉巖匣沼,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異捂龄,居然都是意外死亡释涛,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門倦沧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來唇撬,“玉大人,你說我怎么就攤上這事展融〗讶希” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長扑浸。 經常有香客問我烧给,道長,這世上最難降的妖魔是什么喝噪? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任础嫡,我火速辦了婚禮,結果婚禮上酝惧,老公的妹妹穿的比我還像新娘榴鼎。我一直安慰自己,他們只是感情好系奉,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布檬贰。 她就那樣靜靜地躺著,像睡著了一般缺亮。 火紅的嫁衣襯著肌膚如雪翁涤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天萌踱,我揣著相機與錄音葵礼,去河邊找鬼。 笑死并鸵,一個胖子當著我的面吹牛揭蜒,可吹牛的內容都是我干的。 我是一名探鬼主播珍特,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼缅糟,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了弯汰?” 一聲冷哼從身側響起艰山,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎咏闪,沒想到半個月后曙搬,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡鸽嫂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年纵装,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片据某。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡橡娄,死狀恐怖,靈堂內的尸體忽然破棺而出癣籽,到底是詐尸還是另有隱情瀑踢,我是刑警寧澤扳还,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站橱夭,受9級特大地震影響氨距,放射性物質發(fā)生泄漏。R本人自食惡果不足惜棘劣,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一俏让、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧茬暇,春花似錦首昔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至巧骚,卻和暖如春赊颠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劈彪。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工竣蹦, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沧奴。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓痘括,卻偏偏與公主長得像,于是被迫代替她去往敵國和親滔吠。 傳聞我的和親對象是個殘疾皇子纲菌,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345