📜 [專欄新文章] [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.
👏 歡迎轉載分享鼓掌
同時也有126部Youtube影片,追蹤數超過4萬的網紅吳老師教學部落格,也在其Youtube影片中提到,VBA到Python程式開發202101第10次上課 01_重點回顧與JSON資料勞退收益率 02_國內主要經濟指標與解析XML 03_下載與儲存XML檔與解析並存為CSV檔 04_將GOOGLE雲端當CSV來源 05_安裝b44套件與下載TQC網站 06_TQC網頁資料擷取基礎 完整教學 ht...
「python套件安裝教學」的推薦目錄:
- 關於python套件安裝教學 在 Taipei Ethereum Meetup Facebook 的最佳貼文
- 關於python套件安裝教學 在 軟體開發學習資訊分享 Facebook 的最讚貼文
- 關於python套件安裝教學 在 紀老師程式教學網 Facebook 的最佳貼文
- 關於python套件安裝教學 在 吳老師教學部落格 Youtube 的最讚貼文
- 關於python套件安裝教學 在 吳老師教學部落格 Youtube 的最佳解答
- 關於python套件安裝教學 在 吳老師教學部落格 Youtube 的最讚貼文
- 關於python套件安裝教學 在 Re: [問題] github下載package使用的問題- 看板Python - 批踢踢 ... 的評價
- 關於python套件安裝教學 在 Re: [問題] github下載package使用的問題- 看板Python - 批踢踢 ... 的評價
- 關於python套件安裝教學 在 安裝Python與Package 的評價
- 關於python套件安裝教學 在 在各作業系統上安裝Python 3.4。 的評價
- 關於python套件安裝教學 在 Python套件Pytube下載youtube影片 - 張郎生活的筆記- 痞客邦 的評價
python套件安裝教學 在 軟體開發學習資訊分享 Facebook 的最讚貼文
開源報報精彩內容回顧
內容摘要
✅ 編譯器學習資源集錦
✅ 正確命名精選集錦
✅ 一個精選的 Python 框架、程式庫、軟體和資源列表
✅ 你所不知道的 Javascript 開源電子書
✅ 一個功能完整安裝在容器中的電子商務應用程式
✅ 一個輕量級的 JavaScript 實用工具,用於建立 Markdown + LaTeX 文件
✅ 微軟 REST API 設計指南
✅ 手繪風格的 react 圖表程式庫
✅ 用於簡單的客戶端/ 伺服器端 GraphQL 快取 Npm 套件
✅ 用於基於 React 框架(Gatsby 和 Next.js )的網站編輯工具套件
✅ 將你的 Raspberry Pi 變成一個內建 DNS 解析的廣告阻隔伺服器
✅ Kubernetes Cluster 檢查器最佳實踐
✅ 一份可縮短 Flutter 初學者和到開發出容易維護,乾淨程式碼 Flutter 專案差距的教學指南
✅ 資料科學的就業建議
✅ 適合機器學習和資料科學的乾淨程式碼概念
✅ 附有 Jupyter notebook 的金融模型演算法收集
✅ VS Code 中做及時的 GraphQL API 的開發
✅ 為 OpenPGP 初學者準備的加密套件。 它被設計成透過瀏覽器或可獨立執行的執行程式
✅ Redis 桌面管理程式
https://softnshare.com/opensource-news-005-machine-learning-cleancode/
python套件安裝教學 在 紀老師程式教學網 Facebook 的最佳貼文
[影片分享] 紀老師的「機器學習」第十一章:人工神經網路(三):環境安裝
紀老師課程影片分享,第三彈!這次要分享給大家的,是如何安裝必要的 Python 套件,好讓大家能夠執行神經網路。今天的影片比較短,約 5 分多鐘而已。希望大家會喜歡!
↓↓↓ 這次影片附贈的講義在這邊喔 ↓↓↓
https://bit.ly/2ka715p
跟昨天一樣說明一下,這部份的影片,是我在外面教課時側錄下來的。如果有一些雜音,還請多多擔待。此外,由於大家選的「人工神經網路」是整門機器學習課程的最後一章。影片中難免有些名詞、觀念,您會聽不太懂。如果將來大家支持的話,我也可以開辦整套「機器學習」的課程。如果您對這樣的課程有興趣,可以在底下留言「想上機器學習+1」讓我知道喔!昨天已經有不少人留言了!非常感謝!
如果您是第一次拜訪這個粉絲頁,說明一下這一系列影片分享的前因後果。為了答謝各位對粉絲頁的愛護,我特別辦了一個投票,問大家想看我講「機器學習」的哪一章?
↓↓↓ 投票結果看這裡 ↓↓↓
https://fast-poll.com/poll/results/b5129f7a
投票結果是「人工神經網路」勝出。所以我就準備了一系列的文章,要回饋給粉絲們:
1. 感知器原理(講義): https://bit.ly/2lEysF6
2. 感知器影片: https://is.gd/PvwM51
3. 人工神經網路原理(講義): https://bit.ly/2lI49xf
4. 人工神經網路影片: https://bit.ly/2kD2xVf
5. 安裝人工神經網路環境(講義): 本文
6. 安裝人工神經網路影片: 本文
這樣所有的單元就分享完了!希望大家喜歡這次的分享喔!
PS: 本文歡迎轉發、按讚、留言鼓勵我一下!您的隻字片語,都是讓我繼續提供好物的動力喔!
-\-\-\-\-\-\-\-\
看更多的紀老師,學更多的程式語言:
● YOTTA Python 課程購買: https://bit.ly/2k0zwCy
● Facebook 粉絲頁: https://goo.gl/N1z9JB
● YouTube 頻道: https://goo.gl/pQsdCt
● Instagram 日常生活: https://goo.gl/nBHzXC
● Twitter 碎碎念: https://is.gd/xFZeub
如果您覺得這個粉絲頁不錯,請到「評論區」給我一個好評喔!
https://www.facebook.com/pg/teacherchi/reviews/
python套件安裝教學 在 吳老師教學部落格 Youtube 的最讚貼文
VBA到Python程式開發202101第10次上課
01_重點回顧與JSON資料勞退收益率
02_國內主要經濟指標與解析XML
03_下載與儲存XML檔與解析並存為CSV檔
04_將GOOGLE雲端當CSV來源
05_安裝b44套件與下載TQC網站
06_TQC網頁資料擷取基礎
完整教學
http://goo.gl/aQTMFS
吳老師教學論壇
http://www.tqc.idv.tw/
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2021_1
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著?
出版社:碁峰? 出版日期:2016/11/29
Python程式設計入門
作者:葉難
ISBN:9789864340057
出版社:博碩文化
出版日期:2015/04/02
吳老師 110/4/27
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境

python套件安裝教學 在 吳老師教學部落格 Youtube 的最佳解答
VBA到Python程式開發202101第10次上課
01_重點回顧與JSON資料勞退收益率
02_國內主要經濟指標與解析XML
03_下載與儲存XML檔與解析並存為CSV檔
04_將GOOGLE雲端當CSV來源
05_安裝b44套件與下載TQC網站
06_TQC網頁資料擷取基礎
完整教學
http://goo.gl/aQTMFS
吳老師教學論壇
http://www.tqc.idv.tw/
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2021_1
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著?
出版社:碁峰? 出版日期:2016/11/29
Python程式設計入門
作者:葉難
ISBN:9789864340057
出版社:博碩文化
出版日期:2015/04/02
吳老師 110/4/27
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境

python套件安裝教學 在 吳老師教學部落格 Youtube 的最讚貼文
VBA到Python程式開發202101第10次上課
01_重點回顧與JSON資料勞退收益率
02_國內主要經濟指標與解析XML
03_下載與儲存XML檔與解析並存為CSV檔
04_將GOOGLE雲端當CSV來源
05_安裝b44套件與下載TQC網站
06_TQC網頁資料擷取基礎
完整教學
http://goo.gl/aQTMFS
吳老師教學論壇
http://www.tqc.idv.tw/
教學論壇(之後課程會放論壇上課學員請自行加入):
https://groups.google.com/forum/#!forum/tcfst_python_2021_1
課程簡介:入門
建置Python開發環境
基本語法與結構控制
迴圈、資料結構及函式
VBA重要函數到Python
檔案處理
資料庫處理
課程簡介:進階
網頁資料擷取與分析、Python網頁測試自動化、YouTube影片下載器
處理 Excel 試算表、處理 PDF 與 Word 文件、處理 CSV 檔和 JSON 資料
實戰:PM2.5即時監測顯示器、Email 和文字簡訊、處理影像圖片、以 GUI 自動化來控制鍵盤和滑鼠
上課用書:
參考書目
Python初學特訓班(附250分鐘影音教學/範例程式)
作者: 鄧文淵/總監製, 文淵閣工作室/編著?
出版社:碁峰? 出版日期:2016/11/29
Python程式設計入門
作者:葉難
ISBN:9789864340057
出版社:博碩文化
出版日期:2015/04/02
吳老師 110/4/27
EXCEL,VBA,Python,自強工業基金會,EXCEL,VBA,函數,程式設計,線上教學,PYTHON安裝環境

python套件安裝教學 在 Re: [問題] github下載package使用的問題- 看板Python - 批踢踢 ... 的推薦與評價
※ 引述《BeAnActuary (Actuary)》之銘言:
: 謝謝指正,這個專案本身就是一個完整的工具,我只是想要直接使用它並作一些數據測試
: 我以為install就是意指安裝...
Install 是安裝沒錯
但是因為 Python 本身就有太多種用法
所以「安裝一個套件」可以代表很多種意思, 每種用法有自己的最佳解
回到你的問題, 看起來這主要有兩種解法, 都是用 Pip
1. pip install
看你的描述, 這個工具並沒有被放上 PyPI
但是 Pip 支援直接從 Git 安裝, 所以你可以
pip install git+https://github.com/author/repo.git#egg=套件名
注意最後面的 #egg=... 部分
這會被 Pip 用來為這個套件取名
通常你可以看 setup.py 裡面的 name 參數, 用一樣的就好
這樣的缺點是沒辦法使用 Pip 的更新功能
因為它自己不知道套件有沒有更新, 也不懂要怎麼用 Git 更新
當你發現有新版本時, 只能重新安裝一次
pip install --ignore-installed git+...後面一樣
2. pip install --editable
Pip 同時也支援 out-of-site 安裝
這個模式可以讓你把任意本地路徑的套件裝到 Python 裡
git clone https://github.com/author/repo.git 專案目錄
pip install --editable 專案目錄
這會讓 Python 能夠直接使用你 clone 下來的那個目錄, 而不另外裝一份
(類似捷徑的概念, 不是拷貝一份, 而是連結到這裡)
所以當你要更新時, 直接在專案目錄裡 git pull, 就能在 Python 用到新版本
缺點是你自己要記得這件事情, 不要不小心把 clone 下來的東西刪了
===========
順帶講一下, 這年頭如果你不需要開發 Python 套件, 只需要「使用」套件
那麼應該不會直接用到 setup.py (其實開發的時候也不太需要, 這是別話)
Pip 應該可以滿足你所有的安裝需求
如果套件沒辦法正確用 Pip 安裝, 就應該回報作者
如果作者不修復, 這個套件的狀態大概也很危險
要嘛是根本沒人用, 要嘛是作者根本放生 (通常好像也是同一件事)
那你用下去了大概也是遲早要出事, 早點跳船才是上策
--
"問おう、貴方が私のマスターか?"
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.94.62
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1517821461.A.891.html
... <看更多>
python套件安裝教學 在 安裝Python與Package 的推薦與評價
打開Python,透過 import XXX 的方式確認套件是否安裝成功。 補充說明. 有些套件的確透過 pip install 無法有效安裝, 此時就需要嘗試另一種方式:下載 ... ... <看更多>
python套件安裝教學 在 Re: [問題] github下載package使用的問題- 看板Python - 批踢踢 ... 的推薦與評價
※ 引述《BeAnActuary (Actuary)》之銘言:
: 謝謝指正,這個專案本身就是一個完整的工具,我只是想要直接使用它並作一些數據測試
: 我以為install就是意指安裝...
Install 是安裝沒錯
但是因為 Python 本身就有太多種用法
所以「安裝一個套件」可以代表很多種意思, 每種用法有自己的最佳解
回到你的問題, 看起來這主要有兩種解法, 都是用 Pip
1. pip install
看你的描述, 這個工具並沒有被放上 PyPI
但是 Pip 支援直接從 Git 安裝, 所以你可以
pip install git+https://github.com/author/repo.git#egg=套件名
注意最後面的 #egg=... 部分
這會被 Pip 用來為這個套件取名
通常你可以看 setup.py 裡面的 name 參數, 用一樣的就好
這樣的缺點是沒辦法使用 Pip 的更新功能
因為它自己不知道套件有沒有更新, 也不懂要怎麼用 Git 更新
當你發現有新版本時, 只能重新安裝一次
pip install --ignore-installed git+...後面一樣
2. pip install --editable
Pip 同時也支援 out-of-site 安裝
這個模式可以讓你把任意本地路徑的套件裝到 Python 裡
git clone https://github.com/author/repo.git 專案目錄
pip install --editable 專案目錄
這會讓 Python 能夠直接使用你 clone 下來的那個目錄, 而不另外裝一份
(類似捷徑的概念, 不是拷貝一份, 而是連結到這裡)
所以當你要更新時, 直接在專案目錄裡 git pull, 就能在 Python 用到新版本
缺點是你自己要記得這件事情, 不要不小心把 clone 下來的東西刪了
===========
順帶講一下, 這年頭如果你不需要開發 Python 套件, 只需要「使用」套件
那麼應該不會直接用到 setup.py (其實開發的時候也不太需要, 這是別話)
Pip 應該可以滿足你所有的安裝需求
如果套件沒辦法正確用 Pip 安裝, 就應該回報作者
如果作者不修復, 這個套件的狀態大概也很危險
要嘛是根本沒人用, 要嘛是作者根本放生 (通常好像也是同一件事)
那你用下去了大概也是遲早要出事, 早點跳船才是上策
--
"問おう、貴方が私のマスターか?"
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.94.62
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1517821461.A.891.html
... <看更多>