diff --git a/tezt/lib_tezos/sc_rollup_node.ml b/tezt/lib_tezos/sc_rollup_node.ml index 76349fc10237ff5863711e848677c98fa7ba14ff..c216e0c12f57ae0d9aaf447548c3354493acd735 100644 --- a/tezt/lib_tezos/sc_rollup_node.ml +++ b/tezt/lib_tezos/sc_rollup_node.ml @@ -434,3 +434,9 @@ let change_node_and_restart ?event_level sc_rollup_node rollup_address node = let* () = terminate sc_rollup_node in sc_rollup_node.persistent_state.endpoint <- Node node ; run ?event_level sc_rollup_node rollup_address [] + +let change_node_mode sc_rollup_node mode = + { + sc_rollup_node with + persistent_state = {sc_rollup_node.persistent_state with mode}; + } diff --git a/tezt/lib_tezos/sc_rollup_node.mli b/tezt/lib_tezos/sc_rollup_node.mli index 28ebe9736561931dd3352d941e4450f11a014eac..9175305898aaf8b8c2c933fb82741d361877e253 100644 --- a/tezt/lib_tezos/sc_rollup_node.mli +++ b/tezt/lib_tezos/sc_rollup_node.mli @@ -270,3 +270,7 @@ val wait_for : ?where:string -> t -> string -> (JSON.t -> 'a option) -> 'a Lwt.t node. *) val change_node_and_restart : ?event_level:Daemon.Level.default_level -> t -> string -> Node.t -> unit Lwt.t + +(** Change the rollup mode. This does not terminate nor restart the + node. Change will take effect when the node is run/restart. *) +val change_node_mode : t -> mode -> t diff --git a/tezt/tests/expected/sc_rollup.ml/Alpha- arith - refutation games winning strategies (bailout_mode_defends_its_com.out b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - refutation games winning strategies (bailout_mode_defends_its_com.out new file mode 100644 index 0000000000000000000000000000000000000000..5352b3a29b3c5661cff66a242dcc12260a80900c --- /dev/null +++ b/tezt/tests/expected/sc_rollup.ml/Alpha- arith - refutation games winning strategies (bailout_mode_defends_its_com.out @@ -0,0 +1,158 @@ + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "0", + "end_tick": "582", + "dissection": [ + { + "state": "srs136U2KJweAXf7Excw61Zeu5R5L7mi2TCb1WKkowQJ6UdHJ2VZWS", + "tick": "0" + }, + { + "state": "srs12fH3qaJPnV1ffBy6CmCeWNbnrRTYnBAJmpKmSijG4qAr1nF5qq", + "tick": "18" + }, + { + "state": "srs12U5Qo3eYMXF21V2WSqECogLqvuQFzFj46V8gCV44jTt9JbfPAt", + "tick": "36" + }, + { + "state": "srs11ojK4N7Jd3Yp71thpTaria7vxTqLVvJ78bq7AzBUK1Lfq19iXx", + "tick": "54" + }, + { + "state": "srs12mBVd34mTSQtHaJhCS5xBAzP4adN9RCPM6QnMnFqKCCK8AWCKB", + "tick": "72" + }, + { + "state": "srs122h7n2D1zgiE4rHLmzeoDQV1RLRJ73ha32DDbU3d54U7zaZPXc", + "tick": "90" + }, + { + "state": "srs129Wp6b9eXF9gZweXmNWeBKYTbXUDkMZY2szYgmrNzEgqk2YpDV", + "tick": "108" + }, + { + "state": "srs125AF7aoft7puAeoxtUmP1aajfLJeUKJA57LNJusncWd6zKRJjK", + "tick": "126" + }, + { + "state": "srs12kzv8cSYFt4DMUacbK32CTdReQqPRBYwMRsrKK6btByT3hbTLY", + "tick": "144" + }, + { + "state": "srs12QvEgKbjbZZ3ANqPMrqiMi3mw3tTEcsWixXgAY7X2gHABBNQNZ", + "tick": "162" + }, + { + "state": "srs11g395YpbNK3ZJopvv6cc7Gcc8H4Lv2MNhaQsCqfV7LztCUBvV1", + "tick": "180" + }, + { + "state": "srs11xVcimxB4Gb8LuzVyVXqjaB9S6YVbw2uR7rqoZr1VStr4b7QZS", + "tick": "198" + }, + { + "state": "srs11x2S5HDRwueA6tCKhipwohi2pWntjTpruhF1gmUWw3bRYW6szf", + "tick": "216" + }, + { + "state": "srs11tG4LUtdPmQocurJWscsZqWGELkynfDYq9hYfP9Z3yv4KQ1B2w", + "tick": "234" + }, + { + "state": "srs12kh4XcDdzKZ8Pc4T7QsXm36XUqVe4cxtWJ2BxHrHwENrqEL9Ay", + "tick": "252" + }, + { + "state": "srs11hjoicX5kycSCkvbxZ7LDWwdbsV2qWEXBDurY3Sf5zwS8tUL3a", + "tick": "270" + }, + { + "state": "srs11n9qrtzJPgMSFze3erzSzvB5EAm48kTnEC9oJJYqxV6vRApyK5", + "tick": "288" + }, + { + "state": "srs1336xiQkLT9knTk1fco58u9hxKNqdHS1YPUwxGKLT2MhPzEMC7N", + "tick": "306" + }, + { + "state": "srs12CfNGraungvWxhYVdXr26w2aS1Ei6Eo5XgzDLdqn4LRDdduqom", + "tick": "324" + }, + { + "state": "srs12BwLvVrWQv531zELu8TrCymUS1Gm9Naafz3PX6miVBYcZycJjr", + "tick": "342" + }, + { + "state": "srs12ekcYu6yArjgAGuJAg5cwq6zPvKxdk6KCmnBtGYy7JP6kEBFqb", + "tick": "360" + }, + { + "state": "srs12a3AthkZ1i6H2x4RrPXN49iUmCVBSBkteWQTgEyWzQhpCzpoZD", + "tick": "378" + }, + { + "state": "srs12EXB6ARrgEz3pi71R6nzxtQ4PMY8Azwy2DYmmTJRkne8d6rW42", + "tick": "396" + }, + { + "state": "srs11fDjhakCGzwrmM7bHy4RJp8aGUgSFRN57tDDL2LzhXvDukwEJ1", + "tick": "414" + }, + { + "state": "srs1397ahAZp3GHxcSuvgvSk3MrdNaosN2nhkx8kDwuh3GF2ruEWzB", + "tick": "432" + }, + { + "state": "srs12sZ9L8e4CVC86wfn8o5KwroqUxMdGyzkjdkaVC4BM3PCeu1foW", + "tick": "450" + }, + { + "state": "srs13Jw5EzkDA1kK1ysWBT7QoQdoBWPtWLxbcg7tzhqmoQpMAzPDyr", + "tick": "468" + }, + { + "state": "srs12TjQfFTgrKzckqg65A3FUJfErZ2Eu6SXj2tWDAsi8iRf5hTcR6", + "tick": "486" + }, + { + "state": "srs12qYpCJiJoTiro1gs1y1HJNVLYv9Dp72bKDqwick9speqAPonWg", + "tick": "504" + }, + { + "state": "srs12JqZ2LaeC5RSw5xiaKDnUyW3uoH1L7qLB29fTR6tX7UH5VeXjk", + "tick": "522" + }, + { + "state": "srs13JbbzvBhzL8gjxyUGBQfZ67i4gFbab3qVQYSJoMg9xgQuovNMB", + "tick": "540" + }, + { + "state": "srs12ZGKGftAktgHZThDcahUSdoRjn214kafcq5eNqcUjb3SesLeWd", + "tick": "558" + }, + { + "state": "srs11Z7LSVYF6rBXAsR8Y5LjiQNgjPNs2eLAyUp2jWCf5QDMcSHqa6", + "tick": "582" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "121", + "end_tick": "122", + "dissection": [ + { + "state": "srs12gTMVH2Jm8MTRtBmtjCuVtQxsRdPKd6fmLgqUeizfdTCHpzb8V", + "tick": "121" + }, + { + "state": "srs12ziRy1mzsTCGdXRuzHERaB5gWs4nTByjVdGQ5chVQPucjfx7MA", + "tick": "122" + } + ] +} diff --git a/tezt/tests/expected/sc_rollup.ml/Nairobi- arith - refutation games winning strategies (bailout_mode_defends_its_c.out b/tezt/tests/expected/sc_rollup.ml/Nairobi- arith - refutation games winning strategies (bailout_mode_defends_its_c.out new file mode 100644 index 0000000000000000000000000000000000000000..2456686d0f19ed1d0723cd6f6a174bd7addf3aa3 --- /dev/null +++ b/tezt/tests/expected/sc_rollup.ml/Nairobi- arith - refutation games winning strategies (bailout_mode_defends_its_c.out @@ -0,0 +1,158 @@ + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "0", + "end_tick": "582", + "dissection": [ + { + "state": "srs136U2KJweAXf7Excw61Zeu5R5L7mi2TCb1WKkowQJ6UdHJ2VZWS", + "tick": "0" + }, + { + "state": "srs11aPE6xa3SzUNtSNWmNCy2AUPQizTXNLESgiSSz3qqypJ4xsV1S", + "tick": "18" + }, + { + "state": "srs11iEwekiQpQZHVUgqaudDGtkxeHQAtcdWovxC2qnmPka4aVdRdv", + "tick": "36" + }, + { + "state": "srs11zXgJVFEN4GWETPxabgWiWwdoPqmYHNzVzJJSyMD1nw9qY6BjB", + "tick": "54" + }, + { + "state": "srs12LrLWsNcXUUcXhwGwjw4NwUB4CZxPsDhkw893F6GRG24Jr3bc6", + "tick": "72" + }, + { + "state": "srs12P7pB4oK1w85qRQf2PUzYzkRkAYMjdTMRmMPpoKaVSnvqSiwCa", + "tick": "90" + }, + { + "state": "srs11xhx6fj9usqvxZix1Z9VVYKmtzXq6aPgqU3RTHcuJWMoRWcD5J", + "tick": "108" + }, + { + "state": "srs13FNnKDSq83db7a4ySUqecN1tTHpoU6tuDmyjxoziRD5mWZqY5U", + "tick": "126" + }, + { + "state": "srs127C5MpG6jjtEknTv7qykwnhh1rkYfen2ooVPpsC7nsaDR6j9Wc", + "tick": "144" + }, + { + "state": "srs129a2JEbQNKnm21VJeRwNX56MNZ17zgjiiJLmRsL1shksgkooSY", + "tick": "162" + }, + { + "state": "srs12ttseoBU2CNUdydkU7xUqPW7KCXH3VrtKhkL351nnb5zpC2NKC", + "tick": "180" + }, + { + "state": "srs12evbqRoyoHXHuuLe93J7McHNey7AF77cFrdjSvnZxBtocvGwiE", + "tick": "198" + }, + { + "state": "srs12vTfr7F36yKJNUC5wF7uS2o2LZc8HtDcCqZYovtM5A1TXJ8PnU", + "tick": "216" + }, + { + "state": "srs12djGRCs6trFxhoS5Vpe4JztpMV1q7noBvX2k18CRU6LGyNDWLv", + "tick": "234" + }, + { + "state": "srs12xuEMEAazvjTXRo4WJvV641NwUHCNAkAcFsWC7BLJ8fAoU39UR", + "tick": "252" + }, + { + "state": "srs12oGMtTEe9TiV83TV94o2GCbocjevfePoAJ6CrW48MUKu3bbwFm", + "tick": "270" + }, + { + "state": "srs12G5mFi3rfsENNaMdALNgSybuvUuZWzQs7fkaUQbPjmyRdcroFU", + "tick": "288" + }, + { + "state": "srs12PnwkMq4h6uyDAdtDcNCobfsUTjmnJ1SsLoe4o3idirjvtcbxj", + "tick": "306" + }, + { + "state": "srs13A56qE7mUQZtaESaQjPAxjWSXbRnbP6SqgGeyhR7vbZLkmsS5k", + "tick": "324" + }, + { + "state": "srs11zaB4DddxNYNtS2R2iUDRDhczPuaiWUumgfvGRJp75btAviU6v", + "tick": "342" + }, + { + "state": "srs12J7QgVeLT4R7opWp7qrX7iZ85vB1R2gryGo6Hhwsk96uKijU53", + "tick": "360" + }, + { + "state": "srs11agUZZjbT5v3KgNXWi8wa7ixdiiKygFgoBQvAjLW6BHw1Aar4e", + "tick": "378" + }, + { + "state": "srs12p4EsDDZE9nNh8hVLf3FMrPGDXVg6KDUo1RmLkDmKLhJ3y7t7P", + "tick": "396" + }, + { + "state": "srs1213x6ako5pAMs8coXp2L9HfCj4aELEVLncLfB6ECNkaWDPbsNh", + "tick": "414" + }, + { + "state": "srs125LwkZoUJSP3iRou4tuQxWAZbGkaZy3ypFmLjYTPy5PAG5o1b4", + "tick": "432" + }, + { + "state": "srs11oPWrZXyBJDvJGs1gD66tuTQYwQ75AUx8Zqo9r7eTr7mT4KmPA", + "tick": "450" + }, + { + "state": "srs13A3qiQDaFFjW7uniVdTWdeNi7FNwyV5KBFEeWWX4JpY22yidBs", + "tick": "468" + }, + { + "state": "srs11ksHqrcDxHrQcVqPTBAcypR3PszdPBv5ggqqrmf2qwK1wK9cy2", + "tick": "486" + }, + { + "state": "srs12yYosmVjDV3i1JxUhTWtmMTEqDgv6rZBgJVvFcudZqxp8tf53f", + "tick": "504" + }, + { + "state": "srs12PMeq4iivEsJxsvjZfHYkQet3WBXbZduq6CDqaX1n7Vizwv1iM", + "tick": "522" + }, + { + "state": "srs12VUFV5VnnX146m4xz2CNHmq86iLpthdDzgxmt7bdhPyynx6MNm", + "tick": "540" + }, + { + "state": "srs12zjyN9hjk4RhNi8BSLQfddUhDXujU2YvoNKZAnXSVkhpgc5fwM", + "tick": "558" + }, + { + "state": "srs12BpWKZmJUaEoa9CQd6gqxSxcN5JWHCmTafFKvA2sfa8yugT8QJ", + "tick": "582" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "121", + "end_tick": "122", + "dissection": [ + { + "state": "srs11oZfvX5xjF9pPtckaUhYnMfPFT5bq7V16ZRQrBtPterf2aHfTa", + "tick": "121" + }, + { + "state": "srs12NMUCUm6LBBHAUmGe9TeVht1N9nHG54VwM1SmA8i6zgVme1ws5", + "tick": "122" + } + ] +} diff --git a/tezt/tests/expected/sc_rollup.ml/Oxford- arith - refutation games winning strategies (bailout_mode_defends_its_co.out b/tezt/tests/expected/sc_rollup.ml/Oxford- arith - refutation games winning strategies (bailout_mode_defends_its_co.out new file mode 100644 index 0000000000000000000000000000000000000000..e500851db6fcfd42437ad28126084539ac5327a6 --- /dev/null +++ b/tezt/tests/expected/sc_rollup.ml/Oxford- arith - refutation games winning strategies (bailout_mode_defends_its_co.out @@ -0,0 +1,158 @@ + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "0", + "end_tick": "582", + "dissection": [ + { + "state": "srs136U2KJweAXf7Excw61Zeu5R5L7mi2TCb1WKkowQJ6UdHJ2VZWS", + "tick": "0" + }, + { + "state": "srs12qmdmqT38UYwuZXkusK9aVHTveUvyN2CAXynBkDWUdNYD9mDSn", + "tick": "18" + }, + { + "state": "srs12b9DTvPkmZDfSJk7fkdeQTktMfY8VY9d3iYfQbeGHQDGp2kDBi", + "tick": "36" + }, + { + "state": "srs11vti3B1mtsNDQxTMkkepkfguiy9NbQfPpZbq2sdc5ZAhk8ximV", + "tick": "54" + }, + { + "state": "srs12oP3HbrS96sh6tSsecsEJS4cTojhAPoLCgHGbnjCUchTxq3Ne2", + "tick": "72" + }, + { + "state": "srs13FLYmoLDyHmFxipuUNAX72kMf9meQHSVpUwDtRpV2PHQKYWpvf", + "tick": "90" + }, + { + "state": "srs12zDL2EbLTesuwVzRZWaqZDrdEBXYjEnrD1tSPb6Yys41fjkfaa", + "tick": "108" + }, + { + "state": "srs12Fd86MaBtB7rbsuonaoPcYe5TGuLZZ7mkETHiLEXfSH7zzxq79", + "tick": "126" + }, + { + "state": "srs11SsGKpoLBEkXe125tR7yaDQknYtu5VtKHymFTcmo8Dc8edQWii", + "tick": "144" + }, + { + "state": "srs11asfBFNqfic4kW6fxm12sG6E67acNJMkTBW3L9cQ43DabvkGqM", + "tick": "162" + }, + { + "state": "srs13Duj9KPQm8aC67ZAJjD2GY6ksBXWHKmMyH2RWwcycZBoq9uBPT", + "tick": "180" + }, + { + "state": "srs11ZKvmZmYYr6VLUNW1xp62PKwrZpVPg48LQmjfE1gGdBHLMFru1", + "tick": "198" + }, + { + "state": "srs11wsbH31Lg4afKZRnvhUdfnwNhb7YGy6S8Tfj4J8L7Jn9zRswAh", + "tick": "216" + }, + { + "state": "srs12AhSiPTbd8CPS3ApFBgG2cL5LNWNAi5CqiYKtgCcLFW7NFCFd3", + "tick": "234" + }, + { + "state": "srs126mVmozT6qGs1gCFvLFDmjcc9v2TwL6F9YQF49UcWd5VH6cqA2", + "tick": "252" + }, + { + "state": "srs121ccoVkEQFXy1jWtyRBAEHNA6DMWTtThcZS6AKnFhz41vzTGCy", + "tick": "270" + }, + { + "state": "srs11XnJwn8G5agmKsi9Uniri3mG5eU4Cmu1G9QoHaX7oZd7pvYHuc", + "tick": "288" + }, + { + "state": "srs128d9BaVg4JhJoCtEdpeP4uTXpy2F9HnuDHBzFkBYyVt1QXi9Xw", + "tick": "306" + }, + { + "state": "srs11YMaKt4SzRCJiUEh5T5KpsfNJGRzdnWjGG6YYbJRSQunzVBwPx", + "tick": "324" + }, + { + "state": "srs137yUYjCHuj4aorSQYAEa6qJFNxcTKDWdEmxzkhq9mbxJFm7KbN", + "tick": "342" + }, + { + "state": "srs132RyWShHD7DirQF1vKEXzaDDHkbM3QdmT5bhCPgbX6t9mEehCv", + "tick": "360" + }, + { + "state": "srs12GaR7gNbRRJdU7nB3u96onfV1XWioaLe4kT9mY78eBmk6UFpQT", + "tick": "378" + }, + { + "state": "srs12MWUUPGqCtGu9s3Be1NWCeh3MMbi7wvKKpPN2zEPfjNcCgqqgQ", + "tick": "396" + }, + { + "state": "srs12EQuezLbiSasprcdQgKyEwZED7beYynTNncpHfuNCc9YSscazp", + "tick": "414" + }, + { + "state": "srs12DHedWvENjUJGt2c7krLeAEch3YBcYqnEGxfNxSgjb1UieVycB", + "tick": "432" + }, + { + "state": "srs11ceAqVTDPpHz1U7DZTwHqfjQSGr7LaSpdjA9j7ToBotiL7ejJj", + "tick": "450" + }, + { + "state": "srs12f6rPNGkHgXaFR6wji4puuhHkosiwRKaPvPDvDhPfBTS5uMtDb", + "tick": "468" + }, + { + "state": "srs12QK9WuA2a4JNsHrZgw7RFSSiLF3EFLth6iRec8PXyBRWZb4bWE", + "tick": "486" + }, + { + "state": "srs11tYyfzs6hc1FYKXjhyi1fQXJWAZxwUC8YfJe8JFgiPgHzcK9xd", + "tick": "504" + }, + { + "state": "srs12yG42VXcT1dMNU1VXeLX7aVJu8ewX4cPGrdjzWgB2Kgk1VNqNg", + "tick": "522" + }, + { + "state": "srs12obFZqg9JAdjMXseKAWrknXTz8DeXPse52cAoFyQTuRqLgtSTB", + "tick": "540" + }, + { + "state": "srs13CYCQmPL5CkEFYhfeMHFqRBP9S2uJXCxHnzEL1jvZ7VfKrGT81", + "tick": "558" + }, + { + "state": "srs12r9cne8CjgxcNeBXXBVjmheCcqgQirAbCuoLPv8cbWZ6JCqTj9", + "tick": "582" + } + ] +} + + +{ + "opponent": "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN", + "start_tick": "121", + "end_tick": "122", + "dissection": [ + { + "state": "srs12BcTac7TsByk5S6TskGuUFNNrUEQ3RUw9MhX6APPVShkHiLc1E", + "tick": "121" + }, + { + "state": "srs11t9ETsQ4kTcSQiHRYJ5kURAZMmhbNV4pYfVD3Wgxd6znbtBs94", + "tick": "122" + } + ] +} diff --git a/tezt/tests/sc_rollup.ml b/tezt/tests/sc_rollup.ml index 16d5b08e564a78e6f9c5a0ae536eefb05b5c06c4..307ad94670c22ad6cb200bb24646cafb58aa7c70 100644 --- a/tezt/tests/sc_rollup.ml +++ b/tezt/tests/sc_rollup.ml @@ -3177,7 +3177,7 @@ let test_refutation_scenario ?commitment_period ?challenge_window ~variant ~mode let restart_promise = (* Reset node when detecting certain events *) Lwt_list.iter_p - (fun (event, delay) -> + (fun (event, delay, restart_mode) -> let* () = Sc_rollup_node.wait_for sc_rollup_node event @@ fun _json -> Some () in @@ -3189,6 +3189,11 @@ let test_refutation_scenario ?commitment_period ?challenge_window ~variant ~mode (current_level + delay) in let* () = Sc_rollup_node.terminate sc_rollup_node in + let sc_rollup_node = + match restart_mode with + | Some mode -> Sc_rollup_node.change_node_mode sc_rollup_node mode + | None -> sc_rollup_node + in let* _ = run_honest_node sc_rollup_node in unit) reset_honest_on @@ -3370,7 +3375,7 @@ let test_refutation protocols ~kind = 80, [], [], - [("sc_rollup_node_conflict_detected.v0", 2)], + [("sc_rollup_node_conflict_detected.v0", 2, None)], [], `Priority_honest ) ); ( "degraded_new", @@ -3499,6 +3504,25 @@ let test_accuser protocols = (["7 7 22_000_002_000"], inputs_for 10, 80, [], [], [], [], `Priority_honest) protocols +(** Run one of the refutation tests in bailout mode instead of using a + full operator. *) +let test_bailout_refutation protocols = + test_refutation_scenario + ~kind:"arith" + ~mode:Operator + ~challenge_window:10 + ~commitment_period:10 + ~variant:"bailout_mode_defends_its_commitment" + ( ["5 2 1"], + inputs_for 10, + 80, + [], + [], + [("sc_rollup_node_publish_commitment.v0", 2, Some Bailout)], + [], + `Priority_honest ) + protocols + (** Helper to check that the operation whose hash is given is successfully included (applied) in the current head block. *) let check_op_included ~__LOC__ = @@ -6155,6 +6179,7 @@ let register ~protocols = ~kernel_name:"no_parse_bad_fingerprint" ~internal:false ; test_accuser protocols ; + test_bailout_refutation protocols ; test_injector_auto_discard protocols ; (* Shared tezts - will be executed for both PVMs. *) register ~kind:"wasm_2_0_0" ~protocols ;