📜 [專欄新文章] 2019 台北以太坊社群回顧
✍️ Juin Chiu
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
很快地,2019 年過去了,台北以太坊社群(TEM)也滿 3 歲了,過去一年,TEM 完成了許多重大的里程碑:
舉辦台灣最大的區塊鏈技術研討會 Crosslink
主持台灣開源界最大的研討會 COSCUP 的區塊鏈議程
參加世界最大的區塊鏈技術研討會 DEVCON
Medium 專欄累積 30+ 篇優質文章
Youtube 頻道累積 50+ 個技術演講
在這篇文章中,我們首先來審視 2019 年以太坊取得重大進展的技術:以太坊2.0與零知識證明,接著再回顧 TEM 於 2019 的優質專欄文章。
*本文由 Juin Chiu 與 Chih-Cheng Liang 共同整理
以太坊重大進展
以太坊2.0的信標鏈
對一般大眾最重要最能吸收的事情大概是 Eth2.0 的信標鏈有測試網路了。透過儀表板網站 www.beaconcha.in 可以看見 Prysmatic Labs 團隊的測試網路的動態。細節很多,但本文就只談這張圖最上面有出現的東西。
在 Eth2.0 沒有挖礦和礦工了,取而代之的是抵押以太幣的驗證者(Validator)來成為資料的寫入者。因此也沒有「區塊時間」這個詞了,新協定以 12 秒為一個「時段」(Slot),信標鏈隨機分配驗證者在指定的時間點產出區塊。在 32 個時段的時間,稱為一個「時期」(Epoch),約 6.4 分鐘,信標鏈會處理驗證者的賞、罰、進、出。在儀表板的左上角可以看到 Epoch 與 Slot 的數字,代表距離最早最古老的區塊多久了。
要怎麼成為驗證者呢?首先要在以太坊 1.0 主網路的抵押合約上,送出一筆交易(在信標鏈測試網路則是送到 Goerli 測試網路)。這筆交易會註冊驗證者的公鑰,並且存入押金(在正式網路是 32 ETH ,測試網路則是 3.2 ETH)。送完之後就排隊等待信標鏈激活驗證者,驗證者就需要開始執行信標鏈分配的任務了。在畫面中間可以看到左邊是 27539 個活躍的驗證者,右邊則是有 4623 個排隊進入的。
在這種基於押金的網路,系統的威脅來自於攻擊者買通大量驗證者,送出矛盾訊息,致使於系統不同節點無法取得共識,鏈資料不可挽回的分叉為兩條。因此系統累積的總押金越多,代表攻擊者成本越高。畫面最右上角左邊即為總押金,右邊為平均一個驗證者的餘額。
假期間和親朋好友一起跑一個驗證者節點,是個活絡氣氛的好活動。要做到這件事,目前 Prysm 客戶端有最友善的介面,請點 連結。程式也用 Docker 包好了,免煩惱安裝。
也記得 Eth2.0 協定有 9 個團隊 用不同程式語言實作。例如:有 Python 語言的客戶端 Trinity ,以及 Rust 語言客戶端 Lighthouse。基本上不用擔心找不到自己喜歡的程式語言的實作。
零知識證明
2019 年,零知識證明的理論與應用也突飛猛進,Kimi Wu 剛好寫了一篇很棒的文獻調查。
前年底提出的 zk rollup,目前由 Matter Labs 在開發,Matter Labs更在上個月(2019/12)發表了 ZK Sync,解決了因為產生證明(proof)而延伸的延遲問題。
此外 Iden3 跟 ConsenSys 也有 zk rollup 的專案。在以太坊研究論壇有基於 zk rollup 的一個提案,是可以達到 匿名性的 zk rollup。
Semaphore是一個基於零知識證明的一個訊號系統,發送者可以不揭露身份的狀況下廣播任何訊息(an arbitrary string)。 Semaphorejs 延續 Semaphore 的核心概念,並將整個概念更加完整化,從前端網頁到後端服務。
這兩年才發表的 zk-STARKs,也在去年年初跟 0x 合作,推出基於 zk-STARKs 的 去中心化交易所。
在技術上,去年下半年有新的論文,使用 DARK compiler 可以讓 SNARKs 達到公開性(Transparent)。還有 MARLIN, SONIC, PLONK 等可通用且可更新的可信設定(trusted setup)。STARKs 的 FRI 驗證方式也默默地跟 SNARKs 做結合。(東西越來越多,根本看不完 QQ)
零知識證明在區塊鏈的重要用途就是「擴展」和「隱私」。技術上的進展,一般可以觀察證明方產出證明的時間、證明的資料大小、驗證方驗證的時間、需不需要可信設定、可信設定有什麼限制、以及抵抗量子電腦的能力。
社群專欄優質文章
Crossslink 2019
Crosslink 2019 Taiwan|以太坊 2.0 的未來藍圖及挑戰
Crosslink Recap: Design pattern: build your first profitable DApp and smart contract
Private key security and protection / 私錀的安全與保護 — Tim Hsu
Crosslink 2019 Taiwan|LibraBridge: 橋接 Libra 與 Ethereum
Aragon Fundraising:下一代的去中心化募資平台
The next generation Ethereum Virtual Machine — Ewasm VM
libp2p — 模組化的點對點網路協議
教學(Tutorial)
一分鐘做出自己的代幣購買App
Web3 Java 開發:用 Geth、Ganache 及 Infura 測試和 Smart Contract 互動
Let’s Capture The Flag! Etheruem CTF Tutorial 從零開始破解智能合約漏洞!
Your First Transaction on Facebook Libra — 動手玩 Libra
ELI5! 區塊鏈到底在幹嘛?
共識協定(Consensus)
Casper FFG:以實現權益證明為目標的共識協定
Casper FFG 與 Casper CBC 的瑜亮情結
若想搞懂區塊鏈就不能忽視的經典:PBFT
密碼學(Cryptography)
Ethereum RNG (RANDAO & VDF)
深入瞭解 zk-SNARKs
瞭解神秘的 ZK-STARKs
隱私性與匿名性(Privacy and Anonymity)
新一代加密貨幣Grin和MimbleWimble區塊鏈解析
Monero.門羅幣 隱匿交易的基礎介紹
隱私、區塊鏈與洋蔥路由
資料可得性(Data Availability)
Data Availability on Ethereum 2.0 Light Node
Fraud and Data Availability Proofs
點對點網路(p2p Network)
連Ethereum都在用!用一個例子徹底理解DHT
針對DHT的花式攻擊與精簡對策
智能合約(Smart Contract)
深入解析Solidity合約
Upgradable Smart Contracts using zos
Reason Why You Should Use EIP1167 Proxy Contract. (With Tutorial)
去中心化金融(DeFi)
DeFi 項目《Uniswap》完整解析(一)Uniswap 是什麼?
解析 DeFi 項目《Uniswap》(二)Uniswap 如何使用?
去中心化身份(DID)
我們與「身份自主」的距離
其他(Miscellaneous)
論言論自由
作為負債的控制
0x 黑客松 — 獲獎作品回顧與分析
技術解析台灣交易所BitoPro駭客攻擊
總結
2019 是個樸實無華但充實的一年,除了在底層技術方面有所進展,在應用方面,例如去中心化金融(DeFi)與去中心化身份(DID),也逐漸獲得大眾的興趣,期待 2020 年區塊鏈能為這世界帶來更多驚奇!
2019 台北以太坊社群回顧 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
casper labs 在 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.
👏 歡迎轉載分享鼓掌
casper labs 在 Taipei Ethereum Meetup Facebook 的精選貼文
📜 [專欄新文章] ZK Rollup一開始提出來的時候,是被定義為layer 2的解決方案,年初的時候一度以Plasma…
✍️ Kimi Wu
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
ZK Rollup & Optimistic Rollup
ZK Rollup不是一個新的提案,大約在一年前被Barry Whitehat所提出,同時間Vitalik在以太坊研究員的論壇有一篇比較完整的文章解釋,現在由Matter Lab在開發。研究完zk-SNARKs之後,一直沒空來看,直到最近才有機會來深入瞭解。除了ZK Rollup,也會簡單帶一下前陣子在Plasma Group所提出的 Optimistic Rollup。
ZK Rollup一開始提出來的時候,是被定義為layer 2的解決方案,年初的時候一度以Plasma Ignis這個名稱作為發表。應該是因為去年Plasma很紅,一直不斷有新的提案跟進展,加上這當時也被定義為layer 2的解決方案,這些種種原因,開發者就冠上了Plasma的名稱,不過因為這項技術跟Plasma的精神完全不一樣,被社群抗議,後來就恢復到Rollup這個名稱(開發者的聲明),所以搜尋 ‘Plasma Ignis’會找不到什麼東西。到最近,Rollup被更名為semi-layer 2的解決方案,就是有一點layer 2但又沒這麼layer 2… XD
簡單一句話解釋ZK Rollup就是,資料放在鏈上的layer 2解決方案。在瞭解ZK Rollup之前,先來解釋原本layer 2有什麼問題。以Plasma為例,Plasma鏈只把Plasma區塊的hash放上Ethereum主鏈上做公正(欲瞭解Plasma可以參考這裡),也就是在鏈下交易了數百或數千筆的交易,最後上鏈只有幾十個bytes,這是鏈下交易的精神,但也是設計上最麻煩的地方 — 資料的可取得性。
就是當有人要離開這個鏈時,需要一個額外的遊戲規則,在Plasma叫做挑戰期(因為鏈上沒有資料,需要側鏈參與者的提供證據),這衍生了有資料才能挑戰,所以大家都要存一定數量的資料,相較於跟主鏈的互動,只需要裝一個錢包,並不需要下載區塊資料,使用者體驗上差異很大。挑戰期的另一個問題是,使用者需要保持上線狀態,不然錯過挑戰期,就代表默認了交易(因為是採用詐欺證明並非是有效性證明)。簡單來說,因為資料的可取得性問題,衍生了
1.使用者需要常在線上2. 需下載部分資料
而造成使用者體驗很糟(當然現在的Plasma設計已經改進了不少)
如何資料放在鏈上,又不會造成資料過大呢?
首先,先介紹整體架構。跟Plasma一樣,有一個智能合約做擔保,有中繼者(relayer)幫忙送交易到智能合約(在Plasma叫operator),中繼者除了送交易外,還需要產生SNARK證明,一起送上鏈做驗證。
智能合約的部分,可以想像跟ERC20一樣,在合約裡記每個參與者的帳,差別在於,標準的ERC20交易是由Ethereum這系統做驗證,也因此不能合併(因為這就是Ethereum的標準交易),而Rollup中,是把好幾筆交易包成一個標準交易,對Ethereum這個系統,就是一個交易,而驗證交易的有效性則由智能合約做驗證。
實際在智能合約裡,用兩個merkle tree做紀錄,一棵樹是紀錄地址,所以只需要樹的索引值就可以代表一個位址(未註冊的索引值內容為0),因此位址的資料量就從原本的20 bytes減少到只有3 bytes,另一棵樹則記錄balance跟nonce。
Merkle Tree of Addresses
這是資料格式(這是最初的提案,後來的實作交易量更小),
因為用索引值當地址的代表,所以只需要3 bytes(2²⁴個位址),Value的部分是以10^-6當作基底,這樣只需要15 bytes就可以代表一筆交易,而儲存這樣一筆交易大約只需要 892 gas(雖然Value是6 bytes,但是文章中的假設大部分的交易只會使用到4 bytes,所以算法是13 bytes * 68 + 2 bytes * 4 = 892),而一般ether的轉移需要21K gas,因此交易速度能提升(所以Vitalik的文章標題是”On-chain scaling to potentially ~500 tx/sec through mass tx validation”)。
https://vitalik.ca/general/2019/08/28/hybrid_layer_2.html
為什麼交易速度能提升?也順便來瞭解一下交易速度
現今以太坊每個區塊的gas上限約8M,所以若單純ether交易,速度約略是
8M / 21K / 15 ~= 25 tps
所以現在的交易瓶頸其實是gas 的問題,下降交易手續費或是提升區塊gas上限,都能適時紓困(但也會造成衍伸的問題),而ZK Rollup就是藉由交易數據量(size)的減少,進而能增加交易速度。那來看一下使用ZK Rollup後交易速度能到多快
(8M — 600K (zk-SNARK驗證) — 50K(預計合約運行的gas花費)) / 892 / 15 ~= 550 tps
這個數字就是Vitalik文章的標頭”On-chain scaling to potentially ~500 tx/sec”。但實際上並沒有這麼理想,在作者Barry的實作中,大約只有268 tps,因為每次資產的更新都會留下event,所以有多餘的gas花費,然而,這樣的設計在應用上也是比較親切的。
資料都在鏈上,而且透過zk-SNARK做驗證,代表著上鏈的資料都是被驗證過的,因此就沒有一開始layer 2遇到的問題,需要挑戰、需要下載資料等等。這也隱含著不需要信任中繼者,因為他們無法作壞,最多就是不幫你送交易。
事情沒有這麼美好…
大家都覺得zk-SNARK像個萬靈丹一樣,用了好像什麼事都解決了,不過實際上並沒有這麼完美。zk-SNARK除了需要初始設定之外,最大的問題就是需要大量的運算力,在 Barry提供的數據中,中繼者的電腦若是一台8G記憶體加上20G的硬碟swap,大概只能產生 20 tx/sec,遠遠不及預期的500tps或是實作的200多tps。所以這個方案最大的問題在於要怎麼解決算力問題。
平行運算!
Matter Lab使用了多中繼者模型跟平行運算。多中繼者的模型,很像小型的區塊鏈,使用了DPOS (Delegated Proof of Stake),還有隨機挑選區塊產生者,所以被挑選到的區塊產生者,就可以收集交易、產生證明並且上鏈。這樣的方法避免了中心化,若中繼者被惡意攻擊,整個網路還是能運作得下去,另一方面,也為平行運算做了鋪路。零知識證明的產生非常花時間,因此基於多中繼者模型,Matter Lab提出了”上鏈-驗證”兩階段的方式,也就是中繼者先把資料上鏈,下一個階段再上傳證明做驗證,進而達到平行運算(如下圖)。再加上一些資料的最佳化,測試結果可達到1600 tps。
https://medium.com/matter-labs/introducing-matter-testnet-502fab5a6f17
延遲…
聽似很美好,但是因為你的交易被分兩階段上鏈,也就是從送出到到被驗證,會是好幾個區塊,時間比原本單純上鏈時間會更久。當然,延遲多久是使用者可接受的,這目前也無從得知。這是一個取捨,省了手續費,增加了交易速度,卻也增加了時間的延遲,這一切也要等上線後才會知道。
今年初,Vitalik在台北的線下聚會中分享了ZK Rollup的進階版 — ZK ZK Rollup,有興趣的人可以參考這篇文章,記錄的很詳細。
Plasma & Optimistic Rollup
Optimistic Rollup在設計上跟Plasma相關,所以只會簡單帶一下差異。
Karl(註)基於ZK Rollup的設計,在上個月提出Optimistic Rollup,概念上也是把資料都放鏈上,但不是用zk-SNARK做驗證,因為希望能達成更普遍性的應用。而不一樣的地方有,把from的部分,改為使用者的簽章(65 bytes),因為資料量變大的,可想而知,花的gas會更多,交易速度就會不及ZK Rollup。另一部份是,因為不是用zk-SNARK做驗證,就需要資料驗證的輔助方法(validity game),這邊就不詳細介紹,有機會在寫一篇Plasma/Optimistic Rollup的詳細介紹。在估算上,交易速度約是100 tps,若簽章方式改為BLS,約可提升到450 tps。而在10月的硬分岔後,gas會下降,預估的交易速度也會分別到達400/2000 tps。(許願:希望有人可以介紹一下10月的硬分岔細節 XD)
註:在中文的媒體文章中,都稱他是Casper的核心研究員之一,但是從我一開始知道這個人,都是在大力宣揚Plasma,他的部落格、twitter都是跟Plasma相關的文章,不確定他在Plasma Group的角色,但我是把他定位成Plasma Group的 leader
文章內容若有錯誤或是不同觀點,歡迎指教
references:On-chain scaling to potentially ~500 tx/sec through mass tx validationIntroducing Matter TestnetOptimistic Rollup
ZK Rollup一開始提出來的時候,是被定義為layer 2的解決方案,年初的時候一度以Plasma… was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌