📜 [專欄新文章] [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.
👏 歡迎轉載分享鼓掌
「nic縮寫」的推薦目錄:
- 關於nic縮寫 在 Taipei Ethereum Meetup Facebook 的精選貼文
- 關於nic縮寫 在 胡智為 Chih Wei Hu Facebook 的最讚貼文
- 關於nic縮寫 在 nic在PTT/mobile01評價與討論 - 速食 的評價
- 關於nic縮寫 在 nic在PTT/mobile01評價與討論 - 速食 的評價
- 關於nic縮寫 在 nic.te - 缩写FR就是freestyle swim 中文就是自由泳,还有一个 ... 的評價
- 關於nic縮寫 在 tal縮寫、tal股價、tal美股在PTT/mobile01評價與討論 的評價
- 關於nic縮寫 在 tal縮寫、tal股價、tal美股在PTT/mobile01評價與討論 的評價
nic縮寫 在 胡智為 Chih Wei Hu Facebook 的最讚貼文
Who?😂😂😂
8/10 #1486 #MLB
.
大聯盟在美國時間 8 月 9 日公佈今年「球員週」的特製球衣,球員可以自己挑選喜歡的綽號繡在背後,但也有 58 位球員直接用姓氏。球員週將在 8 月 25 日到 27 日舉行,屆時將考驗轉播單位的主播球評的背綽號的能力。
.
大聯盟官網專欄 Cut 4 特別選出了 11 個有趣的綽號:
西雅圖水手隊三壘手 Kyle Seager:"Corey's Brother"
「Corey 他哥」。應該是所有綽號裡最幽默的,用來調侃自己的名氣不如去年獲得國聯新人王弟弟:洛杉磯道奇隊的游擊手 Corey Seager。
.
奧克蘭運動家隊先發投手 Kendall Graveman:"Digger"
「挖墓人」。"grave" 是「墳墓」之意,他的姓氏 "graveman" 就像「處理墳墓的人」,因此用 "digger"「挖墓人」來當作暱稱。一般我們說的「拜金女」,可以用 "gold digger"「挖掘黃金的人」、「淘金客」這樣的趣味說法。
.
洛杉磯天使隊中外野手 Mike Trout:"KIIIIID"
「小朋友」。令人摸不著頭緒的綽號,或許是本來姓氏「鱒魚」就很有特色了,也可能要提醒自己保持「赤子之心」。另外中間的 "I" 有五個,看起來也是精心設計過的。你覺得可能是什麼原因呢?
.
華盛頓國民隊王牌 Max Scherzer:"Blue Eye"
「藍眼睛」。由於 Scherzer 有虹膜異色症(heterochromia iridium),兩隻眼睛一藍一棕,就連他養的兩隻小狗也都是一雙眼睛有兩個顏色!
.
波士頓紅襪隊王牌 David Price:"Astro's Dad"
「太空狗的爸」。這裡的 "astro" 不是指休士頓「太空人隊」,而是他的法國鬥牛犬,愛狗成癡的 Price 決定把綽號給了他的狗。一般我們用 "somebody's daddy"「某人的爸」,除了真的表示血緣關係之外,也有「對方徹底打敗我,只能叫他一聲爸」的用法,就像經典的 Pedro Martinez 台詞「我只能叫洋基隊一聲爸」("Just tip my hat and call the Yankees my daddy.")。邁阿密馬林隊的捕手 A.J. Ellis 選擇的綽號則簡潔有力 "Dad"「老爸」。
.
邁阿密馬林魚隊先發陳偉殷:"Weigh-in"
「蓄勢待發」。"weigh-in" 和「偉殷」唸起來幾乎一樣。原本是指拳擊或格鬥賽事前的「秤重」,而現在隨著賽事受到矚目,選手秤重的場合也變成叫囂大會,相當具娛樂效果。在這裡也有「蓄勢待發」的涵義,表示陳偉殷隨時準備好上場對決。
.
德州遊騎兵隊先發 A.J. Griffin:"Sweet Lettuce"
「甜萵苣」。可能因為他的一頭亂髮就像「萵苣」一樣(?)
.
休士頓太空人隊終結者 Ken Giles:"100 Miles Giles"
「一百英哩的 Giles」。是少數有玩押韻的綽號,為了強調他招牌的火球,把 "miles" 和他的姓氏 "Giles" 押韻。不過這裡有趣的是,如果「時速一百英哩」當做形容詞,應該是 "100-mile",不需要加上複數 "s",所以可見得完全是為了押韻。
.
巴爾的摩隊捕手 Welington Castillo:"Beef"
「牛排」。因為名字剛好和「威靈頓牛排」(Beef Wellington)相同,就叫「牛排」吧。 其實牛排是以「威靈頓公爵」命名,叫做「公爵」"The Duke" 不是更帥氣嗎?
.
密爾瓦基釀酒人隊先發 Zach Davies:"Bat Boy"
「球僮」。釀酒人隊球迷因為 Davies 看起來一副娃娃臉,因此調侃他「球僮」,他也樂得把這個綽號繡在背上。一般球場上的球僮球衣也會繡上 "BAT BOY",或是直接在背號處繡上縮寫 "BB"。
.
匹茲堡海盜隊牛棚捕手 Jordan Comadena:"Funky"
「怪咖」。我不知道為什麼大聯盟會挑選這個綽號,或許因為 Comadena 沒有機會上場展現他的綽號,在這邊刷一下存在感吧。
.
除此之外,很多拉丁美洲球員都用西班牙文來表示綽號,像是洛杉磯道奇隊的 Adrian Gonzalez 就用 "El Titán"「泰坦神」,釀酒人隊捕手 Manny Pina 則用把自己的姓氏翻成英文 "pineapple"「鳳梨」(西文 "pina" 是鳳梨);也有人很偷懶,例如去年美聯塞揚獎得主 Rick Porcello 就用西文「22」"Veintidos" 以背號當作綽號 。
.
但也有人反其道而行。海盜隊委內瑞拉火球男 Felipe Rivero 則反其道而行,用英文 "Nightmare"「惡夢」來當作自己霸氣的稱號;辛辛那提紅人隊 Joey Votto 則用韓文 "tokki"「兔子」當作綽號,相當另類。
.
水手隊一壘手 Yonder Alonso 和金鶯隊三壘手 Manny Machado 則分別是 "Mr. 305"「305 先生」和 "Mr. Miami"「邁阿密先生」,兩位死黨都趁機表揚自己的家鄉(305 是邁阿密的區碼)。
.
紐約大都會隊除了 Noah Syndergaard 的「索爾」"Thor" 之外,最有話題性的是選擇「小老二」"Lil D" 的 Travis d'Arnaud。
.
最酷的莫過於坦帕灣光芒隊的 胡智為 Chih Wei Hu,因為他繡在背後的就是 "Who?"「這誰啊?」
.
.
【延伸閱讀】
光芒隊穿上不存在的復古球衣?
https://www.sportsv.net/articles/41970
.
原文
http://m.mlb.com/…/mlb-players-announce-players-weekend-nic…
http://m.mlb.com/rays/tickets/info/players-weekend
.
參考資料
https://www.forbes.com/…/the-top-100-mlb-players-weeken…/2/…
.
圖片來源
http://www.sportsnet.ca/…/rays-promote-2-pitchers-send-1-p…/
nic縮寫 在 nic在PTT/mobile01評價與討論 - 速食 的推薦與評價
在nic這個產品中,有超過1篇Ptt貼文,作者hellslayer也提到自從上次分享了小米盒子S改機之後使用起來更是得心應手依賴度也越來越高相對的一部穩定且支援Wi-Fi 5 的無線 ... ... <看更多>
nic縮寫 在 nic.te - 缩写FR就是freestyle swim 中文就是自由泳,还有一个 ... 的推薦與評價
缩写 FR就是freestyle swim 中文就是自由泳,还有一个比较Pro名称:Frontcrawl ♂️ 游泳素有“运动之王”的美称,这主要得益于游泳能避免常规运动 ... ... <看更多>
nic縮寫 在 nic在PTT/mobile01評價與討論 - 速食 的推薦與評價
在nic這個產品中,有超過1篇Ptt貼文,作者hellslayer也提到自從上次分享了小米盒子S改機之後使用起來更是得心應手依賴度也越來越高相對的一部穩定且支援Wi-Fi 5 的無線 ... ... <看更多>