StarkEx|システムコンポーネントやStarkKeyの仕組み
StarkEx上に構築されたすべてのアプリケーションは、独自のビジネスロジックを定義し、StarkExサービスで実行されます。システムには、オフチェーンコンポーネントとオンチェーンコンポーネントがあります。
オフチェーンコンポーネントは、注文のステートを保持し、システムでトランザクションの実行を実行し、ステートの更新をオンチェーンコンポーネントに送信します。
オンチェーンコンポーネントは、ステートのコミットメントとシステム資産を保持します。the validity of state transitionを強制する責任があります。
スポット取引用のStarkExの場合、オンチェーンアカウントも管理します。
これは、レイヤー1(L1)のdApp相互運用性とDeFiプーリングのコンテキストで役立ちます。
システム内のすべてのトランザクションはアプリケーションによって実行され、StarkExサービスに送信されます。
StarkExサービスはトランザクションをバッチ処理し、共有証明サービスであるSHARPにバッチを送信して、バッチの有効性を証明する証明を生成します。
SHARPは、検証のためにSTARKプルーフをSTARKVerifierに送信します。
次に、サービスはオンチェーンステートアップデートトランザクションをStarkExコントラクトに送信します。これは、検証者が証明が有効であると判断した場合にのみ受け入れられます。
ユーザーは、オンチェーントランザクションをStarkExコントラクトに送信する方法と、オフチェーントランザクションをアプリケーションに送信する方法の2つの方法でシステムと相互作用します。
オフチェーンアカウントの場合、ユーザーは最初にStarkKeyをStarkExコントラクトのEthereumアドレスに登録します。
starkKeyは、ユーザーのオフチェーントランザクションを認証するために使用されます。
次に、ユーザーは自分の資金をStarkExコントラクトに預け入れます。アプリケーションがデポジットを受け入れた後、ユーザーは自分の資金をオフチェーンで使用できます。
ユーザーは、starkKeyによって署名された転送または指値注文をアプリケーションに直接送信します。
指値注文は一緒に照合され、決済としてStarkExサービスに送信されます。転送はそのまま送信されます。さまざまなタイプの転送に追加のロジックを適用できます。
資金を引き出すために、ユーザーはアプリケーションにオフチェーンの引き出し要求を送信します。このリクエストはStarkExサービスに送信され、引き出しを含むステートの更新が受け入れられると、ユーザーはチェーン上の資金にアクセスできます。
検閲を防ぐために、ユーザーの撤回要求が満たされない場合、ユーザーは強制トランザクションで強制的に実行することができます。
システムコンポーネント
StarkExシステムは、次のコンポーネントで構成されています。
・アプリケーション–システムオペレーター
このオフチェーンコンポーネントは、ユーザートランザクションを受信し、ビジネスロジックと実行順序を定義します。 StarkExサービスにトランザクションを渡します。
・StarkExサービス–バッチ処理と調整
一連の操作をバッチ処理し、操作に従ってシステムのステートを更新するオフチェーンコンポーネント。バッチごとに、その有効性を証明するために、操作のバッチを(Cairo実行トレースとして)SHARPに送信します。
証明が検証されると、新しいステートがチェーン上に公開されます。
ステートは、「leaves」がボールトであるマークルツリーによって表されます。
各ボールトの構造と内容は、実装されている特定のビジネスロジックによって異なります。詳細については、こちらをご覧ください。
マークルツリールートは、チェーン上で提出されるステートのコミットメントを表します。
・SHARP – proving
カイロプログラムの共有証明サービス。
さまざまなアプリケーションから証明要求を受け取り、カイロの実行の有効性を証明する証明を出力します。出力プルーフは、複数のプルーフリクエスト間で共有できます。
・STARK Verifier – verification
ステート更新の有効性の証明を受け取り、証明が有効であることを確認するオンチェーンコンポーネント。
・StarkExContract - ステートの更新、入金、および引き出し
このContractには2つの主要な機能があります。 1つ目は、有効条件が満たされていることを確認した後、システムのステートを更新することです。
2番目の機能は、StarkExとの間の入出金を非管理的な方法で管理することです。つまり、どのシナリオでも、ユーザーは資金を引き出すことができます。
StarkExについて
StarkExは、STARKテクノロジーを活用して、DeFiやゲームなどのアプリケーションのスケーラブルなself-custodialトランザクション(取引と支払い)を強化します。
2020年5月に開発会社であるStarkWareは、Immutable Xとの提携によってStarkExスケーラビリティエンジンをNFT市場に導入し、最近ではL2で直接NFTをミントする機能の開発などを手掛けました。
そして、2021年11月時点でStarkExは、約1か月で1,000億ドル・累積取引で2,000億ドルを決済しています。Uri Kolodny Co-Founder & CEO StarkWare
StarkExを使用すると、アプリケーションを大幅にスケーリングしてトランザクション速度を向上させると同時に、トランザクションコストを削減できます。実装には、既存の設定への最小限の変更が必要です。
StarkExは現在、ETH、ERC-20、ERC-721トークン、およびsyntheticアセットをサポートしています。また、他のEVM互換ブロックチェーン上のトークンを簡単にサポートできます。
StarkExは、2020年6月からEthereum Mainnetに展開されている成熟したプラットフォームです。Mainnetの展開前は、5,000万を超えるStarkExトランザクションがパブリックとプライベートの両方のEthereumテストネットで決済されていました。
現在、次のような多くのアプリケーションがStarkExを使用しています。
また、StarkExは、validity proofsに基づくイーサリアムレイヤー2(L2)スケーラビリティソリューションであり、ZK-Rollup または Validiumのdata-availability modesのいずれかで動作できます。
ZK-Rollup
ZK-Rollupモードでは、L2バランスのMerkle Treeを回復するために使用されるすべての関連データが、calldataとしてチェーン上で公開されます。これはカイロプログラムによって実施されます。
ZK-RollupモードでのCairoプログラムの出力には、実証済みの新しい状態に加えて、以前のステートとのユーザーの残高の違いの完全なリストが含まれます。
コールデータの使用量(したがってガス)を削減するために、StarkEXは、行われたすべてのオンチェーントランザクションを公開するのではなく、バランスの変更のみを公開します。
たとえば、アリスがボブ500 USDCを転送し、チャーリー200 USDCから取得した場合、以前のステートと比較してマイナス300USDCのアリスの新しいボールトのみを公開します。
この最適化は、大手マーケットメーカーが複数のボールトのみを使用してトランザクションの大部分を行う実際のシナリオで非常に効率的です。
ZK-Rollupモードの利点は、trustlessなことです。エスケープイベントでユーザーの資金を回収するために必要なすべてのデータは、ブロックチェーン上にあります-追加の信頼のassumptionsはありません。
注:trustlessnessには追加のコストがあります。ZK-Rollupでは、バッチで変更されたボールトあたりのコスト(calldataのガスコスト)があります。
実際には、これは、数千以上のボールトを変更したバッチの場合、ステート更新イベントで費やされるガスの大部分が、証明自体の検証ではなく、ZK-Rollup data availabilityソリューションに費やされることを意味します。
Validium
Validiumモードでは、ユーザーの残高はチェーン上で公開されませんが、committeeメンバーとしても知られる、いくつかの有名で信頼できる当事者に送信されます。
ステートの更新は有効であり、少なくともcommitteeメンバーの定足数がステートの更新に署名した場合にのみ、チェーン上で受け入れられます。
具体的には、availability verifiersによって強制されるように、新しいステートを決定するように、すべての新しいボールトの残高を知っていることを示します。
Validiumの利点の1つは、そのコストです。このモードでは、オンチェーンデータの支払いは必要ありません。ステートの更新は、証拠を検証するためのガスのみを要します。
もう1つの利点はプライバシーです。ユーザーの残高情報は信頼できる当事者のcommitteeに非公開で保存され、ブロックチェーンには公開されません。
Deployments deployments
StarkExは、イーサリアムメインネットにDeversiFi、Immutable、dYdX、Sorareの4つの展開を持っています。
このセクションには、各展開のコントラクトアドレスが含まれています。
DeversiFi
StarkEx version: Spot trading V3.0
Prover: SHARP
Proxy contract address: 0x5d22045DAcEAB03B158031eCB7D9d06Fad24609b
Operator address: 0x8A6c80Aab6497E2DB35817817b593b79D78f6ae5
Committee contract address: 0x28780349a33eee56bb92241baab8095449e24306
Verifier: SHARP verifier address
Immutable Contracts
StarkEx version: Spot trading V2.5
Prover: SHARP
Proxy contract address: 0x5FDCCA53617f4d2b9134B29090C87D01058e27e9
Operator address: 0x9B7f7d0d23d4CAce5A3157752D0D4e4bf25E927e
Committee contract address: 0x16ba0f221664a5189cf2c1a7af0d3abfc70aa295
Verifier address: SHARP verifier address
dYdX Contracts
StarkEx version: Perpetual trading V1.0
Prover: dYdX's seperate prover
Proxy contract: 0xD54f502e184B6B739d7D27a6410a67dc462D69c8
Operator address: 0x8129b737912e17212c8693b781928f5d0303390a
Verifier Contracts:
Gps Statement Verifier contract: 0xc8c212f11f6acca77a7afeb7282deba5530eb46c
Memory Page Fact Registry contract: 0xefbcce4659db72ec6897f46783303708cf9acef8
Merkle Statement contract: 0x0d62bac5c346c78dc1b27107cabc5f4de057a830
Fri Statement contract: 0xf6b83ccadeee478fc372af6ca7069b14fbc5e1b1
Sorare Contracts
StarkEx version: Spot trading V3.0
Prover: SHARP
Proxy contract: 0xF5C9F957705bea56a7e806943f98F7777B995826
Operator address: 0x63881ac44293e22f3c3183a0c4113586abb3e653
Committee contract address: 0x90CEb3bD97284df8c3240f3a8C4Aab29c1ee9542
Verifier address: SHARP verifier address
SHARP Verifier Contracts
More information about SHARP is available here.
Gps Statement Verifier contract: 0x2cAbD63F6f28b493f33D13E34060f0959F3570aE
Memory Page Fact Registry contract: 0xA9b7e2DCA4B7bD8161204C6c8A4e2DB3750dFd2e
Merkle Statement contract: 0x01378dadF607ac74A072c956D8240D1DF75bCCA0
Fri Statement contract: 0x689F886B4E61b5907166B2506DB5e89609443045