📜 [專欄新文章] [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.
👏 歡迎轉載分享鼓掌
同時也有1部Youtube影片,追蹤數超過2萬的網紅數學老師張旭,也在其Youtube影片中提到,【摘要】 Hank 老師是業界的開發人員,同時擁有不少程式設計的教學經驗,重視實作的他,將會在張旭無限教室線上課程平台上架他的程式設計課程,敬請期待! 【Hank 老師個人 YT 頻道】 👉 https://www.youtube.com/channel/UCVRK0vv6Hu9aTjiLaifv...
python商業用途 在 吳老師excel函數與vba大數據教學 Facebook 的最佳貼文
單元01_建置Python開發環境(用懶人包快速建立)
開發環境和EXCEL VBA相較,Python真的太麻煩了,
VBA只要開啟開發人員標籤,就可以開始寫程式了,
另外EXCEL本身就可以充當資料庫來使用,資料也可以隨時存放,但這些都是Python無法做到的,原因應該和商用軟體(OFFICE)和自由軟體(PYTHON)的差異,商用軟體有收費自然就有必要幫大家把需要的環境做好,但衍生的就是需要不斷收費,但自由軟體因為不用收費,只要不是商業用途,都沒有費用問題,但也就需要什麼都自己來,有點像自助餐的概念,什麼都要自己來,所有建置環境也就需要自己準備好,甚至,建置環境的方法至少幾十種,
那一種最好?
我想為了Python的教學便利,不讓大家太麻煩,
所以幫大家準備好Pyhon建置環境懶人包,
只要將兩個檔案解壓縮到D碟(或C碟)中,
在直接執行Eclipse的執行檔就好,Eclipse是免安裝程式,可是是為Python相當好用的編輯器,開啟後在和Pyhton連結就好,再設定好編碼方式為UTF-8,就可以開始寫Python程式了,至於後面的VBA可以把EXCEL當成存取資料和資料庫來用,後面會再講解對應到Python的檔案與資料庫使用,以下說明如何使用。
教學影音(完整版在論壇):
https://terry55wu.blogspot.com/2020/02/01python.html
使用懶人包
先下載
eclipse_python.zip [下載]
Python37-32.zip [下載]
結語:
和EXCEL VBA相較之下,Pyhton的開發環境麻煩太多,
但帶來的好處是費用上的節省,
和未來有用不完的外掛可以擴充,所以如果你的應用需求很簡單,
建議用VBA就好,但如果需要更複雜的處理工作,
也不想付錢給軟體公司,Python是很好的選項。
課程理念與課程介紹:
因應大數據分析、物聯網、工業4.0的需求,能更容易的學會網路爬蟲、機器學習、物聯網、影像辨識、自動圖像報表等需求,其中以EXCEL VBA與Python程式開發最為熱門,因此將VBA的自動化延伸到PYTHON設計,讓學員能夠比較兩個工具的長處,並能相互協同應用。
課程內容
單元01_建置Python開發環境與程式測試
單元02_基本語法與結構控制件
單元03_迴圈資料結構與自訂函數
單元04_串列、字典與檔案與資料庫處理
單元05-1_開放資料處理CSV和JSON資料處理(停車與PM2.5)
單元05-2_開放資料處理練習題_新北市開放資料JSON
單元05-3_GOOGLE雲端當CSV來源與CSV處理
單元05-4_網頁資料擷取基礎與外匯
單元05-5_網頁資料擷取台彩與股市資料
單元05-6_擷取網頁上櫃股票行情
單元06_使用Pandas與處理_Excel_試算表
單元07_VBA與Phython連結MYSQL資料庫
單元08_視覺化報表使用圖表繪製Matplotlib
吳老師 2020/2/10
python商業用途 在 吳老師excel函數與vba大數據教學 Facebook 的最佳貼文
從VBA到Pyhton用懶人包快速建立開發環境分享
完整連結:https://terry55wu.blogspot.com/2018/12/vbapyhton.html
開發環境和EXCEL VBA相較,Python真的太麻煩了,
VBA只要開啟開發人員標籤,就可以開始寫程式了,
另外EXCEL本身就可以充當資料庫來使用,資料也可以隨時存放,
但這些都是Python無法做到的,
原因應該和商用軟體(OFFICE)和自由軟體(PYTHON)的差異,
商用軟體有收費自然就有必要幫大家把需要的環境做好,
但衍生的就是需要不斷收費,
但自由軟體因為不用收費,只要不是商業用途,都沒有費用問題,
但也就需要什麼都自己來,有點像自助餐的概念,什麼都要自己來,
所有建置環境也就需要自己準備好,
甚至,建置環境的方法至少幾十種,
那一種最好?
我想為了Python的教學便利,不讓大家太麻煩,
所以幫大家準備好Pyhon建置環境懶人包,
只要將兩個檔案解壓縮到D碟(或C碟)中,
在直接執行Eclipse的執行檔就好,
Eclipse是免安裝程式,可是是為Python相當好用的編輯器,
開啟後在和Pyhton連結就好,再設定好編碼方式為UTF-8,
就可以開始寫Python程式了,
至於後面的VBA可以把EXCEL當成存取資料和資料庫來用,
後面會再講解對應到Python的檔案與資料庫使用,
以下說明如何使用。
使用懶人包
先下載
eclipse_python.zip [下載]
Python37-32.zip [下載]
吳老師 2018/12/26
python商業用途 在 數學老師張旭 Youtube 的最佳解答
【摘要】
Hank 老師是業界的開發人員,同時擁有不少程式設計的教學經驗,重視實作的他,將會在張旭無限教室線上課程平台上架他的程式設計課程,敬請期待!
【Hank 老師個人 YT 頻道】
👉 https://www.youtube.com/channel/UCVRK0vv6Hu9aTjiLaifvbaA
【課程平台連結】
👉 https://changhsumath.com
【加入會員】
歡迎加入張旭老師頻道會員
付費訂閱支持張旭老師,協助本頻道發展並獲得會員專屬福利
👉 https://www.youtube.com/channel/UCxBv...
【購買下學期微積分教學影片】
本頻道僅公開張旭微積分上學期教學影片
若你需要下學期微積分影片,請參考我們的方案
👉 https://changhsumath.1shop.tw/calculu...
【張旭人生雜談目錄】
EP01:為何小考行,大考卻不行 (https://youtu.be/X8G6uCH0TZU)
EP02:一言不合就筆戰的 5 個數學問題 (https://youtu.be/UdBUnkelEEk)
EP03:高中微積分和大學微積分的 5 個差別 (https://youtu.be/FqxnQ90DpPk)
EP04:感謝個為支持,我們開會員制囉 (https://youtu.be/zGFE56E7TUk)
EP05:酒精微積分大賽規則說明與題目講解 (https://youtu.be/Cz7cmj-TtUQ)
EP06:我清大數博入學考只有4分? (https://youtu.be/b19kbL0pAFQ)
EP07:是時候公佈這個計劃了? (https://youtu.be/0lJ10W8K_z8)
EP08:你想當老師嗎?那你來看這個! (https://youtu.be/gWhIydAN4nU)
EP09:張旭線上教學平台正式上線!(https://youtu.be/twA-P6p4ftU)
EP10:張旭微積分上學期課程介紹 (https://youtu.be/DQKAPa0FrFQ)
EP11:張旭微積分下學期課程介紹 (https://youtu.be/ycQbQxvOMDQ)
EP12:割圓術 (https://youtu.be/eVLeTHQPRN8)
EP13:我大學時成立了一個幫派 (https://youtu.be/5vwToeO_zIM)
EP14:連數學老師也不一定看過的韋達公式 (https://youtu.be/XJzgyTvKjYk)
EP15:愛莉莎莎 is isomorphic to 鍾明軒 and 館長 but not 蒼藍鴿 (https://youtu.be/h77AcOhkhqk)
EP16:教育到底應不應該商業化? (https://youtu.be/LCR83Sjv-9k)
EP17:國高中資優數學君揚老師登場!(https://youtu.be/6ts8Ojnhfkw)
EP18:程式設計 APCS Hank 老師登場!👈 目前在這裡
【版權宣告】
本影片版權為張旭 (張舜為) 老師所有
嚴禁用於任何商業用途⛔
如果有學校老師在課堂使用我的影片的話
請透過以下聯絡方式通知我讓我知道,謝謝
FB:https://www.facebook.com/changhsu.math
IG:https://www.instagram.com/changhsu.math
【張旭老師其他社群平台】
Twitch:https://www.twitch.tv/changhsu_math
LBRY:https://odysee.com/@changhsumath:b
Bilibili:https://space.bilibili.com/521685904
SoundOn:https://sndn.link/changhsu_math
Discord 邀請碼:6ZKqJX9kaM
【贊助張旭老師】
歐付寶:https://payment.opay.tw/Broadcaster/D... (台灣境內用這個)
綠界:https://p.ecpay.com.tw/B3A1E (台灣境外用這個)
#張旭人生雜談 #歡迎留言討論想法 #喜歡請按讚訂閱分享

python商業用途 在 Python-100-Days_zh-tw/玩轉PyCharm(上).md - GitHub 的推薦與評價
Contribute to DragonChen-TW/Python-100-Days_zh-tw development by creating an ... 費用,如果不用做商業用途,我們可以暫時選擇試用30天或者使用社區版的PyCharm。 ... <看更多>