📜 [專欄新文章] 以太坊的黑暗森林值得培養 Ethereum’s Dark Forest is worth cultivating
✍️ Yahsin Huang
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
本文為 Trenton Van Epps 2020 年 10 月 12 日 Medium 發表「Ethereum’s Dark Forest is worth cultivating」文章的繁體中文翻譯。 謝謝 Trenton 和 CC Liang 提供的編輯意見與修改協助。
以太坊的無許可性有其代價,但卻是必要且有益的。
本文自帶黑暗森林 背景音效,請搭配享用。
譯者引言: ETHGlobal 的 Trenton 長文論述為什麼我們應該擁抱與適應無許可性,即使無許可性會帶來混亂。
TLDR; 文長,懶人摘要如下
以太坊的無許可性深植技術面、社交面、與政治面:這些面向任何人都能夠參與。雖然這樣的開放性對社群有其代價,但卻是以太坊生態系之所以靈活的原因。我們必須時時謹記這一點,並且心無旁騖,專注我們正在打造的「玩合作賽局的全球競技場」。
引言
在 Dan Robinson 與 Georgios Konstantopoulos 合著的「以太坊是一片黑暗森林」一文中,兩位作者將以太坊中對抗性的環境比喻為「黑暗森林」。這個比喻來自於同名書籍(譯註:劉欣慈《三體》一書),用來描述「一但被偵測到,就會被高等掠奪者殲滅的環境」。
這個比喻很適合描述以太坊的記憶池(mempool),記憶池是一個虛擬空間,交易在這裡等待被打包到區塊裡。在地球上未知的角落,機器人會緊盯著記憶池裡的交易,以及交易完成後的結束狀態。如果一筆交易修改收款地址後,新的收款地址有利可圖,這些機器人就會搶著提高手續費,發一筆收款方改成自己地址的交易來獲取暴利。一筆交易讓機器人有利可圖,就像是在黑暗森林被偵測到一樣。就如 Dan 與 Georgios 的慘痛經歷,幾乎不太可能避免這些機器人掠奪者。兩位作者和暗影中的潛伏者目標並不一樣。
以太坊在每個層面都是黑暗森林
接下來我會延伸黑暗森林的比喻到以太坊的技術面、社交面、及政治面。正如任何人都可以觀察記憶池的交易並照前述方式獲利,人們也可以透過影響不同的層面來獲取他們的最終利益,而這些人可能和社群長遠的利益一致,也可能不一致。
舉幾個例子:
技術面:部署到主網路、在鏈上增加狀態、為了搶單緊盯記憶池
社交面:建立社交人脈、在推特筆戰、資助 Gitcoin 獎助金
政治面:遊說或反對特定技術變更、參與粗略共識、參加核心開發者線上會議(All Core Dev calls)
當上述事情發生時,看起來好像有些人沒在貢獻這些基礎建設,卻又佔這些基礎建設的便宜。如果是其他社群的成員做了上述事情,更像是濫用原本可以有更好用途的基礎建設和心力。
以太坊的無許可性在每個面向的影響是如此混亂與頭痛,我們必須記得以太坊是特意這樣運作的。事實上,如果換作是另一種生態系,沒了這些混亂的意見,反而更令人擔心,因為這種生態系最終會喪失很多有趣的專案。失去混亂的意見是一種「反脆弱」的損失,也是衰弱的跡象。我們很幸運這樣的情況還沒發生。以太坊的黑暗森林特質才是以太坊具有革命性,且值得我們持續投資的原因。
慶祝並擁抱以太坊的黑暗森林特質
回顧在短短五年內,以太坊已經成為:
前所未見,充滿技術上、社交上、政治上新興特徵的集合
藉由不斷增長的開放工具與機制,進行了眾多令人眼花撩亂、無許可性的實驗的平台
由分散各地、不斷增長的全球社群定義,讓許多機構、金錢、及不可撤銷的合約產生出來
好好想一下,一個生態系有這麼多令人讚嘆的特質!所有這些成果都是因為以太坊從源起到成長過程,就是個黑暗森林生態系:無許可、混亂、對所有人開放。
這些特質與以太坊社群最喜歡談的「教堂與市集」不謀而合。市集和黑暗森林,都是社群的能量來源。任何國家或背景的任何人,都能接觸我們在培養的事情,這是一個讓我們持續努力的強烈動機。
以太坊讓什麼成真了呢?
我們見證世界各地的人們運用以太坊。正如 Virgil 所道「以太坊是一個前所未見,玩合作賽局的競技場」。一個一堆互相協調的機器的競技場:不論現實世界發生什麼事,工具與基礎建設持續運作。如果做到真正「可信中立」,這些互相協調的機器可以用來做任何用途:從很有啟發性的到很平凡的用途,或是從很無聊到很邪惡的用途。
再次提醒我們自己,以太坊讓這些事情成真了:
任何人可以創立與加入的開放機構
透明到令人眼盲的記錄
全球無阻礙的金融產品與市場
社區貨幣
非榨取性的移工匯款
非託管式的金融服務
創作者能獲得公平酬勞的市集
可部署到一個世界電腦的永久性程式腳本
可以隨身攜帶、非國家發行的身份認證
當地幻想體育聯盟的賭博
不受約束的投機
勒贖軟體的贖金支付管道
人類最神聖的體驗的金融化
無許可性的詐騙
多國協調的地方資源開採
暗殺市場
譯註:「人類最神聖的體驗的金融化」這項譯者特別去和 Trent 請教。Trent 這裡想表達的比較是「每件事情都能有市場」的可能性,極端的最糟情況是每種 App 和每種互動都有代幣可以賺取或買賣。另外一種狀況可能是,預測市場在我們日常生活中廣泛被使用。每件事情都能有市場將會大幅改變我們日常生活的樣貌。
當期待與現實有落差
這個清單中有極好與極壞的潛在用途。如果我們最終出現太多負面結果,看起來以太坊好像不值得我們投入努力。
今年夏天的流動性挖礦熱潮再次凸顯了社群在敘事期望上的分裂。一邊主流聲音對高速迭代的實驗提出顧慮,呼籲大家謹記「The DAO 事件」與「ICO 熱潮」的經驗。另一邊人們對於實驗很激進與自己有幸參與實驗感到開心。
社群對於整個生態系該多快發展或用什麼方式發展,有許多不同的看法。但我們必須了解到上述那樣敘事期望的分裂只是古老的現象在近期重演,而且未來還會一再發生。未來仍然會有狂熱、猖獗投機、沒完沒了的詐騙來滋擾以太坊。
這一切都能歸因於摩洛克(Molochs):一個和我們一樣住在森林裡、機會主義的怪物,他的唯一意圖就是永無止盡讓人們協調失敗(Meditations on Moloch 一文)。流動性挖礦狂潮在我們的期望中引入不確定性,顛覆規範,從我們各自的框架中去除集體意義,至少把我們 gas 價格飆到天際了。
技術、社交、政治三個層面都住著一堆其他非社群或與社群相近的對象。這些對象有時對以太坊會有截然不同的最終目的,但他們都要來利用黑暗森林的能力。
他們可能會使用社交面或政治面來取得支持或資金,或甚至轉開大家對有用專案的注意力。有些對象終究會帶來生態系或監管面長期負面的影響。有些會助長他們自己的狂熱,有些會心理操縱核心社群,讓他們混淆什麼是值得追求的目標或怎麼追求那些目標。在技術面有無許可性與社交政治面的可操弄性,幾乎不可能去預期或避免每種可能性。
社群能做些什麼?
幫我殺掉這隻摩洛克:我們需要在各個層面學會更能接受黑暗森林的現實。我們要和我們對抗性的思維玩一場長期的遊戲。我們必須了解在每個層面我們都和利益一致或利益不一致的對象同在。我們需要去擁抱或忍受一個無許可的生態系的不確定性或不穩定性。
我們仍然相信以太坊上仍有值得的技術、社交、政治的實驗嗎?那我們必須更能適應那種我們已經失去美好願景的短暫感受。
那些追求目的的正面成果仍然茁壯,而且會持續開花結果,即使現下感到那些成果還不明確。專注你正在努力的事,直到你重視的機制有一天也被別人重視。這裡的別人不僅指現在生態系既有的人,黑暗森林歡迎整個星球上的其他人!
在現在與未來,我們和社群一起打造黑暗森林。這是一個龐大的集體實驗。這個森林需要多元的興趣、背景、與技能的投入來打造合作賽局與協調機器。這個森林需要提出警語的人們,也需要突破限制的人。這本應如此,而且我們能在各種極端意見間交涉的能力,讓我比以前更加充滿希望,我們一起打造的東西會持續實現。
結語
以太坊一直是一個對抗性的環境。它的黑暗森林特質是它在其他眾多區塊鏈平臺和社群之中這麼獨特的原因。因為以太坊的技術面、社交面、政治面都是無許可性的,任何人都可以使用與濫用。我們沒辦法控制人們怎麼用,但我們可以控制對種實際上或感知上收編過程的反應。
在這種敘事快速變動的時候,我們必須回想一下初衷是什麼。我們應該加倍押寶並將投入努力去培養以太坊的黑暗森林。畢竟,我們取得正面成果的空間和以往一樣強勁。
摩洛克將永遠在森林裡與我們同在。我已經選擇要在他們睡覺的時候繼續打造以太坊,我希望你也會這麼做。
感謝 Justin, Kevin, Ameen 與其他匿名人士的意見回饋。
感謝 Dan, Georgios 與 Virgil 的靈感啟發。
以太坊的黑暗森林值得培養 Ethereum’s Dark Forest is worth cultivating was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有1部Youtube影片,追蹤數超過5,140的網紅寶博士,也在其Youtube影片中提到,[已啟用這部影片字幕的社群協力翻譯功能] 寶博朋友說: 紙鈔是不是你的,取決於在不在你的口袋裡,而不是有沒有寫你的名字。 如此龐大的經濟體系,只能見招拆招還是誰在背後操刀? 森林裡的會議為什麼要偷偷開,又決定了哪些金融發展? 本集邀請經濟學家林仲生,用經濟學家的眼光來看世界經濟發展。 註1:布列...
medium app中文 在 矽谷輕鬆談 Just Kidding Tech Facebook 的最佳貼文
#就地避難在家鍛鍊寫作能力
軟體工程師系統設計面試準備指南
當你有了幾年的工作經驗以後,在找工作時一定會遇到系統設計的面試,有鑒於大部分的面試心得都是針對演算法以及資料結構的程式面試 (包括我之前寫的美國軟體工程師求職心得),對於系統設計的準備資源還真的不多,本篇要來剖析系統設計面試,介紹面試的流程、正確的心態以及準備的方向,讓大家再也不怕系統設計面試!
Medium 好讀版:https://medium.com/jktech/%E8%BB%9F%E9%AB%94%E5%B7%A5%E7%A8%8B%E5%B8%AB%E7%B3%BB%E7%B5%B1%E8%A8%AD%E8%A8%88%E6%BA%96%E5%82%99%E6%8C%87%E5%8D%97-acf6ab1f502f?source=friends_link&sk=ca40acf60b749cb1b32c17a868b0c1a3
#為什麼系統設計很重要?
在程式面試表現優異,可以讓你順利拿到 Offer;但是系統設計會決定你加入公司的職等!這也就是為什麼有些人有十年經驗只能拿到 Mid-Level (L4) 的 Offer,而有些人只有五年經驗卻可以拿到資深工程師以上 (L5+) 的 Offer。
另外,如果你是面試 Staff 或是 Principal 級別以上的話,除了系統設計以外,有些公司還會有 Technical Leadership 的面試,來判斷你是否有能力可以跟不同的部門合作、解決問題的不確定性、帶領資淺的人然後推動並且完成一個跨部門的大型技術專案。
簡單來說,系統設計用來判斷你是 L4 或是 L5+,Technical Leadership 面試用來判斷是 L5 或是 L6+。
#為什麼系統設計很難準備?
大多數應徵者在準備的時候會過度偏重於程式面試,原因也不難理解,程式問題的定義很清楚,有給定的輸入以及預期的輸出,就算你真的想不出來,LeetCode 上的討論區也有參考答案;這種有考古題可以參考的面試,對於台灣教育出來的人來說相對好準備,隨著你解的問題多了,你也會更有信心,不知不覺甚至還會刷上癮了呢!但系統設計卻非如此。
系統設計面試的問題描述通常很模糊 (這是刻意的),沒有給定的輸入與輸出,比較沒有既定規則可以遵循,然後也沒有一個標準答案,針對不同系統你需要提出不同的解法然後分析優缺點,一樣的問題,面試官也會針對你過去經驗往不同的方向問,有些問題你工作上沒有碰過還真的回答不出來,這也就是為什麼很多人看到系統面試就怕了。
#到底要怎麼準備?
首先我們要先建立一個觀念:沒有任何一個人可以知道所有的技術細節
不管你的面試官有多少年經驗,不管他們再怎麼資深,在變化快速的軟體產業,沒有人可以知道所有事情,一定有你知道而他們沒聽過的事情!
請把系統設計當成分享你過去所學的面試,這個面試的目的在於展示你對於軟體架構能力的廣度跟深度,你必須可以給出大方向的架構,知道有哪些元件 (廣度),同時針對你熟悉的領域深入探討更多細節 (深度),並且提出幾個解決方案,分析優缺點,並且針對系統需求選擇合適的解法。
大方承認自己對某些領域的細節不熟,也是完全沒問題的,只要讓面試官了解你知道這個東西,如果要深入了解的話你知道有哪些方向要努力,這樣就夠了,因為在大型的軟體專案裡,一定是高度分工的,不會有人同時精通手機端、前端、後端、Infra 以及嵌入式或是硬體的。
講到這裡,相信你也知道如果真的要準備是準備不完的,這些知識是透過平常工作以及閱讀技術文章長期累積的成果,比較沒辦法臨時抱佛腳。
#具體來說會問什麼問題
舉例來說,一個系統設計的問題會像是這樣:如何設計 Facebook?
這類問題的描述通常會很大而且模糊,面試官不預期而且你也不可能在 45 分鐘內就設計出這些公司花了好幾年這麼多人力設計出來的產品,所以第一步要做的事情是確認需求:是要設計動態牆、Messenger、廣告系統還是推薦系統?流量跟資料量為多少?需要支援全球的使用者嗎?
確認完需求以後,會針對最重要的幾個使用場景設計你的 Data model 以及 API,接著畫出大的系統架構圖,大致上會包含客戶端 (手機版/桌面版)、Load Balancer (Reverse Proxy)、App Servers 以及資料庫,接著可以針對細節下去討論,這邊開始就很自由了。
如果你是專精在資料庫,可以討論要用什麼資料庫以及資料要怎麼存可以讓特定使用場景的讀取以及寫入效能比較好,要怎麼做資料庫的 Replication 跟 Sharding 來服務更多的使用者?
如果講到快取,哪些地方可以加快取呢 (瀏覽器前端, CDN, App Server, 資料庫)?具體來說寫入快取有哪些方式以及優缺點 (write-through, write-around, write-back)?什麼時候要失效?要讓哪些資料失效?
如果聊到微服務器架構跟 Service Mesh,不同的服務怎麼跟其他的服務溝通? control plane 要怎麼更新 data plane 的設定?如果 control plane 掛了怎麼辦?要怎麼做 service discovery? 哪一種 Load Balancing 策略比較好 (round robin, random, least connection, ring hash, or maglev)?有些服務掛了影響到整個系統怎麼辦?什麼時候需要 circuit breaker ?
如果你是手機開發者,怎麼實現離線瀏覽?手機要有資料庫嗎?要怎麼以及多常跟伺服器同步?API 要怎麼設計?如何實現 Infinite Loading?剛 Po 文以後要怎麼樣在自己手機上馬上看到?
這些問題真的列舉不完,總之看到這裡你會了解為什麼我說這個面試是沒有範圍而且也準備不完的,重點應該放在跟面試官的討論,展現你在技術方面的廣度跟深度,讓面試結束的時候能夠有一個你們兩個人都同意的設計!
#準備材料
系統設計的資源比較分散,以下是我篩選過後覺得有用的資料,按照素材的類型作分類,也歡迎大家留言補充!
#入門影片
針對完全沒有概念的新手,我建議可以先從哈佛的 CS75 Lecture 9 Scalability 開始,裡面講到的很多基礎觀念都相當重要,值得一再複習,這些概念先有了以後再閱讀其他的材料會比較有感覺:
如果你看完這篇文章後還想再多了解系統面試的形式,也可以看一個前 Facebook 工程師分享的影片:
Distributed Systems in One Lesson 也很推,裡面提到不少業界在使用的設計模式:
有一個需要付費的資源是 SystemsExpert,每個影片會講解一個系統設計重要的概念,我個人覺得內容有點淺所以沒有買,但是整理地還算不錯,如果你看完他們免費的影片有興趣還是可以參考一下。
#閱讀文章
影片是一個讓你很好理解大方向概念的方式,但是如果你要深入理解背後的原理還有怎麼運作的細節,還是得透過大量以及深度的閱讀來吸收呀!
system design primer 整理了很多系統設計的資源,資料量很夠, 個人的建議是先快速過一遍,不要細讀,先知道總共有哪些元件,大概是做什麼用的就好,接著針對有興趣的部分在深入研究,建立自己的知識庫。
Grokking the System Design Interview 也是很多人推薦的材料,主要是針對系統設計的問題提供範例解答,他們的答案可以當作一個參考,但面試的時候不要完全照著回答,還是得看跟面試官討論的結果來進行,但這個是需要付費的,有興趣可以用我的推薦碼註冊購買。
如果你不想花錢或是不確定 Grokking 的文章你喜不喜歡,有一個類似的網站 Crack the System Design Interview 整理得也還不錯。
#書籍
唸書是一個有系統性學習的方法,如果你只想選一本書來看,就選這本大家都推的系統設計聖經 — Designing Data-Intensive Applications,簡稱 DDIA,這本書適合的對象是想要長期準備系統設計或是分散式系統的人,裡面舉的例子都是實際上業界遇到的問題,不會有以前讀教科書那種工作又用不到的感覺;但也因為是書,花了一些篇幅在講解背景知識,包含以前的系統是怎麼設計的以及如何演進到現在,對短期要準備面試的人效率會有點低,所以不適合有時間壓力的人。
這本書我目前讀了一半,最大的收獲是它解釋了很多為什麼現代的系統要做這樣的設計,我們針對不同的系統要求可以有哪些解法,這些解法各有什麼優缺點,總之分散式系統就是我們解決了一個問題,但又會產生更多要考量的點,一切都是 trade-off。
但這本書也不是沒有缺點的,首先我覺得是本書的英文沒有很好讀,我常常一段看了好幾遍才知道他想表達的重點是什麼,而且,有些很重要的觀念常常藏在一段文字裡用一句話帶過,但是不太重要的觀念卻使用 Bullet Point 表達;另外這本書話常常講一半,一些觀念提到了一點卻說我們後面再聊,也因為這樣,我在考慮要不要幫大家整理每一個章節的重點,翻成中文分享給大家,有興趣的朋友麻煩拍手留言告訴我!
除此之外,Google 的 SRE Books 內容也很實在,但是每一個章節的內容是獨立的,建議大家選擇想研究的章節跳著看就好。
最後,Distributed systems for fun and profit 的內容也很好,以分散式系統的理論為主,比較沒那麼針對系統設計面試。
#還想閱讀更多嗎?
我知道光是上面的資源就已經讀不完了,但是行有餘力的話,平時也可以多看看各大公司的技術部落格或是訂閱技術週刊如 TechBridge (台灣) 、HackerNews 以及 InfoQ 等等。
此外,參考別人的經驗也是很好的方式,最近剛好幾個朋友剛找完工作,他們分享的矽谷找資深工程師工作心得分享以及2020 上半年軟工找工經驗分享也都很值得看!
最後,在工作上使用到的技術,除了會用以外,最好也要花時間去研讀技術文件,了解他們設計的考量以及支援的場景,大部分這類型針對開發者的文件寫得會比較深入,所以也是相當好的學習素材;我自己過去一年因為工作上需要整合 Envoy 到我們公司的 Traffic Infrastructure,從他們的文件中學到很多 Service Mesh 跟微服務器的重要概念,學習的深度都是其他資源無法提供的。
#總結
這篇文章我們整理了很豐富的系統設計資源,希望大家不要被這滿滿的資訊量嚇跑。
請記得,我們永遠有各種方法在短期內針對面試做準備,提升面試的表現,但這都只是一時的,沒辦法讓你一夕之間就成為專家;如果想要追求長期的持續成長,那麼沒有捷徑 — 就是養成每天學習以及閱讀的習慣,一開始真的很難看到效果,但是當你持續一週、一個月甚至是一年以後,你會明顯感受到自己的成長,這些投入的時間都是騙不了人的。
如果這篇文章對你有幫助,請拍手留言加訂閱,並且分享給更多有需要的人知道!
medium app中文 在 Taipei Ethereum Meetup Facebook 的最佳解答
📜 [專欄新文章] Crosslink 2019 Taiwan|以太坊 2.0 的未來藍圖及挑戰
✍️ Frank Lee
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Danny Ryan(source: Crosslink 2019 Taiwan)
十月底於台北矽谷會議中心舉行的 Crosslink 2019 Taiwan,吸引了來自世界各地的區塊鏈愛好者們齊聚一堂。第一天的議程,邀請到了以太坊基金會 (Etherium Foundation, EF) 的核心研究員 Danny Ryan,會中分享了以太坊 2.0 (Ethereum 2.0)目前的研究方向以及遇到的挑戰,演講的內容主要包含了以太坊 2.0 的架構,新的分片提案,執行環境 (Execution Environments, EE)以及雙向橋接 (Two-Way Bridge)等議題。
一、以太坊 2.0 的架構
以太坊 2.0 架構(source: Crosslink 2019 Taiwan)
第零階段(Phase 0)
在 以太坊 1.0 (Ethereum 1.0) 中,使用 工作證明(Proof of Work, PoW) 作為 共識機制 (Consensus),並藉此產生新的區塊。為了要減少工作證明產生新區塊時,所需要的大量算力,以及所花時間過長的問題,以太坊 2.0 將改為 權益證明 (Proof of Stake, PoS) 作為產生新區塊的共識機制,以太坊 2.0 PoS 創世區塊 (Genesis Block) 預計會在 2020 年 1 月 3 日產生。
第零階段會建立信標鏈(Beacon Chain),信標鏈就是以太坊 2.0 系統層級的鏈,當從以太坊 1.0 移轉到以太坊 2.0 時,信標鏈扮演著非常重要的角色,它是整個系統的基礎。
一旦第零階段完成,將會有兩個使用中的以太坊鏈。以太坊 1.0 鏈(目前所使用的 PoW 主鏈)以及以太坊 2.0 鏈(新的信標鏈)。在這個階段,使用者在 1.0 鏈把以太幣鎖到合約裡以註冊公鑰, 2.0 鏈會承認合約內註冊的公鑰。但是,他們無法將該以太幣遷移回去以太坊 1.0 鏈上面,為了要執行信標鏈,你會需要一個信標鏈的客戶端。目前,許多團隊正在開發這些客戶端。
第一階段(Phase 1)
第一階段會加入分片鏈(Shard Chains),在這個階段主要專注於分片鏈的資料結構,以及其有效性(Validity)和共識性(Consensus),分片鏈在這階段只當作資料鏈,並不會指定分片鏈狀態執行(State Execution) 或帳戶餘額(Account Balances)。這比較像是對分片結構進行測試,而不是嘗試利用分片來對信標鏈進行擴展。在這階段,信標鏈會把分片鏈的區塊(Block), 當作沒有結構或意義的位元集合(Collections Of Bits)。以太坊 1.0 和以太坊 2.0 仍將同時存在,並且在以太坊 2.0 鏈上進行測試和遷移。
這個階段分片鏈會與信標鏈交聯(Crosslinks) ,每個分片的當前狀態 — “結合資料根(Combined Data Root)”,會定期記錄在“信標鏈”區塊中,作為交聯。信標鏈區塊完成後,相應的分片區塊(Shard Block)將被視為已完成,其他分片知道它們可以依靠這些區塊進行跨分片交易。
交聯是委員會(Committee)的一組簽名(Signatures),證明了分片鏈中的某個區塊,可以包含在信標鏈中。交聯是信標鏈”理解”分片鏈更新狀態的主要方式。交聯還用作異步跨分片通信的基礎結構。
信標鏈在每個時段(Slot)中的每個分片,隨機選擇分片驗證者(Shard Validators) ,分片驗證者只是用來在每個區塊的內容上達成一致,他們通過交聯證明分片的內容和狀態,分片中包含什麼內容都沒有關係,只要所有委員會都達成共識,並定期更新分片上的信標鏈即可。
第二階段(Phase 2)
第二階段會將所有功能開始結合在一起,在第二階段,會完成分片化,分片鏈從簡單的數據容器過渡到結構化鏈狀態,並將重新引入智能合約。每個分片將管理基於 eWASM(Ethereum flavored WebAssembly) 的虛擬機。它會支援帳戶(Accounts)、合約(Contracts)、狀態(State),以及 Solidity 中我們熟悉的其他抽象化,預計在第二階段之前或第二階段開發時,大家熟悉的工具(例如 Truffle, Solc, Ganache)需要轉換成支持 eWASM 的版本,以太坊 1.0 及以太坊 2.0 可藉由雙向橋接來互通,會有可擴展的 Layer 1 執行,藉由無狀態執行,來提高執行速度。
二、新的分片提案
新的分片提案(source: Crosslink 2019 Taiwan)
以太坊 2.0 原提案所運作的機制,是以每個時期 (Epoch) 為單位,來進行交聯的動作,每個鏈上有1024 個片 (Shards),當需要跨分鏈交易(Tx)時,由於是每個時期進行交聯,會有較大的延遲時間;新提案更新為每個時段都進行交聯的動作,並減少片(Shards)的數量為 64個,來降低跨分片(Cross-Shard)交易時的延遲時間,每個時段都進行跨分片交易。
新提案的優點
對於以太坊 2.0 新提案的優點,首先新提案的片 (Shards)數量由 1024 個降至 64 個,降低了運算的複雜度,因為跨鏈時間從一個 epoch 降到一個 slot ,時間縮短第一個好處是給 DApp 開發者及使用者更好的體驗。第二個好處是以往需要手續費市場(Complex Fee Market) 及樂觀狀態(Optimistic State)這兩種複雜的跨鏈交易解決方案,現在不需要了。
新提案的交易
新提案只需要比之前的提案更少的片 (Shards),就可以啟動交易,可能會有更長的分片時段(12s),更大的分片區塊(Shard Block),目前更新到第零階段 ,第零階段測試網(Testnets)的測試,可能會有所延遲 ,新提案減少了第零階段發布所需的時間。
目前的想法
希望能給開發者及使用者更好的體驗,使用較大的分片區塊(Shard Block),來改進資料可用性,以及要降低開發延遲和第零階段發布所需花費的時間。
三、執行環境
以太坊 1.0 簡易架構圖(source: Crosslink 2019 Taiwan)
在之前設計的以太坊 2.0 和以太坊 1.0 中,狀態在共識機制裡,扮演著非常重要的角色,共識機制會隨時去讀寫所有的狀態,不管是執行的概念、交易的概念、帳戶的概念、樹狀結構的概念、以及所有在資料結構中的概念,都深深地融入共識中。
上圖是以太坊 1.0 的簡易架構圖,在圖中我們可以看到共識機制及一條鏈,共識機制裡包含了狀態及一個執行引擎,狀態裡包含了狀態樹,在這裡的執行引擎使用硬編碼規則,裡面包含了執行交易、帳戶模型和帳戶結構,我們可以看到圖的右邊有一條鏈,鏈上面有交易資料,在以太坊 1.0 中,我們會在交易資料上執行共識機制,去修改和更新狀態。
執行環境是一個單獨的虛擬機器,在以太坊 1.0 中,會有一個特定的帳戶模型(Account Model),以及事先定義好的操作碼 (Opcodes),礦工機制 (Gas Mechanisms)和狀態根(State Root),以太坊虛擬機 (Ethereum Virtual Machine, EVM) 就是一種特定的執行環境。
如果遵循 EIP(Ethereum Improvement Proposals) 的建議,開發者總是在要求新的操作碼,或著是更改礦工成本(Gas Cost)來支援他們的應用,像是 Plasma 和 Zkrollup 這樣的例子有很多,這樣就會需要修改 EVM 1.0 的執行環境 ,才能支援到他們的應用程式(DApp)。
但是在以太坊 2.0 的第二階段中,我們可以支持多個執行環境。 也可以有多個狀態根,不同的帳戶模型等。舉個例子,你可以定義一個臉書幣執行環境 (Libra EE),以便在以太坊 2.0 上運行 Libra。 或者,您可以定義一個比特幣執行環境 (BitCoin EE),這樣就可以在以太坊 2.0 上運行比特幣。
以太坊 2.0 簡易架構圖(source: Crosslink 2019 Taiwan)
在以太坊 2.0 簡易架構圖中我們可以看到狀態根, 它可能是 32 Bytes 的 Blob,上面有 WASM 的執行碼 (Execution Code),可以在使用者層級中去做細部設定。圖片右邊有一個鏈,鏈上有一般的交易資料以及見證(Witnesses),見證實際上顯示在資料庫的區塊中,你需要針對該狀態而不是資料庫執行該筆交易,而且還需要證明資料對於當前狀態根是有效的。舉個例子,如果我們要在帳戶 A 和帳戶 B 之間傳遞數值,假設從帳戶 A 移動 5 以太幣 到帳戶 B ,我們不能直接說帳戶和餘額 (Balance) 是確實可用的,在過程中,我們需要加入見證資料(Witness Data),來證明兩個帳戶當前的狀態,當執行碼正在執行交易資料時, 狀態根可以修改和更新狀態樹。
執行環境並不是共識機制預先定義好的,他可以在使用者層級上去做新增,我們也可以把以太坊 1.0 複製一份到以太坊 2.0 的執行環境中,將現有的狀態根放入EVM 直譯器,用梅克爾見證驗證器(Merkle Witness Verifier)來當作他的執行碼。
在原先的提案中,狀態和共識息息相關,且執行帳戶和共識中包含了狀態樹結構;而在新的提案中,執行環境為無狀態模型(Stateless Model),高度抽象化的,並且它的可擴展性,相較原先的提案高出非常多。
執行環境的優點
執行環境有許多優點,相較於舊系統,它也許可以更快地將產品推向市場,因為我們不必等到核心共識推出之後,才研究並發展這個概念,在 Layer 1 會有更少的阻礙,它可以在各種應用上,使用具高擴展性及資料可用性的執行引擎,所以未來會長期使用這個核心基礎層。
執行環境的設計完成,讓以太坊 1.0 到以太坊 2.0 的遷移,有了更清楚的方向,使用執行環境比較不會有技術隨時間遷移而過時的問題產生。
執行環境交易
對於執行環境交易,開發者及使用者可能會覺得太抽象,對什麼是執行環境感到困惑,像是這一層加了什麼?應該在這一層做什麼?誰應該寫執行環境?而且相關的開發規範會趨向更嚴格的形式。
虛擬機可能會有潛在的碎片化問題,進而影響到交易速度。
目前的想法
目前所有的研究都是正向發展的,還有充裕的時間,嘗試並更好地了解設計空間,未來會多花一些時間,在建立更好的執行環境通訊機制上面。整體來說,現階段的進度,對於未來是重要的里程碑。
四、雙向橋接
最後一個主題,主要討論開發雙向橋接是否是值得的?團隊可能可以在什麼時間點,來去做雙向橋接?
單向橋接示意圖(source: Crosslink 2019 Taiwan)
講者先前提過的提案中,以太坊 2.0 最初有一個單向橋接,所以你可以從以太坊 1.0 轉換到 以太坊 2.0,但是最初的架構不允許回傳,這主要是出於幾個原因,這需要我們將以太坊 1.0 的發展 與 以太坊 1.0 和以太坊 2.0 的硬分叉緊密結合,並把兩個系統置於互相影響的風險之中,因此團隊認為以太坊 2.0 在發布且穩定之前,將兩邊緊密耦合是不明智的。
單向橋接的問題
月初在日本大阪舉行的 Devcon 5 上,橋接的問題受到了廣泛的討論,原提案的單向橋接(One-Way Bridge)模式,會有驗證者流動性的問題,而且更重要的是,它可能會引發以太坊 1.0 和以太坊 2.0 之間的可替代性問題,如果我們允許以太坊 2.0上的流動性,那麼某種形式的轉移機制,就會在將以太坊 1.0 分叉到以太坊 2.0 之前,或著是在雙向橋接之前產生,交易所中很可能會同時有兩個幣,團隊和整個驗證者社區都很擔心這個問題,目前正在找尋減輕這個問題的方法。
另外也希望鼓勵大家,在這些早期階段進行驗證,但是在早期階段進行驗證,肯定會有很高的風險,因為存在未知的鎖定期,因此也希望找到方法減輕這種風險。
雙向橋接
雙向橋接示意圖(source: Crosslink 2019 Taiwan)
雙向橋接目前可能的路線有兩條,一種是在以太坊 1.0 上面,建立以太坊 2.0 的輕節點;另一種是在以太坊 1.0 上運作以太坊 2.0 的全節點。
路線A: 在以太坊 1.0 上,建立以太坊 2.0 輕節點
路徑A示意圖(source: Crosslink 2019 Taiwan)
這個路線需要在實際的 EVM 中支援 BLS-12–381,會花費很多開發時間,而且它只提供輕量客戶端 (Light-Client) 層級的安全性。當驗證者在 2.0 鏈上產生提款交易的收據時,我們會拿到以太坊 2.0 的輕量客戶端證明,一但收收據的區塊在以太坊 2.0 上敲定了,你就可以在以太坊 1.0 的合約上提款。不過,這可能不是團隊最終選擇的路線。
路線B:在以太坊 1.0 上,運行以太坊 2.0 的全節點
路徑B示意圖(source: Crosslink 2019 Taiwan)
第二種路線,會在以太坊 1.0 的節點上,運行以太坊 2.0 的全節點,這個路線允許我們使用敲定性機制,因此,我們不僅可以使用這種機制,來促進以太坊 1.0 和以太坊 2.0 之間的轉移,我們也可以利用驗證者的安全性,來保護以太坊 1.0 鏈,我認為大家對此感到非常興奮,這通常被稱為“敲定性小工具提案(Finality Gadget Proposal)”。
但是還是需要一種機制,去輸出以太坊 2.0 狀態根在以太坊 1.0 上,所以有一些以太坊 2.0 社群的討論,在研究如何實作它,可能會包含礦工機制。
輸出以太坊 2.0 狀態根的另一個優勢,是以太坊 1.0 有穩固的機制可以實現它,以及同時擁有以太坊 2.0 的高擴展性及資料可用性,可以做一些有趣的應用,像是 ZK Rollup 和 Optimistic Rollup。
雙向橋接的優點
如果你在交易所中,列出以太坊 1.0 以太幣和以太坊 2.0 以太幣,它們的價格應該一樣。 如果不一樣,你可以用較低的價格買一個以太幣,把他發送到橋上,然後以較高的價格獲得另一種以太幣,並把它出售。 這種套利會使它們的價格保持不變,這樣會讓用戶,驗證者和開發人員感到困惑,雙向橋接可以防止兩邊的貨幣藉由套利的形式,來互相轉換。
雙向橋接的交易
但是還是有一些權衡在這裏,儘管對以太坊 2.0 的設計非常有信心,團隊還是希望在影響到以太坊 1.0 的安全性和風險狀況之前,先在生產環境中得到驗證。
雙向橋接是一種緊密耦合的共識機制,對於兩邊鏈的攻擊及產生的問題,都會影響到另一邊的鏈,協定的開發勢必會非常煩瑣,我們需要考慮到每個協定的安全性,如果我們越早開發協議,那麼我們實際上的進度就越少,當每個障礙隨著時間發展,它們就會相互阻礙,這讓以太坊 1.0 在這一點上的開發速度比以太坊 2.0 慢得多,因為實際用戶群存在很多擔憂,並且需要大量的協調,才能在我們的生產網絡上獲得硬分叉。
所以,如果我們越早將這些東西連在一起,就可能會減慢以太坊 2.0 的開發和分叉週期,並且這增加了一些額外的開銷,換句話說,驗證我們可以鏈接客戶端的開銷是相對的。
目前的想法
我們應該會在加入驗證人流動性之前啟用橋樑,但是會等到第一階段的產品穩定之後再開放;同樣的,有很多相關的研究都在同時進行,這可能會影響到,何時完成這個操作。
名詞解釋:
EIP(Ethereum Improvement Proposals):EIP 是以太坊平台的標準,其內容包含了核心協議的規範,客戶端 API 以及合約標準。
epoch :在以太坊 2.0 中,epoch 指的是時長 6.4 分鐘的時間單位,每個epoch 包含64個 slots。
Slot(時段):每個時段為 6 秒,不一定每個時段都能產生區塊,而epoch 中最後一個 slot 稱為邊界時段 (Boundary Slot) ,或稱為檢查點 (Checkpoint)。
Solidity:Solidity 是一種合約導向的語言,主要用來開發智慧合約。
Consensus (共識機制):共識機制是區塊鏈為了在各節點間達成共識,所開發的演算法。
Validator 驗證者:驗證區塊的節點,由信標鏈在每個時段(Slot)為每個 片 (Shards)隨機產生。
Gas:交易所需的費用,當 Gas 消耗完時,智慧合約會終止並進行 Rollback。
EVM(Ethereum Virtual Machine):EVM 中文為以太坊虛擬機,是一種輕量級的虛擬機環境,Eth 1.0 中智能合約的運行環境為 EVM。
Dapp(Decentralized App):在以太坊中,基於智能合約的應用都稱為去中心化的應用程序,即 Dapp(Decentralized App)。
ether(以太幣):以太坊的貨幣名稱。
Finality(敲定性):「敲定性」是 Casper 中的概念,是一種透過驗證者投票,在鏈上產生不可回朔(Rollback)的檢查點的機制。
Libra:臉書提出的加密貨幣,預計於 2020 年發行。
Merkle Tree:Merkle Tree 由計算機科學家 Ralph Merkle 所提出,中譯為雜湊樹,因為是由雜湊函式形成的樹。
Reference: [Ethereum Improvement Proposals](https://eips.ethereum.org/)
Reference: [Two-way bridges between eth1 and eth2](https://ethresear.ch/t/two-way-bridges-between-eth1-and-eth2/6286)
Reference: [Ethereum 2.0 (Serenity) Phases](https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-phases/#phase-2-state-execution)
Reference: [ethfans](http://ethfans.org/)
Reference: [eth2 quick update](https://blog.ethereum.org/2019/10/23/eth2-quick-update/)
Thanks to Danny Ryan, Chih Cheng Liang, Juin Chiu, Yahsin Huang, and Jerry Ho
Crosslink 2019 Taiwan|以太坊 2.0 的未來藍圖及挑戰 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
medium app中文 在 寶博士 Youtube 的精選貼文
[已啟用這部影片字幕的社群協力翻譯功能]
寶博朋友說:
紙鈔是不是你的,取決於在不在你的口袋裡,而不是有沒有寫你的名字。
如此龐大的經濟體系,只能見招拆招還是誰在背後操刀?
森林裡的會議為什麼要偷偷開,又決定了哪些金融發展?
本集邀請經濟學家林仲生,用經濟學家的眼光來看世界經濟發展。
註1:布列敦森林會議(英語:Bretton Woods Conference)正式名稱為聯合國貨幣金融會議(英語:United Nations Monetary and Financial Conference)是1944年7月1日至21日,44個二戰同盟國的730名代表在美國新罕布夏州布列敦森林華盛頓山賓館召開的會議。會議通過了《聯合國貨幣金融協議最後決議書》、《國際貨幣基金組織協定》和《國際復興開發銀行協定》兩個附件,總稱《布列敦森林協定》。中國代表為孔祥熙,美國代表為哈里·迪克特·懷特,英國代表為約翰·梅納德·凱恩斯,法國代表為皮埃爾·孟戴斯-弗朗斯。
註2. 哲基爾島(Jekyll Island)是真實存在的一個島,它位於喬治亞州海灣。1910年, 就是在這裡,幾個人秘密召開了一次地下會議,會議起草了聯邦儲備系統(聯儲會);整個會議是在極端秘密的環境下進行的。寶博士記憶中有人秘密開會的會議應該是這個。參加會議的人有:
1、納爾遜·奧爾德里奇(Nelson Aldrich);
2、亞伯拉罕·皮亞特·安德魯(Abram Piatt Andrew),美國財政部助理部長;
3、弗蘭克·萬德利普(Frank Vanderlip), 紐約國家城市銀行(洛克菲勒家族銀行,花旗銀行前身)總裁,銀行股東還包括了摩根家族、雅各布·希夫(1907危機後入股);
5、亨利·戴維森(Henry Davison),J. P. Morgan高級合伙人;
6、查爾斯·諾頓(Charles Norton),紐約第一國家銀行總裁(摩根家族代理人);
7、本傑明·斯特朗(Benjamin Strong),約翰·皮爾龐特·摩根的心腹;
8、保羅·沃伯格(Paul Warburg)。
「Fed七巨頭」實際上代表了洛克菲勒家族、摩根家族、沃伯格家族以及在背後的羅斯柴爾德家族,按照愛德華·格里芬(Edward Griffin)在《The Creature from Jekyll Island》(1994年出版,後多次印刷,中文版《美聯儲傳》)里的說法,這些人控制了當時世界財富的四分之一。
https://zhuanlan.zhihu.com/p/37960553
https://m.xuite.net/blog/skywalker333/twblog/300562837
感覺是有點陰謀論來者 ... XD 請大家自行判斷了。
APP下載▶️http://www.soundon.fm/download
- - - - - -
⭐葛如鈞(寶博士)
Facebook▶️https://www.facebook.com/dAAAb
Medium▶️https://medium.com/@daaab
- - - - - -
📣訂閱SoundOn
官網▶️https://www.soundon.fm
Facebook▶️https://reurl.cc/1QxXzQ
Instagram▶️ https://reurl.cc/XX6Z3j
- - - - - -
🎵片頭:Music from https://icons8.com/music/author/savvier Fame Inc by SAVVIER
🎵片尾:Music from https://icons8.com/music/author/NORDGROOVE
- - - - - -- - - - - -
主持:北科大互動設計系 專任助理教授 葛如鈞/寶博士
感謝:北科大創新思考與區塊鏈應用社群計畫補助|北科大互動設計系 https://ixd.ntut.edu.tw |北科大創新創業情報站 https://fb.com/ntuticorner by Fugue