📜 [專欄新文章] TEM 區塊鏈基礎教育第三階段 — 跨出工程師只會寫 Code 的既有框架
✍️ Phini Yang
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
TEM 區塊鏈基礎教育第三階段 — 跨出工程師只會寫 Code 的既有框架
本課程著重在進入區塊鏈產業所需具備的基礎知識。
區塊鏈技術是橫跨多領域所組成,並又接著在各領域知識的基礎上創新。從網路結構的外觀來看,系統以眾多節點以點對點架構組成,相異於主流日常生活使用網路服務的主從式架構。節點間對資料取得共識的機制也須追溯到分散式系統的研究。
在以太坊以來,客製化虛擬機以進行運算也成顯學,這塊又屬於編譯器的領域知識。不論在共識層或應用層,系統倚賴密碼學的工具。最後利用區塊鏈簿記上的資產進行獎勵或懲罰來讓系統參與者作出行動,需要經濟學上的工具。
即使在五年之前進入區塊鏈圈,要能夠一次把這所有的領域接觸過也非容易。這次課程取得在各自領域專精的講者,把每個領域重要的概念提過,並點出與區塊鏈關聯的重點。
目標並非讓學習者能夠完全掌握所有的領域,而是
降低日後自行學習的障礙,知道可以從哪裡開始看
知道哪些領域有學習者自己領域能夠切入合作的缺口
知道各種領域的瓶頸及前沿研究是什麼。
課程的安排除了前述眾領域的介紹,最後有一門「客戶端原始碼分析」,全節點便是整個抽象共識機制的具體軟體實作,有了前面的基礎,看到程式碼會比較知道背後設計的原因。
為什麼從以太坊開始學?
以太坊鏈上的 Dapp ,不論是在數量或是應用的範圍上,皆遙遙領先其他主鏈。各大主流區塊鏈應用的衍生,也是以以太坊為基礎發展而成。 以太坊目前仍是區塊鏈中最具開源文化的生態系之一,技術支援也是所有公鏈中最完整的,有著最豐富的研究者社群與概念創新。
課程時數與費用
課程將分成三階段,每階段授課 12 小時,形式包含講課與實作。
每一階段 12 小時收費 $4,800 元,早鳥票 $3,600,三人團報價 $3,000/1 人。
課程人數最多 30 人為主,最低開班人數 10 人。
🎁 立馬去購票 🎁
https://www.accupass.com/event/1911150750032715966110
❓有任何問題,請聯繫 Phini Yang (Mail)
以下為每堂課程詳細介紹,以供學員理解:
1. 經濟學原理 — 賽局理論/供需 By 梁智程, 以太坊基金會
為什麼要學習這項課程?
區塊鏈無論是底層協議,或是去中心化應用,系統經常需要設計誘因,並假設系統的多數參與者會依據誘因,做出對自己最有利的行動,利用那樣的行動維持系統運作。
要討論、分析、設計誘因,經濟學上已有累積已久的語言與工具。因此我們常會在區塊鏈的文章中看到從古典的供給與需求[1]、共有財的悲劇[2] 、或是較現代的賽局理論、機制設計、拍賣等術語。
這些觀念可能對無經濟學背景的開發者較難掌握。我會試圖在有限時間之內,介紹主要常用的經濟學概念,並點出有運用到這些概念的相關區塊鏈文獻。我們也會介紹到因為區塊鏈特殊的環境,所產生新的機制設計的挑戰以及機會。
這項技術可運用在哪?
要設計區塊鏈相關系統,通常需要理解經濟學相關知識。
課程大綱
1⃣ 經濟學原理
- 供給與需求
- 外部性與公共財
- 區塊鏈範例:區塊鏈運算資源
2⃣ 賽局
基本定義:玩家、報酬、策略、均衡
非合作賽局 vs 合作賽局
3⃣ 機制設計
- VCG 最佳機制設計
- 區塊鏈範例
第二價拍賣的手續費 [3]
賄賂攻擊 [4]、反機制 [5] 與全知識證明 [6]
- 激進市場範例
平方投票
2. 虛擬機 EVM By 戴宏穎 (海帶), Second State
為什麼要學習這項課程?
虛擬機就像是肝臟,雖然是人體中沈默的器官,但沒有這個元件,整個系統就會失去作用。
對於使用者而言,不論是在 Ethereum 上轉 Ether 、部署合約、或者呼叫合約,基本上都不會注意到有虛擬機的存在。可這個無感的存在卻是合約能夠執行的核心關鍵。如果今天沒有虛擬機,那 Ethereum 就無法撰寫 smart contract 、無法執行 DApp (迷戀貓、去中心化交易所等應用)。
這項技術可運用在哪?
除了是設計有執行合約能力的區塊鏈系統中必備的元件外,理解虛擬機也能幫助我們在裡頭進行效能的最佳化與增加新的特殊功能(產生隨機數、進行 hash 運算等)。
課程大綱
1⃣ 深入淺出 EVM
- 虛擬機概論
- EVM 核心元件
- 理解 EVM 內部的運作過程
2⃣ 實作
- 增加一個新的 opcode magic
- 增加產生隨機數的 opcode rand (EVM 的隨機該怎麼做)
3⃣ Eth 2.0
- Ewasm Virtual Machine
3. 共識機制—PBFT/PoS/Casper FFG By 邱駿, UnityChain
為什麼要學習這項課程?
PBFT(Practical Byzantine Fault Tolerance)誕生至今已逾 20 年。它的發明源於分散式系統中一個著名的共識難題:拜占庭將軍問題(Byzantine Generals Problem)。PBFT 並不是一個針對全開放環境的共識協定 — 事實上在區塊鏈出現之前,並未出現任何一個針對開放環境的拜占庭容錯共識。區塊鏈的橫空出世啟發了研究人員再度審視 PBFT 這個經典。
PBFT 具有一些與區塊鏈截然不同的特性,這提供了改進區塊鏈一些有用的思路,例如以PBFT為基礎建立的權益證明(Proof-of-stake)模型。儘管在區塊鏈蓬勃發展的今日,PBFT這個經典仍然蘊含許多值得研究人員反覆推敲的巧思,其後續也衍生出非常多新協定,例如 Tendermint / HotStuff / Harmony FBFT 等等。
以太坊對權益證明(Proof-of-Stake, PoS)的研究最早可追朔至 2014 年。從此之後,以太坊研究員們便一直朝「實現基於 PoS 的共識協定」此一目標前進。PoS 共識的設計是一個跨領域且相當複雜的問題,其包含計算機科學 / 經濟學 / 密碼學等面向。以太坊擁有區塊鏈生態系中最跨領域的團隊,對 PoS 的研究可以說是相當透徹。
課程大綱
1⃣ 什麼是共識?
- 什麼是狀態機?
- 為什麼需要共識?
- 為什麼共識這麼難?
- 正確的共識:安全性(Safety)與活躍性(Liveness)
- 共識一定可以達成嗎?
2⃣ PBFT 共識協定
- 協定概論
- 安全性與活躍性分析
- 特性分析
3⃣ PoS 共識協定
- 什麼是砍押金/砍押金條件?
- PBFT 最小砍押金條件
- 為什麼 PoS 這麼難設計?
4⃣ Casper FFG
- 協定
- 特性分析
- 改進 PBFT
- 與 Eth 2.0 整合
4. 密碼學原理 — 橢圓曲線/零知識證明 By 吳偉誠 (Kimi), UnityChain
為什麼要學習這項課程?
隱私在現今世界越來越受重視,但是區塊鏈上任何的交易都是公開透明的,要如何在使用區塊鏈的同時又享有隱私,零知識證明是目前最好的解決方案。
這項技術可運用在哪?
零知識證明除了使用在隱私外,也能有效率的驗證資料,進而提高交易速度。
課程大綱
1⃣ 橢圓曲線簡介
2⃣ Shamir’s Secret Sharing 介紹與應用
3⃣ 零知識證明
- 零知識證明簡介
- zk-SNARKs
- 零知識技術的應用與比較
4⃣ 手把手實作
- circom 語法及指令
5. 點對點 p2p 系統 By 賈脈瑄, 以太坊基金會
為什麼要學習這項課程?
區塊鏈本身基於點對點(Peer-to-Peer, 簡稱 P2P)網路。大家都知道共識層的重要,但常常沒意識到網路層的安全也很重要。
P2P 網路的術語及概念本身也很分散,經常散落在網路各處難以系統化的學習。不同的使用情景造就了不同的設計,近年區塊鏈興起,也帶起了和區塊鏈有關的 P2P 系統研究。這門課會帶過 P2P 系統中常用及重要的設計與理由,並介紹區塊鏈系統們怎麼應用這項技術。
這項技術可運用在哪?
實作去中心化網路,譬如區塊鏈網路。不同區塊鏈可以設計特化且有效率的 P2P network。
課程大綱
1⃣ P2P networking 基礎
- 歷史背景
- Overlay
- Requirements for p2p networks
- Unstructured networks
- Structured networks: DHT
- Gossiping
2⃣ 區塊鏈的 P2P networking
- Difference from the classical p2p networks
- Cases study
・Ethereum or Bitcoin
・Ethereum 2.0
- Library: libp2p
6. 客戶端(Geth)原始碼分析 By Miya Chen, AMIS
為什麼要學習這項課程?
Ethereum 擁有非常活躍的開發生態系,以 go-ethereum 為例,透過分析原始碼更加了解 Ethereum 協議運作過程。
這項技術可運用在哪?
根據自身需求客製化模組邏輯,例如:修改 miner 打包 transaction 的順序。
新增 RPC API,例如:subscribe API。
記錄額外的 blockchain 資料,例如:每一個 block 其所有 account balance 和 storage 的差值。
課程大綱
1⃣ Geth 架構介紹
2⃣ 理解 tx pool 運作過程
3⃣ Event subscription 的實作
4⃣ 手把手實作: 客製化 tx pool
課程時數與費用
課程將分成三階段,每階段授課 12 小時,形式包含講課與實作。
每一階段 12 小時收費 $4,800 元,早鳥票 $3,600,三人團報價 $3,000/1 人。
課程人數最多 30 人為主,最低開班人數 10 人。
🎁 立馬去購票 🎁
https://www.accupass.com/event/1911150750032715966110
❓有任何問題,請聯繫 Phini Yang (Mail)
TEM 區塊鏈基礎教育第三階段 — 跨出工程師只會寫 Code 的既有框架 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
「geth指令」的推薦目錄:
- 關於geth指令 在 Taipei Ethereum Meetup Facebook 的精選貼文
- 關於geth指令 在 Taipei Ethereum Meetup Facebook 的最讚貼文
- 關於geth指令 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於geth指令 在 [閒聊] 15分鐘建立私人區塊鏈- 看板DigiCurrency 的評價
- 關於geth指令 在 ArunKuo/geth_poa_tutorial: Geth PoA私有鏈架設筆記 - GitHub 的評價
- 關於geth指令 在 Taipei Ethereum Meetup | [問題] 關於Geth同步Ropsten 的評價
- 關於geth指令 在 區塊鏈淺談7 - 搭建乙太坊私有鏈測試 - 麻吉卡的部落格 的評價
- 關於geth指令 在 Geth教學· twilighthook/GethAndSolidity Wiki · GitHub 的評價
- 關於geth指令 在 [Coin]如何在Pi 4 運行Ethereum 節點教學 - Mo PTT 鄉公所 的評價
- 關於geth指令 在 geth 區塊鏈創世(1) 的評價
geth指令 在 Taipei Ethereum Meetup Facebook 的最讚貼文
📜 [專欄新文章] 參加 Crosslink 2019 Taiwan 一探究竟那些不可錯過的以太坊最新發展 (第二天議程)
✍️ Phini Yang
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
解析以太坊上的安全狀態通道 (A Secure State Channels Framework for Ethereum)— Liam Horne, Co-founder of L4 Ventures & ETHGlobal
#Intermediate
擴展性 Scalability 一直是近年以太坊生態系中重點任務。第二層協定 Layer 2採取的解決方向是用已有容量來處理更多交易,並不是增加以太坊本身容量,而是應用程式流量優化與用戶操作流程簡化等方式達到目的。它不會對基層協議做出任何更改,僅使用智能合約與鏈下應用程式交互。
「狀態通道 State Channel」則是第二層協議的其中之一解法,是一種透過鏈下交易與更新狀態的技術,在重複支付或遊戲加速兩項表現優異。在 L4 Ventures 中,開發人員可透過通用模塊化來快速建構狀態通道。此演講將帶你了解 State Channel 未來整體佈局。
延伸閱讀:Counterfactual: Generalized State Channels on Ethereum By Liam Horne Layer 2: From Payment to Generalized State Channel By 陳品
如何打造一般化的 Layer2 應用服務 (How to Build Generalized Application on Layers2)— Yuriko Nishijima, Developer & Researcher of Cryptoeconomics Lab
#Intermediate
「電漿網路 Plasma」是第二層協議的另一個解法,它創建附加在以太坊主鏈上的子鏈,並運用此技術實現狀態通道效果,特別在支付應用上見長。
Plasma 是 2017 年 Vitalik 跟 Joseph Poon (閃電網路提案人之一) 提出的方案,並於 2018 年有爆炸性成長。Cryptoeconomics Lab 在 Plasma 深耕已久,也正在實作這項協定,透過演講你會瞭解 Plasma 擴容方案將如何實現。
掌控你的私鑰與隱私 (Own Your Private Keys and Privacy) — Hankuan Yu, Head of Engineering & Hank Chiu of Engineering of HTC EXODUS
#Beginner
在區塊鏈世界中,私鑰就是一切。HTC Exodus 是全世界第一款使用硬體保護私鑰的區塊鏈手機,從使用者最根本問題出發。今年 9月 HTC 更提出新一代私鑰還原架構 — SKR 2.0,進一步提升私鑰還原之安全性。接下來,在私鑰安全及區塊鏈隱私上,HTC 將有什麼進一步規劃呢?
模組化的點對點網路協議 (libp2p: Modular Peer-to-Peer Networking Stack) — Raùl Kripalani, libp2p Tech Lead of Protocol Labs
#Intermediate #Eth2.0 #Go Language
在區塊鏈專案的網路層協議之中,近年來最值得關注的為 libp2p project,它是 IPFS 網路協議之延伸,現已另成一獨立網路協議專案,並由 Protocol Labs 團隊來維護。在去中心化場景中,為了解決節點與節點之間訪問的各種問題,libp2p 提供了解決方案,並將節點能在多個網絡中共享,大家亦能受惠於此。況且 libp2p 更提供可讓開發者快速使用的模組化通用包,廣受區塊鏈開發團隊青睞。
延伸閱讀:Why libp2p? By Pierre KriegerUnderstanding IPFS in Depth(5/6): What is Libp2p? By Vasa
剖析以太坊 2.0 客戶端 (The anatomy of a basic Ethereum 2.0 client) — Adrian Manning, Co-founder of Sigma Prime
#Intermediate #Eth2.0 #Rust Language
Lighthouse 是 Sigma Prime 針對 Eth2.0 客戶端所開發的專案,選用新一代語言 Rust 來做開發。Sigma Prime 於早期就參與 Casper 研究跟實作,對 Eth 2.0 核心的共識機制相當熟捻,而共同創辦人 Adrian 更是網路安全跟密碼學的專家。
講者介紹:Adrian Manning, Co-Founder of Sigma Prime▪ PhD in Quantum Field Theory▪ Cyber/Cryptography expert
延伸閱讀:Casper FFG:以實現權益證明為目標的共識協定 By Juin
次世代的以太坊虛擬機 (eWASM VM — The next generation Ethereum Virtual Machine )— Hung-Ying Tai, VP of engineering of Second State
#Intermediate #Eth2.0 #Virtual Machine
以太坊為了迎接下一代的虛擬機 — eWASM VM (Ethereum Flavored WebAssembly Virtual Machine),正如火如荼地開發 Solidity 的 eWASM 後端銜接。「eWASM 虛擬機」顧名思義將不再採用現在黃皮書中的指令集 ,而是使用 EWASM 來取代。EWASM 將會強化以太坊虛擬機的效能與安全性,也可以相容更多工具鏈,可以做到用一般程式語言如 C / C++、Go、Rust 來寫合約。
延伸閱讀:https://github.com/ewasm/design/blob/master/rationale.md
Geth 上的新型 BFT 共識演算法 (New A New 2-Step BFT Consensus Algorithm in geth)— Tung-Wei Kuo, Assistant Professor of National Chengchi University
#Advanced #Academic
傳統的拜占庭容錯 BFT (Byzantine Fault Tolerance) 共識演算法需要三個步驟來完成共識。在這場演講中,Tung Wei 將提出一個兩步驟 TwoStepBFT 的優化算法,在容許錯誤節點下,亦同時保有安全及活性。
使用以太坊 Proof-of-Authority 聯盟鏈進行跨醫院的資料共享 (Ethereum PoA Consortium Chain to Support Inter-Hospital Data Sharing) — Kung Chen, Professor of National Chengchi University
#Intermediate #Academic
目前社會中尚缺乏一套完善的整合系統,可供民眾進行醫療資訊的授權與共享。若病歷能有效地共享與授權,將可強化醫療分級轉診服務等下一代醫療服務。偏偏這些醫療資訊牽涉民眾隱私權等敏感議題,國立政治大學陳恭教授將分享如何透過區塊鏈對資料授權能力,來提升使用者的資料自主權,達成有效進行交換醫療資訊的目標。
更多資訊請直接參考官網議程:https://crosslink.taipei/schedule/2019-10–20
參加 Crosslink 2019 Taiwan 一探究竟那些不可錯過的以太坊最新發展 (第二天議程) was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
geth指令 在 Taipei Ethereum Meetup Facebook 的最佳貼文
📜 [專欄新文章] 使用 ethdock 開發以太坊智能合約應用
✍️ Peter Lai
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
前言
相信不少人在開發以太坊智能合約的時候都跟我一樣
不想使用瀏覽器版本的編輯環境 Remix 作為開發環境
而是想使用本機的環境再加上自動測試腳本
那這時遇到最大的問題就是環境的架設
如何架設測試 VM 或是私有鏈(要依照熟悉的語言做選擇)
這邊我們介紹使用 docker 容器以及 ethdock 來開發以太坊智能合約應用
讓我們只需要一行指令就可以快速開啟必要的容器
ethdock 以 javascript 和 solidity 為主,如果不是使用這個為主要開發語言可以先左轉
ethdock
ethdock 的命名源自於 ethereum + docker
最初開發是因為平常在公司的電腦跟個人開發的電腦環境不同
這樣要建立兩邊的開發環境會花費不少時間
剛好平時有在使用 docker 所以就建立了 ethdock
讓我可以只要裝 docker 兩邊就有相同的開發環境
服務
ethdock 裡面主要有以下三個開發需要用到的服務
開發的時候需要 workspace 服務和測試鏈服務(testrpc 或是 geth)
workspace
建立開發的工作環境的容器,容器裝了 truffle 可以使用自動測試
testrpc
javascript 測試 VM,每筆交易可以快速回饋這樣減少很多開發時間
geth
建置測試的私有鏈,每筆交易要經過礦工的驗證並記錄,會多增加一些開發時間
開發智能合約
使用 ethdock 開發前要建置並運行容器
testrpc
docker-compose up -d workspace testrpc
進入 workspace 容器,並執行 bash
docker-compose exec workspace bash
調整 truffle.js,就可以使用命令列的方式進行測試以及部署
development: { host: ‘testrpc’, port: 8545, network_id: ‘*’}
truffle test
geth
docker-compose up -d workspace geth
進入 workspace 容器,並執行 bash
docker-compose exec workspace bash
調整 truffle.js 的網路位置,就可以使用命令列的方式進行測試以及部署
development: { from: ‘address’ host: ‘geth’, port: 8545, network_id: ‘*’}
truffle test
使用 geth 作為私有鏈時開發要注意設置 from
結論
ethdock 使用方式非常簡單
讓我們可以迅速在不同的電腦中建立起一樣的開發環境
就不用擔心建立開發環境的方法太複雜
或是不同電腦因為開發環境的關係而影響程式的運作
參考
docker docs
ethdock github
使用 ethdock 開發以太坊智能合約應用 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
geth指令 在 ArunKuo/geth_poa_tutorial: Geth PoA私有鏈架設筆記 - GitHub 的推薦與評價
輸入完指令後會要求輸入密碼,並要求再輸入一次密碼做確認。都輸入完之後就會產生一個以太坊的帳戶。 c:\>geth --datadir node account new INFO [03-25 ... ... <看更多>
geth指令 在 Taipei Ethereum Meetup | [問題] 關於Geth同步Ropsten 的推薦與評價
[問題] 關於Geth同步Ropsten 我的同步指令是$ geth --syncmode "light" --testnet 當我用$ eth.syncing... ... <看更多>
geth指令 在 [閒聊] 15分鐘建立私人區塊鏈- 看板DigiCurrency 的推薦與評價
圖文版:https://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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.20.181
※ 文章網址: https://www.ptt.cc/bbs/DigiCurrency/M.1535101336.A.8CE.html
※ 編輯: dodoshan (1.160.20.181), 08/24/2018 17:05:18
※ 編輯: dodoshan (1.160.20.181), 08/24/2018 17:11:16
... <看更多>