📜 [專欄新文章] 區塊鏈管線化的效能增進與瓶頸
✍️ Ping Chen
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
使用管線化(Pipeline)技術可以提升區塊鏈的處理效能,但也可能會產生相應的代價。
Photo by tian kuan on Unsplash
區塊鏈的擴容方案
說到區塊鏈的效能問題,目前討論度最高的應該是分片(sharding)技術,藉由將驗證者分成多組的方式,可以同時分別處理鏈上的交易需求,即使單分片效能不變,總交易量可以隨著分片/驗證者集的數量線性增加。
除了分片,另一個常用來提升程式效能的方案是將計算步驟拆解,以流水線的方式將複雜的運算攤平,降低系統的閒置時間,並大幅提升工作效率。為了達到管線化預期的目的,會需要先知道系統的瓶頸在哪。
區塊鏈的效能瓶頸
熟悉工作量證明設計哲學的人應該會知道,區塊鏈之所以需要挖礦,並不是為了驗證交易的正確性,而是要決定交易的先後順序,從而避免雙花和帳本分裂的發生。可以說,區塊鏈使用低效率的單線程設計,並付給礦工高額的成本,都只為了一件事,就是對交易的全局排序產生共識。
在這樣的基礎之上,區塊鏈在一段時間內可以處理的交易數量是有限的,這之中包含許多方面的限制,包括 CPU 效能、硬碟空間、網路速度等。其中,關於 TPS(每秒交易數) 提升和對硬體的要求大致上是線性增加的,但在設計共識演算法時,通訊複雜度常是平方甚至三次方的關係。
以現在的目標 TPS 來說,處理交易和生成一個合法的區塊並不困難,只是因為區塊鏈的特性,新區塊需要透過洪水法的方式擴散到全網路,每個節點在收到更新請求的時候都要先執行/驗證過區塊內的交易,等於整個廣播的延時會是「驗證區塊時間×經過的 hop 數量」這麼多。似乎網路越分散、節點越多,我們反而會需要降低計算量,以免讓共識不穩定。
管線化的共識機制
使用權益證明取代工作量證明算是行業發展的趨勢,除了環保或安全這些比較顯然的好處之外,權益證明對產生共識的穩定性也很有幫助。首先,權益證明在同一時間參與共識的節點數是已知的,比較容易控制數量級的邊界;其次,權益證明的出塊時間相較工作量證明固定很多,可以降低計算資源不足或閒置的機率。
相較於工作量證明是單一節點出塊,其餘節點驗證,權益證明的出塊本身就需要很多節點共同參與,瓶頸很像是從驗證轉移到通訊上。
以 PBFT 為例,每次產新區塊都需要經過 pre-prepare, prepare, commit 三個階段,你要對同意驗證的區塊簽名,還要對「你有收到某人的簽名」這件事簽名,再對「你有收到 A 說他有收到 B 的簽名」這件事簽名,過程中會有很多簽名飛來飛去,最後才能把一個區塊敲定。
為了降低每兩個區塊間都需要三輪簽名造成的延遲,後來的共識演算法包括 HotStuff 和 Casper FFG 採用了管線化的區塊驗證過程。也就是對區塊 T 的 pre-prepare 同時是對 T-1 的 prepare 和對 T-2 的 commit。再加上簽名聚合技術,出塊的開銷在複雜度等級和係數等級都降低許多。
然而,要保持管線化的區塊生產順利,需要驗證者集合固定不變,且網路通訊狀況良好。如果會經常更動驗證者集合或變換出塊的領導者,前後區塊間的相依性會是個大問題,也就是 T 的驗證者集合取決於 T-1 裡有沒有會導致刪除或新增驗證者的交易,T-1 的合法性又相依於 T-2,以此類推。
當激烈的分叉出現的時候,出塊跟共識的流水線式耦合就從優雅變成災難了。為了避免這種災難,更新的共識演算法會限制驗證者變更的時機,有些叫 epoch 有些叫 checkpoint,每隔一段時間會把前面的區塊徹底敲定,才統一讓驗證者加入或退出。到這些檢查點的時候,出塊的作業流程就會退化成原本的三階段驗證,但在大部分時候還是有加速的效果。
管線化的狀態更新
另一個可以用管線化加速的是區塊鏈的狀態更新。如前所述,現在公鏈的瓶頸在於提高 TPS 會讓區塊廣播變慢,進而導致共識不穩定,這點在區塊時間短的以太坊上尤其明顯。可是如果單看執行一個區塊內的交易所花的時間的話,實際上是遠遠低於區塊間隔的。
只有在收到新區塊的時候,節點才會執行狀態轉移函數,並根據執行結果是否合法來決定要不要把區塊資訊再廣播出去。不過其實只要給定了交易集合,新的狀態 s’ = STF(s, tx) 應該是確定性的。
於是我們有了一個大膽的想法:何不乾脆將交易執行結果移出共識外呢?反正只要大家有對這個區塊要打包哪些交易有共識,計算的結果完全可以當作業留給大家自己算吧。如果真的不放心,我們也可以晚點再一起對個答案,也就是把這個區塊執行後的新狀態根包在下個區塊頭裡面。
這就是對狀態更新的管線化,在區塊 T 中敲定交易順序但暫不執行,區塊 T+1 的時候才更新狀態(以及下一批交易)。這麼做的好處十分顯而易見,就是將原本最緊繃的狀態計算時間攤平了,從原本毫秒必爭的廣播期移出來,變成只要在下個塊出來之前算完就好,有好幾秒的時間可以慢慢來。新區塊在廣播的每個 hop 之間只要驗證交易格式合法(簽名正確,有足夠的錢付手續費)就可以放行了,甚至有些更激進的方案連驗簽名都省略了,如果真的有不合法交易混進去就在下個區塊處罰礦工/提案者便是。
把負擔最重的交易執行移出共識,光用想的就覺得效能要飛天,那代價呢?代價是區塊的使用程度會變得不穩定。因為我們省略了執行,所以對於一筆交易實際用掉多少 gas 是未知的。本來礦工會完整的執行所有交易,並盡可能的塞滿區塊空間,然而在沒有執行的情況下,只能以使用者設定的 gas limit 當作它的用量,能打包的交易會比實際的上限少。
緊接著,下一個問題是退費困難。如果我們仍然將沒用完的手續費退還給使用者,惡意的攻擊者可以透過發送 gas limit 超大,實際用量很小的交易,以接近零的成本「霸佔」區塊空間。所以像已故區塊鏈 DEXON 就直接取消 gas refund,杜絕濫用的可能。但顯然這在使用者體驗和區塊空間效率上都是次優的。
而最近推出的 smartBCH 嘗試擬了一套複雜的退款規則:交易執行後剩餘的 gas 如果小於 gas limit 的一半(代表不是故意的)就退款;如果剩餘量介於 50%-75% 可以退一半;超過 75% 推斷為惡意,不退款。乍看是個合理的方案,仔細一想會發現製造的問題似乎比解決的還多。無論如何,沒用掉的空間終究是浪費了,而根據殘氣比例決定是否退款也不會是個好政策,對於有條件判斷的程式,可能要實際執行才知道走哪條路,gas limit 一定是以高的情況去設定,萬一進到 gas 用量少的分支,反而會噴更多錢,怎麼想都不太合理。
安全考量,退費大概是沒希望了。不過呢,最近以太坊剛上線的 EIP1559 似乎給了一點方向,如果區塊的使用程度能以某種回授控制的方式調節,即使偶爾挖出比較空的區塊似乎也無傷大雅,也許能研究看怎麼把兩者融合吧。
管線化方案的發展性
考慮到以太坊已經堅定地選擇了分片的路線,比較激進的單鏈高 TPS 管線化改造方案應該不太有機會出線,不過管線化畢竟是種歷史悠久的軟體最佳化技巧,還是很有機會被使用在其他地方的,也許是 VDF 之於信標鏈,也許是 rollup 的狀態轉換證明,可以坐等開發者們表演。
倒是那些比較中心化的 EVM fork/sidechain,尤其是專門只 for DeFi 的鏈,管線化加速可以在不破壞交易原子性的前提下擴容,確實是有一些比分片優秀的地方可以說嘴,值得研究研究,但這就要看那些機房鏈們有沒有上進心,願不願意在分叉之餘也投資發展自己的新技術了。
給我錢
ping.eth
區塊鏈管線化的效能增進與瓶頸 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
evm 越 低 越 好 在 Taipei Ethereum Meetup Facebook 的精選貼文
📜 [專欄新文章] 來聊聊MEV之亂
✍️ Anton Cheng
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
MEVA vs Fair Ordering.
Credit: MP頭條
前言
最近這幾個月來,以太坊上面的MEV(Miner Extractable Value)的話題越來越紅,對於該如何解決這之中的不公平性,社群中展開了很大的爭論。由於最近剛好看到一篇很棒的Tweet統整了這半年來的一些好文章,就試這整理一下這幾篇的主要論點。(如果對MEV已經有基本概念的人,也可以直接follow這個thread就好xD)
— @benjaminsimon97
由於主要辯論的雙方剛好是目前做Optimistic Rollup最有名的兩大團隊:Optimism 和 Arbitrum,因此我們也可以透過這次辯論看出兩個團隊未來的開發走向。
前情提要: 什麼是MEV (Miner Extractable Value)
在Ethereum現有設計中,Miner有著選擇交易收入區塊(Tx Inclusion),和決定交易先後順序(Tx Ordering)的權力。MEV指的就是礦工透過掌握這兩個權力所能提取的總價值。
雖然名詞定義上為礦工的可抽取價值,但是除了礦工之外,很多Front running 機器人在做的事情也是一樣的:透過觀察mempool裡面的交易,當發現front run機會的時候,透過付錢更高手續來讓自己的交易先被執行,這之中所抽取的價值,也是所謂的MEV,因此在後面會提到的很多文章中,大家直接用Front Run這個詞來代表了擷取MEV的行為。@danrobinson 在他經典的文章 Ethereum is a Dark Forest 中很好的闡述了如此的現況,也正式把這個問題帶進更多人的視野。
在那之後,一個名為FlashBots的組織現身,開始進行公開的MEV 相關研究與開發,旨在改善EVM帶來的負面影響,例如:front running 造成手續費提高、 MEV太高對以太坊安全性的影響。非常推薦大家Follow他們的進展。
接下來我們就來看看,一個重要的Proposal已經圍繞它而生的一些辯論。
MEVA (MEV Auction)
MEV Auction 是由 Karl Floersch 、Vitalik 、Philip Daian等人,於2020年一月共同提出的解決方法,字面上的翻譯就是透過一個拍賣(Auction)機制,讓MEV可以被更公平的分配。Karl 同時也是Optimism的CTO,也可能是因此設計出了這個能夠完美契合Layer2的架構。
更精準一點來說,這個拍賣要拍賣的是礦工的兩個權力中的「排序權」:它礦工未來只負責「選擇交易進入區塊」,而不再控制區塊內交易順序的排列,而把此權交給另外一個叫做Sequencer的角色來進行。至於Sequencer的選擇方式,就會是一個簡單的拍賣競標。在競標中獲勝的Sequencer將可以拿到未來一段時間的區塊排序權。至於整個協議競標中得來的錢,可以作為提供公共財的資金(fund public goods)。
為什麼說這個提案契合Layer2,是因為在L2原本的設計中,就是由一個Sequencer收取所有用戶的L2交易,在L2的鏈上執行,最後把執行結果以及所有交易資料Publish到L1上。換言之,這個排序者角色其實已經存在L2的架構中。若是L2層先實做看看這個拍賣機制,就可以在不改變以太核心協議的情況下,測試一下其可行性、參數等等。
對MEVA的質疑
在MEVA概念被提出之後,Ed Felton (Arbitrum 背後公司 Official Lab 的創辦人兼普林斯頓的教授),對此提出了諸多的質疑。
1. 用戶最終體驗是否變差
Ed Felton最先寫了一篇名為「MEV auctions considered harmful」的文章,其中質疑了這個設計會讓使用者體驗更糟:這個Ordering權力的競標,無異於將「Front Running」這個行為專業化,因為理論上最會front run的人,將能夠一直出最高價得標。這在使得「Tx Ordering」這個權力中心化的同時,更變向鼓勵了大家開發厲害的front running程式,最終的受害者仍是的以太坊一般用戶,因為所有的MEV其實都是從用戶的身上抽出來的。
MEV auctions considered harmful
Vitalik 對Ed的看法提出了反駁:他認為「MEV來自用戶」這件事是一個已知且不可避免的事實,這個機制主要的重點,在於分離MEV的收入與礦工的收入,藉由把這個金流轉給Sequencer這個非礦工的角色,可以去除礦工中心化等危及Layer1 安全的疑慮。一個簡單的例子就是:若是有一個MEV很高的區塊(假設礦工可以透過re-ordering拿到100個ETH),那麼礦工就有動機在這個區塊高度進行fork(希望最終自己的挖到區塊被網路接受)。這個例子讓我們看到,考慮MEV會使得礦工的行為比起「單純領block reward」更難預測,這將危及到Layer1的安全。
Vitalik也表示,專業化帶來的「中心化tx ordering」並不見得是件壞事,儘管它對於使用者體驗是有害的,但無論如何MEV是有個上限的,Sequencer並沒有權力從使用者口袋偷錢,而且用戶可以在任何時候決定不使用這種比較容易被Front-run的合約。
2. 沒有MEV Auction的話,L1真的會變得更中心化嗎
Ed 接著寫了一篇名為「Front Running as a service」的文章,簡單回應了中心化tx ordering的問題,也挑戰了另一個MEV Auction的假設:「MEV將使得L1 Mining power趨於中心化」。
這個假設背後的理由很簡單,假如有一個礦池特別會front run,它將能夠獲得比其他礦池更高的收入,這會吸引所有礦工轉到這個礦池。
Ed 提出的反駁理論也十分有趣:假設現在有兩個礦工:A與B,其中兩者都有一定的算力,但A有較好的MEV程式,因此能夠透過排列交易獲得更高的收益。在任何時間點,只要B還存在,A礦工就有動機把這個MEV程式「賣給」B,因為本來B也有機會挖到一些區塊,在這些區塊中A的收益為0。若是能夠達成一個互惠的條件:B將使用A的程式多賺的收入分一部分給A,那麼這筆交易對於礦工A與B而言都是有益的,因此這筆交易必定會發生。
Front-Running as a Service
其衍伸意義為:身為MEV專家的礦工,其實有動機提供「Front Running as a service」,所以最終這個Service會自然被分離出來,並且形成一個自己的市場,本質上跟MEVA是類似的,並不會導致L1算力中心化。
3. MEV Auction是否真的能分離Tx Inclusion 與 Tx Ordering
Ed 還寫了另外一篇「MEVA(What is it good for?)」的文章,用經濟學解釋為什麼這個Auction最終會失效。
MEVA (What is it good for?)
簡而言之,不管我們如何想要分離這兩個權力,最厲害的front-runner若是能夠同時掌握Tx Inclusion的權力,它必定能夠提高自己的收入。這也表示,最厲害的Sequencer會想要自己成立一個礦池,因為當他同時掌握Tx Inclusion和Tx Ordering 兩個權力時,他能夠提供最高的報酬。因此一個理性的Sequencer會願意透過提高給礦工們更高的獎勵,來壟斷Tx Inclusion + Tx Ordering的權力(這是一個在現實商業世界中非常常見的壟斷策略)。這會使得最後這個模式會變得跟現在一模一樣:由單一角色決定Tx Inclusion和Tx Ordering的權力。
Fair Sequencing
不難看出,Ed所有的論點都圍繞一個重點:MEV Auction最終並沒有辦法解決任何問題,而且這個拍賣還會為社群帶來更多問題:例如一次拍賣24小時的交易排序權力,會讓這個權力過度中心化。
那麼Ed所在的Official Lab有提出什麼解法嗎?其實有:他們認為真正解決這個問題的方法並不是在鼓勵專業化Front Run並且拍賣這個權力,而是從根本上消除Front Run的機會,也就是說,應該要設計一個機制「避免」任何人任意排列交易順序。也就是所謂的Fair Sequencing問題。
在Arbitrum目前的計畫中,在未來他們會在Arbitrum Layer2中引入一個這樣的「公平排序」。實際的細節還沒有太明朗,他們計劃在幾個月內上線的第一個Rollup 版本也不會包含這些功能,所以其實他們的Mainnet Launch會類似Optimism,由單一Sequencer決定所有交易排序。但還是很期待他們未來能不能夠真的實作出更好的方法。
Chainlink Labs: Fair Sequencing Service
另一位Chainlink Labs 研究員(身兼康乃爾的教授) Ari Juels,也因為最近在CoinDesk發表了一篇類似的文章質疑MEVA,讓這個問題加溫不少。在這篇文章中,用了一個非常極端的譬喻:把Front Run這種惡意行為比喻為犯罪,若是一個城市充滿了罪犯,一個政府該做的事情並不是拍賣大家入室盜竊的權力、再將這些拍賣所得拿來回饋人民。反之,政府應該想辦法阻止犯罪。
這篇文章透過這樣的比喻,來表達對於MEVA機制的不認同,同時譴責Flashbots這類的社群專案是在系統化的傷害使用者,並指出「如何解決MEV應該成為以太社群的研究重點」。
Opinion: Miners, Front-Running-as-a-Service Is Theft - CoinDesk
文末的結論跟Ed Felton 相同,都是認為Fair Sequencing 才是此問題真正的解決之道。這其實是呼應自己Chainlink Labs幾個月前發佈的一個 Fair Sequencing Service。簡而言之,就是透過Chainlink 最擅長的預言機(Oracle network)來投票、避免讓一個中心化Sequencer角色單獨掌握這個權力。
其實這個Fair Sequencing 問題是一個非常大的研究領域、除了Chainlink labs提出的Oracle解決方法以外,還有許多包括ZKP的其他解決方法。我會盡量多Follow一些,以後有機會再來做更多介紹。
社群中其他的聲音
對於這個MEVA vs Fair Ordering的爭論,除了理論派以外,也有不少其他的聲音讓我們可以更全面地看看的整個局勢。其中一則Tweet表示:MEV Auction在實作上比Fair Ordering單純許多、也不需要牽扯一些複雜的密碼學:
— @tarunchitra
最後一定要提一下的是另一個以太坊大佬 Hudson 對於Ari這篇文章的回應。他認為MEV問題在短期內將會持續困擾使用者,Flashbots這種公開透明的開發流程能夠吸引更多社群關注,並且能夠讓MEV更公平的分配給更多角色、而非只是少部分的玩家。同時他也指出,以太坊核心開發者目前有更重要的2.0開發工作要做,面對這個議題,大家應該更踴躍參與以太坊公開的研究流程,而不是把所有的責任丟到所謂的「Core Devs」身上。
— @hudsonjameson
個人覺得Hudson這一段回應其實很值得大家更多思考,除了在學術上的辯論以外,真正實質上的社群參與也是很重要的。
小結
整個MEV議題到目前為止還是一個ongoing debate,在接下來幾天會不會愈演愈烈、會不會有人提出新的觀點,都是非常值得大家關注的問題。就像文章開頭低一篇Tweet所說的,這是非常高學術性良性辯論,我這裡只簡單的收錄了一部分,由於是順著Official Lab的脈絡撰寫、難免有些偏頗,希望大家可以到Flashbots的Github了解更多,會對於目前Optimism + Flashbot那一派目前所在做的事情有更多的了解。
如果還沒有follow Philip Daian這個人,非常建議大家Follow他。他除了是Flashbots目前最主要的推手之一,更有趣的是,他現在還在Cornell 念PHD,並且是Ari的學生。這場師生大戰讓整個辯論更加戲劇性,但卻不失其高質量的本質。對於接下來還會有什麼發展,讓我們一起期待吧。
— @phildaian
來聊聊MEV之亂 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
evm 越 低 越 好 在 Taipei Ethereum Meetup Facebook 的精選貼文
📜 [專欄新文章] 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.
👏 歡迎轉載分享鼓掌