StarkWare
簡介
StarkEx和StarkNet均為StarkWare團隊開發的項目,前者類似Iaas,類比應用鏈,StarkWare幫助大型項目開發專有應用Rollup;后者則是可部署通用應用的Rollup。
截止目前,StarkWare已經完成6輪融資,共計2.73億美元。尤其是最近一輪融資金額達到1億美元,使其估值翻了兩番,達到80億。作為?L2項目中估值最高的項目,本文特探討?Starkware?的技術架構和生態應用。
StarkEx:專有ZKR引擎
簡介
在去年和今年上半年,StarkWare通過提供擴容技術解決方案StarkEx創立了擴容即服務的商業模式,建立應用專有網絡,服務業內頭部客戶dYdX、Sorare、ImmutableX、DeversiFi等。
整體架構
工作流包括以下四個環節
打包交易:鏈下服務器處理客戶請求,將多個交易組合成一個“批次”,供StarkEx處理。
確認交易和更新狀態:鏈下服務器確認交易合法,并以被壓縮后的哈希形式更新系統狀態。
為交易生成證明:完成上述流程后,SHARP會為交易生成STARK證明以確認交易的有效性。然后將證明和更新發送到鏈上Verifier智能合約,以確保交易的完整性。
鏈上驗證證明:一旦?STARK?證明被驗證,狀態更新被提交并結算回以太坊主網。所有交易都是在鏈外處理和驗證的,而其完整性的證明是在鏈上驗證的。
SHARP是一個共享證明者,它同時為多個StarkEx客戶/應用提供證明生成服務——生成計算完整性聲明的證明。
Verifier是部署在以太坊上的智能合約,用于驗證來自StarkEx的交易的正確性。
StarkWareApplications
StarkEx應用程序是一系列支持可擴展和自我托管交易的應用程序,區分現貨交易和杠桿交易。應用包括兩個組件,智能合約和后端。
?標準流程
用戶發起交易,交易可以直接與智能合約交互
每個交易都有一個唯一的id,共同組成一個交易流,StarkEx應用將交易流傳輸到后端
后端將狀態轉換提交給SHARP,SHARP為狀態轉換生成證明
SHARP向驗證者合約提交證明并在驗證者完成驗證后,驗證者將之記錄在VerifierFactRegistry,然后后端將在StarkEx智能合約上執行狀態轉換。
StarkEx智能合約檢查狀態轉換是否符合預定義規則來確保狀態轉換的有效性。
參考鏈接:Introduction::StarkExDocumentation
高級概述
如下圖所示,StarkEx系統旨在接受來自合作伙伴后端的用戶交易。這些交易隨后由StarkEx系統進行批處理和處理。結合前面智能合約和后端的介紹,整個StarkEx處理交易的過程和職責分工概述如下。
NFT市場Mintable提醒用戶當心Instagram上的假冒賬戶:NFT市場Mintable在推特上表示,我們注意到Instagram上的一個賬戶(mintable.app)正在聯系我們的一些用戶。請注意,他們與我們沒有任何關系,任何形式的聯系均不代表Mintable官方。[2021/8/15 22:15:16]
前端,StarkEx客戶支持兩類操作,鏈上和鏈下。前者是標準的以太坊交易,用戶直接通過StaarkEx合約進行存款取款,后者是通過StarkEx引擎執行的操作,如dydx等。
訂單驗證,由StarkEx客戶的后端設置并進行驗證。
業務邏輯,客制化StarkEx合約來支持客戶業務邏輯
交易流,傳輸到StarkEx的所有交易都使用稱為tx_ids的連續標識符進行驗證和索引,類似nonce的做法,
交易發送方,一旦StarkEx網關確認交易正確就會保證執行它,并且將在前端提前顯示給用戶,而不是等待鏈上最終確定。
錯誤處理,如果檢測到無效交易,StarkEx系統將會向客戶的專業端點報告錯誤,客戶將會以另外的要執行的交易列表來代替無效交易,如空列表等。
批處理審核,任何批次在鏈上傳輸之前可以被客戶審核,如果和預期狀態轉換和不一致,客戶可以不批準或者回滾。
抗審查,如果客戶審查用戶請求,StarkEx允許用戶直接通過?StarkEx合約執行操作,客戶必須在規定時間內向用戶提供它,否則StarkEx合約將會凍結。
參考文檔:StarkExPartnerIntegration::StarkExDocumentation
StarkNet:通用ZKR
簡介
不同于為不同的應用定制ZKRollup的StarkEx,StarkNet是一個通用的ZKRollup,開發者可在StarkNet上部署應用。
基本介紹
在以太坊上,每提交一筆交易都需要所有節點檢查、驗證并執行交易來保證計算正確性,并將計算后的狀態變化在網絡中廣播。
https://ethereum.org/zh/developers/docs/evm/?
StarkNet僅在鏈下執行計算并生成一個ZK證明,然后在鏈上驗證該證明的正確性,最后把多個L2交易打包為以太坊上的一筆交易。因此,StarkNet上發生的交易成本可以被同一打包批次的其他交易所均攤,就像拼車一樣,交易越多,成本越低。
除此之外,相比以太坊讓每個節點完整執行交易的方法,StarkNet為交易生成ZK證明的方法可以大大提高網絡運行速度、減少鏈上通信量、增加網絡吞吐,因此StarkNet相比以太坊具有更高TPS和更低Gas。
簡而言之,將驗證計算正確性比喻為老師需要檢查同學們是不是掌握了知識。以太坊的方法是檢查每個同學是否能背誦整本教科書,而StarkNet的方法是讓同學們做卷子。后者的效率更高,成本更低,但仍然保證安全。
LBank藍貝殼于6月24日21:00上線STA,開放BTC和USDT交易:據官方公告,6月24日21:00,LBank藍貝殼上線STA(STOA),開放BTC和USDT交易,6月23日21:00開放充值,6月25日21:00開放提現。資料顯示,DeFi STOA是一個建立多元化收入分享平臺的項目,通過利用全球金融平臺之間的套利算法來提高代幣資產的增長和代幣價值。[2021/6/22 23:56:29]
EVM兼容
StarkNet網絡本身不兼容EVM,而設計了另外一套ZK友好的CairoVM。
StarkNet沒有和Hermez和Scroll一樣針對以太坊操作碼做ZK電路,而是自己做了一套更加ZK友好的匯編語言、AIR以及高級語言Cairo。
StarkNet屬于Vitalik定義的type4級別——語言兼容的zkEVM。
https://vitalik.eth.limo/general/2022/08/04/zkevm.html
盡管StarkNet本身不兼容EVM,但StarkNet仍然可以通過其他方式兼容以太坊。
1、Warp:將Solidity轉譯為Cairo語言的轉譯器
Warp是一個Solidity-Cairo轉譯器,目前已經由以太坊著名基礎設施團隊Nethermind開發完成。Warp可以把Solidity代碼轉譯為Cairo,但轉譯后的Cairo程序往往需要修改并增添Cairo特性才能最大化執行效率。
2、Kakarot:一個用Cairo語言編寫的zkEVM
Kakarot是一個用Cairo寫的智能合約,目前部署在Starknet上,字節碼等效EVM。目前處于測試階段。以太坊應用可以通過部署到Kakarot的方式移植到StarkNet。
Kakarot可以:(a)執行任意EVM字節碼,(b)按原樣部署EVM智能合約,(c)調用Kakarot部署的EVM智能合約的功能
Kakarot是一個EVM字節碼解釋器。
目前已經支持EVM全部操作碼。
https://github.com/sayajin-labs/kakarot
工作原理
組成部分
StarkNet有五個組成部分。分別是在StarkNet上的Prover,Sequencer和全節點;以及部署在以太坊上的驗證者和核心狀態合約。
https://david-barreto.com/starknets-architecture-review/#more-4602?
當我們在StarkNet上發起一個交易,一個鏈下服務器——排序器將會接收、排序、驗證,并將它們打包到區塊。執行交易,然后狀態轉換發送給StarkNetCore合約;
證明者將為交易生成證明,并發送給以太坊的驗證者合約;
Boom宣布將推出針對Stacking的NFT Boomboxes:3月11日消息,Stacks錢包Boom宣布即將推出針對Stacking的NFT Boomboxes,允許用戶鎖定STX并賺取獎勵。用戶通過委派STX獲得以一枚NFT,它們是可轉讓的(當Boom啟動市場時可以出售)。獎勵發放時其持有者將收到付款。具體推出時間和運行方式將在接下來的幾周公布。[2021/3/11 18:35:36]
驗證者將驗證結果發送到以太坊上的StarkNetCore合約,并從StarkNetCore合約觸發一組新的以太坊交易,以更新鏈上的全局狀態以進行記錄保存。狀態事務作為“calldata”來發送,以節省L1事務gas。這些“metadata”可被StarkNet全節點解密。
全節點基本發揮存儲功能。全節點存儲狀態改變、元數據、證明以及記錄在StarkNet中的已被執行的所有事務,并跟蹤系統的當前全局狀態。在有必要的時候,全節點將解密“metadata”來重構StarkNet的歷史。
參考StarkNet開發倡導者?@barretodavid寫的《StarkNet’sArchitectureReview》。
瀏覽器?https://testnet.starkscan.co/,L2?動態出塊,以太坊一小時結算
賬戶抽象與交易模型
不同于以太坊EOACA的雙賬戶設計,StarkNet實現了原生賬戶抽象,只有一種賬戶設計,借鑒了EIP4337的精神,
下圖為交易模型,
https://community.starknet.io/t/starknet-account-abstraction-model-part-1/781?
原生賬戶抽象為賬戶可編程打開大門,StarkNet的開發倡導者@barretodavid提到StarkNet上實現手機硬錢包的思路。
以太坊上的EOA僅支持Secp?256?k?1橢圓曲線上的簽名方案ECDSA
大部分的智能手機都不支持以太坊的橢圓曲線。
所以移動錢包需要依靠軟件簽署交易,移動錢包因此是熱錢包。
StarkNet原生賬戶抽象,支持多種橢圓曲線,簽名驗證高度可編程,因此基于StarkNet/Cairo的手機錢包完全可以變成硬錢包。
Cairo已經有一個?nistp?256?的實現
https://github.com/spartucus/nistp?256-cairo
簡單來講就是直接調用手機的加密模塊來對交易進行“硬簽名”。
STARK
目前有許多不同的證明系統,如Halo、PLONK、Groth?16、Groth?09、Marlin、Plonky?2等,它們都屬于SNARK證明系統。證明系統存在一個證明者生成證明,一個驗證者驗證證明。而不同的ZK項目幾乎都會使用不同的證明系統,StarkNet使用的STARK某種意義上屬于一種特別的SNARK。
Cosmos“星際之門Stargate”升級已完成約40%,預計在一兩個小時內完成:跨鏈項目Cosmos(ATOM)表示,截止北京時間2月18日17時40分,其“星際之門Stargate”升級已完成40%的進度,所需驗證人閾值為66.67%,預計在一兩個小時內完成本次升級。[2021/2/18 17:27:37]
STARK相比SNARK有更多創新。它不需要和SNARK一樣依賴“可信設置”。它還帶有更簡單的密碼學假設,避免了對橢圓曲線、配對和指數知識假設的需要,純粹依賴哈希和信息論,因此抗量子攻擊。總體來講STARK比SNARK更安全。
在擴展性方面,STARK的擴展性更強。證明生成速度具備線性擴展性,驗證時間和證明大小具備對數擴展性。但缺點在于生成的證明尺寸更大。但隨著證明規模增加,驗證成本將會邊際遞減——這意味證明越大,總成本越低。
https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/
總結一下,相比SNARK,STARK更安全,平均驗證時間和證明大小將隨著驗證規模擴大而降低,缺點在于初始證明尺寸更大,因此更適合大規模應用。
擴展性詳解
證明時間線性擴展:證明人花費的時間與哈希調用的數量呈近似線性關系。
在80比特的安全級,STARK每12288次哈希調用的證明者執行時間為1秒,得12288?次/S;而每98304次哈希調用需要10秒,得9830?次/S,因此,我們可以知道STARK的證明時間和哈希調用基本呈近似線性關系。如下圖所示
https://eprint.iacr.org/2021/582.pdf
**驗證和證明大小對數擴展:驗證時間與哈希調用呈現對數關系。**如下圖所示:
左圖可以看出,當哈希調用從3072增加到49152?,驗證時間從40毫秒增加到60毫秒。而當哈希調用從49152增加到786432?,驗證時間僅從60毫秒增加到80毫秒。證明大小同理。因此,我們可得知,哈希調用次數越多,平均驗證時間越短,平均證明大小也會更小。
遞歸證明
任何通用的、簡潔的知識系統的證明/論證都可以用來遞增地驗證計算。這意味著一個計算可以產生一個證明,以證明該計算的前一個實例的正確性,這個概念被非正式地稱為“遞歸證明組合"或者"遞歸?STARKs”。
換句話說,一個遞歸STARK證明者可為一個陳述生成一個證明,即系統的狀態可以從a移到a?1?。因為證明者已經驗證了一個證實a的計算完整性的(遞歸)證明,并且忠實地執行了狀態a的計算,達到了新的狀態a?1?。簡而言之,你可以理解該過程將a和a?1兩個證明合并為了一個證明**。如下圖所示:**
https://medium.com/starkware/recursive-starks-78?f?8?dd?401025?
動態 | RippleNet成員InstaReM已進軍加拿大市場:據bitcoinexchangeguide報道,RippleNet成員InstaReM已進軍加拿大,目前業務已在60多個地區開展。InstaReM的聯合創始人兼首席執行官Prajit Nanu表示,通過使用RippleNet,他們可以提供比SWIFT更高效的東西。[2019/9/19]
CairoVM:驗證計算正確性
CairoVM概述
有時候也通過StarkNetOS/CairoOS的方式出現,是一個東西,不同于EVM執行計算,CairoVM本身僅為計算生成證明并驗證正確性。
CairoVM是一個是一個采用馮諾依曼架構的CPUVM,其編程語言也叫Cairo,Cairo語言基于Cairo匯編,因此編譯效率非常高。Cairo是CPUAlgebraicIntermediateRepresentation的首字母縮寫。CairoVM包含單個AIR來驗證這個「CPU」的指令集。
關于工作方式,它根據收到的輸入的交易來更新系統的L2狀態。促進StarkNet合約的執行。操作系統是基于?Cairo?的,本質上是使用STARK證明系統對其輸出進行證明和驗證的程序。StarkNet合約可用的具體系統操作和功能可作為對操作系統的調用。
Cairo語言概述
Cairo是StarkNet的智能合約語言,基于STARK設計,Cairo程序可生成STARK證明。
Cairo程序是匯編代碼的集合,Cairo開發人員將以高級語言Cairo來編寫智能合約而非Cairo匯編。當我們寫了一個Cairo程序,Cairo編譯器會將Cairo代碼編譯成Cairo匯編,Cairo匯編器將采用匯編代碼生成Cairo字節碼以在CairoVM執行,當他最終運行到真實機器上還需要編譯為操作碼和機器代碼。
非確定性計算
Cairo程序的目標是驗證某些計算是正確的,因此可以相比那些確定性計算走捷徑。它意味著為了證明一個計算,驗證者可以做一些不屬于計算的額外工作。
例如,證明?x=?961?的平方根?y?是在?0,?1,…,?100?的范圍內。直接的方法是寫一個復雜的代碼,從961開始,計算它的根,并驗證這個根是否在所要求的范圍內。
偽代碼如下:猜測?y?的值。計算?y?2?并確保其結果等于?x。驗證?y?是否在范圍內。并且,如果我們采取以下的計算方式。Y=SQRT(X)我們可以改為計算如下。Y*Y=X
我們可以看到,有兩種可能的解決方案。Y?和-Y,而且有可能只有其中一個能滿足其余的指令。
這意味著,如果沒有一些額外的信息,一些開羅程序是無法有效執行的。這種信息由我們稱之為提示的東西提供。提示是CairoRunner的特殊指令;用于解決不能輕易推導出數值的非確定性問題。理論上,提示可以用任何編程語言編寫。在當前的?Cairo?實現中,提示是用Python寫的。
關于確定性和非確定虛擬機,witness
Cairo在這里其實也會涉及到有確定性的CairoVM和非確定性的CairoVM。前者就是正經的zkVM,證明和驗證;后者用于非確定性計算。
anacceptinginputtotheCairodeterministicmachine,thatconstitutesthewitnesstothenondeterministicmachine.
Cairo確定性VM的一個可接受的輸入構成了非確定性VM的witness,ZKP需要將witness作為輸入輸出proof。
是一個并行狀態機。
內存模型:只讀非確定性
只讀的非確定性內存,這意味著每個內存單元的值由證明者選擇,它不能隨時間改變,是不可變的。該指令只能從中讀取。我們可以將之視為一次寫入的存儲器:可以向一個單元寫一次值,但事后不能改變它。
而且它是連續的,如果有空會被任意值填充。
ROM優點包括
低成本,電路比RAM更簡單
永存儲,
不可篡改,數據不能修改和刪除
內置函數:減少代碼編譯
開發者直接調用內置函數可以減少計算開銷,優化開發體驗,而不需要代碼轉換。添加內置函數不會影響CPU約束。這只是意味著相同的內存在CPU和內置函數之間共享,如圖所示。
https://medium.com/@pban/demystifying-cairo-white-paper-part-i-b?71976?ad?0108?
Cairo體系結構沒有指定一組特定的內置函數。可以根據需要在AIR中添加或刪除內置函數。
CPU架構:靈活
更加靈活,可以通過軟件編程的方式無限接近AISC的性能。以Cairo復刻其他虛擬機。
啟動加載:從哈希加載程序
程序可以將另一個程序字節碼寫入內存,并讓ProgramCounter指向該內存段,然后運行該程序。一個從哈希啟動加載的用例是,一個被稱為啟動加載器的程序計算并輸出另一個程序的字節碼,然后像之前一樣開始執行它。這樣驗證者只需要知道程序的哈希而非完整字節碼。這有兩個好處:
可擴展性,驗證時間和程序大小呈現對數關系,正如STARK部分提到的。
隱私性,驗證者可以驗證程序是否正確執行而無需知道計算。
連續記憶:連續訪問內存地址
Cairo有一個技術要求,程序訪問的內存地址必須是連續的。例如,如果訪問地址7和9?,那么在程序結束之前也必須訪問8?。如果地址范圍中存在小間隙,證明者將自動用任意值填充這些地址。通常,存在這樣的間隙是低效的,因為這意味著內存在未被使用的情況下被消耗。引入太多的漏洞可能會使證明的生成對于誠實的證明者來說過于昂貴而無法執行。然而,這仍然沒有違反可靠性保證——無論如何都不會產生錯誤的證明。
StarkNet生態
盤點StarkNet生態:
https://h?0?m?83?hhc?6?r.feishu.cn/docx/doxcnS?3?GGdXXc?1?PzKh?9?uTgTR?73?c
全鏈游戲
全鏈游戲——生產效率消費體驗的變革,基本上,有思考,有實踐,有資金,最重要的是有一個富有活力的開發者社區。
MatchboxDAO:https://mirror.xyz/matchboxdao.eth
TheFutureofOn-ChainGaming:
https://volt.capital/blog/the-future-of-on-chain-gaming
Game2.0?:
https://www.guiltygyoza.xyz/2022/07/game?2?
重點推薦Topology團隊,Lootreamls。
合約錢包
合約錢包變成硬錢包的實現方法有兩種。
共識層支持手機硬件。在StarkNet這樣原生賬戶抽象的L2上,支持多種橢圓曲線,而不是和以太坊一樣只支持ECDSA,因此可以讓手機的加密芯片/模塊直接對交易簽名。因此,在原生賬戶抽象的L2上,合約錢包可以和硬錢包一樣直接通過硬件簽署交易。
錢包層進行簽名轉錄。在以太坊這樣非原生賬戶抽象的網絡上,合約錢包可以簽名轉錄。像EIP-4337可以自定義驗證邏輯,用戶用手機硬件支持的算法簽名后再轉換為以太坊支持的ECDSA。
StarkNet的開發倡導者@barretodavid,提到的在StarkNet上實現手機硬錢包的思路。
以太坊上的EOA僅支持Secp?256?k?1橢圓曲線上的簽名方案ECDSA
大部分的智能手機都不支持以太坊的橢圓曲線。
所以移動錢包需要依靠軟件簽署交易,移動錢包因此是熱錢包。
StarkNet原生賬戶抽象,支持多種橢圓曲線,簽名驗證高度可編程,因此基于StarkNet/Cairo的手機錢包完全可以變成硬錢包。
https://twitter.com/barretodavid/status/1563584823884935168?
Cairo已經有一個(
)的實現。
合約錢包全鏈游戲的耦合,開辟了錢包DeFi之外的新場景。Argent、Cartridge.gg正在做。
鏈上?AI
目前有2個機器學習項目,ML平臺Giza和鏈上交易機器人StarkNet中文群還有另外一個。
ModulusLabs:https://www.moduluslabs.xyz/
Giza-MachineLearningintheBlockchain:
https://gizatech.xyz/
StarkNetdecentralization:Kickingoffthediscussion
mirror.xyz:https://community.starknet.io/t/starknet-decentralization-kicking-off-the-discussion/711?
總結下StarkNet與AIML為何如此登對?ZKP允許AIML鏈下計算,將生成證明交由他人驗證。
應用范圍包括:游戲、預言機、交易、反女巫、KYC、數據隱私;AI模型算力挖礦。
致謝
本文由?HackerDojo?資助和創作。HackerDōjo?是由?Hacker?共建的加密、Web3前沿技術開源知識社區。
感謝創作者?Maxlion?及?HackerDojo。
原文鏈接:https://community.dorahacks.io/t/starkware/272?
原文作者:MattLevine,Bloomberg原文標題:SilvergateHadaCryptoBankRun原文編譯:Leo,BlockBeats近日.
1900/1/1 0:00:00尊敬的用戶:?????????BKEX即將上線oDOGE?,詳情如下:上線交易對:oDOGE/USDT??幣種類型:ERC20充值功能開放時間:已開放交易功能開放時間:2023年3月7日19:0.
1900/1/1 0:00:00Gate.ioHodl&Earnplatformiscommittedtohelpingusersgainmoreprofits.Asofnow.
1900/1/1 0:00:00尊敬的XT.COM用戶:XT.COM將於2023年03月07日08:00上線BCHUSDT、XRPUSDT季度U本位交割合約,支持1-20倍槓桿.
1900/1/1 0:00:00在當前的加密行業中,中心化交易所是主流,許多投資者在接觸加密貨幣時,首先使用的就是如幣安、幣托等中心化交易所.
1900/1/1 0:00:00親愛的BitMart用戶:BitMart將于2023年03月10日首發上線代幣Eneftor(EFTR)。屆時將開通EFTR/USDC交易對.
1900/1/1 0:00:00