# Starkware
### Starkware 的 zk 技術有甚麼特點? [參考資料](https://medium.com/qed-it/the-incredible-machine-4d1270d7363a)
zk-SNARK 是 zkSync(zero-knowledge succinct non-interactive argument of knowledge)所使用的 zero-knowledge 技術,常常會跟 Starkware 的 zk-STARK(zero-knowledge scalable transparent argument of knowledge)做比較。
zk-STARK 是 Starkware 所開發以及採用的 zk 技術,與 zk-SNARK相比,zk-STARK 因為密碼學設計,不用初始化可信任的驗證裝置,所以不存在需信任參與人的問題。而當 zk-SNARK 開始運作時,必須初始化驗證裝置的參數,這個參數由幾個人去設定,設定的人之間彼此獨立。像 Zcash(採用 zk-SNARK)在開始運作時,也發起了一個[活動](https://z.cash/technology/paramgen/),就是一群參與人共同設置了驗證裝置的參數,如果要作惡,這幾個參與人就必須同時作惡,才會導致安全性出現問題。
※ 驗證裝置就像考題,如果考題洩漏就有辦法作弊通過考試,zk-SNARK 的考題需要人為設定,而 zk-STARK 則可以自動產生並且無人知道考題內容。
zk-STARK 相較於 zk-SNARK 還有驗證速度更快,以及抗量子運算的優點,但其缺點也很明顯,其驗證的資訊量的大小明顯比 zk-SNARK 大,需要更多儲存空間。
### StarkEx
特定需求的應用可以在 StarkEx 上建立,StarkEx 是許可制的 Layer2 並支援智能合約,採用鏈下計算鏈上證明的方式,大大減少 gas 的成本。
StarkEx 在以太坊上有 4 個部屬,分別是 DeversiFi、Immutable、dYdX 和 Sorare。
### StarkEx 的元件與流程 [參考資料](https://docs.starkware.co/starkex-v4/overview)
StarkEx 有分為鏈上元件和鏈下元件,分別為:
* 鏈下元件
* 維持訂單狀態
* 在系統執行交易
* 傳送狀態更新給鏈上元件
* 鏈上元件
* 確認狀態轉換的有效性
* 維持狀態提交和系統資產
* 管理鏈上帳戶

[圖片來源](https://docs.starkware.co/starkex-v4/overview)
1. 系統中的所有交易都由應用程序執行並發送到 StarkEx 服務。
2. StarkEx 服務對交易進行批量處理並將該批量交易發送到共享證明服務(SHARP),以生成證明該批量交易有效性的證明。
3. SHARP 將 STARK 證明發送給鏈上 STARK 驗證者進行驗證。
4. StarkEx 服務向 StarkEx 合約發送鏈上狀態更新交易,只有在驗證者發現證明有效時才會被接受。
### StarkEx 的資料可用性模式 [參考資料](https://docs.starkware.co/starkex-v4/starkex-deep-dive/data-availability-modes)
1. ZK-Rollup
會將用戶的餘額儲存在鏈上,所以是無需信任的(不必信任任何第三方),但會造成 gas 費用增加。
3. Validium
會將用戶餘額儲存在可信任的委員(節點)上,儲存完成後委員會附上簽章,如此交易在鏈上驗證時,只需要驗證交易以及簽章,不需要在鏈上儲存狀態,因為交易狀態儲存在鏈下(委員),如此可節省 gas 的費用。
### StarkNet
StarkNet 是一個無須許可的 layer2 網路,一樣支援採用 Cairo 的智能合約,在 StarkNet 上的應用,可以互相的組合與疊加就像 Ethereum 一樣。
### 官方在 StarkEx 與 StarkNet 差別不同時期有不同想法
#### StarkEx 會成為 StarkNet 的應用之一(2021 年 1 月 26 日) [參考資料](https://medium.com/starkware/on-the-road-to-starknet-a-permissionless-stark-powered-l2-zk-rollup-83be53640880)
StarkEx 可以想像成 Starkware 為了證明其 STARK 和 ZK-Rollup 應用擴展的能力,為某幾個特別應用所做的客製化項目,所以是許可制的,而 StarkNet 則是 STARK 和 ZK-Rollup 的通用型項目,任何應用都可以在上面構建,不需要任何許可,並且可以相互組合與疊加,並且未來 StarkEx 也會成為 StarkNet 的其中一個應用。
#### StarkEx 及 StarkNet 依據應用的需求選擇(2022 年 6 月 2 日) [參考資料](https://medium.com/starkware/starks-starkex-and-starknet-9a426680745a#:~:text=Unlike%20StarkEx%2C%20where%20applications%20are,to%20be%20processed%20and%20proved.)
StarkEx 可能是適合大部分不必與其他應用組合並適合 StarkEx 提供的 API 的應用程序的正確解決方案。StarkNet 可能更適合需要與其他應用同步交互或超出 StarkEx 提供的需求之應用。
StarkEx 是由應用提交交易,而 StarkNet 則是由 StarkNet 排序器(sequencers)批量處理交易並將其發送以進行處理和證明,也就是說 StarkNet 在應用(Cairo 智能合約)部屬好後,就不需要額外維護,不像 StarkEx 的應用還需要提交交易。
### Starkware 的挑戰
Starkware 智能合約語言採用 Cairo 並不是 Solidity,但未來會推出將其他語言轉譯成 Cairo 的功能,所以這個問題會相對減輕,另外 Starkware 不是一個開源的項目,項目的透明性大幅下降,對開發者與社群而言相對不友善。
### 參考資料
https://docs.starkware.co/starkex-v4/
https://medium.com/starkware/on-the-road-to-starknet-a-permissionless-stark-powered-l2-zk-rollup-83be53640880
https://z.cash/technology/paramgen/
https://starkware.co/starknet/
https://medium.com/qed-it/the-incredible-machine-4d1270d7363a
https://medium.com/starkware/starks-starkex-and-starknet-9a426680745a#:~:text=Unlike%20StarkEx%2C%20where%20applications%20are,to%20be%20processed%20and%20proved.
**作者:hugebing
協作人:y.w.
審稿人:狸貓(bill)**
### 以上文章內容不構成投資建議
###### tags: `Blockchain Articles`