發表文章

目前顯示的是有「Serenity」標籤的文章

Data Availability on Ethereum 2.0 Light Node

圖片
本來是要展開一個叫做「與大神(C.C. Liang)共筆系列」,無奈C.C.太忙,最終還是只能自幹,不過依舊感謝 C.C. Liang 提供素材跟觀念釐清 data availability(資料可取得性) 跟 fraud proof (詐欺證明)對於區塊鏈交易量擴展,是很重要的兩項因素。當交易量大意味著資料量就變大(無論是分片或是加大區塊大小),而資料量越大,能夠運行全節點的人就會越少(因為硬體跟維護成本越高)。舉例來說,Ethereum 2.0 有1024 條鏈,不可能每個人都把1024條的資料都下載下來,更何況,這樣也失去分片的意義,但若某節點做分片A的validator,此時,需要跟分片B有所互動,不太可能把分片B的所有區塊都下載下來,太耗時也太佔空間,而且若如此設計,最終也會把全部的鏈都下載下來....。但是,若沒有全部的區塊那要怎麼驗證交易呢?!這就是「資料可取得性」的重要性。 資料可取得性簡單來說就是拿不拿得到資料,但不代表拿到的資料的有效的/正確的。那在討論資料可取得性問題之前,先來認識詐欺證明。 在區塊鏈世界中,驗證資料方式可以分為有效證明(validity proof) 跟詐欺證明兩種。有效證明就是現在區塊鏈的運作方式-「驗證資料是正確的,才能上鏈」,也就是當你需要轉帳時,礦工需要先驗證你的餘額是否足夠,確認你餘額是夠的(驗證資料是正確的)才會打包。而詐欺證明則是相反,驗證者收到交易之後,經過一段時間若沒有人提出異議/挑戰,那就代表你送出的交易是沒問題的,這種方式驗證成本相對較低,也因此大部分L2方案選擇使用詐欺證明作為資料驗證的方式。 而輕節點只下載部分的資料(通常是block header),要如何能在運作上幾乎跟全節點一樣可靠呢('幾乎' 是因為輕節點需要額外的一些假設)?就必須借助資料可取得性跟詐欺證明的的合作。 Fishermen 漁夫(fishermen)機制是一種很直覺的設計方式,就是漁夫們觀察著網路上的無效資料,發現後送出詐欺證明以得到獎勵。 基本的獎懲機制如下, 1. 若有人提出無效的詐欺證明,則沒收押金, 2. 若有人提出有效的詐欺證明,送出無效資料的人會被沒收押金,而押金部份當作挑戰者(提出詐欺證明的人)的獎勵。 但是,這種機制在這個情境會有問題。我們來...

Ethereum RNG (RANDAO & VDF)

圖片
RNG 是 Random Number Generator ,也就是亂數產生器 在現實世界中要產生真正的隨機數,其實不容易,各個語言的library所提供的隨機數,都是偽隨機數,是可以預測的,不過在大部分的應用場域,都是可以應付的。區塊鏈的世界,面對的是全世界的人,怎麼產生不可預測的隨機數,就很重要,不然就可以被有心人所操作。例如Ethereum Beacon chain(POS chain)中的validator/attester(產塊跟驗證的角色),若是可以被預測,那大概就沒有人會相信這條鏈了。而這也是Ethereum Serenity(Eth-2.0),所遇到的問題之一。目前隨機數的產生,就由RANDOA + VDF所產生,以下就分別介紹 RANDAO RANDAO是利用經濟模式(獎勵跟處罰)的方式,促使在公共場域中能產生隨機變數 原理很簡單,想參加的人把拿錢來抵押,需要產生隨機數的人要付錢。所以參加者就可以從中分潤,當然不守規矩抵押的錢也就會被沒收,利用獎勵跟處罰的方式迫使大家都守規矩。詳細步驟如下: 首先,會有個收集seed的時間,例如6個block的時間。接著,想參與的人,投入某個數量的ETH到RANDAO這個smart contract(作質押),然後附上secret(某個只有你知道的值s,然後作sha3)。 等收集時間結束,就是驗證時間。此階段所有參與著需要把s傳入smart contract做驗證,smart contract會把s作sha3,去驗證是不是跟第一階段傳進來的一致。最終會把驗證過的s當作seed去產生隨機數。 最後,就是產生隨機數,然後把隨機數傳給之前有請求過的contract。然後歸還質押的ETH跟利潤分給參與者。 此外有幾個附加條件 第一階段若收集到數筆一樣的secret,只接受第一筆 第一階段會規定基本人數,若結束後未到達人數門檻,則此次的產生就失敗 若第二階段需提供s 若未提供,則質押的ETH會被沒收 若此階段有一個以上參與著未提供s,則此次產生失敗,並且把沒收的ETH分給有提供s的參與者。且退還請求者所支付的ETH。 VDF VDF  全名為 Verifiable delay functions ,從字面上有點難懂在幹嘛,從運...

What's New in Ethereum Serenity (2.0)

圖片
Ethereum 2.0 已經正式改名為Ethereum Serenity 原本預計在今年(2018)上線的Hybrid POS(Casper FFG)跟sharding,因為遇到一些技術上的困難,所以把Hybrid POS改成單純POS,然後因為sharding跟POS有部份技術是重疊的,所以把POS跟sharding併在一起做(本來是分成兩個team作開發) Beacon Chain 在Ethereum Serenity的規劃中,在原本的POW chain之外多一個鏈叫做 Beacon chain ,是一個POS chain。在Beacon chain中有兩種角色 proposer 跟 attester ,proposer就是產塊的人,attester是驗證的人。而在POW chain上存入32 ETH,可以成為Beacon chain上的 validator ,而validator有權利產塊(proposer),也會有機會被選attester。此外,延續了Casper FFG finality這個概念,也就是在finality之後的狀態就是正確的狀態(不可回復),不像POW一般需要6個塊的時間才能確認交易是不會被更改的(POW的狀態確認是機率,六個塊之後有"很高的機率"是無法被改變的,而finality就像是0跟1一樣,沒有中間)。 聽到這,好像覺得很簡單,但是在實作上會遇到幾個問題,首先,怎麼決定誰是proposer誰是attester,如果亂數的隨機性不夠,就很容易被遭到操控。接下來是,每次驗證都需要做一次簽名,因為32個ETH就可以當validator/attester,每次驗證可能會有10~20幾萬的簽章( 簽章數量的預估方法 ),驗完簽章天都黑了 XD。 RNG 針對亂數產生( RNG , Random Number Generator),使用 RANDAO 跟 VDF ,RANDAO是個利用經濟獎勵的機制來產生亂數,原始的設計是在smart contract上,而在Beacin chain會直接實作這個邏輯。而VDF是一個delay function,因為速度的關係,基金會打算自己開發ASIC晶片。關於這RNG之後會再寫一篇 詳細解釋 。 Signature Aggregatio...