# インターフェースまとめ ###### tags: `実装` ## SRUのOperator同士のコミュニケーション [SRUオペレーター同士の通信プロトコルのインターフェース](https://hackmd.io/6usS2AtdRuu-Si1rTxXqOQ) ## SRUのOperatorとTransactorのコミュニケーション ### txを受け取る https://hackmd.io/eYGLs-vMTjSuiAl9ueTzjw#POST-sru_sendTransaction ### callの結果を返す https://hackmd.io/eYGLs-vMTjSuiAl9ueTzjw#POST-sru_call ## Transactorの処理 ### zkpで自分の資産の証明をする https://hackmd.io/z6OI1vBuTNCtbClE8qD59A#User-State-Update ### 署名が正しいことを署名者の情報なしにやる https://hackmd.io/z6OI1vBuTNCtbClE8qD59A#Transaction ## L1とSRUのOperator同士のコミュニケーション ### Depositする時 ```solidity= interface SRU { funciton deposit(IERC20 erc20, bytes to, amount) external; } ``` ### Exitする時 ```solidity= interface SRU { funciton exitForFreeze(bytes memory proof, bytes memory l2Erc20Address, address to, uint256 amount) external; } ``` ### コミット ```solidity= interface SRU { funciton commitBatch(bytes memory proof) external; funciton commitBatchWithExit(bytes memory proof, bytes memory l2Erc20Address, address to, uint256 amount) external; } ``` ## SRUのOperatorと分散ストレージの通信 ### 各種データの保存 [分散ストレージ](https://hackmd.io/RUzKWv6yQoK6MumW1oFWMQ) ## SRUのOperatorとLightning Networkでのコミュニケーション ### 手数料支払いを確認するとき ref: [lightning.proto](https://github.com/lightningnetwork/lnd/blob/71b23a2c542d04cc9325014a81174f9238ffb61c/lnrpc/lightning.proto#L3359-L3399) ```proto= message ListInvoiceRequest { /* If set, only invoices that are not settled and not canceled will be returned in the response. */ bool pending_only = 1; /* The index of an invoice that will be used as either the start or end of a query to determine which invoices should be returned in the response. */ uint64 index_offset = 4; // The max number of invoices to return in the response to this query. uint64 num_max_invoices = 5; /* If set, the invoices returned will result from seeking backwards from the specified index offset. This can be used to paginate backwards. */ bool reversed = 6; } message ListInvoiceResponse { /* A list of invoices from the time slice of the time series specified in the request. */ repeated Invoice invoices = 1; /* The index of the last item in the set of returned invoices. This can be used to seek further, pagination style. */ uint64 last_index_offset = 2; /* The index of the last item in the set of returned invoices. This can be used to seek backwards, pagination style. */ uint64 first_index_offset = 3; } serivce Lightning { rpc ListInvoices (ListInvoiceRequest) returns (ListInvoiceResponse); } ``` ## SRUのOperatorとProverのコミュニケーション ### ProverがOperatorを監視してProveする ```proto= message GetGeneratedBlockRequest { } message EVMState { repeated bytes states = 1; } message VerkleProof { bytes states = 1; } message GetGeneratedBlockResponse { repeated Txs txs = 1; // evmの実行に必要なstate。txの数と必ず同じ repeated EVMState evm_states = 2; // アカウントのrootが内包されることを証明するためのVerkle Proof。txの数と必ず同じ repated VerkleProofs verkle_proofs = 3; bytes merkle_root = 3; } serivce Prover { rpc getGeneratedBlock (GetGeneratedBlockRequest) returns (GetGeneratedBlockResponse); } ```