[爆卦]root數學是什麼?優點缺點精華區懶人包

雖然這篇root數學鄉民發文沒有被收入到精華區:在root數學這個話題中,我們另外找到其它相關的精選爆讚文章

在 root數學產品中有14篇Facebook貼文,粉絲數超過3,460的網紅Taipei Ethereum Meetup,也在其Facebook貼文中提到, 📜 [專欄新文章] 從 Rollups 來聊聊以太坊 Layer2 的演進 ✍️ Kimi Wu 📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium Photo by Clark Van De...

 同時也有8部Youtube影片,追蹤數超過2萬的網紅學校沒有教的數學,也在其Youtube影片中提到,此題涉及餘式定理 Remainder Theorem,考生在此題的表現並不理想。Thomas 講解當除式是二次多項式 (Quadratic Polynomial) 時的處理方法。 0:28 背景知識 4:47 Part A 題解 7:06 Part B 題解 13:06 Complex Conju...

root數學 在 辣媽英文天后 林俐 Carol Instagram 的最讚貼文

2021-07-06 05:58:15

感謝大家這禮拜對吳迪老師、李傑老師直播秀的支持🙏🏻 俐媽明晚7:30~8:30也要開播了🎉🎉 俐媽要告訴大家上高中基本需要具備的心態、背英文單字的方法、還有學英文需要的一些工具(書/APP),歡迎三升一孩子參加! 大家一起一排愛心❤️刷起來! 今天送上之前預告的數學大餐part 2! (感謝學...

  • root數學 在 Taipei Ethereum Meetup Facebook 的最佳貼文

    2021-07-25 21:53:21
    有 18 人按讚

    📜 [專欄新文章] 從 Rollups 來聊聊以太坊 Layer2 的演進

    ✍️ Kimi Wu

    📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium

    Photo by Clark Van Der Beken on Unsplash

    去年 Defi summer 的熱潮後,以太上 Defi 應用呈現爆炸性成長,造就高昂的交易手續費,為了有更快的交易速度及可負擔的交易費用,人們對側鏈、Layer2 的需求更加強烈。Rollups 是 Layer2 的一種技術,在今年相當熱門,幾個耕耘已久的專案 zkSync、Optimism、Arbitrum 等也開始廣為人知。今天想來聊聊以太坊上 Layer2 技術的演進。

    State Channel

    state channel 最一開始是建立在 Bitcoin 上,最廣為人知的就是 lightning network。簡單來說,就是兩方在私下建立一條可以互相轉帳的通道,轉帳完畢後把通道關閉,接著將交易後的狀態更新到鏈上。若交易一筆後即關閉通道,那交易成本就跟在鏈上一樣,所以在實務上,通道一直開著(或是一段時間),交易數筆、數百筆後再上鏈更新狀態,藉此平均每筆的交易手續費就大幅降低。也因為只需通道雙方驗證交易內容,交易速度能大幅提升,讓小額支付能夠實現,就不需等10分鐘(Bitcoin)後交易才會被打包,甚至要等6個區塊的時間。而最早在以太上的 state channel 是 Raiden。

    對於 Raiden 技術有興趣的可以參考這篇文章。

    Plasma

    Plasma 於2017年8月由 V 跟 Joseph Poon (Lightning Network的創始人之一)所提出,概念上是可以有鏈中鏈中鏈(就是Layer2 → Layer3 → … LayerN),藉此可達到百萬級甚至更高的交易量,不過概念太美好,沒人知道怎麼實作。

    隔年1月 V 提出了 Plasma 的第一個版本 Plasma MVP,是以 UTXOs 模型的設計,接著3月提出了第二個版本 Plasma Cash,同年(2018)Plasma 的提案數呈現著爆炸性的成長(絕大部分都是基於 Plasma MVP 跟 Plasma Cash 做改進)(如下圖),強大的社群力量,讓大部分關鍵的問題在同年年底都找到了解答。也為之後的 Optimistic Rollup 打下了基礎。

    而較著名的開發團隊,除了 EF 出來的 Plasma Group 外,還有 OmiseGo 跟 Matic(現在的 Polygon)。

    對 Plasma 技術有興趣的,可以參考這篇、這篇跟這篇

    https://ethresear.ch/t/plasma-world-map-the-hitchhiker-s-guide-to-the-plasma/4333

    Plasma 看似一切美好,但因為資料的可取得性(data availability)的問題,使得在使用者體驗上有點糟糕。

    Plasma 的所有交易資料都在 Plasma 鏈上,而 Plasma 鏈的礦工(即operator)只需繳交 Merkle root 到 L1 的合約作公證就好。因此若 operator 作惡,在 Plasma 鏈上交易者,就需有能力證明 operator 作惡。

    在 Plasma 設計中有”所有者”的概念(UTXOs 的設計中,收款者需要到拿送款者的轉出證明,才能動用這筆款項,轉出證明只有收款人會擁有),如果該所有者不關心自己的資產,就可能造成資產無效的結果(account-based 的設計,若你不理你的帳號,別人一樣可以轉帳到你的戶頭中)。因此每個交易者須有能力自行提出證明,無法委託第三方。

    而要證明這件事,用戶需要把 Plasma 鏈上的交易都下載下來,才能證明 operator 做了一件不合法的行為,也才能產生詐欺證明(fraud proof)到 L1 上的合約來證明 operator 作惡。而這個送出的詐欺證明,必需要被確保可以安全地送到 L1 上的合約被執行,因此需要有一段挑戰期,讓使用者可以下載及驗證資料(或是網路塞車造成詐欺證明無法被合約執行)。

    題外話,Eth 2.0 light client利用了 ECC (Error Correction Code)的原理,所以只需要部分資料就可以驗證正確性。

    Rollups

    同年(2018) 9月,在支線專注隱私性的開發的 Barry Whitehat 提出了 zk Rollup,隨後 V 也在以太坊研究員論壇發了一篇文章,解釋 zk Rollup 是如何運作的,並以On-chain scaling to potentially ~500 tx/sec through mass tx validation 為標題,也因此開啟了 Layer2 新的一頁。隔年(2019)三月,Matter Labs 獲得了 EF 的 grant 將 zk Rollup 產品化,也就是大家所知的 zkSync。

    所謂的 rollups,一樣是在 Layer2 上做交易,不同的是 L1 上會記錄每一筆的交易紀錄。什麼!如果每一筆交易紀錄都上鏈,跟一般 L1 交易有什麼不同?想了解細節可以看這篇。簡單來說,在合約裡用了一顆樹來記錄每個帳號的狀態,樹的第幾片葉子(index)代表一個帳號地址,因此帳號就從20 bytes 的地址變成了幾個 bytes 的 index。以 ZK Rollups 來說,交易都是在 Layer2 被驗證過的,所以簽章資訊(65 bytes)也不用上鏈,Optimistic Rollups 會利用簽章聚合的技術,數百個簽章最終會被聚合成一個。因此,交易資料從原本100多 bytes 變成了10幾個 bytes。因為交易紀錄都 ”放上鏈“,資料可取得性也就不是問題了。

    ”放上鏈”指的是利用 calldata 的方式放在鏈上,並非一般認知的寫進合約裡。非0值的 calldata 每 byte 需要耗費 16 gas,而合約寫進一個 32bytes 的資料需要花 20,000(新增) or 5,000(修改) gas,相當於每個 byte 的成本為625 or 156 gas,約為 calldata 的 40 or 10倍。

    同年(2019)六月 John Adler 在以太坊研究者論壇提出了Minimal Viable Merged Consensus,也就是大家熟知的 Optimistic Rollups 的原型,接著 Plasma Group 基於John Adler 的提案,提出了 OVM,從此 Layer2 上除了單純的轉帳外,還可以執行合約,也奠定了 Rollups 在 Layer2 的地位,開啟 rollups 的新世代。

    StarkWare 團隊建立了可評估的數學模型,驗證了 calldata 的成本從64 gas 降到 16 gas並不會對鏈的安全造成危害,提出了 EIP-2028(在 Istanbul 上線),也是推動 rollups 可行性的重要一環。

    Validity Proof v.s. Fraud Proof

    Optimistic Rollups 跟 ZK Rollups 最近有很多文章在介紹跟比較,這邊就不贅述。這邊想聊的是資料的有效性,這篇文章解釋地很好,這裏擷取部分敘述。ZK Rollups 保證了上鏈的資料都是正確的,資料必須被驗證過是合法的(例如沒有被雙花)才會改變使用者的狀態(例如 balance),跟現在各個主鏈的設計是一樣的,稱作有效性證明(Validity Proof),這種設計假設大家都是壞人,要通過驗證才會相信你,確認資料是百分之百的正確聽起來很理所當然,但是背後要維護資料的正確性,需要相當高的成本。

    Optimistic Rollups 則是相反,假設大家都是好人,送上鏈的交易都接受,當發現有人作弊,再靠檢舉機制來更正狀態,這稱作詐欺證明(Fraud Proof)。這樣的機制系統維護成本較低(L1 上不需要驗證每一筆資料的正確性),但需要多一個爪耙子的角色來維護系統的安全,也就多一個系統潛在的風險。而要確保爪耙子有足過的時間反應,就不能讓使用者即時地離開系統,這是 Optimistic Rollups 最被詬病的一點,提款要等七天(現在有第三方流動性提供者,使用者可以請第三方流動性提供者預付使用者的提款。使用者支付手續費來換取快速提款的服務,而流動性提供者則承擔資產鎖住七天的風險來賺取手續費。不過在 protocol 層以安全性為主要考量,還是需要較長的挑戰期)。

    ZK Rollups 的實作上,也有數個小時的提款期,不過那是基於成本考量,而非安全性。

    此外對照於 Plasma, rollups 的設計是 account-based,交易也都公開在鏈上,每個人都可以參與監督及提出詐欺證明。

    ZK Rollups v.s. Optimistic Rollups

    ZK Rollups 從資料的有效性來看勝過 Optimistic Rollups,離開系統時不需要額外的挑戰期,能即時提款離開系統,不過付出的代價就是交易延遲上鏈。因為產生 zkp 證明需要龐大的運算量,產生一次證明,大約需要10 ~ 20分鐘,所以說在 Layer2 上做一筆交易,10分鐘後你的交易才是有 L1 的安全性。

    為了能盡早得知發出的交易是否完成,實作上會把完成的交易先丟上鏈,等zkp 證明產生後再上鏈驗證其正確性,若驗證成功,則交易視同有 L1 的安全性。

    但是在通用性上,Optimistic Rollups 沒有複雜的 zkp 電路的限制,對於合約的支援度上更好,而且 zkp(SNAKRKs)在使用前需要一個盛大的啟用典禮(trusted setup ceremony)。

    zkSync

    zkSync 1.0 在去年(2020) 六月上線,因為不能執行合約,使用的專案並不多。同年的年初,Matter Labs 已經默默在開發一種新語言 Zinc,是可以在 zkSync 上開發合約的語言。年底,與 Defi 專案 Curve 合作,發表了在 zkSync上可以跑基本版的 Curve(兩幣交換)。今年(2021)三月,Matter Labs 發表了令人振奮的消息,zkSync 支援 EVM!只需要部分修改現有的合約就可以部署到 zkSync 上,測試網今年五月已經上線,主網預計8月上線。不過目前測試網上的交易量非常地少,相信在初期還是有相當多問題或是困難,以短期來看,Optimistic Rollups 陣營的速度跟支援度略勝一籌,不過個人相信長期會是 ZK Rollups 的世代(私心認為 lol),但最終還是由生態系的大小來決定贏家。

    在 ZK 這個陣線上有延伸出不同的設計,為了加快速度及減少上鏈成本,StarkWare 提出了 Validium 的概念,資料不上鏈但使用 zkp 確保資料的正確性,像是 StarkWare 的 Volition 跟 Matter Labs 的 zkPorter 都是同樣概念的實作,不過不是本篇的重點,就不多解釋。

    ETH 2

    V在2020年10月提出了 A Rollup Centric Ethereum,rollup 也因此進到 Eth2 的規劃中。Eth2 的設計中 shard chain 是資料層,而在 phase 2 後才有執行層(也就是才能執行合約),V 的提案 除了讓 shard chain 當資料層外,也會內建 rollups 的邏輯。至於會採用哪種 rollups 目前沒看到結論,不過 V 本人是傾向 ZK Rollups。如果成真,那未來數百個 rollups 之間的溝通,將會是另一個挑戰 。

    專案比較

    ZK Rollups 有目前這幾個較知名的專案: zkSync(Matter Labs)、 Hermez(Iden3)、 Loopring(Loopring)、 StarkNet(StarkWare)跟 Aztec(Aztec)。

    Optimistic Rollups 目前幾個專案 Optimism(Optimisim,前Plasma Group 成員)、 Arbitrum(Offchain Labs)、 Fuel(Fuel)。

    這是目前幾大 rollups 的生態系(今年3月時的統計),比較值得一提的是,Uniswap 團隊因為社群的投票,也將會在 Arbitrum 上面部署,對於整個 Arbitrum 的生態,相信有很大的影響。

    https://www.chainnews.com/articles/872971457746.htm

    感謝 NIC Lin 及 Chih-Cheng Liang 的審查跟建議。若有錯誤或不同觀點,歡迎指教。

    從 Rollups 來聊聊以太坊 Layer2 的演進 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.

    👏 歡迎轉載分享鼓掌

  • root數學 在 昔外籍新娘今美國大媽布魯奇。 Facebook 的精選貼文

    2020-05-03 07:27:58
    有 730 人按讚

    【 奇幻遠距蒙特梭利(一):宇宙教學 】

    對家長來說超級撲朔迷離的蒙特梭利小學,在全學區關閉校園之後一下子轉遠距,真是讓大家嚇得屁滾尿流。

    同一時間,想必校方老師們更是驚恐萬分吧!畢竟蒙特梭利的幾個大概念像(1)注重師生一對一互動(2)藉社群同儕激發正向影響(3)在手動操縱教具的工作中建構抽象概念(4)讓孩子自由選擇學習主題以保護內在學習動機(5)宇宙教育所以沒有課本也不分科(6)因材施教讓每個孩子都有量身訂做的進度......

    怎麼左看右看倒過來看都不適合遠距教學啊!

    還好我們學校得以向東岸一些較早關閉的蒙特梭利學校借鏡,加上校職員老師們腦力激盪,並且很有彈性地傾聽家長建議,在幾週內不停修正走向。經過一兩週的小混亂後,很快地走上康莊大道。(如果家長不用一起在大道上同行就更美好了😭)

    好加在我本來就對蒙特梭利教育充滿好奇心,本來就常常跟兩少爺亂嚷嚷著『好羨慕你們喔要是我可以跟你們一起上學就好了』。這史無前例的奇妙防疫遠距教學,就當成此生難得的跟兒子一起共學蒙特梭利的體驗機會吧。

    也讓我在這兒提醒大家,人在江湖真的要be careful what you wish for,不能亂向宇宙許願啊!

    蒙特梭利小學課程主張cosmic education(宇宙教學),教學不分科,因為世界上的道理與知識大多跨學科,沒辦法畫出明確的界線。像數學跟科學環環相扣,世界地理與歷史也都整個牽扯在一起,科學數學音樂與藝術的演進也都是歷史裡的重要章節。蒙特梭利的宇宙教學讓孩子很清楚地建立出事理的概念邏輯,也了解到自己在宇宙歷史中的位置。

    在這段時間陪讀的過程中,我終於得以一窺傳說中的宇宙教學是怎麼一回事。

    小札克班上的遠距教學,以每天早上老師發出的Morning Greeting email為主軸,搭配一週三次全班一起上陣後再分小組聊天的Zoom meeting、一週一次的迷你小組Zoom lesson(一次只有三四個學生,因為大家進度都不一樣)、每天半個小時老師掛在Zoom上讓大家自由上去發問的office hour、想約就可以約的一對一Zoom教學或師生談心時間等等。

    另外每週一早上我們會收到一個Weekly Work Menu,基本上就是本週菜單,列出十幾二十項孩子們每天可以從中自由挑選去做的活動與作業。

    每週老師們還都會陸續上傳許多不同的錄影教學內容,包括數學或語言lesson、科學實驗、美勞活動、瑜伽與體育等等,通常都是五分鐘到二十分鐘左右的影片。

    連原本助理老師在教室裡每天二十分鐘read aloud讀小說連續劇給大家聽的時段,竟然也繼續每天錄影上傳讀給大家聽。

    防疫結束後全校師長都變專業YouTuber了吧!

    每天早上老師寄給大家的Morning Greeting email大概都是滿滿的三四頁pdf檔,每天都是很有趣的內容,也是當週的教學主軸。

    舉例來說,前週的主題是『roots』(根)。我們每天早上收到的email就從植物不同種類的根開始聊,講到我們家庭歷史的尋根溯源,講到英文字裡拉丁文與希臘文的字根。

    又因為英文字root的根源是北歐古諾爾斯語的rot、與拉丁字根radix相聯繫,聊了radish、radical、eradicate甚至潮語rad等單字的意思,又聊到世界歷史中不同的進位系統(radix),像巴比倫人竟然有著六十進位的數學系統、電腦語言是二進位等等。最後聊了平方根的概念,因為正方形就是從平方根長出來的。

    幾週下來email讀得為娘我瞠目結舌下巴掉地上,很覺得知識有被增長到(小學二年級的程度😂)。

    當週的錄影教學包括了超奇妙的幾何乘法、用教具求平方根、分數概念與分數加法、拋物線的畫法、不同進位系統的算法。(蒙特梭利數學也是宇宙教學,畢竟乘法除法分數平方根和幾何圖形全都是相關聯的流動概念,真的是讓我大開眼界)

    當週作業活動菜單則包括去後院拔幾株雜草以觀察分類並且素描、培育並觀察種子、畫出自己的尋根家族表、從拉丁與希臘字根表中選幾個字造句等等,還有一些與之前那週主題延續相關的活動。

    上週的主題是『listening』(聽),聊到耳朵的構造、鳥鳴、音波的高低頻率與畫法、聲譜圖、詩中的押韻與子母音玩法、音樂與詩的韻律、手語字母的打法。

    錄影教學除了音符與樂譜的讀法外,最讓我掉下巴驚嘆的是小札克的帥哥老師竟然抱著一把電吉他,聊起那位發明畢氏定理也就是直角三角形邊長a2+b2=c2的畢先生Pythagoras竟然也發現到,當琴弦長度的比例剛好是簡單整數比時,一起演奏就會發出悅耳和諧的聲音,就這樣成為古典樂的基礎。

    猶記上週錄影教學才剛跟孩子們聊過『分數』的概念,教大家動手做了一本分數的書還自製了蒙特梭利分數教具,老師馬上在這邊應用舉例。

    老師說他手上吉他最上面那根弦是E弦,空弦時是低音E,按在剛好1/2的地方,就會是高八度的高音E。

    再把手指按在整條弦8/9的地方,就會彈出F音。按在整條弦3/4的地方,就會是A音。按在整條弦2/3的地方,就會是B音。

    同樣的概念也可以用在玻璃杯裡裝簡單整數比的水量,敲出和諧的樂音。

    簡單講解完之後,又聊聊早上email提過的頻率與聲波的關係。低音E的聲波是高音E的兩倍長,以頻率來講,就是在低音E聲波往上又往下跑一次的同一段時間內,高音E會上下上下地跑兩次。

    看完影片,我跟小札克馬上依照指示拿量杯做數學兼裝水,在一樣的玻璃杯裡擺不同整數比的水量,嘻嘻哈哈地敲敲打打做起實驗來。

    分數、弦樂、畢氏、音波、頻率,我好像都在求學的不同階段片面地模糊地學習過,卻從沒有想過他們之間的關係。二十分鐘的蒙特梭利宇宙教學,仿如醍醐灌頂。❤️

    (請待續...)

  • root數學 在 Taipei Ethereum Meetup Facebook 的精選貼文

    2019-11-17 23:14:17
    有 36 人按讚

    📜 [專欄新文章] 瞭解神秘的 ZK-STARKs
    ✍️ Kimi Wu
    📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium

    上一篇關於 zkSNARK扯到太多數學式,導致很難入手,這次介紹 STARK 會盡量減少數學式,以原理的方式跟大家介紹。

    STARK 被視為新一代的 SNARK,除了速度較快之外,最重要的是有以下好處1. 不需要可信任的設置(trusted setup),以及
    2. 抗量子攻擊

    但 STARK 也沒這麼完美,STARK 的證明量(proof size)約 40–50KB,太佔空間,相較於 SNARK 只有288 bytes,明顯大上幾個級距。此外,這篇論文發佈約兩年的時間,就密碼學的領域來說,還需要時間的驗證。

    STARK 的 S 除了簡潔(Succinct)也代表了擴展性(Scalable),而T代表了透明性(Transparency),擴展性很好理解,透明性指的是利用了公開透明的算法,可以不需要有可信任的設置來存放秘密參數。
    SNARK 跟 STARK 都是基於多項式驗證的零知識技術。差別在於,如何隱藏資訊、如何簡潔地驗證跟如何達到非互動性。

    快轉一下 SNARK 是如何運作的。
    Alice 有多項式 P(x)、Bob有秘密 s,Alice 不知道 s、Bob 不知道 P(x)的狀況下,Bob 可以驗證P(s)。藉由同態隱藏(Homomorphic Hindings)隱藏Bob的 s → H(s),藉由 QAP/Pinocchio 達到了簡潔地驗證,然後把 H(s) 放到CRS(Common Reference String),解決了非互動性。細節可以參考之前的文章 。

    問題轉換

    零知識的第一步,需要先把「問題」轉成可以運算的多項式去做運算。這一小節,只會說明怎麼把問題轉成多項式,至於如何轉換的細節,不會多琢磨。

    問題 → 限制條件 → 多項式

    在 SNRAK 跟 STARK 都是藉由高維度的多項式來作驗證。也就是若多項式為: x³ + 3x² + 3 = 0,多項式解容易被破解猜出,若多項式為 x^2000000 + x^1999999 + … 則難度會高非常多。

    第一步,先把想驗證的問題,轉換成多項式。
    這邊以Collatz Conjecture為例子,什麼是Collatz Conjecture呢?(每次都用Fibonacci做為例子有點無聊 XD)
    1. 若數字為偶數,則除以2
    2. 若數字為奇數,則乘以3再加1 (3n+1)

    任何正整數,經由上述兩個規則,最終結果會為 1 。(目前尚未被證明這個猜想一定成立,但也還未找出不成立的數字)

    52 -> 26 -> 13 -> 40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1.

    把每個運算過程的結果紀錄起來,這個叫做執行軌跡(Execution Trace),如上述52 -> 26 -> … -> 1。接著我們把執行軌跡轉換成多項式(由執行軌跡轉成多項式不是這裡的重點,這裡不會贅述,細節可以參考 StarkWare的文章 )如下

    https://medium.com/starkware/arithmetization-i-15c046390862

    合成多項式

    接著就把這四個限制條件的多項式合成為一個,這個最終的多項式就叫做合成多項式(composition polynomial),而這個合成多項式就是後面要拿來驗證的多項式。

    就像一開始提的,SNARK跟STARK都是使用高維度多項式,接著,來介紹STARK是藉由哪些方式,達到零知識的交換、透明性(Transparency)跟可擴展性(Scalability)。

    修改多項式維度

    這一步是為了後面驗證做準備的。在驗證過程使用了一個技巧,將多項式以2的次方一直遞減為常數項(D, D/2, D/4 … 1),大幅減低了驗證的複雜度。因此,需要先將多項式修改為2^n維度

    假設上述的每個限制多項式(不是合成多項式喔)為Cj(x),維度為 Dj,D >= Dj 且 D 等於2^n,為了達到 D 維度,乘上一個維度(D -Dj)的多項式,

    所以最終的合成多項式,如下

    其中的αj、βj是由驗證者(verifier)所提供,所以最終的多項式是由證明方(prover)跟驗證方所共同組成。

    *這小節的重點是將多項式修改成D維度,覺得多項式太煩可忽略

    FRI

    FRI 的全名是”Fast RS IOPP”(RS = “Reed-Solomon”, IOPP = “Interactive Oracle Proofs of Proximity”)。藉由FRI可以達到簡潔地驗證多項式。在介紹FRI 之前,先來討論要怎麼證明你知道多項式 f(x) 為何?

    RS 糾刪碼:

    糾刪碼的概念是把原本的資料作延伸,使得部分資料即可以做驗證與可容錯。其方式是將資料組成多項式,藉由驗證多項式來驗證資料是否正確。舉例來說,有d個點可以組成 d-1 維的多項式 y = f(x),藉由驗證 f(z1) ?= y,來確定 z1是否是正確資料。

    回到上面的問題,怎麼證明知道多項式?最直接的方式就是直接帶入點求解。藉由糾刪碼的方式,假設有d+1個點,根據Lagrange插值法,可以得到一個 d 維的多項式 h(x),如果如果兩個多項式在(某個範圍內)任意 d 點上都相同( f(z) = h(z), z = z1, z2…zd),即可證明我知道 f(x)。但是我們面對的是高維度的多項式,d 是1、2百萬,這樣的測試太沒效率,且不可行。FRI 解決了這個問題,驗證次數由百萬次變成數十次。

    降低複雜度

    假設最終的合成多項式為 f(x),藉由將原本的1元多項式改成2元多項式,以減少多項式的維度。假設 f(x) = 1744 * x^{185423},加入第二變數 y,使 y = x^{1000},所以多項式可改寫為 g(x, y) = 1744*x^{423}*y^{185}。藉由這樣的方式,從本來10萬的維度變成1千,藉由這種技巧大幅降低多項式的維度。在 FRI 目前的實做,是將維度對半降低 y = x²(f(x) = g(x, x²))。

    此外,還有另一個技巧,將一個多項式拆成兩個較小的多項式,把偶數次方跟奇數次方拆開,如下:

    f(x)= g(x²) + xh(x²)

    假如:

    f(x) = a0 + a1x + a2x² + a3x³ + a4x⁴ + a5x⁵
    g(x²) = a0 + a2x² + a4x⁴, (g(x) = a0 + a2x + a4x²)
    h(x²) = a1x + a3x² + a5x⁴, (h(x) = a1 + a3x + a5x² )

    藉由這兩個方法,可以將高維度的多項式拆解,重複地將維度對半再對半,以此類推到常數項。而 FRI 協議在流程上包含兩階段 — 「提交」跟「查詢」。

    提交階段:提交階段就如同上述過程,將多項式拆解後,由驗證者提供一亂數,組成新的多項式,再繼續對多項式拆解,一直重複。

    f(x) = f0(x) = g0(x²) + x*h0(x²)
    ==> f1(x) = g0(x) + α0*h0(x), ← α0(驗證者提供)
    ==> f2(x) = g1(x) + α1*h1(x), ← α1(驗證者提供)
    ==> . . .

    查詢階段:這個階段要驗證證明者所提交的多項式 f0(x), f1(x), f2(x), … 是否正確,這邊運用一個技巧,帶入任意數 z 及 -z(這代表在選域的時候,需滿足 L²= {x²:x ∊ L},這邊不多提)。所以可以得

    f0(z) = g0(z²) + z*h0(z²)
    f0(-z) = g0(z²) -z*h0(z²)

    藉由兩者相加、相減,及可得g0(z²)、h0(z²),則可以計算出f1(z²),再推導出f1(x),以此類推驗證證明者傳來的多項式。

    Interactive Oracle Proofs (IOPs)

    藉由FRI(RS糾刪碼、IOPs),將驗證次數由數百萬降至20–30次(log2(d)),達到了簡潔地驗證。不過,我們解決了複雜度,但還有互動性!

    * 與SNARK比較 :SNARK在驗證方面利用了QAP跟Pinocchio協定。

    非互動性

    藉由 Micali 建構(Micali construction)這個概念來解釋如何達到非互動的驗證。Micali 建構包括兩部分,PCPs(Probabilistically checkable proof)跟雜湊函數。PCPs 這是一個隨機抽樣檢查的證明系統。簡單來說,證明者產出一個大資料量的證明(long proof),經由隨機抽樣來驗證這個大資料量的證明。過程大約是這樣,證明者產出證明𝚿,而驗證者隨機確認 n 個點是否正確。

    在STARK,我們希望達到:1.小的證明量,2.非互動。隨機抽樣可以讓達到小的證明量,那互動性呢? 想法很簡單,就是預先抽樣,把原本 PCPs 要做的事先做完,然後產出只有原本證明 𝚿 抽樣出的幾個區塊當作證明。但想也知道,一定不會是由證明者抽樣,因為這樣就可以作假。這裡是使用 Fiat-Shamir Heuristic 來作預先取樣。

    首先,先把證明 𝚿組成 merkle tree,接著把 merkle root 做雜湊可得到一亂數 𝛒,而 𝛒 就是取樣的索引值。將利用𝛒取出來的區塊證明、區塊證明的 merkle tree 路徑跟 merkle root, 組一起,即為STARK 證明 𝛑。

    到目前,只使用雜湊函數這個密碼學的輕量演算法。而雜湊函數的選擇是這個證明系統唯一的全域參數(大家都需要知道的),不像是 SNARK 有 KCA 使用的(α, β, 𝛾)等全域的秘密參數,再藉由 HH(同態隱藏)隱藏這些資訊來產生 CRS。因為證明的驗證是靠公開的雜湊函數,並不需要預先產生的秘密,因此 STARK 可以達到透明性,也不用可信任的設置。

    接著,將FRI中需要互動的部分(驗證者提供 α 變數),使用上述的 PCP + Fiat-Shamir Heuristic, 即可達到非互動性。

    * 與SNARK比較: SANRK 的非互動性是將所需的全域參數放到CRS中,因為全域參數是公開的,所以CRS裡的值使用了 HH 做隱藏。

    MIMC

    大部分證明系統,會使用算數電路來實作,此時,電路的複雜程度就關係到證明產生的速度。 STARK 的雜湊函數選用了電路複雜度較簡單的 MIMC,計算過程如下:

    https://vitalik.ca/general/2018/07/21/starks_part_3.html

    這樣的計算有另一個特性,就是無法平行運算,但卻又很好驗證,因此也很適合 VDF 的運算。Vitalik有一個使用 MIMIC 作為 VDF 的提案。

    ps. 反向運算比正向慢百倍,所以會是反向計算,正向驗證

    從上面的解釋,可以理解為什麼 STARK 不需要可信任設置,至於為什麼能抗量子?因為 SNARK 中使用了 HH 來隱藏秘密,而 HH 是依靠橢圓曲線的特性,但橢圓曲線沒有抗量子的特性(也就是可以從公鑰回推私鑰)。而STARK在整個過程中只使用了雜湊函數,而目前還沒有有效的演算法能破解雜湊函數,因此可以抵抗抗量子攻擊。

    有錯誤或是不同看法,歡迎指教

    參考:
    StarkDEX Deep Dive: the STARK Core Engine
    STARK 系列文:
    STARK Math: The Journey Begins
    Arithmetization I
    Arithmetization II
    Low Degree Testing
    A Framework for Efficient STARKs
    Vitalik 系列文:
    STARKs, Part I: Proofs with Polynomials
    STARKs, Part II: Thank Goodness It’s FRI-day
    STARKs, Part 3: Into the Weeds
    ZK-STARKs — Create Verifiable Trust, even against Quantum Computers
    https://ethereum.stackexchange.com/questions/59145/zk-snarks-vs-zk-starks-vs-bulletproofs-updated

    Originally published at http://kimiwublog.blogspot.com on November 12, 2019.

    瞭解神秘的 ZK-STARKs was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.

    👏 歡迎轉載分享鼓掌