📜 [專欄新文章] [zkp 讀書會] Cairo 語言介紹
✍️ NIC Lin
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
Cairo 是 STARK 證明系統的其中一個編程語言,讓開發者能透過 Cairo 來使用 STARK,撰寫效能更高的 Dapp
Photo by Simon Berger on Unsplash
Warning:本篇會保持在 high level 的介紹,實際深入的部分請見文內附上的文檔或是官方開發者文件
背景介紹
建構於密碼學的零知識證明能提供計算的隱私性,但同時在區塊鏈生態系也被用來提升 Scalability — 我可以用 10 秒的運算資源來驗證原本耗費 1000 秒運算資源的計算過程
如同更多人熟悉的 SNARK,STARK 也是一個零知識證明的證明系統,但當前的 STARK 著重的是在 Scalability ,而非大家比較習以為常零知識證明提供的隱私性特質
其實目前基於 SNARK 的 Rollup 項目,例如 zkSync、Loopring、Aztec、zkopru,除了 Aztec 外,其他都是利用 SNARK 來增加 Scalability — 這些 Rollup 上資料都還是公開、沒有隱私性的
StarkWare 是目前唯一基於 STARK 的開發團隊
STARK 要加上隱私保護不會太難,只是 StarkWare 還沒有把這項功能放在未來規劃中
Cairo 簡介
標榜為圖靈完備的零知識證明系統語言,Cairo 對原本熟悉 Solidity 的開發者來說還是會感到比較難上手和陌生的。再加上套件庫還不夠充足,目前支援的雜湊函式是 Pedersen,數位簽章演算法是 ECDSA(相對於 SNARK,EdDSA 的效能反而比較差所以沒有支援)。
但 Cairo 還在早期開發的階段,相信開發體驗會越來越好的。
另外需要注意的是作為一個證明系統,會有 Prover 和 Verifier 的角色。而 STARK 的 Verifier 是公開的,但 Prover 軟體預計會有 License 保護。Prover 一般情況下不得用於商業用途,除非將 proof 上傳至官方的 Verifier。
最後要提及的是,第一版的 Cairo 是設計來方便開發者將 Dapp 的運算遷移至鏈下。不同於 Rollup,這個鏈下只會有它自己一個 Dapp。這個 Dapp 的項目方自己維護自己 Dapp 的 state。( Rollup 則是 operator 維護所有 Dapp 的 state,Dapp 開發者不需自己操煩)
這可能有點難懂。如果你有在寫 Solidity,想像一下今天你在合約要用到合約裡宣告的 storage 變數時,你要自己提供 merkle proof 上來,證明這個storage 變數真的是這個值。這個就是開發者要自己維護 state 的意思。
而第二版的 Cairo 則是 StarkNet 裡使用的 Cairo(第一和第二版是不同編譯器),這版的 Cairo 就是作為 Dapp 在 Rollup 開發所使用 — 開發者可以在合約裡宣告變數,變數的值不需開發者維護,可以直接假設存在。
註1:StarkWare 不喜歡 Rollup 這個詞,他們覺得 Data Availability 的需求是一段光譜:不一定得要把 data 全都送上 L1,中間有其他方式可以做不同層級的 Data Availability。
註2:第一版和第二版實際上在官方版本裡是 0.0.1 及 0.0.2,在撰文當前最新版即是 0.0.2
官方網站:https://www.cairo-lang.org
開發者文件:https://www.cairo-lang.org/docs/
開發環境
Cairo 有提供像是 Remix 的瀏覽器 IDE:playground。裡面提供各種範例練習和挑戰,除了可以編譯,還可以直接生成並上傳 proof。
註:但有些功能還是沒辦法在 playground 裡使用,例如要給你的程式 custom input 時。這時候只能在本地端開發才能使用這個功能。
開發 Cairo 要先安裝python,我將開發者文件整理出來的資料統整在這個 hackmd 文檔裡:https://hackmd.io/w690dpAQTsKeKZv3oikzTQ
裡面包含簡介、設置本地開發環境以及 Cairo 基礎(因為篇幅原因,所以不將內容複製到這裡)
註:我把開發者文件裡的代碼整理到這裡:https://github.com/NIC619/cairo_practice/tree/master/practices
如果不想在研究開發者文件過程中,還要自己手動拼湊裡面例子的話,可以直接用整理好的代碼來執行。同時 repo 裡還有包含一些額外自己測試 Cairo 功能的範例。
深入 Cairo
在那份 hackmd 文檔裡的開頭,可以連結到第二部分 — 深入 Cairo 的部分。裡面也是從開發者文件裡擷取出來我覺得比較重要的部分。如果你要讀開發者文件的話,我建議從 Hello Cairo 開始,它會從例子切入,會比較好知道 Cairo 怎麼使用。接著如果要更深入了解,再去讀 How Cairo Works。
StarkNet Cairo
第二版的 Cairo 其實功能和第一版的 Cairo 是差不多的,所以不必擔心在開發者文件裡學到的 Cairo 在 StarkNet 版本會不能用或差很多。在讀完 Hello Cairo/How Cairo works 後,就可以接著看 Hello StarkNet。會很順利的切換到 StarkNet 版本的 Cairo。
註1:我整理的文檔裡是按照第一版 Cairo 所寫的
註2:如果你從開發者文件一路看下來,體驗過非 StarkNet 版的 Cairo,那你在體驗 StarkNet 版的 Cairo 時一定會發現這更像一般智能合約的使用方式 — 你可以用 view 函式查詢 storage 變數,可以用 external 函式去執行合約(非 StarkNet 版本不是這樣操作 Dapp 的,這邊因為篇幅原因沒有詳細介紹)。
非常建議嘗試兩種版本的 Cairo,你會知道 1. 操作一個單獨在 L2 的 Dapp 和2. 操作與其他 Dapp 共存在 Rollup 上的 Dapp 的不同。這對了解 L2 怎麼運行、需要哪些資料、為什麼需要這些資料非常有幫助。
0.0.2 版的 StarkNet Cairo 目前還缺少一些功能:
函式還沒辦法宣告陣列或 struct 型態的參數
合約和合約之間還沒辦法互動
L1 沒有辦法讀取到 L2 的資料,L2 也沒辦法讀取到 L1 的資料。如果要建立跨 L2 Bridge,這個功能非常重要。
補充及個人心得
STARK 的 proof size 相比於 SNARK 系列的 proof size 大很多,又其證明所包含的交易數量對 proof size 和驗證時間的影響不大,所以把很多筆交易一併做一個 proof 會是對 STARK 非常有利、節省成本的方式(SNARK、STARK 比較表)。但這同時也是一個缺點,如果你的 Dapp 或 Rollup 的 TPS 不高,那就只能等更久時間搜集多一點的交易,要不然就只能提高成本來維持驗證 proof 的頻率。
StarkWare和 zkSync 一樣都有 Rollup 宇宙的概念( Rollup 宇宙的用詞並不精確,因為在他們的宇宙中不會所有子鏈都是 Rollup,而是會有依照 Data Availability 程度不同所區分的子鏈,像是 Validium、zk Porter 的設計),個人覺得能夠有(針對 Data Availability 程度的)選擇是會比只有一個選擇(完全 Data Available) 還好的方式,但實際上的可行性就要等其團隊釋出更多的資訊。
在 Rollup 越趨成熟的情況下,能夠提供快速跨 Rollup 服務的流動性提供者的角色會越來越重要。zk Rollup(StarkNet、zkSync、etc…)比 Optimistic Rollup (Optimism、Arbitrum、etc…)有著短上許多的 finalize 時間,這對降低流動性提供者的風險有很大的幫助,但目前 zk Rollup 支援合約功能甚至 L1 <-> L2 互動的完成度都比 Optimistic Rollup 還低上許多。短期內快速跨 Rollup 的服務應該還是侷限在 Optimitic Rollup 之間。
abbrev
[zkp 讀書會] Cairo 語言介紹 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
同時也有5部Youtube影片,追蹤數超過11萬的網紅殭屍生存之夜,也在其Youtube影片中提到,這款遊戲挺不錯的,如果有特價非常推薦大家買來玩玩。 更多影片點這裡→https://goo.gl/JzrWb4 那些買了卻一直沒有玩的遊戲播放清單Ωhttps://www.youtube.com/watch?v=qXEP4pfIgac&list=PLeKPzksqZZKq-aLq0j2IUy2F2C...
「operator程式」的推薦目錄:
- 關於operator程式 在 Taipei Ethereum Meetup Facebook 的精選貼文
- 關於operator程式 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於operator程式 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於operator程式 在 殭屍生存之夜 Youtube 的最佳貼文
- 關於operator程式 在 Pumpkin Jenn Youtube 的最讚貼文
- 關於operator程式 在 Pumpkin Jenn Youtube 的最佳解答
- 關於operator程式 在 「程式設計」第十二講:Operator Overloading (8) - YouTube 的評價
- 關於operator程式 在 C/C++ 三元運算子 - ShengYu Talk 的評價
- 關於operator程式 在 How do I get a timestamp in JavaScript? - Stack Overflow 的評價
operator程式 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
本篇文章是一個入門文章,主要探討 GitOps 相關的起源與概念,同時介紹不少關於 GitOps 的工具
起源: Weaveworks 於 2017 年針對 Kubernetes 的工作環境產生了不同的部署方式,而 GitOps 這個詞也就那時開始萌芽發展
概念: 透過 Git PR 的方式來驗證與自動的部署所有與系統有關的修改。今天有任何部署的需求時,團隊要做的事情就是 1) 產生 Git PR 2)進行 Review 3) 合併 接者就是等任何修改被自動部署
Git 於整個環節中扮演者 Single Source of Truth 的角色,所有的修改都必須發生於 Git 本身,也因為是基於 Git 來使用,所以不論是 GitHub, Gitlab, Bitbucket, Gerrit 等系統都可以使用。
註: Bitbucket 還針對 GitOps 這種形式取了一個名為 BDDA 的名稱,意義為 Build-Diff-Deploy-Apply
好處:
1. 稽核性: 透過 Git 可以針對所有的修改去查閱,知道誰於什麼時間點進行什麼修改
2. 由於不需要將 Kubeconfig 等資源放到外部叢集,資安方面會比傳統外部直接Push/Apply 來得更好
3. 開發人員可以更容易地去部署應用,不需要仰賴Ops幫忙
4. ...etc
註: GitOps 並不是只能適用於 Kubernetes 本身,事實上整個系統架構都可以套用這種方式,譬如搭配 Terraform 等相關的 IaC 工具時,就可以透過 GitOps 來搭建整個系統,包含底層架構,k8s叢集以及最重要的應用程式
相關工具(文章列出滿多工具):
1. ArgoCD
2. Atlantis: Terraform PR 的自動化工具
3. Autoapply
4. CloudBees Rollout
5. FlexCD
6. Helm Operator
7. Flagger
8. Ignite
9. Faros
10. Gitkube
11. Jenkins X
12. KubeStack
13. Weave Cloud
14. Werf
15. PipeCD
https://medium.com/searce/gitops-the-next-big-thing-for-devops-and-automation-2a9597e51559
operator程式 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
本篇文章是ㄧ個 Kubernetes 相關工具經驗分享文,作者認為即使是前端開發工程師也必須要瞭解一下 Kubernetes 這個容器管理平台,作者認為 k8s 基本上已經算是這個領域的標準(de-facto)。
因此作者於本篇文章介紹一些搭建一個 K8s 叢集時需要注意的工具,透過這些自動化工具來減少反覆動作的執行藉此簡化每天的工作流程。
工具包含
1. ArgoCD
2. MetalLB
3. External-secrets
4. Cert-manager
5. External-dns
Simplify deploying of new apps
作者大力推薦使用 ArgoCD 來簡化部署應用程式,作者提到一開始使用 ArgoCD 時也是感到無比煩感,因為心中一直存在要於 `GitLab CI/CD pipeline` 透過 kubectl apply 的方式來部署應用程式,並不想要導入其他的元件來加入更多的複雜性。
然而當作者嘗試 ArgoCD 後,第一眼發現的是其架構不如想像中複雜,完全依賴 GitOps 的原則來簡化整個部署流程,同時透過一個 WebUI 的方式來呈現當前應用程式的部署狀況
Load balancer for your on-prem clusters
地端環境的 Load-Balancer,沒什麼好說就是 MetalLB。
Managing your secrets
Secrets 是 Kubernetes 內一個非常重要的物件,然而大部分的團隊都會思考如何有效且安全的去管理 Kubernetes 內的 Secret 物件。雲端供應商譬如 AWS Secrets Manager, Azure Key Vault 或是廣受熱門的 HashiCorp Vault.
作者推薦使用 external-secrets operator 這個專案來將外部的管理系統給同步到 Kubernetes 內並且產生對於的 secrets。
詳細全文可以參考下列原文
https://chris-blogs.medium.com/tools-that-should-be-used-in-every-kubernetes-cluster-38969ed3e603
operator程式 在 殭屍生存之夜 Youtube 的最佳貼文
這款遊戲挺不錯的,如果有特價非常推薦大家買來玩玩。
更多影片點這裡→https://goo.gl/JzrWb4
那些買了卻一直沒有玩的遊戲播放清單Ωhttps://www.youtube.com/watch?v=qXEP4pfIgac&list=PLeKPzksqZZKq-aLq0j2IUy2F2CKvp6Jyv
遊戲名稱:911 Operator 911接線員
※發問前請先點開完整資訊※
直播網址 https://www.youtube.com/channel/UCpa10CkG5snpKfyF4LZdXcA/live
主頻道網址 https://www.youtube.com/channel/UCsi6GKje0lLdkyBu5tTt6gA
──台龜──(請遵守下面這一隻,牠很兇的。聊天台時規則較少但還是麻煩拿捏一下)
∵嚴格禁止「劇透/破梗/提示/教學/建議(遊戲有挑戰才好玩)、讓人不悅的言論(包括87)、求關注(實況很容易沒看到)、頭香沙發(直接BAN)、洗頻」違者禁言,情節嚴重者直接封鎖。
∵重複性高不回覆「聊其他遊戲、問幾點開幾點關、這什麼遊戲好不好玩要不要錢、幾歲住哪帥不帥開不開視訊」一律刪除,重複留言者禁言。
∵其他備註「w會無法顯示、留言頻率限制在10秒、影片留言請在同一串、沒有頭香沙發、暫停新增好友名單、請勿觸及任何個資、可以宣傳其他頻道但是一場直播限一次、推薦遊戲請至臉書專頁」煩請遵守。
∵管理員很辛苦請不要爭論(爭論者直接禁言),直播時容易混亂或誤判,如果有誤鎖或是需要解鎖請於臉書專頁私訊。若是直播中言論讓你感到不開心,請於臉書專頁告知,我會誠心道歉。
∵這裡是我們的玩樂房,吐口水,就別怪人賞你巴掌。我脾氣很差也管很多,要是不能乖乖的,就去別的台吧,人生苦短,有更適合你的頻道。
《臉書專頁》https://www.facebook.com/rusiru20434
《巴哈小屋》http://home.gamer.com.tw/homeindex.php?owner=NKSH20434
──配備──(能否跑動遊戲請直接詢問原價屋或巴哈討論板)
直播程式:OBS / 剪輯軟體:Aviutl
CPU:i7 6700 / RAM:DDR4-2400 16G
主機板:技嘉GA-H170-D3HP
顯示卡: MSI GTX970 4GD5T OC 鎧甲虎
擷取卡: 圓剛AVerMedia LGP2 GC510(爛)
鍵盤:Tt eSports Knucker(耐用)
螢幕:Acer KG271(CP值高)
滑鼠:FOXXRAY 熾星獵狐 FXR-BMP-06(便宜好用)
滑鼠墊:海獸迅雷防潑水電競鼠墊(不錯)
耳機:ROCCAT KHAN PRO(可以久戴)
麥克風:耳麥 & Blue Yeti USB(CP值非常低)
電腦桌:租房子附的 / 椅子:人體工學升降椅
──簡介──
直播主:路、魚仔
年紀:6歲、16歲
感情狀況:放閃中
寵物(貓):點點、琪琪、燈燈
居住地:暫居地球
台龜馴養員:楊廣、南瓜、楓語、小小貓、奈特、萌萌
Discord管理員:奈特、萌萌、楊廣、南瓜、楓語、小小貓
──Discord頻道長住規則──
頻道裡面ID必須和Youtube的ID相同,請找管理員更改名稱。
白牌只能在試麥房說話,開啟語音功能需要升成黃牌或藍牌。
如果你是白牌或黃牌,請盡快找紅牌的管理員申請更改名稱及藍色身份證,七天沒有完成手續會被丢出星球,多謝合作。
──常見問題集──
Q:我是男生還是女生 A:系統錯亂,無法判別。
Q:帥不帥 A:有自信就帥,而我很有自信。
Q:要不要露臉 A:臉書專頁有照片,視訊不開,你是看顏藝還看遊戲?如果真的想看,請自行在螢幕右上角貼一張宋仲基的照片。
Q:有沒有女朋友 A:請往上拉,答案在上面。
Q:圖像是誰畫的 A:魚仔。
Q:魚仔是誰 A:是笨蛋。
Q:魚仔是我的誰 A:把這幾題綜合一下就可以得到答案了。
Q:年紀多大 A:請往上拉,答案在上面,比較小那個。
Q:你有用變聲器嗎 A:小朋友可能會當真,我只好說沒有了,真可惜。
Q:要怎麼樣才能當管理員 A:可以倒過來默寫台龜的內容請再聯絡我。
Q:哪裡人 A:外星人。
Q:住哪裡 A:你心裡。
Q:有沒有玩手機遊戲 A:沒有。
Q:為什麼不玩手機遊戲 A:加拿大惡魔很可怕的!
Q:怎麼認識阿神的 A:加拿大北方墜機時認識的。
Q:為什麼多人影片的時候都不太講話 A:怕搶到話。
Q:為什麼想開實況 A:這要從三百年前說起,是個可歌可泣的勵志故事,不過我怕字太多你會不想看,所以簡單縮成三個字。因為,我開心。
Q:為什麼不和誰誰誰一起玩 A:管那麼多,你住海邊喔?
Q:為什麼不玩什麼什麼遊戲 A:唉唷,海龍王喔?
Q:這款遊戲不是玩過了嗎? A:這家爌肉飯不是吃過了嗎?
Q:為什麼一直說早安 A:等我想到再告訴你。
Q:幾點關台 A:直播就跟愛情一樣,什麼時候結束不重要,重要的是享受當下。
Q:畫質怎麼這麼差 A:剛上傳都是360P,可以晚點再看,至於直播畫面差,可能是網路問題。
Q:怎麼這麼LAG A:機房有人打翻泡麵了。
Q:這款遊戲好玩嗎 A:就跟人生的意義一樣,只有你自己才知道。
Q:這款遊戲多少錢在哪裡下載 A:請自己找,小時不Google,長大豬隊友。
Q:遊戲漢化在哪邊找 A:真的真的找不到再問我。
Q:沒有信用卡要怎麼買Steam的遊戲 A:請搜尋"VISA金融卡"。
Q:有沒有養寵物 A:請搜尋"路的小虎爺記事"。
Q:我是學生嗎 A:已經不在學校念書了,但是人生的課題永遠沒有學完的一天。
Q:是不是全職Youtuber A:不是,我的正職是守護宇宙和平。
Q:喜歡看電影嗎 A:喜歡。
Q:喜歡看動畫嗎 A:喜歡。
Q:喜歡看漫畫嗎 A:喜歡。
Q:喜歡吃美食嗎 A:喜歡。
Q:喜歡看書嗎 A:喜歡。
Q:喜歡長澤雅美嗎 A:喜歡,我也喜歡戶田惠梨香、真野惠里菜和新垣結衣。
Q:如果我媽和魚仔同時掉到水裡要救誰 A:救魚仔,因為我媽會游泳,笨蛋魚仔不會。
Q:為什麼想開實況 A:......給我往上拉喔。
operator程式 在 Pumpkin Jenn Youtube 的最讚貼文
?Please like this video if you enjoyed it :)
?Facebook Page: https://www.facebook.com/PumpkinJenn
?Instagram: http://instagram.com/pumpkinjenn
Products Mentioned:
one day acuvue define natural shine
sk ii facial treatment essence
skii moisturizer
ipsa cream foundation*
ipsa concealer*
tarte smooth operator finishing powder
mac brow gel deep dark brunette
benefit brow to go*
shu uemura cream eyeshadow p ivory*
shu uemura g white rainbow
addiction cosmetics jp
wet n wild gel liner
loveliner dark brown
tarte blush natural beauty
mentholatum lip gloss
想購買美容產品又唔知邊到有得買?利用全港最具規模的美容產品搜尋器 http://www.hkbeautybible.com , 無論你想尋找那個國家或種類的美容產品,只要輸入品牌名稱、產品類型、地區等關鍵字,立即為你找出全港售賣該產品的店舖。大家亦可以下載 BeautyBible 手機程式 :)
The Attic
My hair stylist : Alex So 2117 0303
RM1001, 10F, PACIFIC HOUSE, 20 QUEEN'S ROAD CENTRAL,HK
ATTENTION COMPANIES:
If you are a company interested in working with me or wanting me to review a product
feel free to email, thank you :)
[email protected]
***
Disclaimer: This video is not sponsored by any of the companies mentioned.
operator程式 在 Pumpkin Jenn Youtube 的最佳解答
?Please like this video if you enjoyed it :)
?Facebook Page: https://www.facebook.com/PumpkinJenn
?Instagram: http://instagram.com/pumpkinjenn
Products Mentioned:
Les Merveilleuses LADURÉE / UV Protection Make Up Base*
clinique anti blemish foundation
tarte creaseless concealer light medium natural
nars radiant creamy concealer custard
urban definition primer potion
tarte smooth operator powder
anastasia beverly hills contour and highlight palette
benefit high brow *
想購買美容產品又唔知邊到有得買?利用全港最具規模的美容產品搜尋器 http://www.hkbeautybible.com , 無論你想尋找那個國家或種類的美容產品,只要輸入品牌名稱、產品類型、地區等關鍵字,立即為你找出全港售賣該產品的店舖。大家亦可以下載 BeautyBible 手機程式 :)
The Attic
My hair stylist : Alex So 2117 0303
RM1001, 10F, PACIFIC HOUSE, 20 QUEEN'S ROAD CENTRAL,HK
ATTENTION COMPANIES:
If you are a company interested in working with me or wanting me to review a product
feel free to email, thank you :)
[email protected]
***
Disclaimer: This video is not sponsored by any of the companies mentioned.
operator程式 在 C/C++ 三元運算子 - ShengYu Talk 的推薦與評價
... 在C/C++ 使用三元運算子(ternary operator) 好處是程式碼可以看起來比較簡短,在某些情況C/C++ 使用三元運算子簡化後程式碼會變得簡潔許多。 ... <看更多>
operator程式 在 「程式設計」第十二講:Operator Overloading (8) - YouTube 的推薦與評價
開課學系:國立臺灣大學資訊管理學系課名: 程式 設計授課教師:孔令傑主題: Operator Overloading. ... <看更多>