網上雖然有很多資料了马僻,但本文僅是作為學習筆記录语,況且自己也要敲一遍倍啥,就記錄自己在學習路上的點點滴滴吧。钦无。逗栽。
下載錢包
點擊鏈接,找到對應的錢包文件失暂,Mac就選Ethereum-Wallet-macosx-0-11-1.dmg
,這是官方的,不用考慮安全問題了鳄虱,下載安裝即可弟塞。
創(chuàng)世區(qū)塊文件
創(chuàng)建一個json
文件,內容如下:
{
"nonce": "0x0000000000000042",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x00",
"gasLimit": "0x8000000",
"difficulty": "0x400",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"coinbase": "0x3333333333333333333333333333333333333333",
"alloc": {
},
"config": {
"chainId": 666,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
}
}
參數(shù) | 描述 |
---|---|
nonce | 64位隨機數(shù) |
timestamp | 時間戳 |
parentHash | 上一個區(qū)塊的hash值拙已,創(chuàng)世區(qū)塊就是第一個决记,所以是0 |
extraData | 附加信息,我把它理解成備注 |
gasLimit | 代表用戶愿意花費在gas上的錢的最大值倍踪,并不是實際值系宫,這個在以前的文章有寫過 |
difficulty | 難度值,代表挖礦的難度 |
mixhash | 與隨機數(shù)nonce一起用于挖礦建车,具體參見“PoW(工作量證明)” |
coinbase | 礦工的賬號扩借,代表這個區(qū)塊是哪個礦工挖出來的 |
alloc | 用來預置賬號以及賬號的以太幣數(shù)量 |
chainId | 鏈的ID,networkid 參數(shù)需要與 chainId 的值一致缤至,可用來防止replay attack重發(fā)攻擊:惡意重復或拖延正確數(shù)據傳輸?shù)囊环N網絡攻擊手段 |
homesteadBlock | Homestead 硬分叉區(qū)塊高度 |
eip155Block | EIP 155 硬分叉高度 |
eip158Block | EIP 158 硬分叉高度 |
- Homestead是以太坊發(fā)展藍圖中的一個階段潮罪。第一階段是以太坊區(qū)塊鏈面世,代號為frontier,第二個階段即為當前階段嫉到,代號為Homestead(家園)沃暗,第三階段為Metropolis(大都會),大都會又細分為兩個小階段何恶,第一個是Byzantium(拜占庭)硬分叉(引入新型零知識證明算法以及pos權益證明共識算法)孽锥,第二個是Constantinople(君士坦丁堡)硬分叉(以太坊正式應用pow和pos混合鏈,解決拜占庭引發(fā)的問題)细层。最后一個階段代號Serenity(寧靜)惜辑,最終版本的以太坊穩(wěn)定運行。
- EIPs(Ethereum Improvement Proposals)今艺,是以太坊更新改善的一些方案韵丑,對應后面的數(shù)字就是以太坊github源碼issue的編號,其中EIP155主要內容是讓不同的鏈定義不同的chainId, 防止同一筆交易在不同的共有鏈上進行兩次交易虚缎,防止重放攻擊
初始化創(chuàng)世區(qū)塊
geth --datadir "/Users/apple/Desktop/ETH/" init Genesis.json
其中--datadir
是指定數(shù)據存放的目錄撵彻,/Users/apple/Desktop/ETH/
是我電腦上json文件
的路徑,Genesis.json
是上一步的創(chuàng)世區(qū)塊文件名
啟動私有鏈
geth --datadir "/Users/apple/Desktop/ETH/" --networkid 666 --identity "node" --port 30303 --rpc --rpcport 8545 --rpcapi "db,eth,eth,net,web3,admin" --rpccorsdomain "*" --nodiscover --verbosity 4 console
參數(shù) | 描述 |
---|---|
networkid | 與Genesis.json中的chainId一致 |
identity | 設置節(jié)點ID |
port | 節(jié)點端口实牡,默認是30303 |
rpc | 啟用 rpc 服務 |
rpcport | rpc 服務端口陌僵,默認是8545 |
rpcapi | rpc的api |
rpccorsdomain | “*”是允許通過任意域名訪問,相當于域名白名單 |
nodiscover | 關閉節(jié)點自動發(fā)現(xiàn) |
verbosity | 日志等級:0=silent, 1=error, 2=warn, 3=info, 4=debug, 5=detail (默認是3) |
console | 進入控制臺 |
如果設置的是默認值的話可以省略參數(shù)创坞,啟動成功會進入控制臺碗短,在控制臺下可以使用eth.getBlock(區(qū)塊號)
查看區(qū)塊信息等命令,以后可以通過geth console
命令再次進入控制臺题涨,這里也有個坑偎谁,默認用geth console
命令進入的是第一步我們安裝的以太坊錢包的控制臺,如果需要進入我們剛才創(chuàng)建的控制臺需要使用geth --datadir "/Users/apple/Desktop/ETH/" console
創(chuàng)建賬號
personal.newAccount("Steven")
創(chuàng)建的賬號密碼為Steven
查看信息
eth.accounts
查看賬號
eth.getBalance(eth.accounts[0])
查看第0個賬戶的余額纲堵,可以將eth.accounts[0]
進行傳值調用
eth.blockNumber
查看當前區(qū)塊總數(shù)
eth.getBlock(6)
通過區(qū)塊號查看區(qū)塊
eth.getTransaction("0xdc9d03b5f8798b4c29648fafb26b9bc0d03f141c876a182a6e4c32bfac64911d")
通過哈希值來查看交易巡雨,沒有交易會返回null
net.listening
查看是否在監(jiān)聽
net.peerCount
查看peer數(shù)量
admin.peers
查看peer信息
admin.nodeInfo
查看自己的網絡信息
發(fā)送交易
personal.unlockAccount(eth.accounts[0])
發(fā)送交易前要先解鎖,解鎖一段時間后也會自動再鎖上
eth.sendTransaction({from:address1,to:address2,value:amount})
address1給address2發(fā)送amount個以太坊
挖礦
miner.start()
開始挖礦
miner.stop()
停止挖礦
miner.setEtherbase(eth.accounts[1])
指定挖礦的獎勵給哪個賬戶席函,默認給第0個
miner.start(1);admin.sleepBlocks(1);miner.stop();
挖出一個區(qū)塊就停止挖礦
添加節(jié)點
admin.addPeer("enode://key@ip:port")
添加靜態(tài)節(jié)點可加快同步速度铐望,key/ip/port需要替換
還有個小坑不知道該怎么寫,網上也有解決辦法茂附,我記錄在另一篇文章里了正蛙。今天就到這,接下來開始智能合約了营曼。
上面是Mac節(jié)點乒验,現(xiàn)在更新下Windows節(jié)點(Win10的虛擬機)
下載錢包
點擊鏈接,找到對應的錢包文件溶推,這里我選的是Mist-win64-0-11-1.zip
,這是官方的徊件,不用考慮安全問題了奸攻,下載點擊Mist.exe
安裝即可。
為了方便使用geth虱痕,將其加入環(huán)境變量中
我的電腦右鍵屬性-左側高級系統(tǒng)設置-環(huán)境變量-Path-新建將geth的路徑粘貼進去睹耐,由于用戶不同,路徑不一樣部翘,我的是C:\Users\steven\AppData\Roaming\Mist\binaries\Geth\unpacked
復制json文件-初始化創(chuàng)世區(qū)塊-啟動私有鏈(cd到該路徑下執(zhí)行geth --datadir "./" console
)-添加節(jié)點
同mac硝训,注意替換路徑即可,添加節(jié)點成功會返回true,然后會自動同步數(shù)據新思,通過查詢窖梁,區(qū)塊數(shù)量一樣,這樣就創(chuàng)建了兩個節(jié)點的私鏈了,在兩個節(jié)點上創(chuàng)建賬號夹囚,挖礦纵刘,發(fā)送交易也都沒問題,相互會自動同步荸哟,就是虛擬機上挖礦比較慢假哎。
再次更新:由于終端的geth和客戶端的geth并不是一個,所以在終端用的沒問題鞍历,打開客戶端就連到主鏈上去了舵抹,走了很多彎路就不說了,直接說解決方法(Mac):
通過命令"/Applications/Ethereum Wallet.app/Contents/MacOS/Ethereum Wallet" --rpc /Users/apple/Desktop/ETH/geth.ipc
啟動客戶端即可劣砍,需要注意我 裝的是Ethereum Wallet
惧蛹,不是Mist
其中/Users/apple/Desktop/ETH/geth.ipc
這個是前文中我寫的私鏈的路徑,放個截圖慶祝一下:
Windows:
Mist-win64-0-11-1\Mist.exe --rpc \\.\pipe\geth.ipc
路徑終端會顯示刑枝, 只有一個路徑是geth.ipc