|
|
|
@ -4,6 +4,7 @@ import {Test} from "forge-std/Test.sol";
|
|
|
|
|
|
|
|
|
|
|
|
import {Gatekeeper} from "../../src/Gatekeeper.sol";
|
|
|
|
import {Gatekeeper} from "../../src/Gatekeeper.sol";
|
|
|
|
import {FullMath} from "../../src/libraries/FullMath.sol";
|
|
|
|
import {FullMath} from "../../src/libraries/FullMath.sol";
|
|
|
|
|
|
|
|
import {Verifier} from "../../src/libraries/Verifier.sol";
|
|
|
|
import {RequestPacking} from "../../src/libraries/Packing.sol";
|
|
|
|
import {RequestPacking} from "../../src/libraries/Packing.sol";
|
|
|
|
import {IStorageHistory} from "../../src/interfaces/IStorageHistory.sol";
|
|
|
|
import {IStorageHistory} from "../../src/interfaces/IStorageHistory.sol";
|
|
|
|
import {StorageHistory} from "../../src/types/StorageHistory.sol";
|
|
|
|
import {StorageHistory} from "../../src/types/StorageHistory.sol";
|
|
|
|
@ -159,13 +160,9 @@ contract MockStaking is Test {
|
|
|
|
uint256 amount,
|
|
|
|
uint256 amount,
|
|
|
|
uint256 packed,
|
|
|
|
uint256 packed,
|
|
|
|
address caller
|
|
|
|
address caller
|
|
|
|
) external payable {
|
|
|
|
) external {
|
|
|
|
if (msg.value > 0) {
|
|
|
|
|
|
|
|
vm.deal(address(gatekeeper), address(gatekeeper).balance + msg.value);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vm.prank(address(gatekeeper), caller);
|
|
|
|
vm.prank(address(gatekeeper), caller);
|
|
|
|
gatekeeper.recall{value: msg.value}(exodusSession, amount, packed);
|
|
|
|
gatekeeper.recall(exodusSession, amount, packed);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function recall(address receiver, uint256 amount) external {
|
|
|
|
function recall(address receiver, uint256 amount) external {
|
|
|
|
@ -273,10 +270,22 @@ contract GatekeeperTest is Test {
|
|
|
|
assert(IStorageHistory(storageHistory).isTransactionExecuted(exodusSession));
|
|
|
|
assert(IStorageHistory(storageHistory).isTransactionExecuted(exodusSession));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function test_rotateWork(bytes32 aggregatedPublicKey) public {
|
|
|
|
function test_rotateWork() public {
|
|
|
|
vm.warp(block.timestamp + 1);
|
|
|
|
vm.warp(block.timestamp + 1);
|
|
|
|
vm.prank(address(gatekeeper));
|
|
|
|
vm.prank(address(gatekeeper));
|
|
|
|
gatekeeper.rotate(block.timestamp, aggregatedPublicKey, 0);
|
|
|
|
gatekeeper.rotate(block.timestamp, 0x79BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vm.warp(block.timestamp + 1);
|
|
|
|
|
|
|
|
vm.prank(address(gatekeeper));
|
|
|
|
|
|
|
|
gatekeeper.rotate(block.timestamp, 0xF9308A019258C31049344F85F89D5229B531C845836F99B08601F113BCE036F9, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vm.warp(block.timestamp + 1);
|
|
|
|
|
|
|
|
vm.prank(address(gatekeeper));
|
|
|
|
|
|
|
|
gatekeeper.rotate(block.timestamp, 0x3590A94E768F8E1815C2F24B4D80A8E3149316C3518CE7B7AD338368D038CA66, 0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
vm.warp(block.timestamp + 1);
|
|
|
|
|
|
|
|
vm.prank(address(gatekeeper));
|
|
|
|
|
|
|
|
gatekeeper.rotate(block.timestamp, 0xD4E0D4642DB1613B2C94A81FCD34E39A2A31ACD774CD42525A88CF69EBA2E611, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function test_couldNotBridgeBelowExistential(uint256 amount) public {
|
|
|
|
function test_couldNotBridgeBelowExistential(uint256 amount) public {
|
|
|
|
@ -297,16 +306,16 @@ contract GatekeeperTest is Test {
|
|
|
|
staking.runGhost(bytes32(abi.encodePacked(ALICE)), type(uint104).max);
|
|
|
|
staking.runGhost(bytes32(abi.encodePacked(ALICE)), type(uint104).max);
|
|
|
|
|
|
|
|
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.updatePublicKeyMetadata(0, 0x875cdcba4ae5494518fa2602791e667ca0998402b6a69e5b7cb4c72dba4e4669, 0);
|
|
|
|
gatekeeper.updatePublicKeyMetadata(0, 0x36ff5b7f0fc50100b563c6072e499980d6e6aa8528ea0ae6d776cf7e8e96c374, 0);
|
|
|
|
|
|
|
|
|
|
|
|
(bytes32 prevPublicKey, uint8 prevParity,) = gatekeeper.latestPublicKeyInfo();
|
|
|
|
(bytes32 prevPublicKey, uint8 prevParity,) = gatekeeper.latestPublicKeyInfo();
|
|
|
|
|
|
|
|
|
|
|
|
// genesis validators 4 validators, DKG #0
|
|
|
|
// genesis validators 4 validators, DKG #0
|
|
|
|
// exodus session #0
|
|
|
|
// exodus session #0
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"49f03a670000000000000000000000000000000000000000000000000000000000000000875cdcba4ae5494518fa2602791e667ca0998402b6a69e5b7cb4c72dba4e46690000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"49f03a67000000000000000000000000000000000000000000000000000000000000000036ff5b7f0fc50100b563c6072e499980d6e6aa8528ea0ae6d776cf7e8e96c3740000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"044d9fa18df9da04381ed256981570a6ef6a0893496ded966fc994662df931ed423b29e2737394b31d8498594caad7b77e36ab31ac79df3796a1b6f26baa5552ae",
|
|
|
|
0x58a4ef4e4f9cad19e9bb3707a48f01920ba309f69892609b196bbc112b6aebea,
|
|
|
|
0x24029a571fcaeadd14f4afe8be62afe3d07876ae270c3caf446ecb6cfc7c08f2
|
|
|
|
0x2de1a8116c65a290c51fee3bac24546c09522423640ae0e38f45791b1d81a069
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
(bytes32 publicKey, uint8 parity, uint64 session) = gatekeeper.latestPublicKeyInfo();
|
|
|
|
(bytes32 publicKey, uint8 parity, uint64 session) = gatekeeper.latestPublicKeyInfo();
|
|
|
|
@ -317,17 +326,17 @@ contract GatekeeperTest is Test {
|
|
|
|
// could not apply signature from DKG #2
|
|
|
|
// could not apply signature from DKG #2
|
|
|
|
vm.expectRevert();
|
|
|
|
vm.expectRevert();
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"49f03a6700000000000000000000000000000000000000000000000000000000000000133492bc8bb10848f1f788496ccadde7d458eac4ac2c1eca2dd2c7a506d8fa2c5b0000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"49f03a6700000000000000000000000000000000000000000000000000000000000000135353a4ce3430b37cabb7c495aabfec94895183672738873f4b227bf4ce31fbe50000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"0434c3b37293516c6204dc291821e19ab5b3d8afb0947a0a2dffc91600fbd3f6b9783a66887d515e774b98a63a35a08bb3d914407fd768e92020b0ebaa3c8602b3",
|
|
|
|
0xd1e4b50b4ff3e9b98ce17b375d6007cf0cf9d65e795cbe682609c1343361a81c,
|
|
|
|
0x71cd57e697af70f84a960cc94fcbae5889efbf919df410282a04c6d19f92609e
|
|
|
|
0x0cdd6c13658d862e7f816c59ad9cb1b6f5b3b981f019e698f27d1a354dc69cd5
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// genesis validators 7 validators, DKG #1
|
|
|
|
// genesis validators 7 validators, DKG #1
|
|
|
|
// exodus session #11
|
|
|
|
// exodus session #11
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"49f03a67000000000000000000000000000000000000000000000000000000000000000b4e8c1fe96d6737cdabbcc96501d6656b9d0b659b3a528ef507f2d52bef29e1570000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"49f03a67000000000000000000000000000000000000000000000000000000000000000bb5cd0d028a5e1b6a4eecb113b7e49c8176385eb77c8f134bc1db4bddd7654de60000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"04b51db09ec2f4bebdb65c5352efa75f8d07088408e3ff907c74b0d7928a40dbe06f864364a3e6d219849ca8e7d47e6c66f8a18ca9f4fa4752df13bb6c2eae1172",
|
|
|
|
0x993fc0c870e1010f4933cbdb17b4539aea07234ff787eb3185d03ef8c0d2787e,
|
|
|
|
0x072e625bdd3ff7d09f2bf896b5e261efa007f8d81a9e2c828525ec74bd3ee08d
|
|
|
|
0x4bfe369753a3125a37d13db08ea9125fe2280b70aa47e5890bf9401c785bdb92
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
(publicKey, parity, session) = gatekeeper.latestPublicKeyInfo();
|
|
|
|
(publicKey, parity, session) = gatekeeper.latestPublicKeyInfo();
|
|
|
|
@ -341,9 +350,9 @@ contract GatekeeperTest is Test {
|
|
|
|
// genesis validators 5 validators, DKG #2
|
|
|
|
// genesis validators 5 validators, DKG #2
|
|
|
|
// exodus session #19
|
|
|
|
// exodus session #19
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"49f03a6700000000000000000000000000000000000000000000000000000000000000133492bc8bb10848f1f788496ccadde7d458eac4ac2c1eca2dd2c7a506d8fa2c5b0000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"49f03a6700000000000000000000000000000000000000000000000000000000000000135353a4ce3430b37cabb7c495aabfec94895183672738873f4b227bf4ce31fbe50000000000000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"0434c3b37293516c6204dc291821e19ab5b3d8afb0947a0a2dffc91600fbd3f6b9783a66887d515e774b98a63a35a08bb3d914407fd768e92020b0ebaa3c8602b3",
|
|
|
|
0xd1e4b50b4ff3e9b98ce17b375d6007cf0cf9d65e795cbe682609c1343361a81c,
|
|
|
|
0x71cd57e697af70f84a960cc94fcbae5889efbf919df410282a04c6d19f92609e
|
|
|
|
0x0cdd6c13658d862e7f816c59ad9cb1b6f5b3b981f019e698f27d1a354dc69cd5
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
(publicKey, parity, session) = gatekeeper.latestPublicKeyInfo();
|
|
|
|
(publicKey, parity, session) = gatekeeper.latestPublicKeyInfo();
|
|
|
|
@ -351,23 +360,22 @@ contract GatekeeperTest is Test {
|
|
|
|
assertEq(parity, prevParity);
|
|
|
|
assertEq(parity, prevParity);
|
|
|
|
assertEq(session, 19);
|
|
|
|
assertEq(session, 19);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint256 aliceAmountBefore = staking.recalledAmount(ALICE);
|
|
|
|
uint256 aliceAmountBefore = staking.recalledAmount(ALICE);
|
|
|
|
uint256 bobAmountBefore = staking.recalledAmount(BOB);
|
|
|
|
uint256 bobAmountBefore = staking.recalledAmount(BOB);
|
|
|
|
uint256 aliceBalanceBefore = ALICE.balance;
|
|
|
|
uint256 aliceBalanceBefore = ALICE.balance;
|
|
|
|
uint256 bobBalanceBefore = BOB.balance;
|
|
|
|
uint256 bobBalanceBefore = BOB.balance;
|
|
|
|
|
|
|
|
|
|
|
|
// execute bridge out, happened on DKG #0
|
|
|
|
// execute bridge out, happened on DKG #1
|
|
|
|
// amount: 69; commission: 0%; ALICE
|
|
|
|
// amount: 34; commission: 0%; ALICE
|
|
|
|
// exodus session #1
|
|
|
|
// exodus session #1
|
|
|
|
vm.prank(ALICE, ALICE);
|
|
|
|
vm.prank(ALICE, ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"bf06188a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000010000000000007a6900000000",
|
|
|
|
hex"bf06188a0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000010000000000007a6900000000",
|
|
|
|
hex"04bccb4cd4633e2c61ca5c65006a6a09baa893be219b21509866123a8d6299f92aefe9c380bd9728dbe0b93a8042f431636d08ed191b5c04062bf14e1347059cb9",
|
|
|
|
0x74e1ee0256e3a1f6c38744fff8d72ffb905d660679e69c76b0af2e75db9fbfcc,
|
|
|
|
0xe579753d931a78b143d7e3d86e1117ccbc9d2d7357b0207ea682046a0b06d798
|
|
|
|
0x4c512ab429d8c38a199daaa7f2c3d74956d2ff435871b160946b69804a1e5d54
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
assertEq(aliceAmountBefore + 69, staking.recalledAmount(ALICE));
|
|
|
|
assertEq(aliceAmountBefore + 34, staking.recalledAmount(ALICE));
|
|
|
|
assertEq(bobAmountBefore, staking.recalledAmount(BOB));
|
|
|
|
assertEq(bobAmountBefore, staking.recalledAmount(BOB));
|
|
|
|
assertEq(aliceBalanceBefore, ALICE.balance);
|
|
|
|
assertEq(aliceBalanceBefore, ALICE.balance);
|
|
|
|
assertEq(bobBalanceBefore, BOB.balance);
|
|
|
|
assertEq(bobBalanceBefore, BOB.balance);
|
|
|
|
@ -379,139 +387,138 @@ contract GatekeeperTest is Test {
|
|
|
|
aliceBalanceBefore = ALICE.balance;
|
|
|
|
aliceBalanceBefore = ALICE.balance;
|
|
|
|
bobBalanceBefore = BOB.balance;
|
|
|
|
bobBalanceBefore = BOB.balance;
|
|
|
|
|
|
|
|
|
|
|
|
uint256 buyback = 220;
|
|
|
|
// TODO: revisit
|
|
|
|
|
|
|
|
// execute bridge out, happened on DKG #2
|
|
|
|
// execute bridge out, happened on DKG #1
|
|
|
|
// amount: 210; commission: 50%; BOB
|
|
|
|
// amount: 420; commission: 50%; BOB
|
|
|
|
|
|
|
|
// exodus session #12
|
|
|
|
// exodus session #12
|
|
|
|
vm.prank(ALICE, ALICE);
|
|
|
|
vm.prank(ALICE, ALICE);
|
|
|
|
gatekeeper.verify{value: buyback}(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"bf06188a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000020000000000007a6980000000",
|
|
|
|
hex"bf06188a000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000d200000000000000000000000000000000000000020000000000007a6980000000",
|
|
|
|
hex"049f458500a78f56420380f0c6863905f1181e705f6b562eb469bd81a03676a2d9b436a53d2356ea0a5bb175ca837655fab8114c6e64cfdd47f3d36d1a945d7122",
|
|
|
|
0x99c5f02bf312fc6b1a125b83397aa87df369738f85275bc42d249660abb1f0e1,
|
|
|
|
0x772731b359ee7ecac7830438333e4ffb61759b36610f69cef20f66f7a79a405f
|
|
|
|
0x8326ee3fc1cbb1421e2c974d6cc7cb2bfdc9c4f6ebfd403363f6b3a3bc8e9bef
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
assertApproxEqAbs(aliceAmountBefore + 210, staking.recalledAmount(ALICE), 1);
|
|
|
|
assertApproxEqAbs(aliceAmountBefore + 105, staking.recalledAmount(ALICE), 1);
|
|
|
|
assertApproxEqAbs(bobAmountBefore + 210, staking.recalledAmount(BOB), 1);
|
|
|
|
assertApproxEqAbs(bobAmountBefore + 105, staking.recalledAmount(BOB), 1);
|
|
|
|
|
|
|
|
|
|
|
|
// execute setDistributor, exodusSession: 2
|
|
|
|
// execute setDistributor, exodusSession: 2
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000020000000000007a690101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002475619ab5000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000020000000000007a690101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002475619ab5000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"049f222e7ec776c390c7fe96b9c2034c37f4fc71a9714588a5d98ccb50dc748c98fe375c628e7bcc4db4f204a2a168b22ecbc631616a69987ef42601ad239b2ab5",
|
|
|
|
0x45a9889cb48e0eca44c3add96dc68d6ab728c1a7e4eab14323f0dcfe67472c1f,
|
|
|
|
0x515539c5b713900a4dd4b3b119b22a47f862c90fdff9da91ed3fca687ea8db06
|
|
|
|
0x40e6980e96efc0fc6acf47aa0cd665bc5d85a01b909fc4d960948c76f45723b4
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute setWarmupPeriod, exodusSession: 3
|
|
|
|
// execute setWarmupPeriod, exodusSession: 3
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000030000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024a85667c5000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000030000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024a85667c5000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"04c2d9b903c0bd640ff858de3518c64965e2ff07215a131c85a8febec629999cfd60970a3a99d0d04ba08a334f2aa865842ebde37407c6fee2b17f820c8104fc88",
|
|
|
|
0x356ef46cfd654b0b609bdff33147df25c20ff9ca7ac3334c57f12e99b6248112,
|
|
|
|
0xe1727e132cbb7502a60bab56c5dedce1abca8130792ddd6d9ba59918766688e8
|
|
|
|
0xa6363286f97c02a39aa5280d74f8dc02dabd078911eef60e4848b7d5deeb325b
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute setBounty, exodusSession: 4
|
|
|
|
// execute setBounty, exodusSession: 4
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000040000000000007a69010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000245d87d363000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000040000000000007a69010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000245d87d363000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"04ec7d454696833a1c9c04d79be81e0dfe8a4791862f1dc5d4e908338df30621911fb182e6f204699c53ea5b11db1c855f55dfd149d4882a80afa437d80c58d9cd",
|
|
|
|
0xe6a419a5314afed1ff25df0cbf76f2002bfa9d7746817670f2487be5d7774118,
|
|
|
|
0x22d3138ed4e72f104c5d86814c1b4e6eeed39cdcf97e087effe33f860d06f133
|
|
|
|
0x7ce4c7207efdfdb9c71b26c7dd071572544fb27a329b348379d70b2e7a5f21fc
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute setAdjustment, exodusSession: 5
|
|
|
|
// execute setAdjustment, exodusSession: 5
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000050000000000007a690101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006446d36ab5000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000050000000000007a690101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000006446d36ab5000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"0484819be6cb8879179f91aaf94c1513234d9068052dd42bf067606033c2d173efe85e87acf5bc1020cab6ec67d5ec8f7b237c5f315b825b56e915e4736c2b7b62",
|
|
|
|
0x649a51e565d154f549e24aaf400ed9a2bb8812ed87eeac36372f36ac8cd6aa34,
|
|
|
|
0x865b1e9006973e8b5b5492f2f6a0c85ee69ee7ae72f714ee076035865cd26a72
|
|
|
|
0xc9decb2fa41d9217f9a609d568f86bf92b66d6a91ed3c34031025d3845e34b09
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute updateGatekeeperAddress, exodusSession: 6
|
|
|
|
// execute updateGatekeeperAddress, exodusSession: 6
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000060000000000007a690101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002484f157cd000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000060000000000007a690101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000002484f157cd000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"040bfec065e85cb245d891a94b50b12ea8f91d27a90e113c0bf47f93e76c0c21380e6ff8dc05406d1e8ec34b2c90cc345fea1245c1ca3eb7ecccd8606bfb334f76",
|
|
|
|
0xb445285e36eb120a47bd995ce7ecc07f73bf1ec99b5024ef14e87aa1bffd8b39,
|
|
|
|
0x15141679af9a42a9228adc686f802fe183515180bed3de3933e1622668e06796
|
|
|
|
0x8f7241cd388505b0f964dd54243c968559ba603400ee71dea0738a9084f5cf50
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute addPool, exodusSession: 7
|
|
|
|
// execute addPool, exodusSession: 7
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000070000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d914cd4b000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000070000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024d914cd4b000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"04eb497652f4ad64ddd9223cd1af4785b37c6b2a41f8c1f54b906d595ab0d2b53305cd006238ca4eaf7eede77b3e2c0d1019e9f9d505fe80e86240e0d83051dcf2",
|
|
|
|
0x83cdbf2cee6f13d60c2261feed4d0643e847cfba6af316722538281c9cb433c8,
|
|
|
|
0xa93dcb9c9c399973a17abc3b3667e37da716bdd5e9ed9c0b99d9fc869a886700
|
|
|
|
0xdd0c8c1d6d154c951a4171ff9a40084afbfe5f7b3c70c0521e5b6605310e77cb
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute removePool, exodusSession: 8
|
|
|
|
// execute removePool, exodusSession: 8
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000080000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024a38dcbd0000000000000000000000000000000000000000000000000000000000000053900000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000080000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000024a38dcbd0000000000000000000000000000000000000000000000000000000000000053900000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"0446039e3eec08f356c0a6e9fdd243aed6d840c1d9d973d1496db70499061055d45faf8e945d2fb87016cdcfda040df8fcaf22fe9a466dbdd4687cbfde7c87d0d8",
|
|
|
|
0x622a8a5d57b10682a90e1b92f797375a6bcbb78f30c45877ea570091af1b2831,
|
|
|
|
0x110eedf82f6533d95a43a19de3da026c51557e552bd4c5b6f06ca94d6ab2c8db
|
|
|
|
0xd72cd8354a7be788b801e19994a8155f3938ef58005095b398bc96cd2dc77166
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute close, exodusSession: 9
|
|
|
|
// execute close, exodusSession: 9
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000090000000000007a69010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000240aebeb4e00000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000090000000000007a69010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000240aebeb4e00000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"048da83909e645cf4313d00985c86bcbd24f584512f2279476767fb94829a2a9c7b95bcfeacc3bee2fe4710bfc2bcf2e72e58bcd37fc02293b660a7b70e2efd184",
|
|
|
|
0x0ad9c560affebaea5c589fe831033bac2d9c828aacf58559bbf5b2d00f7842b2,
|
|
|
|
0x8a28d3b7b5db6564e4abb846bc662a69d9b52ed08bd2ce2dbc6af4e86167f55e
|
|
|
|
0x10121ffe0cc95cf3cbb4e92d72d61feec3e94045185cd7f3c5ce0d01e3a644ea
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute close, exodusSession: 10
|
|
|
|
// execute close, exodusSession: 10
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"31371426000000000000000000000000000000000000000000000000000000000000000a0000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000144a0139f41000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000053900000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000005390000000000000000000000000101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000230000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"31371426000000000000000000000000000000000000000000000000000000000000000a0000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000144a0139f41000000000000000000000000000000000000000000000000000000000000004500000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000053900000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000000005390000000000000000000000000101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000230000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"0417bd8b7509486284c1f613117c61abc39cee8a24422fce457099e430b805468be33547f272d8123e9aa6f8895babbaa3a3731eaeda7d8ad4286c9fb117034d21",
|
|
|
|
0xb354049d0012ef7ec3edac6aba453daf4bdc2d28fe1d88138f94459799e2343f,
|
|
|
|
0x0b71c4d8ca7748ec35257a42f26e09aaab9fa4a03e40d50a96bfdfdce10ce7e5
|
|
|
|
0x13a6f8b10007b41fa08c8efee85501fac2554571af99fe587b534fe28fdb82a3
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute enable, exodusSession: 13
|
|
|
|
// execute enable, exodusSession: 13
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"31371426000000000000000000000000000000000000000000000000000000000000000d0000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064e4e33ef800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000101010101010101010101010101010101010101000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"31371426000000000000000000000000000000000000000000000000000000000000000d0000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064e4e33ef800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000101010101010101010101010101010101010101000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"04f34417b947a4da097ca9596838430bf40587339fb42a09210ceb0dbbcfd98a99b1e8fd8f4d2301ee5b5d304e1d8b8e8b81ac14688f1e7de41d65c09a65975f01",
|
|
|
|
0x0716f763060cfd52339544a203d0e156a42370b0e22d78ea9bf8766b0b66682b,
|
|
|
|
0xa4084ea553df2f808c86437547550be910554d41d33a5d66a4643c9792c4f56f
|
|
|
|
0xc2da93948f869c5102992bd1cbd70ef5f821ff522305c69d113faf2e89570ce7
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute disable, exodusSession: 14
|
|
|
|
// execute disable, exodusSession: 14
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"31371426000000000000000000000000000000000000000000000000000000000000000e0000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044529918310000000000000000000000000000000000000000000000000000000000000003000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"31371426000000000000000000000000000000000000000000000000000000000000000e0000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044529918310000000000000000000000000000000000000000000000000000000000000003000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"04f94dad10974c9f0b9307444dc4c660f1f169b25fd3ed9fd563df74714e73c2d4e92b3429505989327d449d9a68e6cce0f557574c92c0ca7bc8126dd710094e9e",
|
|
|
|
0x7ed91b176c29b73a077e51de0c2a12f6df5e7e04862eb07f9c393f6fc1cd3a8f,
|
|
|
|
0xb6b75ed763f4d06b9d7a7557ca8d095df656ca25db74645fb47a0b45d27ec501
|
|
|
|
0x798563362adaade33f39266bb3fa233ac9161ca55d532ca65d5b6d4d0f1edbd2
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute forfeitReserves, exodusSession: 15
|
|
|
|
// execute forfeitReserves, exodusSession: 15
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"31371426000000000000000000000000000000000000000000000000000000000000000f0000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064f0de236c000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"31371426000000000000000000000000000000000000000000000000000000000000000f0000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064f0de236c000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"04af06146f4ca63ef11b82ad891d8e03525a11922316a7dd3f71ff4b6aa5ee6793d29e6af2355d26bc173bb52c1f5eb7d8b279ed40bef2d1cd521da33517b6d3cd",
|
|
|
|
0x7f90802deb959f3bea4aa2cda26dad5ec601fc6e45dcd941a19ee9ff57e3f571,
|
|
|
|
0x6343b047bb8fe39200758de1e874ddfaf296e1f9259f0b720a070a69e7a3ee08
|
|
|
|
0xf61bb645ce15a7e4d0a693e0e4defe1f58fa1b113818a083b582fce05ec728f5
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute redeemReserve, exodusSession: 16
|
|
|
|
// execute redeemReserve, exodusSession: 16
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000100000000000007a690101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004482a21577000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000100000000000007a690101010101010101010101010101010101010101000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000004482a21577000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"041ff894074000f2d934cf3b136165766044b177e69de4c36fac4d1265b855e1a5b4b7b2b25400fbf4d5eb4619039ffc95555db216991d3050bb6fd966f6e3eeab",
|
|
|
|
0x197fd53cb6c9c89e8689419c2ea745233487ba7666f896a2469fc5269c785160,
|
|
|
|
0x7d31ebf1e510616e541795b6448d387d2119b3fdd0124e5116c53726b6b1cc15
|
|
|
|
0x79480d2dfee9c8dcdc2a28a22b3d49ed193c912390c0be655253028fd8ca883d
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute withdraw, exodusSession: 17
|
|
|
|
// execute withdraw, exodusSession: 17
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000110000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044f3fef3a3000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000110000000000007a6901010101010101010101010101010101010101010000000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044f3fef3a3000000000000000000000000010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000001a400000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"04f31030cf8563dd976d1a823a84e43ebdcc13bb5e5e0d7a2ff372006c71e6ab3d4d0770771682dcd6eff9e13fb3d113b484d7384d08f247760b07149dca1aa234",
|
|
|
|
0x53a249b4952662c3a86a810cff1e530ba354761e4091dee9a8997279160b017b,
|
|
|
|
0x06aad271d98e69d1ff18bf39e6713f347aba0df04d99bc4a9304b780431d12ae
|
|
|
|
0x8042a9b2521d07612ef0fdccaa98ce9561914b20bf75af49310fc36c240073c7
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// execute auditReserves, exodusSession: 18
|
|
|
|
// execute auditReserves, exodusSession: 18
|
|
|
|
vm.prank(ALICE);
|
|
|
|
vm.prank(ALICE);
|
|
|
|
gatekeeper.verify(
|
|
|
|
gatekeeper.verify(
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000120000000000007a69010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000042b7ce50000000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"3137142600000000000000000000000000000000000000000000000000000000000000120000000000007a69010101010101010101010101010101010101010100000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000042b7ce50000000000000000000000000000000000000000000000000000000000",
|
|
|
|
hex"049e5d54fd32dcec64b20943a61763dc760b1e3e9d31948780e2193480d904984c0cdaa8074196c06104557b1a04de6aeeda135e0c3413192f9e4331f3b7447ff2",
|
|
|
|
0xf1f4d62d27c3d0388b2298b621b23cd5791e1b97d4423ffc16b14e81ff0df97c,
|
|
|
|
0x43ed5301b16b4b2bc91c28dcfbaecc9949a7fc8fe5c57dfef6229f62493da6d2
|
|
|
|
0xdbeed3eb94a829710147595c1b10f2ac6ec761c9721d8cc4711842c212ac517e
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
address storageHistory = gatekeeper.storageHistory();
|
|
|
|
address storageHistory = gatekeeper.storageHistory();
|
|
|
|
|