📜 [專欄新文章] [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.
👏 歡迎轉載分享鼓掌
同時也有4部Youtube影片,追蹤數超過40萬的網紅我要做富翁,也在其Youtube影片中提到,常常聽說「雞蛋不能放同一個籃子」,投資者要分散風險,做程式交易亦一樣,不能只倚靠一種策略或產品。今集 Eva 會以股票作為例子,講解如何有系統地分散風險,在設計 Algo 時可以同樣邏輯,減低自動交易的風險。 喜歡我們的影片,請分享給好友,按贊留言給予我們一點支持。 ==============...
「python程式交易教學」的推薦目錄:
- 關於python程式交易教學 在 Taipei Ethereum Meetup Facebook 的最佳解答
- 關於python程式交易教學 在 氣球達人 宋俊霖 Facebook 的最讚貼文
- 關於python程式交易教學 在 Facebook 的精選貼文
- 關於python程式交易教學 在 我要做富翁 Youtube 的最佳貼文
- 關於python程式交易教學 在 我要做富翁 Youtube 的最讚貼文
- 關於python程式交易教學 在 我要做富翁 Youtube 的最佳貼文
- 關於python程式交易教學 在 Python程式交易 - Facebook 的評價
- 關於python程式交易教學 在 victorgau/QF20170311: 智慧投資與程式交易 - GitHub 的評價
python程式交易教學 在 氣球達人 宋俊霖 Facebook 的最讚貼文
2021.05.31(一)
編織小熊與草莓蛋糕
感謝阿桂老師點給學生的 15 歲生日禮物
原本因為疫情關係許久沒發文
現在又可以再發個氣球文
順便更新一下現況
最近手機會自動跳出今日疫情狀況
每日來個 2、300+ 的本土病例
或者是 10+ 的死亡案例
雖然現在住的清水尚無任何一個案例
不過不久就會有數字出現的感覺
最近花了很多時間
研讀之前在 Hahow 買的兩門課程
一個是 "財富自由 x 程式交易:通往財富自由之路"
另一個是 "Python 小資族選股策略"
關於程式交易這門課
內容約有 40 多個小時
前 20 小時都在講財經知識
後面 20 小時才進入程式實作的部分
簡單來說這門課的宗旨
在於用 MultiCharts 這個軟體
寫各種嚴謹的交易策略並回測歷史績效
檢驗策略是否可行
製作出一個能打敗大盤績效的自動交易程式
如此一來不用害怕沒時間顧電腦
也能幫我做買賣
不過課程看到後半段
發現要餵給 MultiCharts 的歷史資料
只有付上萬元買資料
或者學寫 Python 爬蟲免費抓
所以就把好久以前買但都沒時間看的
"Python 小資族選股策略" 拿來重看
一看發現 Python 程式語言有多麼的厲害
短短幾行就能爬取到網頁資料
整理成自己想要的各種檔案
建立好資料庫後還能每日更新爬取所有股票、法人、券商等
他們的歷年與最新的股價、財報、籌碼等資訊
有了可以分析用的數字
配上指標公式帶入
就可以交叉分析篩選比較
選出歷史績效能打敗大盤的優質潛力股
最重要的是要用來更新 MultiCharts 的資料也是拿的到手
現在也試著用課堂教的東西
拿去股市大富翁裡面測試一籃子股票買下去後
成效到底是好還是不好
然而這門 Python 的課沒有分析到期貨的部分
程式交易的課程卻都以台指期為主軸
之後想要有期貨相關歷史資料
可能還是要再鑽研一下期貨歷史資料爬下來後
怎麼整理輸出成 MultiCharts 可以用的 CSV 檔吧?
目前進度是程式交易的課程快看完了
群益證券也先線上預約開戶了
希望之後的程式交易之路可以順利上路
對於我這種有時候要凌晨工作折氣球
早上常會起不來看盤的人來說
希望之後程式交易可以一勞永逸
不用因為三更半夜美股突然大跌的關係
爬起來趕快賣出台指期之類的
最近歐比變得越來越大隻
肚子皮感覺垂垂的可以摸到肉肉
我睡覺時她突然跳到身上會感受到重量的衝擊
然後毛也變得越來越長
根本就一隻毛茸茸的小怪獸
把她把玩在身邊真的是人生一大樂趣
昨天趁著歐比睡在電腦桌旁邊
就用貓用的指甲剪把爪子修剪一番
深怕歐比醒來或者我剪到血管
手上的冷汗流了一把
最近歐比偶爾還是會把手當獵物咬
我也會用指頭插她嘴巴讓她不敢咬
不過情況似乎沒有好轉
覺得是時候買新玩具轉移她想咬人的注意力
雖然聽說再養第二隻貓的話
兩隻貓互咬後
知道咬和被咬有多痛
就會知道不能隨便亂咬人
但是已經沒有多餘的錢養更多貓
所以就先作罷
蠻多人把 6/14 當作一個指標
說是這天之後疫情可能會明朗化
之後生意又能做下去了
不過我覺得可能還沒那麼快脫離險境
這意味著如果要繼續用氣球賺錢的話
我只能靠線上教學、做 Youtuber、
做電子書之類的方式有個額外收入
不過搬出家裡住之後
已經不像當初退伍時住家裡沒有經濟壓力
現在每個月除了有固定支出的壓力外
還有定期存款的壓力
希望逐漸增加的本金與複利能早日財富自由
根據"Python小資族選股策略"裡面的財務規劃來說
如果財富自由是我的目標
買房可能要到很久約是 10 年後
甚至要一直租房下去也不一定
不然少了一大筆可以滾的本金
多了需要持續支出的房貸與利息
財富自由只會離我越來越遙遠
我希望未來每月被動收入能有個 5 萬
這樣就能足夠維持我想要的生活
折我想折的氣球
偶爾一點生活上的娛樂
有工作依舊會照接
對於金錢的壓力或許也就不會那麼大了
感謝您的收看
我們下篇圖文不符的氣球文再見了
#BalloonArt #造型氣球 #バルーンアート
#客製化氣球 #生日禮物 #生日氣球 #氣球達人
python程式交易教學 在 Facebook 的精選貼文
【利用Python Pattern Recognition捕捉大市升跌】講座
時間: 2021年5月6日 晚上 20:30-21:30
講者: Patrick Tsoi及諗sir
(課程編號: YUQF24)
報名方法 : https://homebloggerhk.com/apply/
內容:
是次教學不會教你用PYTHON做回測、max drawdown或者計return,而是去少人提及之pattern recognition的教學。究竟用機計到有股票或指數中左pattern之後威力有幾強大? 留返星期四諗sir及Patrick同你講解
。將提及一隻港股做研究
。如何預判恆指將急跌?
。本課程不講熱門股ATMX,亦不會叫你買2800
。系統結果已反映熱門股跟買無幸福
現在市場獲利者多用電腦判定入市位置,再用你一個人腦同對家幾部電腦打,未計人地係唔係super-computer,牌面你都輸左九成。
點逆轉? 聽下Patrick講, 佢資訊科技性強,博士生一名。由點簡單做好programing,或者根本唔識programming都可令電腦為你選股的方案,patrick都會教你!
至於點將電腦駁通證券行,自動落盤,Patrick熟手在行。幫你坐定定密密炒。
我地用Python啟動API作接駁,易寫易明。學生亦有辦法自己日後將整套交易軟件植入自家電腦。當然諗sir提供交易方略,獨家野唔少得!
程式交易有咩好?
免除個人情緒影響投資成績,利用電腦找尋晚上於美股市場出現的投資機遇,運用成家博客團隊提供的獨有程式去應對大市,提高賺幅。
亦可作Backtest去不斷改善自己的買賣Forumla
【查詢:(手機可點搫→)WhatsApp91010168】
python程式交易教學 在 我要做富翁 Youtube 的最佳貼文
常常聽說「雞蛋不能放同一個籃子」,投資者要分散風險,做程式交易亦一樣,不能只倚靠一種策略或產品。今集 Eva 會以股票作為例子,講解如何有系統地分散風險,在設計 Algo 時可以同樣邏輯,減低自動交易的風險。
喜歡我們的影片,請分享給好友,按贊留言給予我們一點支持。
======================
1) 程式交易新手會+試堂:https://edu.money-tab.com/eva-algo-sharing
2) 我要做股神APP下載:http://onelink.to/mtapp
3) 緊貼我們社交平台,不錯過任何免費分析/教學:
YouTube頻道: https://youtube.com/channel/UCdWNwPuaS1o2dIzugNMXWtw?sub_confirmation=1
Facebook專頁:https://facebook.com/203349819681082
python程式交易教學 在 我要做富翁 Youtube 的最讚貼文
設計好Algo後一定要進行優化,Eva 會教大家幾個基本概念,學識如何畫分 In / Out Sample,如何影響結果。想知道更多關於 Algo Trading 的教學,記住留意 #我要做程式交易。
#Optimization #優化 #InOutSample
======================
1) 程式交易新手會+試堂:https://edu.money-tab.com/eva-algo-sharing
2) 我要做股神APP下載:http://onelink.to/mtapp
3) 緊貼我們社交平台,不錯過任何免費分析/教學:
YouTube頻道: https://youtube.com/channel/UCdWNwPuaS1o2dIzugNMXWtw?sub_confirmation=1
Facebook專頁:https://facebook.com/203349819681082
python程式交易教學 在 我要做富翁 Youtube 的最佳貼文
1) 程式交易新手會+試堂:https://edu.money-tab.com/eva-algo-sharing
2) 我要做股神APP下載:http://onelink.to/mtapp
3) 緊貼我們社交平台,不錯過任何免費分析/教學:
YouTube頻道: https://youtube.com/channel/UCdWNwPuaS1o2dIzugNMXWtw?sub_confirmation=1
Facebook專頁:https://facebook.com/203349819681082
==============================
每當上市公司成為新聞主角,公司股價多少會有點波動。外國就有統計發現股神的巴郡(Berkshire Hathaway)股價會和女星 Anne Hathaway 有關?這個 Hathaway Effect 到底是甚麼?能否應用到港股之中?今日 #我要做程式交易,Eva 會和大家講解詳情。
另外虛擬 Algo 已經運行大約兩個月,由 50 萬本金開始,已有差不多 20 萬盈利,想了解更多相關詳情,記住留意 Algo 課堂的詳情。喜歡我們的節目,請 Like 及 Share,讓更多人接觸我們平台。
#AlgoTrading #程式交易 #MultiCharts
python程式交易教學 在 victorgau/QF20170311: 智慧投資與程式交易 - GitHub 的推薦與評價
Python 程式 設計基礎; Numpy, MatPlotLib, Pandas 介紹; Python 的Web 框架. 前兩部分主要會使用Jupyter Notebook 來進行教學、講解範例、提高學習興趣,目標是希望 ... ... <看更多>
python程式交易教學 在 Python程式交易 - Facebook 的推薦與評價
將會陸續在這個社團裡面分享程式交易的資源,以及陸續分享Python程式交易的實務案例,從程式交易的架構、策略判斷、下單指令,都有可能會分享。 並且往後有程式交易 ... ... <看更多>