📜 [專欄新文章] [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.
👏 歡迎轉載分享鼓掌
同時也有13部Youtube影片,追蹤數超過9萬的網紅スターテニスアカデミー / スタテニ,也在其Youtube影片中提到,貴男プロ&小野田プロとテニスを学び尽くす! オンラインテニスアカデミー「TEAM STA(チームスタテニ)」の無料トライアルはこちら! https://team-sta.jp/ TEAM STAってなに? https://youtu.be/QJAfkXRvZh8 チャンネル登録をしてスターテニス...
「struct」的推薦目錄:
- 關於struct 在 Taipei Ethereum Meetup Facebook 的精選貼文
- 關於struct 在 Ken's Portable Classroom Facebook 的精選貼文
- 關於struct 在 BorntoDev Facebook 的最讚貼文
- 關於struct 在 スターテニスアカデミー / スタテニ Youtube 的最佳解答
- 關於struct 在 スターテニスアカデミー / スタテニ Youtube 的最佳解答
- 關於struct 在 #ミニマリストライフ Youtube 的最佳解答
- 關於struct 在 Struct 2 & 動態記憶體配置 的評價
- 關於struct 在 lyptt/struct: Xcode projects on steroids - GitHub 的評價
- 關於struct 在 lyptt/struct: Xcode projects on steroids - GitHub 的評價
- 關於struct 在 How to initialize a struct in accordance with C programming ... 的評價
struct 在 Ken's Portable Classroom Facebook 的精選貼文
關於字根-struct
#防疫新生活 #勤洗手 #常消毒 #戴口罩 #少出門
📓【Ken的文法筆記 I】
購買請至➜ https://is.gd/5Kp6M0
📘【Ken的單字筆記 I】
購買請至➜ https://is.gd/zdxeF0
👨🏫【Ken的線上課程】
購買請至➜ https://reurl.cc/m95QDl
資料來源: https://dictionary.cambridge.org/
圖片來源: https://www.google.com.tw/
struct 在 BorntoDev Facebook 的最讚貼文
⚡ จะดีกว่าไหม ? ถ้าในการเขียนโปรแกรม เราสามารถสร้างและออกแบบโครงสร้างข้อมูลได้ตามที่เราต้องการ!!
.
และวันนี้แอดจะพาเพื่อน ๆ มารู้จักกับเจ้า Struct ในภาษา C ที่จะช่วยให้เราสร้างกลุ่มข้อมูล และเรียกใช้งานได้ง่ายสุด ๆ
.
📦 ซึ่งเจ้า Struct เนี่ยมันก็ คือ คำสั่งที่จะทำการสร้างกลุ่มของข้อมูลเพื่อสามารถนำไปเรียกใช้งานได้กับตัวแปรอื่น ๆ ที่มีรูปแบบการจัดเก็บข้อมูลที่เหมือนกัน
.
แล้ววิธีการใช้งานของมันจะเป็นยังไงกันนะ ?? ถ้าพร้อมแล้วไปดูกันโลดด 🔥
.
borntoDev - 🦖 สร้างการเรียนรู้ที่ดีสำหรับสายไอทีในทุกวัน
struct 在 スターテニスアカデミー / スタテニ Youtube 的最佳解答
貴男プロ&小野田プロとテニスを学び尽くす!
オンラインテニスアカデミー「TEAM STA(チームスタテニ)」の無料トライアルはこちら!
https://team-sta.jp/
TEAM STAってなに?
https://youtu.be/QJAfkXRvZh8
チャンネル登録をしてスターテニスアカデミーに入学!
https://www.youtube.com/channel/UCfFB...
サブチャンネル「テニすた」のチャンネル登録はこちら
制作の裏側や実験的企画を配信していきます!
https://www.youtube.com/channel/UCI_t...
スタテニではスポンサーを募集しております!
ぜひお問い合わせください!連絡先↓↓↓
[email protected]
Click here for the English version of the channel
https://www.youtube.com/channel/UCKULBZvRFppJsBy6HnVXO6w
尾脇兄弟が所属するテニススクール
「J STRUCT」の情報はこちら
代表:伊藤潤(2010年全日本学生テニス選手権優勝)
https://jstruct.jp/
尾脇兄弟のYouTubeチャンネル
https://www.youtube.com/channel/UC68fNsOcYfjVtZL6h3t1qug
尾脇兄弟のSNS
【Twitter】https://twitter.com/jiro_nosuke
【Instagram】https://www.instagram.com/kosuke.o4o5/
【スタテニ公式ツイッター(佐久間Pが投稿)】フォローお願いします!(TEAM STA割引情報あるかも)
https://twitter.com/StarTennis_P
【スタテニ公式インスタグラム】フォローお願いします!
貴男プロ
https://www.instagram.com/takaosuzuki76/?hl=ja
小野田プロ
https://www.instagram.com/onoda_m_tennis/
佐久間P
https://www.instagram.com/startennis_sakuma/?hl=ja
美咲D
https://www.instagram.com/bitstar_misaki/?hl=ja
大村D
https://www.instagram.com/omura.director/?hl=ja
質問や今後レッスンしてほしいテーマがありましたら、
コメント欄にドシドシお願いします!
========================
鈴木貴男(元デビスカップ日本代表)
所属:Team REC
生年月日 : 1976年9月20日
日本ランキング最高位:S1位/D1位
世界ランキング最高位:S102位/D119位
【主な戦績・記録】
インターハイ3冠(単複・団体)
全日本選手権シングルス優勝3回(96年、97年、07年)
デビスカップ日本代表歴代最多勝利記録(41勝)
アトランタオリンピック日本代表
全米オープン本戦出場(99年、04年)
ウィンブルドン本戦出場、2回戦進出(03年)
全豪オープンテニス本戦出場、2回戦進出(05年)
ATP500ジャパンオープン 日本人ペア初優勝(05年)
鈴木貴男ホームページ
http://suzukitakao.jp/
========================
小野田倫久(日本テニス協会公認S級エリートコーチ)
生年月日 : 1978年1月31日
日本ランキング最高位:S3位/D4位
世界ランキング最高位:S296位/D306位
【主な戦績・記録】
全日本ジュニア16歳以下 単複優勝
全日本ジュニア18歳以下 ダブルス優勝、シングルス準優勝
インターカレッジ ダブルス優勝、シングルス準優勝
全日本大学対抗テニス王座決定戦 4連覇(大学通算69勝0敗)
全日本選手権 ダブルス準優勝(00年)
全日本選手権 シングルス ベスト4(03年)
アジア大会 ダブルス銅メダル(98年)
アジア大会 団体金メダル(02年)
全豪オープン予選出場(03年)
釜山チャレンジャー ダブルス優勝(03年)
フューチャーズ5回優勝(シングルス)
instagram
https://www.instagram.com/onoda_m_tennis/?igshid=in9hujkttmae
ホームページ
https://bitstar.tokyo/creators/michihisaonoda
スターテニスアカデミーは、小野田倫久プロ、鈴木貴男プロをはじめとしたトッププロの経験や、ツアーコーチの知識を惜しみなく公開し、皆さんに学びを提供していきます。
制作:BitStar Studio
https://studio.bitstar.tokyo/
「BitStar Studio」(ビットスタースタジオ)とは
昨今、急速に高まる企業のYouTubeチャンネル運営ニーズに応えるべく設立された、企業オリジナルコンテンツの制作やSNS配信に特化したコンテンツスタジオ。大手メディア・企業と協業し、バラエティ、スポーツ、美容&フィットネスなど、幅広いジャンルの番組を制作。これまでにYouTube上で2.5億回を超える累計再生数を記録しています。その実績から、①YouTubeに適した企画立案、②クリエイタープロダクション「BitStar」と連携したチャンネル成長支援、③経験豊富な動画制作及びチャンネル運用・分析体制に強みを有します。分析データもBitStarのプラットフォームからの自動出力が可能となっており、企業チャンネルの成長にフルコミットできる体制が整っています。
■株式会社BitStarについて
「その輝きを、加速させる。」
BitStarは、人が持つ輝きをコンテンツのパワーで加速させるテックカンパニーです。
事業内容:クリエイタープロダクション事業、コンテンツ制作事業、インフルエンサーマーケティング事業
・クリエイタープロダクション「BitStar」:https://bitstar.tokyo
・コンテンツスタジオ「BitStar Studio」:https://studio.bitstar.tokyo
・インフルエンサーマーケティング「BitStar Ads」:https://ad.bitstar.tokyo
・VR/VTuber研究所「BitStar Akihabara Lab」
コーポレートサイト:https://corp.bitstar.tokyo
#テニス,#尾脇兄弟,#鈴木貴男
struct 在 スターテニスアカデミー / スタテニ Youtube 的最佳解答
貴男プロ&小野田プロとテニスを学び尽くす!
オンラインテニスアカデミー「TEAM STA(チームスタテニ)」の無料トライアルはこちら!
https://team-sta.jp/
TEAM STAってなに?
https://youtu.be/QJAfkXRvZh8
チャンネル登録をしてスターテニスアカデミーに入学!
https://www.youtube.com/channel/UCfFB...
サブチャンネル「テニすた」のチャンネル登録はこちら
制作の裏側や実験的企画を配信していきます!
https://www.youtube.com/channel/UCI_t...
スタテニではスポンサーを募集しております!
ぜひお問い合わせください!連絡先↓↓↓
[email protected]
Click here for the English version of the channel
https://www.youtube.com/channel/UCKULBZvRFppJsBy6HnVXO6w
尾脇兄弟が所属するテニススクール
「J STRUCT」の情報はこちら
代表:伊藤潤(2010年全日本学生テニス選手権優勝)
https://jstruct.jp/
尾脇兄弟のYouTubeチャンネル
https://www.youtube.com/channel/UC68fNsOcYfjVtZL6h3t1qug
尾脇兄弟のSNS
【Twitter】https://twitter.com/jiro_nosuke
【Instagram】https://www.instagram.com/kosuke.o4o5/
【スタテニ公式ツイッター(佐久間Pが投稿)】フォローお願いします!(TEAM STA割引情報あるかも)
https://twitter.com/StarTennis_P
【スタテニ公式インスタグラム】フォローお願いします!
貴男プロ
https://www.instagram.com/takaosuzuki76/?hl=ja
小野田プロ
https://www.instagram.com/onoda_m_tennis/
佐久間P
https://www.instagram.com/startennis_sakuma/?hl=ja
美咲D
https://www.instagram.com/bitstar_misaki/?hl=ja
大村D
https://www.instagram.com/omura.director/?hl=ja
質問や今後レッスンしてほしいテーマがありましたら、
コメント欄にドシドシお願いします!
========================
鈴木貴男(元デビスカップ日本代表)
所属:Team REC
生年月日 : 1976年9月20日
日本ランキング最高位:S1位/D1位
世界ランキング最高位:S102位/D119位
【主な戦績・記録】
インターハイ3冠(単複・団体)
全日本選手権シングルス優勝3回(96年、97年、07年)
デビスカップ日本代表歴代最多勝利記録(41勝)
アトランタオリンピック日本代表
全米オープン本戦出場(99年、04年)
ウィンブルドン本戦出場、2回戦進出(03年)
全豪オープンテニス本戦出場、2回戦進出(05年)
ATP500ジャパンオープン 日本人ペア初優勝(05年)
鈴木貴男ホームページ
http://suzukitakao.jp/
========================
小野田倫久(日本テニス協会公認S級エリートコーチ)
生年月日 : 1978年1月31日
日本ランキング最高位:S3位/D4位
世界ランキング最高位:S296位/D306位
【主な戦績・記録】
全日本ジュニア16歳以下 単複優勝
全日本ジュニア18歳以下 ダブルス優勝、シングルス準優勝
インターカレッジ ダブルス優勝、シングルス準優勝
全日本大学対抗テニス王座決定戦 4連覇(大学通算69勝0敗)
全日本選手権 ダブルス準優勝(00年)
全日本選手権 シングルス ベスト4(03年)
アジア大会 ダブルス銅メダル(98年)
アジア大会 団体金メダル(02年)
全豪オープン予選出場(03年)
釜山チャレンジャー ダブルス優勝(03年)
フューチャーズ5回優勝(シングルス)
instagram
https://www.instagram.com/onoda_m_tennis/?igshid=in9hujkttmae
ホームページ
https://bitstar.tokyo/creators/michihisaonoda
========================
スターテニスアカデミーは、小野田倫久プロ、鈴木貴男プロをはじめとしたトッププロの経験や、ツアーコーチの知識を惜しみなく公開し、皆さんに学びを提供していきます。
制作:BitStar Studio
https://studio.bitstar.tokyo/
「BitStar Studio」(ビットスタースタジオ)とは
昨今、急速に高まる企業のYouTubeチャンネル運営ニーズに応えるべく設立された、企業オリジナルコンテンツの制作やSNS配信に特化したコンテンツスタジオ。大手メディア・企業と協業し、バラエティ、スポーツ、美容&フィットネスなど、幅広いジャンルの番組を制作。これまでにYouTube上で2.5億回を超える累計再生数を記録しています。その実績から、①YouTubeに適した企画立案、②クリエイタープロダクション「BitStar」と連携したチャンネル成長支援、③経験豊富な動画制作及びチャンネル運用・分析体制に強みを有します。分析データもBitStarのプラットフォームからの自動出力が可能となっており、企業チャンネルの成長にフルコミットできる体制が整っています。
■株式会社BitStarについて
「その輝きを、加速させる。」
BitStarは、人が持つ輝きをコンテンツのパワーで加速させるテックカンパニーです。
事業内容:クリエイタープロダクション事業、コンテンツ制作事業、インフルエンサーマーケティング事業
・クリエイタープロダクション「BitStar」:https://bitstar.tokyo
・コンテンツスタジオ「BitStar Studio」:https://studio.bitstar.tokyo
・インフルエンサーマーケティング「BitStar Ads」:https://ad.bitstar.tokyo
・VR/VTuber研究所「BitStar Akihabara Lab」
コーポレートサイト:https://corp.bitstar.tokyo
#テニス,#尾脇兄弟,#鈴木貴男
struct 在 #ミニマリストライフ Youtube 的最佳解答
https://amzn.to/2LFAcIi
構造体について教えて下さい C言語 struct C言語の構造体を理解するとプログラムが非常にスッキリします。是非このウェビナーで習得して下さい。(Amazonアソシエイトプログラムを利用しています)
https://www.instagram.com/dougakaihou/
Instagramやっています
https://itunes.apple.com/podcast/id999164868
Podcastもやっています
https://youtube.com/c/jiheiorg/
チャンネル登録よろしくお願いします
誰も考えない切り口でシンプルな生き方を提案します。物を軽く少なくする「ミニマリスト」「シンプルライフ」の知恵を応用した動画を公開中。
This movie has Japanese caption for learn Japanese.
機材
・iPhone SEのアウターカメラで撮影しています
グラスジャパン福 買いました
https://www.youtube.com/watch?list=UURwqTcUh7jMWqFjSYH3JHow&v=Pz0AOZGNPNI
https://www.youtube.com/watch?list=UURwqTcUh7jMWqFjSYH3JHow&v=A0j0qGO6qcM
#Minimalist_Life #ミニマリストライフ
構造体について教えて下さい C言語 struct C言語の構造体を理解するとプログラムが非常にスッキリします。是非このウェビナーで習得して下さい。
struct 在 lyptt/struct: Xcode projects on steroids - GitHub 的推薦與評價
struct is a tool for iOS and Mac developers to automate the creation and management of Xcode projects. Ever lamented over your unorganised project files? struct ... ... <看更多>
struct 在 lyptt/struct: Xcode projects on steroids - GitHub 的推薦與評價
struct is a tool for iOS and Mac developers to automate the creation and management of Xcode projects. Ever lamented over your unorganised project files? struct ... ... <看更多>
struct 在 Struct 2 & 動態記憶體配置 的推薦與評價
Struct review. 宣告 struct my_type { int a , b , c; char d , e; double f;. }; 使用 my_type x;. x.a += 5;. x.c = x.a + x.b; printf("%c" , x.d);. ... <看更多>