15分鐘建立私人區塊鏈 - 數位貨幣

Necoo avatar
By Necoo
at 2018-08-24T17:02

Table of Contents

圖文版:http://bit.ly/2MwWY7G
Line@:https://line.me/R/ti/p/%40mibinews
*非常建議各位閱讀圖文版,純文字很難懂...

大家也許還對節點如何挖礦運作、如何執行交易…等等,感到難以理解。身體力行也許是可以讓人最快理解的方式,就讓我們來試著建立一個私人以太坊,更進一步了解這個生態圈的運作方式

看完這篇文章你可以了解到以下幾點:
1) 如何建立一個私人的以太坊(建立於AWS linux)
2) 如何用挖礦賺取回報
3) 帳號之間如何進行匯款交易

*了解以上項目只需要花你15分鐘的時間*

第一步:登入 AWS 帳號,並啟動一台EC2 主機
重點1:選擇Ubuntu OS 作為安裝的 linux 版本

重點2:Instance Type 選擇至少 t2.medium 以上規格(相關文章指出此規格以上比較能讓以太坊正常運作,在這裡先不討論主機規格會對節點造成的影響)

重點3:設置正確的TCP port (節點之間預設互相Peering 的Port 是 30303,故要設定一port range 或單一port 皆可)

重點4:儲存好 key pair 並 launch instance


第二步:安裝以太坊節點
重點1:開啟你電腦裡的Terminal 軟體(中文是"終端機")並使用上一步驟產生的key pair 登入aws 主機(本登入步驟只適用Mac 使用者,如果你是Windows 使用者,建議使用PuTTY 軟體)
使用Terminal 進入存放key pair 的指令可用: cd
以我自己為例:cd /Users/ryanhu/Documents/Ethereum

重點2:安裝節點所需的相關軟體
輸入以下 4個指令

*此處安裝的是PPA(Personal Package Archive) 版本以太坊節點。有開發測試所需要的軟體,且預設不會與整個以太坊同步,可大大降低安裝時間*

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

輸入以下指令以產生一 Genesis.json 檔案(此檔案用於初始化節點)

$ sudo vim Genesis.json
複製貼上下方json 文字於 Genesis.json 裡並存檔(相關設定參數暫不討論,會再另起文章詳細說明,此時只需先記住此節點 chainId 設定是 885(你可變更為任意數字))

*複製好json 文字後可用 :i 指令(分號+i+enter)讓vim 模式變成編輯模式,此時再用ctrl + v 即可貼上*

*貼上後再用:wq 指令(分號+w+q+enter)存檔並離開vim 編輯模式*

{

"config": {

"chainId": 885,

"homesteadBlock": 0,

"eip155Block": 0,

"eip158Block": 0

},

"nonce": "0x0000000000000042",

"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",

"difficulty": "0x200",

"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",

"timestamp": "0x00",

"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",

"gasLimit": "0xffffffff",

"alloc": {

}

}
使用geth 指令及 Genesis.json 檔案,開始初始化節點

$ sudo geth init Genesis.json


第三步:開始測試節點
重點1:進入geth console 模式
如果此時你不是管理者身份,無法使用指令,會出現permission denied 的錯誤訊息,所以請先用以下指令切換成管理者身份

$ sudo -s
用geth console 指令進入節點的指令模式。nodiscover 表示不搜尋其它節點與不與其它節點溝通

$ geth --nodiscover console


重點2:替此節點新增第一個帳號
> personal.newAccount()
輸入此指令後,會被要求替此帳號設定密碼。密碼設定完成後,即會產生第一組的public address,也就是所謂的創始帳號



用此指令查看一下第一組address 裡有多少ether

> web3.fromWei(eth.getBalance(eth.accounts[0]), "ether")


雖然一開始創始帳號裡是沒有錢的,但是我們仍然還是有2種方式可以讓此帳號裡有ether:

在設定Genesis.json 時,指定一筆金額給創始帳號(之後的文章會詳細解說)
自己挖礦(本教學的其中一個目的,故我們一開始先不給創始帳號任何ether)
重點3:開始挖礦啦!
為了讓挖礦過程中的每個步驟都一目了然,我們先用以下指令離開指令模式

> exit
然後使用以下指令重新進入指令模式。此指令的用意在於讓geth 的每一步驟都輸出到 process.log 這個檔案裡

$ geth --nodiscover console 2>> process.log
這時侯再請打開另一個Terminal 視窗,然後同樣登入此aws instance,並輸入以下指令。此指令可讓你隨時查看最新的log

$ tail -f process.log


於指令視窗輸入以下指令,開始挖礦!

> miner.start()
此時可於log 視窗看出正在為創世區塊產生DAG(Directed Acyclic Graph 演算法,也就是以太坊目前所使用的按術)



等待幾分鐘後,節點就會開始進行挖礦



經過幾分鐘的挖礦,一但有區塊被挖取完畢,此時用指令再次查看帳號餘額會發現已經有ether 在內



挖礦測試完畢。此時可用以下指令讓節點停止挖礦

> miner.stop()
第四步:新增另一個節點,用於測試帳號之間的交易
重點1:重覆以上的第一步(登入 AWS 帳號,並啟動一台EC2 主機)及第二步(安裝以太坊節點)
*於第二步安裝節點時,Genesis.json 裡的 chain id 仍需指定為885。故於此教學,直接複製第一個節點的Genesis.json 的內容即可*



重點2:也在第2個節點裡創立一個新的帳號


重點3:讓此2節點互相關聯 (Peering)
可以分別在兩個節點視窗輸入以下指令,查看目前有哪些節點與自己Peering

> admin.peers
可以看得出來2個節點的結果均顯示為空,沒有任何的節點與之相關聯



開始關聯2個節點

用以下指令在 “第1個節點” 取得節點資料

> admin.nodeInfo.enode
*enode 指的就是 Ethereum node*



以我的例子來說,第1個節點的資料長這樣

“enode://ddbae8da7bbcc5002341e919d05a88707dc15ea13ed5638c1297d8c6f744bb2232f7e0900833f0f2646ee7a97db011af83e8df3203fadec550779813dcb3a102@[::]:30303?discport=0”

此時請打開 “第2個節點” 的視窗,並依照你自己的節點資料,輸入如下指令

> admin.addPeer("enode://ddbae8da7bbcc5002341e919d05a88707dc15ea13ed5638c1297d8c6f744bb2232f7e0900833f0f2646ee7a97db011af83e8df3203fadec550779813dcb3a102@123.456.789.888:30303?discport=0")
*把[::] 換成第1個節點的IP,port 用 30303。此處範例我的IP是123.456.789.888*

*此指令的用意,是要告訴第2個節點讓它去Peering 第1個節點*

*可以在aws instance 的頁面找到第1個節點的IP*



此時再分別去2個節點視窗輸入以下指令,可以看出目前2個節點已互相關聯(只需要作1次,讓Node 2 peering Node 1 即可)

> admin.peers
重點4:開始讓2個節點互相轉帳吧
目前只有第1個節點有ether 所以我們先打開節點1 的視窗,然後再次輸入以下指令確認一下ether 金額

> web3.fromWei(eth.getBalance(eth.coinbase), "ether")


輸入以下指令解鎖創始帳號 (需先輸入密碼解鎖帳號,否則無法轉帳)

> personal.unlockAccount(eth.coinbase)


輸入以下指令讓Node 1 的創始帳號轉帳400 ether 給Node 2 的創始帳號 (請更換成你自己Node 2的創始帳號)

> eth.sendTransaction({from: eth.coinbase, to: "0x504008e1d457B7DAa4F247F51e7Bcc1F209E017e", value: web3.toWei(400, "ether")})
忘了自己Node 2的創始帳號是什麼嗎?進到節點2 後,可以輸入以下指令查詢

> eth.coinbase
還記得我們剛才有開了個可以監看所有步驟的log 視窗嗎?打開它,你可以看到轉帳的指令有確實送出



但此時仍然尚未轉帳成功,可以到節點2 去查看ether 餘額,仍然是為0

為什麼呢?因為目前2個節點都沒有啟動礦工挖礦,所以交易轉帳不會被確認,節點2 自然也就收不到應該有的ether

再次用以下指令讓節點開始挖礦吧(此時不論用節點1 或節點2 啟動挖礦都能夠確認完成交易,但為了證明ether 是由節點1 轉帳過去,故我們仍然是由節點1 來進行挖礦)

> miner.start()


過一點時間後 (我大概等不到30秒) 再去查看節點2 的餘額

有!錢!了!

以上就是本次的教學文章,有任何問題歡迎提出批評指教,也請持續支持關注密幣電報 :)
Line@:https://line.me/R/ti/p/%40mibinews

--

All Comments

Rachel avatar
By Rachel
at 2018-08-27T18:46
推~~
不過你圖文版連結有問題
Anonymous avatar
By Anonymous
at 2018-08-31T14:40
Joe avatar
By Joe
at 2018-09-03T08:52
感謝版大~已經修正好了,原文標題過長哈哈
Linda avatar
By Linda
at 2018-09-05T15:40
本版也歡迎優文放BTC,ETH等加密貨幣打賞地址
Enid avatar
By Enid
at 2018-09-07T18:08
Elizabeth avatar
By Elizabeth
at 2018-09-08T14:06
推!
Ivy avatar
By Ivy
at 2018-09-12T05:35
Isla avatar
By Isla
at 2018-09-17T01:19
推推
Lily avatar
By Lily
at 2018-09-18T05:04
Charlotte avatar
By Charlotte
at 2018-09-20T03:13
推~
Zenobia avatar
By Zenobia
at 2018-09-24T21:51
推~
Megan avatar
By Megan
at 2018-09-27T14:24
Ida avatar
By Ida
at 2018-10-01T22:46
狂耶 私下測試網路懶人包
Brianna avatar
By Brianna
at 2018-10-03T16:46
推 這真的要看圖文
Christine avatar
By Christine
at 2018-10-08T02:43
進階模擬如何高gas引誘礦工優先處理進行ddos

亞洲首張加密貨幣信用卡 PandaGold卡即將

Madame avatar
By Madame
at 2018-08-24T16:26
亞洲首張加密貨幣信用卡 PandaGold卡即將上市 以熊貓為主元素的熊貓王國文創團隊,與擁有超過25年歷史的國際金融機構Cuallix合作 ,今天宣布發行PandaGold熊貓幣聯名信用卡與銀聯卡,不僅能在全球標有萬事達( Mastercard)與銀聯(UnionPay)標誌的商店,當作信用卡使用 ...

比特大陸推美元購礦機實名制

Emma avatar
By Emma
at 2018-08-24T10:06
今早收到比特大陸發的信,內文大意是說未來美元購買礦機需實名;人民幣未實名將有限購。 這是想要堆高礦機價格的意思嗎 小礦工拿到落後世代的鏟子不說,現在還搞這個。 我是聽說有個把人民幣洗出境外的方法是投資研發礦機, 礦場,然後挖到的幣再去國外交易所賣掉,不知道這次是不是要堵這種的,板上有卦嗎? - ...

你我都比自己想像中,還懂區塊鏈

Susan avatar
By Susan
at 2018-08-24T06:44
個人淺見,小弟原本也是唸設計, 自從去年入坑,先進入礦圈,後來進入幣圈 真的一年走過十年之感, 後來想說賊船都上了,好好學習吧, 就開始碰這輩子幾乎沒想過的程式設計 當然陣痛期還是有(到今天第三週的樣子) 最近開始組讀書會和幾個比較要好的朋友一起coding練習 但發現身邊女孩們總是有種怕怕的 但其實我 ...

區塊鏈電影 觀眾透過虛擬貨幣可改變結局

Connor avatar
By Connor
at 2018-08-23T16:43
區塊鏈電影 觀眾透過虛擬貨幣可改變結局 觀眾不再只是觀眾。台灣娛樂新創公司今天宣布將開拍亞洲首部區塊鏈電影「聖人大盜」 ,由香港藝人曾志偉領銜演出;未來影迷透過購買虛擬貨幣,就能成為電影的投資者,甚 至改變電影結局。 台灣娛樂新創公司SELFPICK今天在記者會宣布將於年底開拍亞洲首創區塊鏈概念電影 ...

BTC爆富不再,不挖Ulord你將錯過一個億!

Anonymous avatar
By Anonymous
at 2018-08-23T14:22
相信這裡很多人都錯過了比特幣的一波爆漲大行情而扼腕不已... 我們所熟知的幣圈大佬郭宏才、李笑來、趙東等,都是早期參與比特幣挖礦實現財富自 由的。現在加入比特幣挖礦,在全球算力增長到天文數字的情況下,靠挖比特幣實現財富 ,幾乎是不可能了。 但是,現在我們還有一次實現財富自由的機會!! 據統計,2017 ...