Closed tak1827 closed 6 months ago
Discordで議論の起点となった投稿 https://discord.com/channels/892295154025783346/1036448707605975101/1184497842769899670
以下、Discordでの議論を抜粋
イメージとしては、監視&警報システムです。 FraudなProve(withdrawなしの)を検知したら、verse submitterに警告してあげる形です。 すいません、今検討していて気付いたのですがverify済みの_l2OutputIndexを指定した不正prove txを送ればこのチェックを迂回できてしまいますね provenWithdrawal.timestampにはロールアップ時点のL1タイムスタンプではなくprove実行時点のタイムスタンプが入るので_isFinalizationPeriodElapsedでチェックしても必ずfalseになります(withdraw -> rollup -> prove の順なので) 1, L2でWithdraw実行 (timestamp = 400) 2. (最大で)10分待ってproposerがロールアップ (output.timestaimp = 1000) 3-1. Prove実行 (prove.timestaimp = 1010) 3-2. InstantVerify実行 (verified timestamp = 1000) 4. 10分待ってproposerがロールアップ (output.timestaimp = 1600) 5. InstantVerify実行 (verified timestamp = 1600) 5. Finalize実行 **proveかstateロールアップのどちらを起点にすべきか?** proveを起点にすべきと思ってます。optimismの流儀に従うという意味で。つまり、fraudなproofへの対応です。 stateの方を起点にしてしまうと、以前、議論したとおり、fraudなproveに対して脆弱です。 https://discord.com/channels/892295154025783346/1036448707605975101/1189415801690783815 proveを起点にすれば、以前議論したような、監視用のシステムなりを導入することで、対処する余地があります。 proveに対応するwithdrawが本当にL2に存在するかはmessage-relayerがチェックすれば良いのでは、みたいな案も出ていた気がします
Discordで議論の起点となった投稿 https://discord.com/channels/892295154025783346/1036448707605975101/1184497842769899670
以下、Discordでの議論を抜粋