📜 [專欄新文章] [ZKP 讀書會] MACI
✍️ Kimi Wu
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Photo by Jesus Kiteque on Unsplash
預計這將是一系列介紹ZKP應用的文章,認識目前ZKP的應用,包含L1, L2和其他比較難分類的應用,當中也穿插著常用的ZKP演算法。而目前的規劃的主題有
MACI
ZKopuru
ZKSync
Trust Token
ZCash
Groth16
PLONK
ZKZK Rollup
…
首次的讀書會介紹了
MACI by Chih-Cheng Liang
ZKopru by NIC Lin
本篇文章先介紹MACI,ZKopru會由 NIC Lin在撰文介紹。
MACI
MACI 是 Minimal Anti-Collusion Infrastructure的縮寫, Vitalik 在2019年5月於ethreaser.ch所提出,為了讓用應用程式在區塊鏈上可以有抵抗共謀的一個機制(主要是想達到正確地執行你的想法跟抗審查(censorship resistance))。而最實際的應用就是投票,若在區塊鏈上投票能做到他人無法查驗你的票,這樣行賄者就無法知道你是否有乖乖投票,如此一來就能減低行賄的誘因。
(關於共謀的概念可以參考 Williams Lai 翻譯 Vitalik的論共謀)
基本流程大致為
欲投票者需要註冊期間內,以公鑰(EdDSA)向合約注冊身份
註冊期結束
投票開始,投票者將自己的票加密送到合約
投票結束,協調者(coordinator)從合約上抓下所有的票, 計算結果,並產生zk證明到合約,更新票數(注1)
MACI中最關鍵的機制在於,投票結束前,投票者都可以向合約發出更換公鑰的指令,然後再使用新的公私鑰去投票。當協調者計票時,會去合約上找註冊者的公鑰,若發現此身份有更換過公鑰,則舊公鑰所投的票就會被認定為無效票。程序大約為
Alice 註冊身份為 公鑰A
行賄者利誘或威脅 Alice 投贊成票,而 Alice 也照行賄者的意思投給了贊成票
在投票結束前,Alice 隨時可以向合約更改身份為公鑰B
更改完公鑰後,Alice 可再用私鑰B簽章投反對票
當協調者計票時,會發現用公鑰A已經被改為公鑰B,所以私鑰A所簽的贊成票,將記為無效票
再深入一點細節 . . .
使用者註冊先產生一組EdDSA的私鑰對(注2),再是透過合約的 signUp() 註冊公鑰,而合約中有一 merkle tree 記載著帳號相關的資訊
接著使用者產生一組臨時的 (ECDSA)私鑰對 prvE/pubE(每次投票就產生一組)
利用這組臨時的私鑰 prvE 跟協調者的公鑰 pubC 產生加密的鑰匙 EncKey,使用密鑰 EncKey 加密投票指令(command)(注3)
再將臨時的公鑰 pubE 與加密過的指令,透過合約的 publishMessage()上鏈
協調者透過 ECDH 交換秘密的方式可以得到 EncKey,當投票結束時協調者再使用這把密鑰把訊息(注3)解密,接著更新票數。
而更換公鑰的指令也是透過 publishMessage()上鏈,因為上鏈的指令都是加密過的,也只有協調者能解密,因此行賄者無法得知受賄者是否有更換過身份。
在MACI中,所有訊息都是上鏈的,因此不怕協調者不打包特定資料。不過所有資料協調者都可以解密,行賄者可以直接與協調者串通,去得知受賄者們是否有乖乖投票,如何防範不在 MACI 原本的提案內,有興趣的人可以去 MACI Github 上了解實作細節。
注1:對!MACI系統中協調者必須是誠實的
注2:在 snarks 的應用中通常使用EdDSA做簽章,而非以太的ECDSA,因為EdDSA在 zk circuit 的實作上複雜度比較低。
注3:在 MACI 中投票, 更換公鑰等動作都稱作指令(command),而加密後的指令稱作訊息(message)
Reference:
ethresear.ch post by Vitalik
MACI spec
[ZKP 讀書會] MACI was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有10000部Youtube影片,追蹤數超過2,910的網紅コバにゃんチャンネル,也在其Youtube影片中提到,...
「conversation縮寫」的推薦目錄:
- 關於conversation縮寫 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於conversation縮寫 在 Taipei Ethereum Meetup Facebook 的精選貼文
- 關於conversation縮寫 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於conversation縮寫 在 コバにゃんチャンネル Youtube 的最佳解答
- 關於conversation縮寫 在 大象中醫 Youtube 的最佳解答
- 關於conversation縮寫 在 大象中醫 Youtube 的最佳解答
- 關於conversation縮寫 在 分析!常用網路英文縮寫#2 // Decoding Common ... - YouTube 的評價
- 關於conversation縮寫 在 10+1 個常用英文縮寫| Business English | SheLearns - YouTube 的評價
- 關於conversation縮寫 在 路聊必用英文!三分鐘搞懂外國人最 - Facebook 的評價
- 關於conversation縮寫 在 作業成果- 跟YouTuber 莫彩曦學美國道地的說話習慣 - Hahow 的評價
- 關於conversation縮寫 在 As per our conversation2023-在Facebook/IG/Youtube上的 ... 的評價
- 關於conversation縮寫 在 As per our conversation2023-在Facebook/IG/Youtube上的 ... 的評價
conversation縮寫 在 Taipei Ethereum Meetup Facebook 的精選貼文
📜 [專欄新文章] Ethereum Casper — 認識 BLS signature
✍️ Kimi W
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
最近重新追了一下Ethereum Casper的進展,發現到好多新東西(應該是之前看得太表面 XD),Casper跟sharding會綁一起,然後又有個beacon chain,zk-STARK(zk-SNARK的升級版)也來湊一腳,短時間有點難消化,有興趣的人可以google上面幾個keyword。
不過,今天想要介紹的是BLS signature(這又是什麼?????),這個新的簽章方式讓Casper往前再邁進一步!
BLS是Boneh–Lynn–Shacham的縮寫,有興趣的可以參考wiki。這個簽章方式厲害的是,可以把所有signature加起來,然後驗證。如果以現今的ECDSA簽章,100個人簽同一個message,那訊息量就是乘以100倍,以Ethereum官方估計,Casper的validators約有30萬,每一個finality都需要2/3的節點做投票,光是驗證signature這件事,大概就要花到一天,所以以現行的ECDSA簽章方式根本不可行。這也是之前Casper的bottleneck之一,Ethereum的researcher, Justin Drake提出了這個方案,當然也不是拿了就可以用的,BLS的介紹可以參考BLS signatures: better than Schnorr,寫得非常清楚也好懂。下面會簡單介紹一下。
首先,就是要找到一個特殊的橢圓對稱曲線可以達到以下的算式
e(a x P, b x Q) = e(P, ab x Q) = e(ab x P, Q) = e(P, Q)^(ab)
也就是某種的交換律
source from: https://medium.com/…/bls-signatures-better-than-schnorr-5a7… (也徵得作者同意)
用上面那邊文章的圖做解釋 pk:私鑰 P :公鑰 H(m):可以看作是hash過的message S:簽章
驗證簽章會滿足 e(P, H(m)) = e(G, S)
也就是signature可以用P(公鑰)跟 H(m)(hash過的message)做驗證,跟我們以往的認知是一致的。從公式看BLS在sign跟verify都很簡潔,資料量的部分也小了許多(好像是33 bytes)。而ECDSA在verify的部分就複雜了一點(需要先算出v值),細節可以參考這裡。簽章的加總(signature aggregation)簡單來講,就是利用上面提到的交換律所達成,細節可以參考上面提到的文章,這裡就不多提了。
省了空間,那效能呢?!
如果有把BLS signatures: better than Schnorr看過,最下面會提到,看起來很美好,其實很不實用,因為要找尋特殊的對稱曲線,其實很困難及複雜,所以在verify時會比原本的ECDSA更久。(啥?! 那Casper幹嘛用它!!)實際上Ethereum用BLS128–381,是去年Zcash發表的,是非對稱的橢圓曲線,針對128bits的應用上做了最佳化,所以也解決了效能上的問題。
根據Justin Drake提供的數據,2/3validators(預估總共validator數量為 312,500)的簽章大約會是40K,verify速度大約在300ms左右,但是離線蒐集跟打包signature大約要9分鐘,所以每次finality大約可以在10分鐘左右完成。
最後!這個是Ethereum中期的簽章方案,長期的預計會使用zk-STARK,zk-STARK的設計是可以抗量子攻擊,但目前資料量約在100kB左右,還會針對Ethereum做最佳化。
附:這有Ethereum meeting 討論BLS的影片
Originally published at kimiwublog.blogspot.com.
Ethereum Casper — 認識 BLS signature was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
conversation縮寫 在 Taipei Ethereum Meetup Facebook 的最佳貼文
📜 [專欄新文章] What do ERC and EIP stand for?
✍️ mingderwang
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
ERC stands for Ethereum Request for Comment
最近流行 CryptoKitties , 上次 Taipei Ethereum Meetup 社團活動 討論它的原始碼程式時, 發現 github 裡 cryptokitties-bounty 程式碼提到它是用 ERC-721 token 標準來定義每隻加密貓. 也就是:
“CryptoKitties are non-fungible tokens (see ERC #721) that are indivisible and unique.”
也許大家比較熟悉的是 ERC #20. 它是比較早期訂出的 Token 標準. 所以後來想要在一般虛擬幣交易所能交易的 tokens (代幣), 就會用這個標準來寫程式. 也就是後來 ICO 快速延燒的主要原因.
那麼, ERC-721 跟 ERC-20 有什麼不同, 簡單說就是: ERC-721 是用來定義 Non-fungible token (不可替代的代幣). 每個 token 是 unique (唯一的), 不像 ERC-20 每個 token 都相同.
以上用加密貓舉例, 是讓大家體會一下什麼是 ERC, 但 ERC 不是只用來討論代幣, 還有其他各式各樣的 ERCs, 因為它是 Ethereum Request for Comment 的縮寫, request for comment 是徵求大家意見 的意思.
EIP stands for Ethereum Improvement Proposals
很像有人寫過類似的 EIP 介紹, 但我還是從 ERC 的角度再介紹一次.
它的清單在 EIPs 裡. 你可以看到討論的過程, 追蹤這些 EIPs 的新訊息, 也許有幫助理解 Ethereum 開發團隊的未來動向; 甚至你也可以全程參與.
大家都希望 Ethereum 網路的未來技術走向不要集中在幾個硏發人員的手裡, 所以才開放給大家提出 Proposals (建議), 用來改進 Ethereum, 決定未來開發方向. 這就是每個人每件跟 Ethereum 未來發展有關的事情, 都能用 EIP 建議格式 (EIP template) 提出來. 只要被大家選上, 就會正式列入 EIPs 清單.
而, 你會看到 EIP 定義或討論 issues 裡, 常常會看到它相關的 ERC, 也就是, 討論過程中, 有一些要徵求更多人意見時, 就會把它細節定義放在 ERC 裡. 而且他們會用同一個號碼, 比如 ERC-20 就是對應到 EIP-20.
簡單講, 討論項目, 一開始會用 EIP 提出建議, 結果與細節會定義在 ERC, 最後會 final (拍板定案), 放在 EIP 清單裡 Finalized EIPs 區.
(這是我的個人研究與認知, 如果不對, 請留言)
What do ERC and EIP stand for? was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
conversation縮寫 在 コバにゃんチャンネル Youtube 的最佳解答
conversation縮寫 在 大象中醫 Youtube 的最佳解答
conversation縮寫 在 大象中醫 Youtube 的最佳解答
conversation縮寫 在 10+1 個常用英文縮寫| Business English | SheLearns - YouTube 的美食出口停車場
10+1 個常用英文 縮寫 | Business English | SheLearns ... Practice English Conversation to Improve Speaking Skills (Life advice) English ... ... <看更多>
conversation縮寫 在 路聊必用英文!三分鐘搞懂外國人最 - Facebook 的美食出口停車場
三分鐘搞懂外國人最常用的英文 縮寫 創作團隊: VoiceTube 看影片學英語#學英文#英文 ... end of every online conversation that you have you can try saying ttyl. ... <看更多>
conversation縮寫 在 分析!常用網路英文縮寫#2 // Decoding Common ... - YouTube 的美食出口停車場
網路上常看到IKR, SMH, ROTFL...不過這些英文 縮寫 到底是什麼意思?這次再一次的讓滴妹解釋給你聽,讓你不再看得霧煞煞!訂閱阿滴英文▷ ... ... <看更多>