From 9fb767756890e97154fa350c18e03e4f9432633e Mon Sep 17 00:00:00 2001 From: mel0ndev Date: Wed, 4 Dec 2024 12:59:29 -0500 Subject: [PATCH 1/4] working integration tests --- .../BTCNFullMinterDecoderAndSanitizer.sol | 12 + .../BTCNMinterDecoderAndSanitizer.sol | 18 ++ .../BTCNMainnetMinterIntegration.t.sol | 224 ++++++++++++++++++ test/resources/ChainValues.sol | 17 ++ .../MerkleTreeHelper/MerkleTreeHelper.sol | 61 +++++ 5 files changed, 332 insertions(+) create mode 100644 src/base/DecodersAndSanitizers/BTCNFullMinterDecoderAndSanitizer.sol create mode 100644 src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol create mode 100644 test/integrations/BTCNMainnetMinterIntegration.t.sol diff --git a/src/base/DecodersAndSanitizers/BTCNFullMinterDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/BTCNFullMinterDecoderAndSanitizer.sol new file mode 100644 index 00000000..8d1fbb22 --- /dev/null +++ b/src/base/DecodersAndSanitizers/BTCNFullMinterDecoderAndSanitizer.sol @@ -0,0 +1,12 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.21; + + +import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import {BTCNMinterDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol"; + + +contract BTCNFullMinterDecoderAndSanitizer is BTCNMinterDecoderAndSanitizer { + + constructor(address _boringVault) BTCNMinterDecoderAndSanitizer(_boringVault) {} +} diff --git a/src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol new file mode 100644 index 00000000..9c1d4188 --- /dev/null +++ b/src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.21; + +import {BaseDecoderAndSanitizer, DecoderCustomTypes} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; + +abstract contract BTCNMinterDecoderAndSanitizer is BaseDecoderAndSanitizer { + + constructor(address _boringVault) BaseDecoderAndSanitizer(_boringVault){} + + function swapExactCollateralForDebt(uint256 /*collateralIn*/, uint256 /*debtOutMin*/, address to, uint256 /*deadline*/) external pure virtual returns (bytes memory addressesFound) { + return abi.encodePacked(to); + } + + function swapExactDebtForCollateral(uint256 /*debtIn*/, uint256 /*collateralOutMin*/, address to, uint256 /*deadline*/) external pure virtual returns (bytes memory addressesFound) { + return abi.encodePacked(to); + } +} + diff --git a/test/integrations/BTCNMainnetMinterIntegration.t.sol b/test/integrations/BTCNMainnetMinterIntegration.t.sol new file mode 100644 index 00000000..4ad8be91 --- /dev/null +++ b/test/integrations/BTCNMainnetMinterIntegration.t.sol @@ -0,0 +1,224 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.21; + +import {MainnetAddresses} from "test/resources/MainnetAddresses.sol"; +import {BoringVault} from "src/base/BoringVault.sol"; +import {ManagerWithMerkleVerification} from "src/base/Roles/ManagerWithMerkleVerification.sol"; +import {SafeTransferLib} from "@solmate/utils/SafeTransferLib.sol"; +import {FixedPointMathLib} from "@solmate/utils/FixedPointMathLib.sol"; +import {ERC20} from "@solmate/tokens/ERC20.sol"; +import {ERC4626} from "@solmate/tokens/ERC4626.sol"; +import {BTCNFullMinterDecoderAndSanitizer} from + "src/base/DecodersAndSanitizers/BTCNFullMinterDecoderAndSanitizer.sol"; +import {DecoderCustomTypes} from "src/interfaces/DecoderCustomTypes.sol"; +import {RolesAuthority, Authority} from "@solmate/auth/authorities/RolesAuthority.sol"; +import {MerkleTreeHelper} from "test/resources/MerkleTreeHelper/MerkleTreeHelper.sol"; + +import {Test, stdStorage, StdStorage, stdError, console} from "@forge-std/Test.sol"; + +contract BTCNMinterIntegrationTest is Test, MerkleTreeHelper { + using SafeTransferLib for ERC20; + using FixedPointMathLib for uint256; + using stdStorage for StdStorage; + + ManagerWithMerkleVerification public manager; + BoringVault public boringVault; + address public rawDataDecoderAndSanitizer; + RolesAuthority public rolesAuthority; + + uint8 public constant MANAGER_ROLE = 1; + uint8 public constant STRATEGIST_ROLE = 2; + uint8 public constant MANGER_INTERNAL_ROLE = 3; + uint8 public constant ADMIN_ROLE = 4; + uint8 public constant BORING_VAULT_ROLE = 5; + uint8 public constant BALANCER_VAULT_ROLE = 6; + + function setUp() external { + setSourceChainName("mainnet"); + // Setup forked environment. + string memory rpcKey = "MAINNET_RPC_URL"; + uint256 blockNumber = 21328932; + + _startFork(rpcKey, blockNumber); + + boringVault = new BoringVault(address(this), "Boring Vault", "BV", 18); + + manager = + new ManagerWithMerkleVerification(address(this), address(boringVault), getAddress(sourceChain, "vault")); + + rawDataDecoderAndSanitizer = address(new BTCNFullMinterDecoderAndSanitizer(address(boringVault))); + + setAddress(false, sourceChain, "boringVault", address(boringVault)); + setAddress(false, sourceChain, "rawDataDecoderAndSanitizer", rawDataDecoderAndSanitizer); + setAddress(false, sourceChain, "manager", address(manager)); + setAddress(false, sourceChain, "managerAddress", address(manager)); + setAddress(false, sourceChain, "accountantAddress", address(1)); + + rolesAuthority = new RolesAuthority(address(this), Authority(address(0))); + boringVault.setAuthority(rolesAuthority); + manager.setAuthority(rolesAuthority); + + // Setup roles authority. + rolesAuthority.setRoleCapability( + MANAGER_ROLE, + address(boringVault), + bytes4(keccak256(abi.encodePacked("manage(address,bytes,uint256)"))), + true + ); + rolesAuthority.setRoleCapability( + MANAGER_ROLE, + address(boringVault), + bytes4(keccak256(abi.encodePacked("manage(address[],bytes[],uint256[])"))), + true + ); + + rolesAuthority.setRoleCapability( + STRATEGIST_ROLE, + address(manager), + ManagerWithMerkleVerification.manageVaultWithMerkleVerification.selector, + true + ); + rolesAuthority.setRoleCapability( + MANGER_INTERNAL_ROLE, + address(manager), + ManagerWithMerkleVerification.manageVaultWithMerkleVerification.selector, + true + ); + rolesAuthority.setRoleCapability( + ADMIN_ROLE, address(manager), ManagerWithMerkleVerification.setManageRoot.selector, true + ); + rolesAuthority.setRoleCapability( + BORING_VAULT_ROLE, address(manager), ManagerWithMerkleVerification.flashLoan.selector, true + ); + rolesAuthority.setRoleCapability( + BALANCER_VAULT_ROLE, address(manager), ManagerWithMerkleVerification.receiveFlashLoan.selector, true + ); + + // Grant roles + rolesAuthority.setUserRole(address(this), STRATEGIST_ROLE, true); + rolesAuthority.setUserRole(address(manager), MANGER_INTERNAL_ROLE, true); + rolesAuthority.setUserRole(address(this), ADMIN_ROLE, true); + rolesAuthority.setUserRole(address(manager), MANAGER_ROLE, true); + rolesAuthority.setUserRole(address(boringVault), BORING_VAULT_ROLE, true); + rolesAuthority.setUserRole(getAddress(sourceChain, "vault"), BALANCER_VAULT_ROLE, true); + + } + + function testBTCNMinter() public { + //address _authority, + //address _feeRecipient, + //uint256 _swapInFeeRate, + //uint256 _swapOutFeeRate, + //uint256 _mintCap + + //initialize so we can swap + //ISwapFacility(cornSwap).initialize( + // getAddress(sourceChain, "boringVault"), + // getAddress(sourceChain, "boringVault"), + // 0, + // 0, + // 100_000_000e18 + //); + + address cornSwap = getAddress(sourceChain, "cornSwapFacility"); + address authority = 0x515C7d8Fcb950f8b030ac08C994b37b4b8F3F7B5; + address admin = 0xaD2Bef31Db723b8ad1B9BCa41b0F1EBAfD1193d1; + address operator = 0x3964e3572505C1bF51496f9129249E77F55fD044; + vm.startPrank(admin); + IRolesAuthority(authority).setUserRole(address(boringVault), 11, true); + IRolesAuthority(authority).setUserRole(address(boringVault), 12, true); + vm.stopPrank(); + + vm.startPrank(operator); + ISwapFacility(cornSwap).setSwapInEnabled(true); + ISwapFacility(cornSwap).setSwapOutEnabled(true); + vm.stopPrank(); + + assertEq(ISwapFacility(cornSwap).swapInEnabled(), true); + assertEq(ISwapFacility(cornSwap).swapOutEnabled(), true); + + deal(getAddress(sourceChain, "WBTC"), address(boringVault), 10000e18); + + ManageLeaf[] memory leafs = new ManageLeaf[](4); + _addBTCNLeafs( + leafs, + getERC20(sourceChain, "WBTC"), + getERC20(sourceChain, "BTCN"), + getAddress(sourceChain, "cornSwapFacility") + ); + bytes32[][] memory manageTree = _generateMerkleTree(leafs); + manager.setManageRoot(address(this), manageTree[manageTree.length - 1][0]); + + ManageLeaf[] memory manageLeafs = new ManageLeaf[](4); + manageLeafs[0] = leafs[0]; + manageLeafs[1] = leafs[1]; + manageLeafs[2] = leafs[2]; + manageLeafs[3] = leafs[3]; + + bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); + + address[] memory targets = new address[](4); + targets[0] = getAddress(sourceChain, "WBTC"); + targets[1] = getAddress(sourceChain, "BTCN"); + targets[2] = getAddress(sourceChain, "cornSwapFacility"); + targets[3] = getAddress(sourceChain, "cornSwapFacility"); + + bytes[] memory targetData = new bytes[](4); + targetData[0] = + abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "cornSwapFacility"), 10000e8); + targetData[1] = + abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "cornSwapFacility"), 10000e8); + targetData[2] = abi.encodeWithSignature( + "swapExactCollateralForDebt(uint256,uint256,address,uint256)", + 1e6, + 0, + getAddress(sourceChain, "boringVault"), + block.timestamp + 1 + ); + targetData[3] = abi.encodeWithSignature( + "swapExactDebtForCollateral(uint256,uint256,address,uint256)", + 1e6, //we should get 1:1, I think + 0, + getAddress(sourceChain, "boringVault"), + block.timestamp + 1 + ); + + uint256[] memory values = new uint256[](4); + address[] memory decodersAndSanitizers = new address[](4); + decodersAndSanitizers[0] = rawDataDecoderAndSanitizer; + decodersAndSanitizers[1] = rawDataDecoderAndSanitizer; + decodersAndSanitizers[2] = rawDataDecoderAndSanitizer; + decodersAndSanitizers[3] = rawDataDecoderAndSanitizer; + + manager.manageVaultWithMerkleVerification(manageProofs, decodersAndSanitizers, targets, targetData, values); + + } + + // ========================================= HELPER FUNCTIONS ========================================= + + function _startFork(string memory rpcKey, uint256 blockNumber) internal returns (uint256 forkId) { + forkId = vm.createFork(vm.envString(rpcKey), blockNumber); + vm.selectFork(forkId); + } +} + +interface ISwapFacility { + function initialize( + address _authority, + address _feeRecipient, + uint256 _swapInFeeRate, + uint256 _swapOutFeeRate, + uint256 _mintCap + ) external; + + function setSwapInEnabled(bool enabled) external; + function setSwapOutEnabled(bool enabled) external; + + function swapInEnabled() external view returns (bool); + function swapOutEnabled() external view returns (bool); +} + +interface IRolesAuthority { + function setUserRole(address user, uint8 role, bool enabled) external; +} + diff --git a/test/resources/ChainValues.sol b/test/resources/ChainValues.sol index 0c457ddb..90c74a10 100644 --- a/test/resources/ChainValues.sol +++ b/test/resources/ChainValues.sol @@ -20,6 +20,7 @@ contract ChainValues { string public constant linea = "linea"; string public constant scroll = "scroll"; string public constant fraxtal = "fraxtal"; + string public constant corn = "corn"; string public constant holesky = "holesky"; // Bridging constants. @@ -82,6 +83,7 @@ contract ChainValues { _addScrollValues(); _addFraxtalValues(); _addBscValues(); + _addCornValues(); // Add testnet values _addHoleskyValues(); @@ -178,6 +180,7 @@ contract ChainValues { values[mainnet]["ZRO"] = 0x6985884C4392D348587B19cb9eAAf157F13271cd.toBytes32(); values[mainnet]["eBTC"] = 0x657e8C867D8B37dCC18fA4Caead9C45EB088C642.toBytes32(); values[mainnet]["USDS"] = 0xdC035D45d973E3EC169d2276DDab16f1e407384F.toBytes32(); + values[mainnet]["BTCN"] = 0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6.toBytes32(); // Rate providers values[mainnet]["WEETH_RATE_PROVIDER"] = 0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee.toBytes32(); @@ -837,6 +840,7 @@ contract ChainValues { // corn values[mainnet]["cornSilo"] = 0x8bc93498b861fd98277c3b51d240e7E56E48F23c.toBytes32(); + values[mainnet]["cornSwapFacility"] = 0x5f5ec4E17a2c2851D8c42B78Fc1A3d2c57070732.toBytes32(); // Treehouse values[mainnet]["TreehouseRedemption"] = 0x0618DBdb3Be798346e6D9C08c3c84658f94aD09F.toBytes32(); @@ -858,6 +862,7 @@ contract ChainValues { values[mainnet]["hyperlaneUsdcRouter"] = 0xe1De9910fe71cC216490AC7FCF019e13a34481D7.toBytes32(); values[mainnet]["hyperlaneTestRecipient"] = 0xfb53392bf4a0590a317ca716c28c29ace7c448bc132d7f8188ca234f595aa121; + } function _addBaseValues() private { @@ -1259,4 +1264,16 @@ contract ChainValues { //Balancer (not deployed on BSC, but needed for merkle manager) values[bsc]["vault"] = 0xBA12222222228d8Ba445958a75a0704d566BF2C8.toBytes32(); } + + function _addCornValues() private { + values[corn]["deployerAddress"] = 0x5F2F11ad8656439d5C14d9B351f8b09cDaC2A02d.toBytes32(); + values[corn]["dev0Address"] = 0x0463E60C7cE10e57911AB7bD1667eaa21de3e79b.toBytes32(); + values[corn]["dev1Address"] = 0xf8553c8552f906C19286F21711721E206EE4909E.toBytes32(); + + // Tokens + values[corn]["WBTCN"] = 0xda5dDd7270381A7C2717aD10D1c0ecB19e3CDFb2.toBytes32(); + + //Balancer (not deployed on Corn, but needed for merkle manager) + values[corn]["vault"] = 0xBA12222222228d8Ba445958a75a0704d566BF2C8.toBytes32(); + } } diff --git a/test/resources/MerkleTreeHelper/MerkleTreeHelper.sol b/test/resources/MerkleTreeHelper/MerkleTreeHelper.sol index a4b0647f..fde7df3b 100644 --- a/test/resources/MerkleTreeHelper/MerkleTreeHelper.sol +++ b/test/resources/MerkleTreeHelper/MerkleTreeHelper.sol @@ -5895,6 +5895,67 @@ contract MerkleTreeHelper is CommonBase, ChainValues { leafs[leafIndex].argumentAddresses[0] = ETH; leafs[leafIndex].argumentAddresses[1] = referral; } + + // ============================================= BTCN Corn ================================================== + + function _addBTCNLeafs(ManageLeaf[] memory leafs, ERC20 WBTC, ERC20 BTCN, address cornSwapFacility) internal { + unchecked { + leafIndex++; + } + + leafs[leafIndex] = ManageLeaf( + address(WBTC), //target + false, + "approve(address,uint256)", + new address[](1), + string.concat("Approve WBTC to be swapped for BTCN by the Corn SwapFacility Contract"), + getAddress(sourceChain, "rawDataDecoderAndSanitizer") + ); + leafs[leafIndex].argumentAddresses[0] = cornSwapFacility; + + unchecked { + leafIndex++; + } + + leafs[leafIndex] = ManageLeaf( + address(BTCN), //target + false, + "approve(address,uint256)", + new address[](1), + string.concat("Approve BTCN to be swapped for WBTC by the Corn SwapFacility Contract"), + getAddress(sourceChain, "rawDataDecoderAndSanitizer") + ); + leafs[leafIndex].argumentAddresses[0] = cornSwapFacility; + + unchecked { + leafIndex++; + } + + leafs[leafIndex] = ManageLeaf( + cornSwapFacility, //target + false, + "swapExactCollateralForDebt(uint256,uint256,address,uint256)", + new address[](1), + string.concat("Swap WBTC for BTCN"), + getAddress(sourceChain, "rawDataDecoderAndSanitizer") + ); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); + + unchecked { + leafIndex++; + } + + leafs[leafIndex] = ManageLeaf( + cornSwapFacility, //target + false, + "swapExactDebtForCollateral(uint256,uint256,address,uint256)", + new address[](1), + string.concat("Swap BTCN for WBTC"), + getAddress(sourceChain, "rawDataDecoderAndSanitizer") + ); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); + + } // ========================================= BoringVault Teller ========================================= From 41cb5121ccb4b03c99b4f29648f46a11bc4e7e11 Mon Sep 17 00:00:00 2001 From: mel0ndev Date: Mon, 16 Dec 2024 14:33:19 -0500 Subject: [PATCH 2/4] deploy decoder and create merkle root --- leafs/Mainnet/sBTCNStrategistLeafs.json | 135 +++++++++++ script/DeployDecoderAndSanitizer.s.sol | 38 +-- .../Mainnet/CreateAeraTestMerkleRoot.s.sol | 11 +- .../CreateEtherFiEigenMerkleRoot.s.sol | 2 +- .../Mainnet/CreateLoopBTCMerkleRoot.s.sol | 8 +- .../Mainnet/CreateStakedBTCNMerkleRoot.s.sol | 80 ++++++ .../AeraVaultFullDecoderAndSanitizer.sol | 3 +- .../BTCNFullMinterDecoderAndSanitizer.sol | 7 +- .../FluidDexFullDecoderAndSanitizer.sol | 5 +- .../LombardBtcDecoderAndSanitizer.sol | 10 +- ...ombardBtcFullMinterDecoderAndSanitizer.sol | 6 +- .../Protocols/AaveV3DecoderAndSanitizer.sol | 4 +- .../AeraVaultDecoderAndSanitizer.sol | 23 +- .../BTCNMinterDecoderAndSanitizer.sol | 22 +- .../Protocols/FluidDexDecoderAndSanitizer.sol | 71 +++--- .../ITB/aave/AaveDecoderAndSanitizer.sol | 10 +- .../common/ITBContractDecoderAndSanitizer.sol | 6 +- .../ConvexDecoderAndSanitizer.sol | 12 +- .../CurveAndConvexDecoderAndSanitizer.sol | 12 +- .../CurveNoConfigDecoderAndSanitizer.sol | 12 +- .../gearbox/GearboxDecoderAndSanitizer.sol | 10 +- .../LombardBtcMinterDecoderAndSanitizer.sol | 27 ++- .../Protocols/WeEthDecoderAndSanitizer.sol | 12 +- .../TermFinanceDecoderAndSanitizer.sol | 41 ++-- .../WeEthFullDecoderAndSanitizer.sol | 3 +- .../sBTCNDecoderAndSanitizer.sol | 21 ++ src/interfaces/DecoderCustomTypes.sol | 7 +- test/MerkleTreeChecker.t.sol | 4 +- test/integrations/AaveV3Integration.t.sol | 14 +- test/integrations/AeraVaultIntegration.t.sol | 93 +++---- .../BTCNMainnetMinterIntegration.t.sol | 197 +++++++++++---- test/integrations/FluidDexIntegration.t.sol | 229 ++++++++++-------- test/integrations/LombardBtcStaking.t.sol | 150 +++++------- .../integrations/TermFinanceIntegration.t.sol | 49 ++-- test/integrations/WeETHIntegration.t.sol | 65 +++-- test/resources/ChainValues.sol | 58 +++-- .../MerkleTreeHelper/MerkleTreeHelper.sol | 200 ++++++++------- 37 files changed, 1007 insertions(+), 650 deletions(-) create mode 100644 leafs/Mainnet/sBTCNStrategistLeafs.json create mode 100644 script/MerkleRootCreation/Mainnet/CreateStakedBTCNMerkleRoot.s.sol create mode 100644 src/base/DecodersAndSanitizers/sBTCNDecoderAndSanitizer.sol diff --git a/leafs/Mainnet/sBTCNStrategistLeafs.json b/leafs/Mainnet/sBTCNStrategistLeafs.json new file mode 100644 index 00000000..0d3baf83 --- /dev/null +++ b/leafs/Mainnet/sBTCNStrategistLeafs.json @@ -0,0 +1,135 @@ +{ "metadata": +{"AccountantAddress":"0x9A22F5dC4Ec86184D4771E620eb75D52E7b9E043","BoringVaultAddress":"0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089","DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","DigestComposition":["Bytes20(DECODER_AND_SANITIZER_ADDRESS)","Bytes20(TARGET_ADDRESS)","Bytes1(CAN_SEND_VALUE)","Bytes4(TARGET_FUNCTION_SELECTOR)","Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)"],"LeafCount":39,"ManageRoot":"0x486112f2493dc25d93d82779ddd6f7f8488f637c21194d3636c37328ca3086ac","ManagerAddress":"0x5239158272D1f626aF9ef3353489D3Cb68439D66","TreeCapacity":64} +, +"leafs": [ +{"AddressArguments":["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 NonFungible Position Manager to spend WBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xad6bcaf827bca1b809499b7747a23f23dc8c400bb9d0f61f12ebff6e53d4d918","PackedArgumentAddresses":"0xc36442b4a4522e871399cd717abdd847ab11fe88","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} +, +{"AddressArguments":["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 NonFungible Position Manager to spend cbBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xa693189093460697320475628423a7a79a1a6cb20f51b597d5dadb1f43f91c9d","PackedArgumentAddresses":"0xc36442b4a4522e871399cd717abdd847ab11fe88","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} +, +{"AddressArguments":["0xE592427A0AEce92De3Edee1F18E0157C05861564"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 Router to spend WBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xe3d862144f7e205958b9f5153223edc749f11f1dbabcbb6d7065390af40dd053","PackedArgumentAddresses":"0xe592427a0aece92de3edee1f18e0157c05861564","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} +, +{"AddressArguments":["0xE592427A0AEce92De3Edee1F18E0157C05861564"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 Router to spend cbBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xa17d25a123fd8e26a1376f1390cfcf87019b0c2eefb4a749c6ea26bffba33d07","PackedArgumentAddresses":"0xe592427a0aece92de3edee1f18e0157c05861564","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} +, +{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Mint UniswapV3 WBTC cbBTC position","FunctionSelector":"0x88316456","FunctionSignature":"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))","LeafDigest":"0x6f2d30afeb7e252fd620214a27c963e65217ae442a92328f55bf652ccd05c76d","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x0000000000000000000000000000000000000000","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Add liquidity to UniswapV3 WBTC cbBTC position","FunctionSelector":"0x219f5d17","FunctionSignature":"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))","LeafDigest":"0xc9c273a998e2e3c7bc36bae8c1ee1bdd99781473e9aa69a5a890b5e88efc4128","PackedArgumentAddresses":"0x00000000000000000000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for cbBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x283495f62f4de0e4b2b1c4789d8c799dde0b4edd2c85a3c1c0119ae2e2f1c0f6","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":["0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for WBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x63de83700ee38e95eeff4324d6d3f89dbf0d117aa9587785fd7cc9e0056e7e1f","PackedArgumentAddresses":"0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf2260fac5e5542a773aa44fbcfedf7c193bc2c5995e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 NonFungible Position Manager to spend LBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x04ec0da77f5e51062c7772b27723194304aaef94470ea4d68514c2249e17c023","PackedArgumentAddresses":"0xc36442b4a4522e871399cd717abdd847ab11fe88","TargetAddress":"0x8236a87084f8B84306f72007F36F2618A5634494"} +, +{"AddressArguments":["0xE592427A0AEce92De3Edee1F18E0157C05861564"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 Router to spend LBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x240bdb0846157d4e805fb509d90f55da888434cbe7eb930f9ba7e9e68b54fcd3","PackedArgumentAddresses":"0xe592427a0aece92de3edee1f18e0157c05861564","TargetAddress":"0x8236a87084f8B84306f72007F36F2618A5634494"} +, +{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Mint UniswapV3 WBTC LBTC position","FunctionSelector":"0x88316456","FunctionSignature":"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))","LeafDigest":"0x49d9e67d88de9e7a04b957ee70f3e19d053429d49b8a93806cb93a4f6cf8bdde","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x0000000000000000000000000000000000000000","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Add liquidity to UniswapV3 WBTC LBTC position","FunctionSelector":"0x219f5d17","FunctionSignature":"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))","LeafDigest":"0x3d8e43973285a75f163e8ffda0e37de63bba478481d11fcccbabf9df92cd58eb","PackedArgumentAddresses":"0x00000000000000000000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a5634494","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for LBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x4643a014c4bf9a0b0edc6831af6b499e42f16651b955cad54463bb1cb06e1de4","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":["0x8236a87084f8B84306f72007F36F2618A5634494","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for WBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0xa693a1ab5f7812d7e0fd77044565253f6fcb91c4e580e196522bf99a6ada8922","PackedArgumentAddresses":"0x8236a87084f8b84306f72007f36f2618a56344942260fac5e5542a773aa44fbcfedf7c193bc2c5995e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":["0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Mint UniswapV3 LBTC cbBTC position","FunctionSelector":"0x88316456","FunctionSignature":"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))","LeafDigest":"0xa5cd0ec782224597f8411c8a8fadeffd145d464771b46808d7bbbd0f0dfc117f","PackedArgumentAddresses":"0x8236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x0000000000000000000000000000000000000000","0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Add liquidity to UniswapV3 LBTC cbBTC position","FunctionSelector":"0x219f5d17","FunctionSignature":"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))","LeafDigest":"0x99ca4169e67e2f7e21ebb7f9e4b784b280e6b6a5d8fecf07890a13927e4677e0","PackedArgumentAddresses":"0x00000000000000000000000000000000000000008236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for cbBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x112585178414bcb7979814a363abb8631b17feb36efdebf0a84d69b8466e6ac9","PackedArgumentAddresses":"0x8236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":["0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x8236a87084f8B84306f72007F36F2618A5634494","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for LBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x6ed7ec1cef43ee8c440c9bbb56d22ee19c0cf8b040ea3a9f595aa6f9f84e995e","PackedArgumentAddresses":"0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf8236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Remove liquidity from UniswapV3 position","FunctionSelector":"0x0c49ccbe","FunctionSignature":"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))","LeafDigest":"0xd019e5a8892447516b796d0238ec4f6ca89859380ab900db42b2272c6887dce6","PackedArgumentAddresses":"0x","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Collect fees from UniswapV3 position","FunctionSelector":"0xfc6f7865","FunctionSignature":"collect((uint256,address,uint128,uint128))","LeafDigest":"0x18365ac1a4ca934174097f6bf4290df93096df2a38e770568b63d782c1c4f1f6","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Burn UniswapV3 position","FunctionSelector":"0x42966c68","FunctionSignature":"burn(uint256)","LeafDigest":"0x6f54f61850abf33393cbd9a6821decf80ca1b041df95a0c14ca92da4fc0c78eb","PackedArgumentAddresses":"0x","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x1111111254EEB25477B68fb85Ed929f73A960582"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve 1Inch router to spend WBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x40f30fc6afa6303c78f1c3fa82cedbe8b5714876a0763367ca303886ce8656aa","PackedArgumentAddresses":"0x1111111254eeb25477b68fb85ed929f73a960582","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for LBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x11b5e1b8eaccf01e75439b40c376d663ce875630a6b8b79b9f2d2b827682533e","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8122260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344943451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x8236a87084f8B84306f72007F36F2618A5634494","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for WBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x441b882eb0f510b04c4b41b9c4d65325f58ca892bcdc1d3a16e252d60f846fd8","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8128236a87084f8b84306f72007f36f2618a56344942260fac5e5542a773aa44fbcfedf7c193bc2c5993451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for cbBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0xfa5eb5b9404ea96ae0e2f72d11d85d5265ac1bc37ac5477e14ae1ea74ae9b569","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8122260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf3451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for WBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x9c6d57ee8a68faea38379eaef5413ca1685b94ad99754708ce3ca7be162c67cd","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e812cbb7c0000ab88b473b1f5afd9ef808440eed33bf2260fac5e5542a773aa44fbcfedf7c193bc2c5993451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x1111111254EEB25477B68fb85Ed929f73A960582"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve 1Inch router to spend LBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xe61057ea96a5f7fa65b70136eb569f245cbf13631f858852b10cf4a5a685ef64","PackedArgumentAddresses":"0x1111111254eeb25477b68fb85ed929f73a960582","TargetAddress":"0x8236a87084f8B84306f72007F36F2618A5634494"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for cbBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0xa40a9262ecb19fef27370acc35440a72c741c5ef9eae3d2b228971588c74ecd8","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8128236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf3451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x8236a87084f8B84306f72007F36F2618A5634494","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for LBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x25c63688d1cdc7767811f1b1a9d3ef700a7e092f3c8fa3c34a57fb0b1a2ec9d2","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e812cbb7c0000ab88b473b1f5afd9ef808440eed33bf8236a87084f8b84306f72007f36f2618a56344943451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x1111111254EEB25477B68fb85Ed929f73A960582"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve 1Inch router to spend cbBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xd3e597ac7b7824bdf84119f6e11106b557ce87fd354bd2966fb81f08e9e3ae32","PackedArgumentAddresses":"0x1111111254eeb25477b68fb85ed929f73a960582","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} +, +{"AddressArguments":["0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve WBTC to be swapped for BTCN by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x35fc59fdea63eede5beb478db98961951113472ab48799436fbab788ea211726","PackedArgumentAddresses":"0xbf5eb70b93d5895c839b8beb3c27dc36f6b56fea","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} +, +{"AddressArguments":["0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve BTCN to be swapped for WBTC by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x04d52ba8f2beb413f92acfeb9656ba1e39209782a082ec9b21fc019ed5874a2a","PackedArgumentAddresses":"0xbf5eb70b93d5895c839b8beb3c27dc36f6b56fea","TargetAddress":"0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6"} +, +{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for BTCN","FunctionSelector":"0x3cb50d7d","FunctionSignature":"swapExactCollateralForDebt(uint256,uint256,address,uint256)","LeafDigest":"0x6606efb1d6dc67f2cbe79812126871b8531abd608e18eed1d06fd12103c24210","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"} +, +{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap BTCN for WBTC","FunctionSelector":"0x98ad990a","FunctionSignature":"swapExactDebtForCollateral(uint256,uint256,address,uint256)","LeafDigest":"0xce9b3fba26d920a502d1dc68d2d73204d0410f89abdaef0dfa98df24e1091559","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"} +, +{"AddressArguments":["0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve cbBTC to be swapped for BTCN by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xe623090e9a96650bf12e9378c5ec6845b255a5ae8e876e484ae9f360d4f470ed","PackedArgumentAddresses":"0x554335b8c994e47e6dbfdc08fa8aca0510e66ba1","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} +, +{"AddressArguments":["0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve BTCN to be swapped for cbBTC by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xb02a8e07c7d981cadd74bab68e96a3319bc418a10db2730ad2f0570181776165","PackedArgumentAddresses":"0x554335b8c994e47e6dbfdc08fa8aca0510e66ba1","TargetAddress":"0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6"} +, +{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for BTCN","FunctionSelector":"0x3cb50d7d","FunctionSignature":"swapExactCollateralForDebt(uint256,uint256,address,uint256)","LeafDigest":"0x669e93ed03e14b38f65a3c0e1dcaf11ca4171204c1b8ea86d092cc1d6cec2367","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"} +, +{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap BTCN for cbBTC","FunctionSelector":"0x98ad990a","FunctionSignature":"swapExactDebtForCollateral(uint256,uint256,address,uint256)","LeafDigest":"0xb50ff4166d04da36b20e418b1adfa1b44e05158659370faf667467c0891cb148","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"} +, +{"AddressArguments":["0x000000000000000000000000000000000000767b","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":true,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Bridge BTCN to LayerZero endpoint: 30331","FunctionSelector":"0xc7c7f5b3","FunctionSignature":"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)","LeafDigest":"0xd691b803e14bd56dc959631e532fb0f3024c54c73d90ef1bb77f60deb4e25f8d","PackedArgumentAddresses":"0x000000000000000000000000000000000000767b5e272ca4bd94e57ec5c51d26703621ccac1a70895e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +], +"MerkleTree": +{"0":["0x486112f2493dc25d93d82779ddd6f7f8488f637c21194d3636c37328ca3086ac"],"1":["0x2a337d46daadba4bdacf63be1c4403b3c63145ea3ba13f42d1e48f92b626ee63","0x896437b9bae5efce5048641132419bfd9642e1339bc2c76d10a551784d81f0b1"],"2":["0x049b3dd161ece9ff679ecb07b47253653b250a458e2a3344e86e7572a8b7e8b2","0x76bbd7a493bb1f65e96ca16a3c17488ca650c0c9503795e0838a7452f3b27b45","0x40998d88018d3b1bdedc8ab1d61edd2ce6b4311abd0c45836c04b90ce84d761b","0xc8e2d8c65f68c2edf703a349b0189c66520f43472e76097f69a501107adf656c"],"3":["0x4cb9bbd04f448fe7817c38f51d8558c9f84cc37a86cb81a3753b315aa501288f","0x93383ce12de8c167c1f0213a845e5b66c16ec79c9f53f6a9803b7650173b8c9e","0xf2e04b0fd4acafb0315aa770476572d4fbc944f0cc820dd40c3e50596e6a4801","0x24d94193ad48eac1c1cb67455b66be55895c7c62f7e940d5225bc9c18305ebc0","0xe7406ae7e46cd5322f0171717b92196cb7f151e897c2016ecc9b75d79b9032b5","0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704","0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704","0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704"],"4":["0xf3eaf755db59cb2fff167883d6c299788edf6341c723a4f5d735daf7ea91c0a8","0xfd30e948cc7d9c5ff21232fcaa19b38ba985b4ec9734031bde1bba5859500905","0x974f4c9da13cedff34a06ce667e9fd82dbe489158e0f7c85efb4f00877f8de3a","0xb9fc9decfe1c406bd41d695ddf00c37def749dee6f7a893022177dbc99e16d24","0xe9fb9ea261358bd38ef529cdd300a6d9bd1e7b348d2514613a4b974ad9fd9168","0x12dfc15c3f35313497acb433ab6c48d353340e4f5b890ad8c332ba0b9212d61d","0x2ffddc32c92354854ed50a74c87cfadf213a07929dc731ac77821ec3dbc5c0d2","0xc3b42570c3844ae3a81f3038a0eb27f15b8936b26b87262c52ce9ca7c7fd71e9","0xc203cbc4823373be6e008dd142ef1e72583833b2d7e07df127b82195725179f8","0x6c7c707ca7cb20909e009d5ce9ea388961d928cc02b7dcc99f6492c0184e6854","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe"],"5":["0x09d02fe1d9f4df375aee79fd23823276578fa12d7290a844958f3c7b10503d56","0xea245d1fc712d3d97b14f7572af7c6da5c7caf601ca09c3cea20b0281c9d8d84","0x6b0f8be85a043bc398a3118e8957ab001b3ba3a4deb6c01c3654be7064a42143","0x0b409e21c82c1890a1200dac817ec5162af4429f64c32989c1eafd0dbf5d3d09","0x300bcf2646926db85278c5f6343ef2ad53b96976a08f82d659f5c658aa9dc1a7","0x56044082e18e84995d895d64f63f67de9d7c14693667aa413f436738b5973a10","0x3652d23f60d02d3465bdcdedbf356b8f65b542820c1a6abe3562ec5b7532bfdf","0xe1d08d2930b6ce30c12872c3f77cc3bfdd8c6d5d4bca141f27108bd0d6179190","0xc1554b04ecec1e832919e86bda670429160987d754d51cf23cd89d8dee97019c","0x1712b68d97a5e4805e7d896ac958d4de9addcb6b83d20391b0d916aeb91fd883","0xd4d13c9a47265077b4f18eaef217fd30b08fc04647389de6a601461cd3e51517","0x4c2b3d94719f90c50020f29223b4de002871fc229cf6e27ba5e854e6060ad728","0x29d11d34e3ef38ba7c894d96b3528d7ac83358cd2c9d4a4f813ee6aea16c8c26","0xdaf7a7a0c972aba9669666c45790b9fd87987703082725925f59b35b7f04a84a","0x5ac510d17cf6db882d2f7796553101f13fdd01441cd6d2b04e2fb70f41165399","0x4549148faf39f75a7062e6b45498404be67bd22fd184ad4faf632e5642e0046f","0xa24606fb3ba268657ba228cdee4bcfb8ca3cf95a80a5655badd681f63092f76b","0xa1c40ffb7cb430aea8f8a9c008a0993e00adddac7a5423c9fbfdff42564d90e5","0xaee2770b18c9381b3262e6448502e95b99301046dff5bd70c5c8b242a1f15c67","0xbf1307a058a3bcd26ce648f04b0abf994b6cc9208a25d7f119e2f2e30fbc907b","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba"],"6":["0xad6bcaf827bca1b809499b7747a23f23dc8c400bb9d0f61f12ebff6e53d4d918","0xa693189093460697320475628423a7a79a1a6cb20f51b597d5dadb1f43f91c9d","0xe3d862144f7e205958b9f5153223edc749f11f1dbabcbb6d7065390af40dd053","0xa17d25a123fd8e26a1376f1390cfcf87019b0c2eefb4a749c6ea26bffba33d07","0x6f2d30afeb7e252fd620214a27c963e65217ae442a92328f55bf652ccd05c76d","0xc9c273a998e2e3c7bc36bae8c1ee1bdd99781473e9aa69a5a890b5e88efc4128","0x283495f62f4de0e4b2b1c4789d8c799dde0b4edd2c85a3c1c0119ae2e2f1c0f6","0x63de83700ee38e95eeff4324d6d3f89dbf0d117aa9587785fd7cc9e0056e7e1f","0x04ec0da77f5e51062c7772b27723194304aaef94470ea4d68514c2249e17c023","0x240bdb0846157d4e805fb509d90f55da888434cbe7eb930f9ba7e9e68b54fcd3","0x49d9e67d88de9e7a04b957ee70f3e19d053429d49b8a93806cb93a4f6cf8bdde","0x3d8e43973285a75f163e8ffda0e37de63bba478481d11fcccbabf9df92cd58eb","0x4643a014c4bf9a0b0edc6831af6b499e42f16651b955cad54463bb1cb06e1de4","0xa693a1ab5f7812d7e0fd77044565253f6fcb91c4e580e196522bf99a6ada8922","0xa5cd0ec782224597f8411c8a8fadeffd145d464771b46808d7bbbd0f0dfc117f","0x99ca4169e67e2f7e21ebb7f9e4b784b280e6b6a5d8fecf07890a13927e4677e0","0x112585178414bcb7979814a363abb8631b17feb36efdebf0a84d69b8466e6ac9","0x6ed7ec1cef43ee8c440c9bbb56d22ee19c0cf8b040ea3a9f595aa6f9f84e995e","0xd019e5a8892447516b796d0238ec4f6ca89859380ab900db42b2272c6887dce6","0x18365ac1a4ca934174097f6bf4290df93096df2a38e770568b63d782c1c4f1f6","0x6f54f61850abf33393cbd9a6821decf80ca1b041df95a0c14ca92da4fc0c78eb","0x40f30fc6afa6303c78f1c3fa82cedbe8b5714876a0763367ca303886ce8656aa","0x11b5e1b8eaccf01e75439b40c376d663ce875630a6b8b79b9f2d2b827682533e","0x441b882eb0f510b04c4b41b9c4d65325f58ca892bcdc1d3a16e252d60f846fd8","0xfa5eb5b9404ea96ae0e2f72d11d85d5265ac1bc37ac5477e14ae1ea74ae9b569","0x9c6d57ee8a68faea38379eaef5413ca1685b94ad99754708ce3ca7be162c67cd","0xe61057ea96a5f7fa65b70136eb569f245cbf13631f858852b10cf4a5a685ef64","0xa40a9262ecb19fef27370acc35440a72c741c5ef9eae3d2b228971588c74ecd8","0x25c63688d1cdc7767811f1b1a9d3ef700a7e092f3c8fa3c34a57fb0b1a2ec9d2","0xd3e597ac7b7824bdf84119f6e11106b557ce87fd354bd2966fb81f08e9e3ae32","0x35fc59fdea63eede5beb478db98961951113472ab48799436fbab788ea211726","0x04d52ba8f2beb413f92acfeb9656ba1e39209782a082ec9b21fc019ed5874a2a","0x6606efb1d6dc67f2cbe79812126871b8531abd608e18eed1d06fd12103c24210","0xce9b3fba26d920a502d1dc68d2d73204d0410f89abdaef0dfa98df24e1091559","0xe623090e9a96650bf12e9378c5ec6845b255a5ae8e876e484ae9f360d4f470ed","0xb02a8e07c7d981cadd74bab68e96a3319bc418a10db2730ad2f0570181776165","0x669e93ed03e14b38f65a3c0e1dcaf11ca4171204c1b8ea86d092cc1d6cec2367","0xb50ff4166d04da36b20e418b1adfa1b44e05158659370faf667467c0891cb148","0xd691b803e14bd56dc959631e532fb0f3024c54c73d90ef1bb77f60deb4e25f8d","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400"]} +} diff --git a/script/DeployDecoderAndSanitizer.s.sol b/script/DeployDecoderAndSanitizer.s.sol index 5baff069..7364249a 100644 --- a/script/DeployDecoderAndSanitizer.s.sol +++ b/script/DeployDecoderAndSanitizer.s.sol @@ -16,8 +16,8 @@ import {MainnetAddresses} from "test/resources/MainnetAddresses.sol"; import {ContractNames} from "resources/ContractNames.sol"; import {PointFarmingDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/PointFarmingDecoderAndSanitizer.sol"; import {LombardBtcDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/LombardBtcDecoderAndSanitizer.sol"; -import {AeraVaultFullDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/AeraVaultFullDecoderAndSanitizer.sol"; - +import {AeraVaultFullDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/AeraVaultFullDecoderAndSanitizer.sol"; +import {sBTCNDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/sBTCNDecoderAndSanitizer.sol"; import {BoringDrone} from "src/base/Drones/BoringDrone.sol"; @@ -33,19 +33,19 @@ contract DeployDecoderAndSanitizerScript is Script, Test, ContractNames, Mainnet uint256 public privateKey; Deployer public deployer = Deployer(deployerAddress); - - address boringVault = 0x5401b8620E5FB570064CA9114fd1e135fd77D57c; + //address boringVault = 0x5401b8620E5FB570064CA9114fd1e135fd77D57c; //address boringVault = 0x5401b8620E5FB570064CA9114fd1e135fd77D57c; - //address boringVault = 0x1293b71644e7E55A692Cade85a0EDB381868AA7c; - address eEigen = 0xE77076518A813616315EaAba6cA8e595E845EeE9; + //address boringVault = 0x1293b71644e7E55A692Cade85a0EDB381868AA7c; + //address eEigen = 0xE77076518A813616315EaAba6cA8e595E845EeE9; - address liquidUsd = 0x08c6F91e2B681FaF5e17227F2a44C307b3C1364C; + //address liquidUsd = 0x08c6F91e2B681FaF5e17227F2a44C307b3C1364C; + address boringVault = 0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089; function setUp() external { //privateKey = vm.envUint("ETHERFI_LIQUID_DEPLOYER"); - vm.createSelectFork("base"); + vm.createSelectFork("mainnet"); } function run() external { @@ -53,12 +53,11 @@ contract DeployDecoderAndSanitizerScript is Script, Test, ContractNames, Mainnet bytes memory constructorArgs; privateKey = vm.envUint("PRIVATE_KEY"); vm.startBroadcast(privateKey); - console.log(privateKey); - creationCode = type(AerodromeDecoderAndSanitizer).creationCode; - address aerodromeNonFungiblePositionManager = 0x827922686190790b37229fd06084350E74485b72; - constructorArgs = abi.encode(boringVault, aerodromeNonFungiblePositionManager); - deployer.deployContract(LombardBtcAerodromeDecoderAndSanitizerName, creationCode, constructorArgs, 0); + //creationCode = type(AerodromeDecoderAndSanitizer).creationCode; + //address aerodromeNonFungiblePositionManager = 0x827922686190790b37229fd06084350E74485b72; + //constructorArgs = abi.encode(boringVault, aerodromeNonFungiblePositionManager); + //deployer.deployContract(LombardBtcAerodromeDecoderAndSanitizerName, creationCode, constructorArgs, 0); // creationCode = type(OnlyKarakDecoderAndSanitizer).creationCode; // constructorArgs = abi.encode(boringVault); @@ -88,11 +87,14 @@ contract DeployDecoderAndSanitizerScript is Script, Test, ContractNames, Mainnet // new LombardBtcDecoderAndSanitizer(boringVault, baseUniswapV3NonFungiblePositionManager); - creationCode = type(AeraVaultFullDecoderAndSanitizer).creationCode; - constructorArgs = abi.encode(boringVault); - deployer.deployContract("Aera Vault Decoder and Santizier v0.0", creationCode, constructorArgs, 0); - - + //creationCode = type(AeraVaultFullDecoderAndSanitizer).creationCode; + //constructorArgs = abi.encode(boringVault); + //deployer.deployContract("Aera Vault Decoder and Santizier v0.0", creationCode, constructorArgs, 0); + + creationCode = type(sBTCNDecoderAndSanitizer).creationCode; + constructorArgs = abi.encode(boringVault, uniswapV3NonFungiblePositionManager); + deployer.deployContract("Staked BTCN Decoder and Sanitizer V0.2", creationCode, constructorArgs, 0); + vm.stopBroadcast(); } } diff --git a/script/MerkleRootCreation/Mainnet/CreateAeraTestMerkleRoot.s.sol b/script/MerkleRootCreation/Mainnet/CreateAeraTestMerkleRoot.s.sol index cf2df9d1..2bd1109d 100644 --- a/script/MerkleRootCreation/Mainnet/CreateAeraTestMerkleRoot.s.sol +++ b/script/MerkleRootCreation/Mainnet/CreateAeraTestMerkleRoot.s.sol @@ -9,16 +9,12 @@ import {ManagerWithMerkleVerification} from "src/base/Roles/ManagerWithMerkleVer import {MerkleTreeHelper} from "test/resources/MerkleTreeHelper/MerkleTreeHelper.sol"; import "forge-std/Script.sol"; - /** * source .env && forge script script/MerkleRootCreation/Mainnet/CreateAeraTestMerkleRoot.s.sol:CreateAeraMerkleRoot --rpc-url $MAINNET_RPC_URL */ - - contract CreateAeraMerkleRoot is Script, MerkleTreeHelper { using FixedPointMathLib for uint256; - - + /** * @notice Uncomment which script you want to run. */ @@ -27,8 +23,5 @@ contract CreateAeraMerkleRoot is Script, MerkleTreeHelper { generateAdminStrategistMerkleRoot(); } - function generateAdminStrategistMerkleRoot() public { - - } - + function generateAdminStrategistMerkleRoot() public {} } diff --git a/script/MerkleRootCreation/Mainnet/CreateEtherFiEigenMerkleRoot.s.sol b/script/MerkleRootCreation/Mainnet/CreateEtherFiEigenMerkleRoot.s.sol index f98a71a5..486a61fb 100644 --- a/script/MerkleRootCreation/Mainnet/CreateEtherFiEigenMerkleRoot.s.sol +++ b/script/MerkleRootCreation/Mainnet/CreateEtherFiEigenMerkleRoot.s.sol @@ -30,7 +30,7 @@ contract CreateEtherFiEigenMerkleRootScript is Script, MerkleTreeHelper { */ function run() external { /// NOTE Only have 1 function run at a time, otherwise the merkle root created will be wrong. - generateAdminStrategistMerkleRoot(); + generateAdminStrategistMerkleRoot(); //generateAdminMerkleRoot(); } diff --git a/script/MerkleRootCreation/Mainnet/CreateLoopBTCMerkleRoot.s.sol b/script/MerkleRootCreation/Mainnet/CreateLoopBTCMerkleRoot.s.sol index bc142a0f..4020fff0 100644 --- a/script/MerkleRootCreation/Mainnet/CreateLoopBTCMerkleRoot.s.sol +++ b/script/MerkleRootCreation/Mainnet/CreateLoopBTCMerkleRoot.s.sol @@ -18,7 +18,7 @@ contract CreateLoopBtcMerkleRootScript is Script, MerkleTreeHelper { address public boringVault = 0xFE0C961A49E1aEe2AE2d842fE40157365C6d978f; address public managerAddress = 0xaE4b4cfBB7A0B90e9455761ed6D93d6Dc1759710; address public accountantAddress = 0xf1ecf4802C2b5Cf9c830A4AF297842Daa6D0f986; - address public rawDataDecoderAndSanitizer = 0x1bF0033c1F582ABFce07Dcb9b9020cB50416e20A; + address public rawDataDecoderAndSanitizer = 0x1bF0033c1F582ABFce07Dcb9b9020cB50416e20A; function setUp() external {} @@ -40,11 +40,11 @@ contract CreateLoopBtcMerkleRootScript is Script, MerkleTreeHelper { ManageLeaf[] memory leafs = new ManageLeaf[](16); // ========================== Aera ========================== - ERC20[] memory depositTokens = new ERC20[](3); + ERC20[] memory depositTokens = new ERC20[](3); depositTokens[0] = ERC20(getAddress(sourceChain, "WBTC")); - depositTokens[1] = ERC20(getAddress(sourceChain, "LBTC")); + depositTokens[1] = ERC20(getAddress(sourceChain, "LBTC")); depositTokens[2] = ERC20(getAddress(sourceChain, "cbBTC")); - _addAeraLeafs(leafs, getAddress(sourceChain, "aeraLoopBTCVault"), depositTokens); + _addAeraLeafs(leafs, getAddress(sourceChain, "aeraLoopBTCVault"), depositTokens); //_verifyDecoderImplementsLeafsFunctionSelectors(leafs); diff --git a/script/MerkleRootCreation/Mainnet/CreateStakedBTCNMerkleRoot.s.sol b/script/MerkleRootCreation/Mainnet/CreateStakedBTCNMerkleRoot.s.sol new file mode 100644 index 00000000..1d0a7125 --- /dev/null +++ b/script/MerkleRootCreation/Mainnet/CreateStakedBTCNMerkleRoot.s.sol @@ -0,0 +1,80 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.21; + +import {FixedPointMathLib} from "@solmate/utils/FixedPointMathLib.sol"; +import {ERC20} from "@solmate/tokens/ERC20.sol"; +import {Strings} from "lib/openzeppelin-contracts/contracts/utils/Strings.sol"; +import {ERC4626} from "@solmate/tokens/ERC4626.sol"; +import {ManagerWithMerkleVerification} from "src/base/Roles/ManagerWithMerkleVerification.sol"; +import {MerkleTreeHelper} from "test/resources/MerkleTreeHelper/MerkleTreeHelper.sol"; +import "forge-std/Script.sol"; + +/** + * source .env && forge script script/MerkleRootCreation/Mainnet/CreateStakedBTCNMerkleRoot.s.sol:CreateStakedBTCNMerkleRoot --rpc-url $MAINNET_RPC_URL */ +contract CreateStakedBTCNMerkleRoot is Script, MerkleTreeHelper { + using FixedPointMathLib for uint256; + + address boringVault = 0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089; + address managerAddress = 0x5239158272D1f626aF9ef3353489D3Cb68439D66; + address accountantAddress = 0x9A22F5dC4Ec86184D4771E620eb75D52E7b9E043; + address rawDataDecoderAndSanitizer = 0xCAc92301f96e3b6554EF11366482f464c6f87cFB; + + + function run() external { + /// NOTE Only have 1 function run at a time, otherwise the merkle root created will be wrong. + generateAdminStrategistMerkleRoot(); + } + + function generateAdminStrategistMerkleRoot() public { + setSourceChainName(mainnet); + setAddress(false, mainnet, "boringVault", boringVault); + setAddress(false, mainnet, "managerAddress", managerAddress); + setAddress(false, mainnet, "accountantAddress", accountantAddress); + setAddress(false, mainnet, "rawDataDecoderAndSanitizer", rawDataDecoderAndSanitizer); + + ManageLeaf[] memory leafs = new ManageLeaf[](64); + + // ========================== UniswapV3 ========================== + address[] memory token0 = new address[](3); + token0[0] = getAddress(sourceChain, "WBTC"); + token0[1] = getAddress(sourceChain, "WBTC"); + token0[2] = getAddress(sourceChain, "cbBTC"); + + address[] memory token1 = new address[](3); + token1[0] = getAddress(sourceChain, "cbBTC"); + token1[1] = getAddress(sourceChain, "LBTC"); + token1[2] = getAddress(sourceChain, "LBTC"); + + _addUniswapV3Leafs(leafs, token0, token1); + + // ========================== 1inch ========================== + address[] memory assets = new address[](3); + SwapKind[] memory kind = new SwapKind[](3); + assets[0] = getAddress(sourceChain, "WBTC"); + kind[0] = SwapKind.BuyAndSell; + assets[1] = getAddress(sourceChain, "LBTC"); + kind[1] = SwapKind.BuyAndSell; + assets[2] = getAddress(sourceChain, "cbBTC"); + kind[2] = SwapKind.BuyAndSell; + _addLeafsFor1InchGeneralSwapping(leafs, assets, kind); + + // ========================== Corn BTCN ========================== + _addBTCNLeafs(leafs, getERC20(sourceChain, "WBTC"), getERC20(sourceChain, "BTCN"), getAddress(sourceChain, "cornSwapFacilityWBTC")); + _addBTCNLeafs(leafs, getERC20(sourceChain, "cbBTC"), getERC20(sourceChain, "BTCN"), getAddress(sourceChain, "cornSwapFacilitycbBTC")); + + // ========================== LayerZero ========================== + _addLayerZeroLeafs( + leafs, getERC20(sourceChain, "BTCN"), getAddress(sourceChain, "BTCN"), layerZeroCornEndpointId + ); + + _verifyDecoderImplementsLeafsFunctionSelectors(leafs); + + string memory filePath = "./leafs/Mainnet/sBTCNStrategistLeafs.json"; + + bytes32[][] memory manageTree = _generateMerkleTree(leafs); + + _generateLeafs(filePath, leafs, manageTree[manageTree.length - 1][0], manageTree); + + } + +} diff --git a/src/base/DecodersAndSanitizers/AeraVaultFullDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/AeraVaultFullDecoderAndSanitizer.sol index c2a3dbae..a93e5bd0 100644 --- a/src/base/DecodersAndSanitizers/AeraVaultFullDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/AeraVaultFullDecoderAndSanitizer.sol @@ -2,9 +2,8 @@ pragma solidity 0.8.21; import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; -import {AeraVaultDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/AeraVaultDecoderAndSanitizer.sol"; +import {AeraVaultDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/AeraVaultDecoderAndSanitizer.sol"; contract AeraVaultFullDecoderAndSanitizer is AeraVaultDecoderAndSanitizer { - constructor(address _boringVault) AeraVaultDecoderAndSanitizer(_boringVault) {} } diff --git a/src/base/DecodersAndSanitizers/BTCNFullMinterDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/BTCNFullMinterDecoderAndSanitizer.sol index 8d1fbb22..01994b95 100644 --- a/src/base/DecodersAndSanitizers/BTCNFullMinterDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/BTCNFullMinterDecoderAndSanitizer.sol @@ -1,12 +1,9 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.21; - import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; -import {BTCNMinterDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol"; - +import {BTCNMinterDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol"; contract BTCNFullMinterDecoderAndSanitizer is BTCNMinterDecoderAndSanitizer { - - constructor(address _boringVault) BTCNMinterDecoderAndSanitizer(_boringVault) {} + constructor(address _boringVault) BaseDecoderAndSanitizer(_boringVault) {} } diff --git a/src/base/DecodersAndSanitizers/FluidDexFullDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/FluidDexFullDecoderAndSanitizer.sol index 279a1332..c00ee866 100644 --- a/src/base/DecodersAndSanitizers/FluidDexFullDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/FluidDexFullDecoderAndSanitizer.sol @@ -1,10 +1,9 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.21; -import {FluidDexDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/FluidDexDecoderAndSanitizer.sol"; +import {FluidDexDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/FluidDexDecoderAndSanitizer.sol"; import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; contract FluidDexFullDecoderAndSanitizer is FluidDexDecoderAndSanitizer { - - constructor(address _boringVault) BaseDecoderAndSanitizer(_boringVault){} + constructor(address _boringVault) BaseDecoderAndSanitizer(_boringVault) {} } diff --git a/src/base/DecodersAndSanitizers/LombardBtcDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/LombardBtcDecoderAndSanitizer.sol index 1e4de39c..ed8e3e08 100644 --- a/src/base/DecodersAndSanitizers/LombardBtcDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/LombardBtcDecoderAndSanitizer.sol @@ -34,7 +34,8 @@ import {StandardBridgeDecoderAndSanitizer} from import {CompoundV3DecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/CompoundV3DecoderAndSanitizer.sol"; import {MerklDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/MerklDecoderAndSanitizer.sol"; import {LidoDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/LidoDecoderAndSanitizer.sol"; -import {LombardBTCMinterDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/LombardBtcMinterDecoderAndSanitizer.sol"; +import {LombardBTCMinterDecoderAndSanitizer} from + "src/base/DecodersAndSanitizers/Protocols/LombardBtcMinterDecoderAndSanitizer.sol"; contract LombardBtcDecoderAndSanitizer is UniswapV3DecoderAndSanitizer, @@ -173,12 +174,7 @@ contract LombardBtcDecoderAndSanitizer is return addressesFound; } - function burn(uint256) - external - pure - override(UniswapV3DecoderAndSanitizer) - returns (bytes memory addressesFound) - { + function burn(uint256) external pure override(UniswapV3DecoderAndSanitizer) returns (bytes memory addressesFound) { // Nothing to sanitize or return return addressesFound; } diff --git a/src/base/DecodersAndSanitizers/LombardBtcFullMinterDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/LombardBtcFullMinterDecoderAndSanitizer.sol index 3dfa78fc..42dcb115 100644 --- a/src/base/DecodersAndSanitizers/LombardBtcFullMinterDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/LombardBtcFullMinterDecoderAndSanitizer.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.21; -import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; -import {LombardBTCMinterDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/LombardBtcMinterDecoderAndSanitizer.sol"; +import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import {LombardBTCMinterDecoderAndSanitizer} from + "src/base/DecodersAndSanitizers/Protocols/LombardBtcMinterDecoderAndSanitizer.sol"; contract LombardBTCFullMinterDecoderAndSanitizer is LombardBTCMinterDecoderAndSanitizer { - constructor(address _boringVault) BaseDecoderAndSanitizer(_boringVault) {} } diff --git a/src/base/DecodersAndSanitizers/Protocols/AaveV3DecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/AaveV3DecoderAndSanitizer.sol index 3ba12ae3..5decddb0 100644 --- a/src/base/DecodersAndSanitizers/Protocols/AaveV3DecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/AaveV3DecoderAndSanitizer.sol @@ -51,12 +51,12 @@ abstract contract AaveV3DecoderAndSanitizer is BaseDecoderAndSanitizer { return addressesFound; } - function claimRewards(address[] calldata /*assets*/, uint256 /*amount*/, address to, address /*reward*/) + function claimRewards(address[] calldata, /*assets*/ uint256, /*amount*/ address to, address /*reward*/ ) external pure virtual returns (bytes memory addressesFound) { - addressesFound = abi.encodePacked(to); + addressesFound = abi.encodePacked(to); } } diff --git a/src/base/DecodersAndSanitizers/Protocols/AeraVaultDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/AeraVaultDecoderAndSanitizer.sol index 74ae6e54..72ec1e4b 100644 --- a/src/base/DecodersAndSanitizers/Protocols/AeraVaultDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/AeraVaultDecoderAndSanitizer.sol @@ -4,26 +4,35 @@ pragma solidity 0.8.21; import {BaseDecoderAndSanitizer, DecoderCustomTypes} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract AeraVaultDecoderAndSanitizer is BaseDecoderAndSanitizer { - constructor(address _boringVault) BaseDecoderAndSanitizer(_boringVault) {} - function deposit(DecoderCustomTypes.AssetValue[] calldata amounts) external pure virtual returns (bytes memory addressesFound) { + function deposit(DecoderCustomTypes.AssetValue[] calldata amounts) + external + pure + virtual + returns (bytes memory addressesFound) + { for (uint256 i = 0; i < amounts.length; i++) { - addressesFound = abi.encodePacked(amounts[i].asset); + addressesFound = abi.encodePacked(amounts[i].asset); } } - function withdraw(DecoderCustomTypes.AssetValue[] calldata amounts) external pure virtual returns (bytes memory addressesFound) { + function withdraw(DecoderCustomTypes.AssetValue[] calldata amounts) + external + pure + virtual + returns (bytes memory addressesFound) + { for (uint256 i = 0; i < amounts.length; i++) { - addressesFound = abi.encodePacked(amounts[i].asset); + addressesFound = abi.encodePacked(amounts[i].asset); } } function pause() external pure returns (bytes memory addressesFound) { - return addressesFound; + return addressesFound; } function resume() external pure returns (bytes memory addressesFound) { - return addressesFound; + return addressesFound; } } diff --git a/src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol index 9c1d4188..0475ebb4 100644 --- a/src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol @@ -4,15 +4,21 @@ pragma solidity 0.8.21; import {BaseDecoderAndSanitizer, DecoderCustomTypes} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract BTCNMinterDecoderAndSanitizer is BaseDecoderAndSanitizer { - - constructor(address _boringVault) BaseDecoderAndSanitizer(_boringVault){} - - function swapExactCollateralForDebt(uint256 /*collateralIn*/, uint256 /*debtOutMin*/, address to, uint256 /*deadline*/) external pure virtual returns (bytes memory addressesFound) { - return abi.encodePacked(to); + function swapExactCollateralForDebt( + uint256, /*collateralIn*/ + uint256, /*debtOutMin*/ + address to, + uint256 /*deadline*/ + ) external pure virtual returns (bytes memory addressesFound) { + return abi.encodePacked(to); } - function swapExactDebtForCollateral(uint256 /*debtIn*/, uint256 /*collateralOutMin*/, address to, uint256 /*deadline*/) external pure virtual returns (bytes memory addressesFound) { - return abi.encodePacked(to); + function swapExactDebtForCollateral( + uint256, /*debtIn*/ + uint256, /*collateralOutMin*/ + address to, + uint256 /*deadline*/ + ) external pure virtual returns (bytes memory addressesFound) { + return abi.encodePacked(to); } } - diff --git a/src/base/DecodersAndSanitizers/Protocols/FluidDexDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/FluidDexDecoderAndSanitizer.sol index 6bec40b6..397b624b 100644 --- a/src/base/DecodersAndSanitizers/Protocols/FluidDexDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/FluidDexDecoderAndSanitizer.sol @@ -3,12 +3,10 @@ pragma solidity 0.8.21; import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; - abstract contract FluidDexDecoderAndSanitizer is BaseDecoderAndSanitizer { - /// @notice T2 and T3 - - /* + + /* * @notice Vault T2 and T3 ((smart collateral, normal debt) / (normal collateral, smart debt)) * @notice T2 params on LHS, T3 on RHS -> T2ParamName/T3ParamName * @dev These use the same function sig, so I'm just grouping them together @@ -17,18 +15,18 @@ abstract contract FluidDexDecoderAndSanitizer is BaseDecoderAndSanitizer { * @param colSharesMinMax/newDebtToken1 The change in debt amount for token1 (positive for borrowing, negative for repayment) * @param newDebt/debtSharesMinMax Min or max debt shares to mint or burn (positive for borrowing, negative for repayment) * @param to The address to receive withdrawn collateral or borrowed tokens (if address(0), defaults to msg.sender) - */ + */ function operate( - uint256 /*nftId*/, - int256 /*newColToken0 / newCol*/, - int256 /*newColToken1 / newDebtToken0*/, - int256 /*colSharesMinMax / newDebtToken1*/, - int256 /*newDebt / debtSharesMinMax*/, + uint256, /*nftId*/ + int256, /*newColToken0 / newCol*/ + int256, /*newColToken1 / newDebtToken0*/ + int256, /*colSharesMinMax / newDebtToken1*/ + int256, /*newDebt / debtSharesMinMax*/ address to ) external pure virtual returns (bytes memory addressesFound) { - addressesFound = abi.encodePacked(to); + addressesFound = abi.encodePacked(to); } - + /* * @param nftId The ID of the NFT representing the vault position, use 0 for a new position * @param perfectColShares The change in collateral shares (positive for deposit, negative for withdrawal) @@ -38,19 +36,18 @@ abstract contract FluidDexDecoderAndSanitizer is BaseDecoderAndSanitizer { * @param to_ The address to receive withdrawn collateral or borrowed tokens (if address(0), defaults to msg.sender) */ function operatePerfect( - uint256 /*nftId*/, - int256 /*perfectColShares*/, - int256 /*colToken0MinMax*/, - int256 /*colToken1MinMax*/, - int256 /*newDebt*/, + uint256, /*nftId*/ + int256, /*perfectColShares*/ + int256, /*colToken0MinMax*/ + int256, /*colToken1MinMax*/ + int256, /*newDebt*/ address to ) external pure virtual returns (bytes memory addressesFound) { - addressesFound = abi.encodePacked(to); + addressesFound = abi.encodePacked(to); } + /// @notice T4 (smart collateral, smart debt) - /// @notice T4 (smart collateral, smart debt) - /* * @param nftId The ID of the NFT representing the vault position * @param newColToken0 The change in collateral amount for token0 (positive for deposit, negative for withdrawal) @@ -62,18 +59,18 @@ abstract contract FluidDexDecoderAndSanitizer is BaseDecoderAndSanitizer { * @param to The address to receive funds (if address(0), defaults to msg.sender) */ function operate( - uint256 /*nftId*/, - int256 /*newColToken0*/, - int256 /*newColToken1*/, - int256 /*colSharesMinMax*/, - int256 /*newDebtToken0*/, - int256 /*newDebtToken1*/, - int256 /*debtSharesMinMax*/, + uint256, /*nftId*/ + int256, /*newColToken0*/ + int256, /*newColToken1*/ + int256, /*colSharesMinMax*/ + int256, /*newDebtToken0*/ + int256, /*newDebtToken1*/ + int256, /*debtSharesMinMax*/ address to ) external pure virtual returns (bytes memory addressesFound) { - addressesFound = abi.encodePacked(to); + addressesFound = abi.encodePacked(to); } - + /* * @param nftId_ The ID of the NFT representing the vault position * @param perfectColShares_ The change in collateral shares (positive for deposit, negative for withdrawal) @@ -85,15 +82,15 @@ abstract contract FluidDexDecoderAndSanitizer is BaseDecoderAndSanitizer { * @param to_ The address to receive funds (if address(0), defaults to msg.sender) */ function operatePerfect( - uint256 /*nftId*/, - int256 /*perfectColShares*/, - int256 /*colToken0MinMax*/, - int256 /*colToken1MinMax*/, - int256 /*perfectDebtShares*/, - int256 /*debtToken0MinMax*/, - int256 /*debtToken1MinMax*/, + uint256, /*nftId*/ + int256, /*perfectColShares*/ + int256, /*colToken0MinMax*/ + int256, /*colToken1MinMax*/ + int256, /*perfectDebtShares*/ + int256, /*debtToken0MinMax*/ + int256, /*debtToken1MinMax*/ address to ) external pure virtual returns (bytes memory addressesFound) { - addressesFound = abi.encodePacked(to); + addressesFound = abi.encodePacked(to); } } diff --git a/src/base/DecodersAndSanitizers/Protocols/ITB/aave/AaveDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ITB/aave/AaveDecoderAndSanitizer.sol index 044266e6..4eeb5937 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ITB/aave/AaveDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ITB/aave/AaveDecoderAndSanitizer.sol @@ -1,16 +1,14 @@ /* SPDX-License-Identifier: UNLICENSED */ pragma solidity ^0.8.0; -import '../common/ITBContractDecoderAndSanitizer.sol'; +import "../common/ITBContractDecoderAndSanitizer.sol"; abstract contract AaveDecoderAndSanitizer is ITBContractDecoderAndSanitizer { - function deposit(address asset, uint) external pure returns (bytes memory addressesFound) - { + function deposit(address asset, uint256) external pure returns (bytes memory addressesFound) { addressesFound = abi.encodePacked(asset); } - function withdrawSupply(address asset, uint) external pure returns (bytes memory addressesFound) - { + function withdrawSupply(address asset, uint256) external pure returns (bytes memory addressesFound) { addressesFound = abi.encodePacked(asset); } -} \ No newline at end of file +} diff --git a/src/base/DecodersAndSanitizers/Protocols/ITB/common/ITBContractDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ITB/common/ITBContractDecoderAndSanitizer.sol index f18837b0..263dba89 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ITB/common/ITBContractDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ITB/common/ITBContractDecoderAndSanitizer.sol @@ -1,13 +1,13 @@ /* SPDX-License-Identifier: UNLICENSED */ pragma solidity ^0.8.0; -import './WithdrawableDecoderAndSanitizer.sol'; -import './Ownable2StepDecoderAndSanitizer.sol'; +import "./WithdrawableDecoderAndSanitizer.sol"; +import "./Ownable2StepDecoderAndSanitizer.sol"; /// @title Decoder and sanitizer for ITBContract /// @author IntoTheBlock Corp abstract contract ITBContractDecoderAndSanitizer is WithdrawableDecoderAndSanitizer, Ownable2StepDecoderAndSanitizer { - function approveToken(address _token, address _guy, uint) external pure returns (bytes memory addressesFound) { + function approveToken(address _token, address _guy, uint256) external pure returns (bytes memory addressesFound) { addressesFound = abi.encodePacked(_token, _guy); } diff --git a/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/ConvexDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/ConvexDecoderAndSanitizer.sol index b95da33b..a58de3ef 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/ConvexDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/ConvexDecoderAndSanitizer.sol @@ -2,11 +2,19 @@ pragma solidity ^0.8.0; abstract contract ConvexDecoderAndSanitizer { - function addLiquidityAllCoinsAndStakeConvex(address _pool, uint[] memory, uint _convex_pool_id, uint) external pure returns (bytes memory addressesFound) { + function addLiquidityAllCoinsAndStakeConvex(address _pool, uint256[] memory, uint256 _convex_pool_id, uint256) + external + pure + returns (bytes memory addressesFound) + { addressesFound = abi.encodePacked(_pool, address(uint160(_convex_pool_id))); } - function unstakeAndRemoveLiquidityAllCoinsConvex(address _pool, uint, uint _convex_pool_id, uint[] memory) external pure returns (bytes memory addressesFound) { + function unstakeAndRemoveLiquidityAllCoinsConvex(address _pool, uint256, uint256 _convex_pool_id, uint256[] memory) + external + pure + returns (bytes memory addressesFound) + { addressesFound = abi.encodePacked(_pool, address(uint160(_convex_pool_id))); } } diff --git a/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveAndConvexDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveAndConvexDecoderAndSanitizer.sol index 7f94033f..9d759cab 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveAndConvexDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveAndConvexDecoderAndSanitizer.sol @@ -1,8 +1,12 @@ /* SPDX-License-Identifier: UNLICENSED */ pragma solidity ^0.8.0; -import '../common/ITBContractDecoderAndSanitizer.sol'; -import './CurveNoConfigDecoderAndSanitizer.sol'; -import './ConvexDecoderAndSanitizer.sol'; +import "../common/ITBContractDecoderAndSanitizer.sol"; +import "./CurveNoConfigDecoderAndSanitizer.sol"; +import "./ConvexDecoderAndSanitizer.sol"; -abstract contract CurveAndConvexDecoderAndSanitizer is ITBContractDecoderAndSanitizer, CurveNoConfigDecoderAndSanitizer, ConvexDecoderAndSanitizer {} \ No newline at end of file +abstract contract CurveAndConvexDecoderAndSanitizer is + ITBContractDecoderAndSanitizer, + CurveNoConfigDecoderAndSanitizer, + ConvexDecoderAndSanitizer +{} diff --git a/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveNoConfigDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveNoConfigDecoderAndSanitizer.sol index 0e05cbc4..b1995819 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveNoConfigDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ITB/curve_and_convex/CurveNoConfigDecoderAndSanitizer.sol @@ -2,11 +2,19 @@ pragma solidity ^0.8.0; abstract contract CurveNoConfigDecoderAndSanitizer { - function addLiquidityAllCoinsAndStake(address _pool, uint[] memory, address _gauge, uint) external pure returns (bytes memory addressesFound) { + function addLiquidityAllCoinsAndStake(address _pool, uint256[] memory, address _gauge, uint256) + external + pure + returns (bytes memory addressesFound) + { addressesFound = abi.encodePacked(_pool, _gauge); } - function unstakeAndRemoveLiquidityAllCoins(address _pool, uint, address _gauge, uint[] memory) external pure returns (bytes memory addressesFound) { + function unstakeAndRemoveLiquidityAllCoins(address _pool, uint256, address _gauge, uint256[] memory) + external + pure + returns (bytes memory addressesFound) + { addressesFound = abi.encodePacked(_pool, _gauge); } } diff --git a/src/base/DecodersAndSanitizers/Protocols/ITB/gearbox/GearboxDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/ITB/gearbox/GearboxDecoderAndSanitizer.sol index 67b1e72f..1085169e 100644 --- a/src/base/DecodersAndSanitizers/Protocols/ITB/gearbox/GearboxDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/ITB/gearbox/GearboxDecoderAndSanitizer.sol @@ -1,25 +1,25 @@ /* SPDX-License-Identifier: UNLICENSED */ pragma solidity ^0.8.0; -import '../common/ITBContractDecoderAndSanitizer.sol'; +import "../common/ITBContractDecoderAndSanitizer.sol"; abstract contract GearboxDecoderAndSanitizer is ITBContractDecoderAndSanitizer { - function deposit(uint, uint) external pure returns (bytes memory addressesFound) { + function deposit(uint256, uint256) external pure returns (bytes memory addressesFound) { // Nothing to sanitize or return return addressesFound; } - function withdrawSupply(uint, uint) external pure returns (bytes memory addressesFound) { + function withdrawSupply(uint256, uint256) external pure returns (bytes memory addressesFound) { // Nothing to sanitize or return return addressesFound; } - function stake(uint) external pure returns (bytes memory addressesFound) { + function stake(uint256) external pure returns (bytes memory addressesFound) { // Nothing to sanitize or return return addressesFound; } - function unstake(uint) external pure returns (bytes memory addressesFound) { + function unstake(uint256) external pure returns (bytes memory addressesFound) { // Nothing to sanitize or return return addressesFound; } diff --git a/src/base/DecodersAndSanitizers/Protocols/LombardBtcMinterDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/LombardBtcMinterDecoderAndSanitizer.sol index fecbc8a3..409ef604 100644 --- a/src/base/DecodersAndSanitizers/Protocols/LombardBtcMinterDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/LombardBtcMinterDecoderAndSanitizer.sol @@ -4,21 +4,24 @@ pragma solidity 0.8.21; import {BaseDecoderAndSanitizer, DecoderCustomTypes} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract LombardBTCMinterDecoderAndSanitizer is BaseDecoderAndSanitizer { - /// @notice for permissioned users - function mint(address to, uint256 /*amount*/) external pure virtual returns (bytes memory addressesFound) { - addressesFound = abi.encodePacked(to); + function mint(address to, uint256 /*amount*/ ) external pure virtual returns (bytes memory addressesFound) { + addressesFound = abi.encodePacked(to); } - - /// @notice minting directly via LTBC contract - function mint(bytes calldata data, bytes calldata /*proofSignature*/) external pure virtual returns (bytes memory addressesFound) { - (, address to, , ,) = abi.decode(data, (uint256, address, uint64, bytes32, uint32)); - addressesFound = abi.encodePacked(to); + + /// @notice minting directly via LTBC contract + function mint(bytes calldata data, bytes calldata /*proofSignature*/ ) + external + pure + virtual + returns (bytes memory addressesFound) + { + (, address to,,,) = abi.decode(data, (uint256, address, uint64, bytes32, uint32)); + addressesFound = abi.encodePacked(to); } - + /// @notice for minting using cbBTCPPM contract - function swapCBBTCToLBTC(uint256 /*amount*/) external pure virtual returns (bytes memory addressesFound) { - return addressesFound; + function swapCBBTCToLBTC(uint256 /*amount*/ ) external pure virtual returns (bytes memory addressesFound) { + return addressesFound; } - } diff --git a/src/base/DecodersAndSanitizers/Protocols/WeEthDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/Protocols/WeEthDecoderAndSanitizer.sol index 137b9161..5e730417 100644 --- a/src/base/DecodersAndSanitizers/Protocols/WeEthDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/Protocols/WeEthDecoderAndSanitizer.sol @@ -4,9 +4,13 @@ pragma solidity 0.8.21; import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; abstract contract WeETHDecoderAndSanitizer is BaseDecoderAndSanitizer { - - //add the registry to check for whitelisted assets? - function deposit(address tokenIn, uint256 /*amountIn*/, uint256 /*minAmountOut*/, address referral) external pure virtual returns (bytes memory addressesFound) { - addressesFound = abi.encodePacked(tokenIn, referral); + //add the registry to check for whitelisted assets? + function deposit(address tokenIn, uint256, /*amountIn*/ uint256, /*minAmountOut*/ address referral) + external + pure + virtual + returns (bytes memory addressesFound) + { + addressesFound = abi.encodePacked(tokenIn, referral); } } diff --git a/src/base/DecodersAndSanitizers/TermFinanceDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/TermFinanceDecoderAndSanitizer.sol index 03ab0f22..71b5d8de 100644 --- a/src/base/DecodersAndSanitizers/TermFinanceDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/TermFinanceDecoderAndSanitizer.sol @@ -8,30 +8,33 @@ contract TermFinanceDecoderAndSanitizer is BaseDecoderAndSanitizer { constructor(address _boringVault) BaseDecoderAndSanitizer(_boringVault) {} - function lockOffers(DecoderCustomTypes.TermAuctionOfferSubmission[] calldata offerSubmissions) pure virtual external returns (bytes memory addressesFound) { + function lockOffers(DecoderCustomTypes.TermAuctionOfferSubmission[] calldata offerSubmissions) + external + pure + virtual + returns (bytes memory addressesFound) + { for (uint256 i = 0; i < offerSubmissions.length; i++) { - addressesFound = abi.encodePacked( - addressesFound, - offerSubmissions[i].offeror - ); - addressesFound = abi.encodePacked( - addressesFound, - offerSubmissions[i].purchaseToken - ); + addressesFound = abi.encodePacked(addressesFound, offerSubmissions[i].offeror); + addressesFound = abi.encodePacked(addressesFound, offerSubmissions[i].purchaseToken); } } - function unlockOffers(bytes32[] calldata offerIds) pure virtual external returns (bytes memory addressesFound) { - - } + function unlockOffers(bytes32[] calldata offerIds) external pure virtual returns (bytes memory addressesFound) {} - function revealOffers(bytes32[] calldata ids, - uint256[] calldata prices, - uint256[] calldata nonces) pure virtual external returns (bytes memory addressesFound) { - - } + function revealOffers(bytes32[] calldata ids, uint256[] calldata prices, uint256[] calldata nonces) + external + pure + virtual + returns (bytes memory addressesFound) + {} - function redeemTermRepoTokens(address redeemer, uint256) pure virtual external returns (bytes memory addressesFound) { + function redeemTermRepoTokens(address redeemer, uint256) + external + pure + virtual + returns (bytes memory addressesFound) + { addressesFound = abi.encodePacked(redeemer); } -} \ No newline at end of file +} diff --git a/src/base/DecodersAndSanitizers/WeEthFullDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/WeEthFullDecoderAndSanitizer.sol index 5e6db8ca..2ac06132 100644 --- a/src/base/DecodersAndSanitizers/WeEthFullDecoderAndSanitizer.sol +++ b/src/base/DecodersAndSanitizers/WeEthFullDecoderAndSanitizer.sol @@ -1,10 +1,9 @@ // SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.21; -import {WeETHDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/WeEthDecoderAndSanitizer.sol"; +import {WeETHDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/WeEthDecoderAndSanitizer.sol"; import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; contract WeETHFullDecoderAndSanitizer is WeETHDecoderAndSanitizer { - constructor(address _boringVault) BaseDecoderAndSanitizer(_boringVault) {} } diff --git a/src/base/DecodersAndSanitizers/sBTCNDecoderAndSanitizer.sol b/src/base/DecodersAndSanitizers/sBTCNDecoderAndSanitizer.sol new file mode 100644 index 00000000..197db1db --- /dev/null +++ b/src/base/DecodersAndSanitizers/sBTCNDecoderAndSanitizer.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.21; + +import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import {UniswapV3DecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/UniswapV3DecoderAndSanitizer.sol"; +import {OneInchDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/OneInchDecoderAndSanitizer.sol"; +import {BTCNMinterDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/BTCNMinterDecoderAndSanitizer.sol"; +import {OFTDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/Protocols/OFTDecoderAndSanitizer.sol"; + +contract sBTCNDecoderAndSanitizer is + BaseDecoderAndSanitizer, + UniswapV3DecoderAndSanitizer, + OneInchDecoderAndSanitizer, + BTCNMinterDecoderAndSanitizer, + OFTDecoderAndSanitizer +{ + constructor(address _boringVault, address _uniswapV3NonFungiblePositionManager) + BaseDecoderAndSanitizer(_boringVault) + UniswapV3DecoderAndSanitizer(_uniswapV3NonFungiblePositionManager) + {} +} diff --git a/src/interfaces/DecoderCustomTypes.sol b/src/interfaces/DecoderCustomTypes.sol index f35ecf9f..2c41997c 100644 --- a/src/interfaces/DecoderCustomTypes.sol +++ b/src/interfaces/DecoderCustomTypes.sol @@ -404,10 +404,9 @@ contract DecoderCustomTypes { } // ========================================= Aera ========================================= - + struct AssetValue { - address asset; - uint256 amount; + address asset; + uint256 amount; } - } diff --git a/test/MerkleTreeChecker.t.sol b/test/MerkleTreeChecker.t.sol index 059e7994..ccb8d1c0 100644 --- a/test/MerkleTreeChecker.t.sol +++ b/test/MerkleTreeChecker.t.sol @@ -38,7 +38,7 @@ contract MerkleTreeCheckerTest is Test, MerkleTreeHelper { supplyAssets[0] = getERC20(sourceChain, "WBTC"); ERC20[] memory borrowAssets = new ERC20[](1); borrowAssets[0] = getERC20(sourceChain, "WBTC"); - ERC20[] memory claimAssets = new ERC20[](1); + ERC20[] memory claimAssets = new ERC20[](1); claimAssets[0] = getERC20(sourceChain, "WBTC"); _addAaveV3Leafs(leafs, supplyAssets, borrowAssets, claimAssets); @@ -120,7 +120,7 @@ contract MerkleTreeCheckerTest is Test, MerkleTreeHelper { supplyAssets[0] = getERC20(sourceChain, "WBTC"); ERC20[] memory borrowAssets = new ERC20[](1); borrowAssets[0] = getERC20(sourceChain, "WBTC"); - ERC20[] memory claimAssets = new ERC20[](1); + ERC20[] memory claimAssets = new ERC20[](1); claimAssets[0] = getERC20(sourceChain, "WBTC"); _addAaveV3Leafs(leafs, supplyAssets, borrowAssets, claimAssets); diff --git a/test/integrations/AaveV3Integration.t.sol b/test/integrations/AaveV3Integration.t.sol index ad787ca5..031c933a 100644 --- a/test/integrations/AaveV3Integration.t.sol +++ b/test/integrations/AaveV3Integration.t.sol @@ -126,7 +126,7 @@ contract AaveV3IntegrationTest is Test, MerkleTreeHelper { supplyAssets[0] = getERC20(sourceChain, "WSTETH"); ERC20[] memory borrowAssets = new ERC20[](1); borrowAssets[0] = getERC20(sourceChain, "WETH"); - ERC20[] memory claimAssets = new ERC20[](1); + ERC20[] memory claimAssets = new ERC20[](1); claimAssets[0] = getERC20(sourceChain, "WSTETH"); _addAaveV3Leafs(leafs, supplyAssets, borrowAssets, claimAssets); @@ -157,8 +157,8 @@ contract AaveV3IntegrationTest is Test, MerkleTreeHelper { targets[7] = getAddress(sourceChain, "v3Pool"); targets[8] = getAddress(sourceChain, "v3RewardsController"); - address[] memory claimAssetsData = new address[](1); - claimAssetsData[0] = getAddress(sourceChain, "WSTETH"); + address[] memory claimAssetsData = new address[](1); + claimAssetsData[0] = getAddress(sourceChain, "WSTETH"); bytes[] memory targetData = new bytes[](9); targetData[0] = @@ -194,7 +194,13 @@ contract AaveV3IntegrationTest is Test, MerkleTreeHelper { "setUserUseReserveAsCollateral(address,bool)", getAddress(sourceChain, "WSTETH"), true ); targetData[7] = abi.encodeWithSignature("setUserEMode(uint8)", 0); - targetData[8] = abi.encodeWithSignature("claimRewards(address[],uint256,address,address)", claimAssetsData, 0, getAddress(sourceChain, "boringVault"), 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0); + targetData[8] = abi.encodeWithSignature( + "claimRewards(address[],uint256,address,address)", + claimAssetsData, + 0, + getAddress(sourceChain, "boringVault"), + 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0 + ); address[] memory decodersAndSanitizers = new address[](9); decodersAndSanitizers[0] = rawDataDecoderAndSanitizer; diff --git a/test/integrations/AeraVaultIntegration.t.sol b/test/integrations/AeraVaultIntegration.t.sol index 0bfd311e..a6815c01 100644 --- a/test/integrations/AeraVaultIntegration.t.sol +++ b/test/integrations/AeraVaultIntegration.t.sol @@ -8,8 +8,7 @@ import {SafeTransferLib} from "@solmate/utils/SafeTransferLib.sol"; import {FixedPointMathLib} from "@solmate/utils/FixedPointMathLib.sol"; import {ERC20} from "@solmate/tokens/ERC20.sol"; import {ERC4626} from "@solmate/tokens/ERC4626.sol"; -import {AeraVaultFullDecoderAndSanitizer} from - "src/base/DecodersAndSanitizers/AeraVaultFullDecoderAndSanitizer.sol"; +import {AeraVaultFullDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/AeraVaultFullDecoderAndSanitizer.sol"; import {DecoderCustomTypes} from "src/interfaces/DecoderCustomTypes.sol"; import {RolesAuthority, Authority} from "@solmate/auth/authorities/RolesAuthority.sol"; import {MerkleTreeHelper} from "test/resources/MerkleTreeHelper/MerkleTreeHelper.sol"; @@ -101,37 +100,32 @@ contract AeraVaultIntegrationTest is Test, MerkleTreeHelper { rolesAuthority.setUserRole(address(manager), MANAGER_ROLE, true); rolesAuthority.setUserRole(address(boringVault), BORING_VAULT_ROLE, true); rolesAuthority.setUserRole(getAddress(sourceChain, "vault"), BALANCER_VAULT_ROLE, true); - } - + function testAeraVault() public { - address aeraVault = getAddress(sourceChain, "aeraCompoundReservesVault"); - address owner = IVault(aeraVault).owner(); - vm.prank(owner); - IVault(aeraVault).transferOwnership(address(boringVault)); - - address pendingOwner = IVault(aeraVault).pendingOwner(); - assertEq(address(boringVault), pendingOwner); - - vm.prank(pendingOwner); - IVault(aeraVault).acceptOwnership(); - - address whale = 0x37305B1cD40574E4C5Ce33f8e8306Be057fD7341; - vm.prank(whale); - getERC20(sourceChain, "USDC").transfer(address(boringVault), 1000e6); - - uint256 usdcBalance = getERC20(sourceChain, "USDC").balanceOf(address(boringVault)); - assertEq(usdcBalance, 1000e6); - - ERC20[] memory assets = new ERC20[](1); - assets[0] = getERC20(sourceChain, "USDC"); + address aeraVault = getAddress(sourceChain, "aeraCompoundReservesVault"); + address owner = IVault(aeraVault).owner(); + vm.prank(owner); + IVault(aeraVault).transferOwnership(address(boringVault)); + + address pendingOwner = IVault(aeraVault).pendingOwner(); + assertEq(address(boringVault), pendingOwner); + + vm.prank(pendingOwner); + IVault(aeraVault).acceptOwnership(); + + address whale = 0x37305B1cD40574E4C5Ce33f8e8306Be057fD7341; + vm.prank(whale); + getERC20(sourceChain, "USDC").transfer(address(boringVault), 1000e6); + + uint256 usdcBalance = getERC20(sourceChain, "USDC").balanceOf(address(boringVault)); + assertEq(usdcBalance, 1000e6); + + ERC20[] memory assets = new ERC20[](1); + assets[0] = getERC20(sourceChain, "USDC"); ManageLeaf[] memory leafs = new ManageLeaf[](8); - _addAeraLeafs( - leafs, - getAddress(sourceChain, "aeraCompoundReservesVault"), - assets - ); + _addAeraLeafs(leafs, getAddress(sourceChain, "aeraCompoundReservesVault"), assets); bytes32[][] memory manageTree = _generateMerkleTree(leafs); manager.setManageRoot(address(this), manageTree[manageTree.length - 1][0]); @@ -150,27 +144,18 @@ contract AeraVaultIntegrationTest is Test, MerkleTreeHelper { targets[2] = getAddress(sourceChain, "aeraCompoundReservesVault"); targets[3] = getAddress(sourceChain, "aeraCompoundReservesVault"); targets[4] = getAddress(sourceChain, "aeraCompoundReservesVault"); - - DecoderCustomTypes.AssetValue[] memory assetValues = new DecoderCustomTypes.AssetValue[](1); - assetValues[0] = DecoderCustomTypes.AssetValue(getAddress(sourceChain, "USDC"), 100e6); + + DecoderCustomTypes.AssetValue[] memory assetValues = new DecoderCustomTypes.AssetValue[](1); + assetValues[0] = DecoderCustomTypes.AssetValue(getAddress(sourceChain, "USDC"), 100e6); bytes[] memory targetData = new bytes[](5); - targetData[0] = - abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "aeraCompoundReservesVault"), 10000e6); - targetData[1] = abi.encodeWithSignature( - "deposit((address,uint256)[])", - assetValues - ); - targetData[2] = abi.encodeWithSignature( - "withdraw((address,uint256)[])", - assetValues - ); - targetData[3] = abi.encodeWithSignature( - "pause()" - ); - targetData[4] = abi.encodeWithSignature( - "resume()" + targetData[0] = abi.encodeWithSignature( + "approve(address,uint256)", getAddress(sourceChain, "aeraCompoundReservesVault"), 10000e6 ); + targetData[1] = abi.encodeWithSignature("deposit((address,uint256)[])", assetValues); + targetData[2] = abi.encodeWithSignature("withdraw((address,uint256)[])", assetValues); + targetData[3] = abi.encodeWithSignature("pause()"); + targetData[4] = abi.encodeWithSignature("resume()"); uint256[] memory values = new uint256[](5); address[] memory decodersAndSanitizers = new address[](5); @@ -181,10 +166,9 @@ contract AeraVaultIntegrationTest is Test, MerkleTreeHelper { decodersAndSanitizers[4] = rawDataDecoderAndSanitizer; manager.manageVaultWithMerkleVerification(manageProofs, decodersAndSanitizers, targets, targetData, values); - } - // ========================================= HELPER FUNCTIONS ========================================= + // ========================================= HELPER FUNCTIONS ========================================= function _startFork(string memory rpcKey, uint256 blockNumber) internal returns (uint256 forkId) { forkId = vm.createFork(vm.envString(rpcKey), blockNumber); @@ -193,15 +177,14 @@ contract AeraVaultIntegrationTest is Test, MerkleTreeHelper { } interface IVault { - function owner() external returns (address); - function pendingOwner() external returns (address); - function transferOwnership(address newOwner) external; - function acceptOwnership() external; + function owner() external returns (address); + function pendingOwner() external returns (address); + function transferOwnership(address newOwner) external; + function acceptOwnership() external; } - + interface MerklDistributor { function onlyOperatorCanClaim(address user) external view returns (uint256); function operators(address user, address operator) external view returns (uint256); function toggleOperator(address user, address operator) external; } - diff --git a/test/integrations/BTCNMainnetMinterIntegration.t.sol b/test/integrations/BTCNMainnetMinterIntegration.t.sol index 4ad8be91..090d580e 100644 --- a/test/integrations/BTCNMainnetMinterIntegration.t.sol +++ b/test/integrations/BTCNMainnetMinterIntegration.t.sol @@ -8,8 +8,7 @@ import {SafeTransferLib} from "@solmate/utils/SafeTransferLib.sol"; import {FixedPointMathLib} from "@solmate/utils/FixedPointMathLib.sol"; import {ERC20} from "@solmate/tokens/ERC20.sol"; import {ERC4626} from "@solmate/tokens/ERC4626.sol"; -import {BTCNFullMinterDecoderAndSanitizer} from - "src/base/DecodersAndSanitizers/BTCNFullMinterDecoderAndSanitizer.sol"; +import {BTCNFullMinterDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BTCNFullMinterDecoderAndSanitizer.sol"; import {DecoderCustomTypes} from "src/interfaces/DecoderCustomTypes.sol"; import {RolesAuthority, Authority} from "@solmate/auth/authorities/RolesAuthority.sol"; import {MerkleTreeHelper} from "test/resources/MerkleTreeHelper/MerkleTreeHelper.sol"; @@ -27,8 +26,7 @@ contract BTCNMinterIntegrationTest is Test, MerkleTreeHelper { RolesAuthority public rolesAuthority; uint8 public constant MANAGER_ROLE = 1; - uint8 public constant STRATEGIST_ROLE = 2; - uint8 public constant MANGER_INTERNAL_ROLE = 3; + uint8 public constant STRATEGIST_ROLE = 2; uint8 public constant MANGER_INTERNAL_ROLE = 3; uint8 public constant ADMIN_ROLE = 4; uint8 public constant BORING_VAULT_ROLE = 5; uint8 public constant BALANCER_VAULT_ROLE = 6; @@ -37,7 +35,7 @@ contract BTCNMinterIntegrationTest is Test, MerkleTreeHelper { setSourceChainName("mainnet"); // Setup forked environment. string memory rpcKey = "MAINNET_RPC_URL"; - uint256 blockNumber = 21328932; + uint256 blockNumber = 21416471; _startFork(rpcKey, blockNumber); @@ -101,9 +99,8 @@ contract BTCNMinterIntegrationTest is Test, MerkleTreeHelper { rolesAuthority.setUserRole(address(manager), MANAGER_ROLE, true); rolesAuthority.setUserRole(address(boringVault), BORING_VAULT_ROLE, true); rolesAuthority.setUserRole(getAddress(sourceChain, "vault"), BALANCER_VAULT_ROLE, true); - } - + function testBTCNMinter() public { //address _authority, //address _feeRecipient, @@ -117,70 +114,76 @@ contract BTCNMinterIntegrationTest is Test, MerkleTreeHelper { // getAddress(sourceChain, "boringVault"), // 0, // 0, - // 100_000_000e18 - //); - - address cornSwap = getAddress(sourceChain, "cornSwapFacility"); - address authority = 0x515C7d8Fcb950f8b030ac08C994b37b4b8F3F7B5; - address admin = 0xaD2Bef31Db723b8ad1B9BCa41b0F1EBAfD1193d1; - address operator = 0x3964e3572505C1bF51496f9129249E77F55fD044; - vm.startPrank(admin); - IRolesAuthority(authority).setUserRole(address(boringVault), 11, true); - IRolesAuthority(authority).setUserRole(address(boringVault), 12, true); - vm.stopPrank(); - - vm.startPrank(operator); - ISwapFacility(cornSwap).setSwapInEnabled(true); - ISwapFacility(cornSwap).setSwapOutEnabled(true); - vm.stopPrank(); - - assertEq(ISwapFacility(cornSwap).swapInEnabled(), true); - assertEq(ISwapFacility(cornSwap).swapOutEnabled(), true); + // 100_000_000e18 + //); + + address cornSwap = getAddress(sourceChain, "cornSwapFacilityWBTC"); + //address authority = 0x515C7d8Fcb950f8b030ac08C994b37b4b8F3F7B5; + //address admin = 0xaD2Bef31Db723b8ad1B9BCa41b0F1EBAfD1193d1; + //address operator = 0x3964e3572505C1bF51496f9129249E77F55fD044; + //vm.startPrank(admin); + //IRolesAuthority(authority).setUserRole(address(boringVault), 11, true); + //IRolesAuthority(authority).setUserRole(address(boringVault), 12, true); + //vm.stopPrank(); + + //vm.startPrank(operator); + //ISwapFacility(cornSwap).setSwapInEnabled(true); + //ISwapFacility(cornSwap).setSwapOutEnabled(true); + //vm.stopPrank(); - deal(getAddress(sourceChain, "WBTC"), address(boringVault), 10000e18); + assertEq(ISwapFacility(cornSwap).swapInEnabled(), true); + assertEq(ISwapFacility(cornSwap).swapOutEnabled(), true); + + deal(getAddress(sourceChain, "WBTC"), address(boringVault), 10000e18); + deal(getAddress(sourceChain, "BTCN"), address(boringVault), 100e18); + + console.log("debtMinted:", ISwapFacility(cornSwap).debtMinted()); + console.log("debtMintCap:", ISwapFacility(cornSwap).debtMintCap()); ManageLeaf[] memory leafs = new ManageLeaf[](4); _addBTCNLeafs( leafs, getERC20(sourceChain, "WBTC"), getERC20(sourceChain, "BTCN"), - getAddress(sourceChain, "cornSwapFacility") + getAddress(sourceChain, "cornSwapFacilityWBTC") ); bytes32[][] memory manageTree = _generateMerkleTree(leafs); manager.setManageRoot(address(this), manageTree[manageTree.length - 1][0]); ManageLeaf[] memory manageLeafs = new ManageLeaf[](4); - manageLeafs[0] = leafs[0]; - manageLeafs[1] = leafs[1]; - manageLeafs[2] = leafs[2]; - manageLeafs[3] = leafs[3]; + manageLeafs[0] = leafs[0]; + manageLeafs[1] = leafs[1]; + manageLeafs[2] = leafs[2]; + manageLeafs[3] = leafs[3]; bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); address[] memory targets = new address[](4); targets[0] = getAddress(sourceChain, "WBTC"); targets[1] = getAddress(sourceChain, "BTCN"); - targets[2] = getAddress(sourceChain, "cornSwapFacility"); - targets[3] = getAddress(sourceChain, "cornSwapFacility"); + targets[2] = getAddress(sourceChain, "cornSwapFacilityWBTC"); + targets[3] = getAddress(sourceChain, "cornSwapFacilityWBTC"); + console.log(block.timestamp + 1); + bytes[] memory targetData = new bytes[](4); targetData[0] = - abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "cornSwapFacility"), 10000e8); + abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "cornSwapFacilityWBTC"), 10000e8); targetData[1] = - abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "cornSwapFacility"), 10000e8); + abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "cornSwapFacilityWBTC"), type(uint256).max); targetData[2] = abi.encodeWithSignature( "swapExactCollateralForDebt(uint256,uint256,address,uint256)", 1e6, 0, - getAddress(sourceChain, "boringVault"), + getAddress(sourceChain, "boringVault"), block.timestamp + 1 ); targetData[3] = abi.encodeWithSignature( "swapExactDebtForCollateral(uint256,uint256,address,uint256)", - 1e6, //we should get 1:1, I think + 1e18, //we should get 1:1, I think 0, - getAddress(sourceChain, "boringVault"), - block.timestamp + 1 + getAddress(sourceChain, "boringVault"), + 1734370282 + 10000 ); uint256[] memory values = new uint256[](4); @@ -191,10 +194,104 @@ contract BTCNMinterIntegrationTest is Test, MerkleTreeHelper { decodersAndSanitizers[3] = rawDataDecoderAndSanitizer; manager.manageVaultWithMerkleVerification(manageProofs, decodersAndSanitizers, targets, targetData, values); + } + + function testBTCNMintercbBTC() public { + //address _authority, + //address _feeRecipient, + //uint256 _swapInFeeRate, + //uint256 _swapOutFeeRate, + //uint256 _mintCap + + //initialize so we can swap + //ISwapFacility(cornSwap).initialize( + // getAddress(sourceChain, "boringVault"), + // getAddress(sourceChain, "boringVault"), + // 0, + // 0, + // 100_000_000e18 + //); + + address cornSwap = getAddress(sourceChain, "cornSwapFacilitycbBTC"); + //address authority = 0x515C7d8Fcb950f8b030ac08C994b37b4b8F3F7B5; + //address admin = 0xaD2Bef31Db723b8ad1B9BCa41b0F1EBAfD1193d1; + //address operator = 0x3964e3572505C1bF51496f9129249E77F55fD044; + //vm.startPrank(admin); + //IRolesAuthority(authority).setUserRole(address(boringVault), 11, true); + //IRolesAuthority(authority).setUserRole(address(boringVault), 12, true); + //vm.stopPrank(); + + //vm.startPrank(operator); + //ISwapFacility(cornSwap).setSwapInEnabled(true); + //ISwapFacility(cornSwap).setSwapOutEnabled(true); + //vm.stopPrank(); + + assertEq(ISwapFacility(cornSwap).swapInEnabled(), true); + assertEq(ISwapFacility(cornSwap).swapOutEnabled(), true); + + deal(getAddress(sourceChain, "cbBTC"), address(boringVault), 10000e18); + deal(getAddress(sourceChain, "BTCN"), address(boringVault), 100e18); + + console.log("debtMinted:", ISwapFacility(cornSwap).debtMinted()); + console.log("debtMintCap:", ISwapFacility(cornSwap).debtMintCap()); + + ManageLeaf[] memory leafs = new ManageLeaf[](4); + _addBTCNLeafs( + leafs, + getERC20(sourceChain, "cbBTC"), + getERC20(sourceChain, "BTCN"), + getAddress(sourceChain, "cornSwapFacilitycbBTC") + ); + bytes32[][] memory manageTree = _generateMerkleTree(leafs); + manager.setManageRoot(address(this), manageTree[manageTree.length - 1][0]); + + ManageLeaf[] memory manageLeafs = new ManageLeaf[](4); + manageLeafs[0] = leafs[0]; + manageLeafs[1] = leafs[1]; + manageLeafs[2] = leafs[2]; + manageLeafs[3] = leafs[3]; + + bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); + + address[] memory targets = new address[](4); + targets[0] = getAddress(sourceChain, "cbBTC"); + targets[1] = getAddress(sourceChain, "BTCN"); + targets[2] = getAddress(sourceChain, "cornSwapFacilitycbBTC"); + targets[3] = getAddress(sourceChain, "cornSwapFacilitycbBTC"); + + console.log(block.timestamp + 1); + + bytes[] memory targetData = new bytes[](4); + targetData[0] = + abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "cornSwapFacilitycbBTC"), 10000e8); + targetData[1] = + abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "cornSwapFacilitycbBTC"), type(uint256).max); + targetData[2] = abi.encodeWithSignature( + "swapExactCollateralForDebt(uint256,uint256,address,uint256)", + 1e8, + 0, + getAddress(sourceChain, "boringVault"), + block.timestamp + 1 + ); + targetData[3] = abi.encodeWithSignature( + "swapExactDebtForCollateral(uint256,uint256,address,uint256)", + 1e18, //we should get 1:1, I think + 0, + getAddress(sourceChain, "boringVault"), + 1734370282 + 10000 + ); + uint256[] memory values = new uint256[](4); + address[] memory decodersAndSanitizers = new address[](4); + decodersAndSanitizers[0] = rawDataDecoderAndSanitizer; + decodersAndSanitizers[1] = rawDataDecoderAndSanitizer; + decodersAndSanitizers[2] = rawDataDecoderAndSanitizer; + decodersAndSanitizers[3] = rawDataDecoderAndSanitizer; + + manager.manageVaultWithMerkleVerification(manageProofs, decodersAndSanitizers, targets, targetData, values); } - // ========================================= HELPER FUNCTIONS ========================================= + // ========================================= HELPER FUNCTIONS ========================================= function _startFork(string memory rpcKey, uint256 blockNumber) internal returns (uint256 forkId) { forkId = vm.createFork(vm.envString(rpcKey), blockNumber); @@ -209,16 +306,18 @@ interface ISwapFacility { uint256 _swapInFeeRate, uint256 _swapOutFeeRate, uint256 _mintCap - ) external; - - function setSwapInEnabled(bool enabled) external; - function setSwapOutEnabled(bool enabled) external; + ) external; + + function setSwapInEnabled(bool enabled) external; + function setSwapOutEnabled(bool enabled) external; - function swapInEnabled() external view returns (bool); - function swapOutEnabled() external view returns (bool); + function swapInEnabled() external view returns (bool); + function swapOutEnabled() external view returns (bool); + + function debtMinted() external view returns (uint256); + function debtMintCap() external view returns (uint256); } interface IRolesAuthority { - function setUserRole(address user, uint8 role, bool enabled) external; + function setUserRole(address user, uint8 role, bool enabled) external; } - diff --git a/test/integrations/FluidDexIntegration.t.sol b/test/integrations/FluidDexIntegration.t.sol index a5017ad7..37c70811 100644 --- a/test/integrations/FluidDexIntegration.t.sol +++ b/test/integrations/FluidDexIntegration.t.sol @@ -8,7 +8,7 @@ import {SafeTransferLib} from "@solmate/utils/SafeTransferLib.sol"; import {FixedPointMathLib} from "@solmate/utils/FixedPointMathLib.sol"; import {ERC20} from "@solmate/tokens/ERC20.sol"; import {ERC4626} from "@solmate/tokens/ERC4626.sol"; -import {FluidDexFullDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/FluidDexFullDecoderAndSanitizer.sol"; +import {FluidDexFullDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/FluidDexFullDecoderAndSanitizer.sol"; import {DecoderCustomTypes} from "src/interfaces/DecoderCustomTypes.sol"; import {RolesAuthority, Authority} from "@solmate/auth/authorities/RolesAuthority.sol"; import {MerkleTreeHelper} from "test/resources/MerkleTreeHelper/MerkleTreeHelper.sol"; @@ -45,7 +45,7 @@ contract FluidDexIntegrationTest is Test, MerkleTreeHelper { manager = new ManagerWithMerkleVerification(address(this), address(boringVault), getAddress(sourceChain, "vault")); - rawDataDecoderAndSanitizer = address(new FluidDexFullDecoderAndSanitizer(address(boringVault))); + rawDataDecoderAndSanitizer = address(new FluidDexFullDecoderAndSanitizer(address(boringVault))); setAddress(false, sourceChain, "boringVault", address(boringVault)); setAddress(false, sourceChain, "rawDataDecoderAndSanitizer", rawDataDecoderAndSanitizer); @@ -104,129 +104,154 @@ contract FluidDexIntegrationTest is Test, MerkleTreeHelper { // Allow the boring vault to receive ETH. rolesAuthority.setPublicCapability(address(boringVault), bytes4(0), true); } - + function testFluidDexIntegration() public { - deal(getAddress(sourceChain, "WBTC"), address(boringVault), 100e18); - deal(getAddress(sourceChain, "cbBTC"), address(boringVault), 100e18); - - ERC20[] memory supplyTokens = new ERC20[](2); - supplyTokens[0] = getERC20(sourceChain, "WBTC"); - supplyTokens[1] = getERC20(sourceChain, "cbBTC"); - - ERC20[] memory borrowTokens = new ERC20[](1); - borrowTokens[0] = getERC20(sourceChain, "USDT"); - - uint256 dexType = 2000; - + deal(getAddress(sourceChain, "WBTC"), address(boringVault), 100e18); + deal(getAddress(sourceChain, "cbBTC"), address(boringVault), 100e18); + + ERC20[] memory supplyTokens = new ERC20[](2); + supplyTokens[0] = getERC20(sourceChain, "WBTC"); + supplyTokens[1] = getERC20(sourceChain, "cbBTC"); + + ERC20[] memory borrowTokens = new ERC20[](1); + borrowTokens[0] = getERC20(sourceChain, "USDT"); + + uint256 dexType = 2000; + //3 approvals, 1 leaf for `operate()`, 1 leaf for `operatePerfect()` ManageLeaf[] memory leafs = new ManageLeaf[](8); - _addFluidDexLeafs( - leafs, - getAddress(sourceChain,"wBTC-cbBTCDex-USDT"), - dexType, - supplyTokens, - borrowTokens - ); + _addFluidDexLeafs(leafs, getAddress(sourceChain, "wBTC-cbBTCDex-USDT"), dexType, supplyTokens, borrowTokens); bytes32[][] memory manageTree = _generateMerkleTree(leafs); manager.setManageRoot(address(this), manageTree[manageTree.length - 1][0]); ManageLeaf[] memory manageLeafs = new ManageLeaf[](11); - manageLeafs[0] = leafs[0]; //approval supply - manageLeafs[1] = leafs[1]; //approval borrow0 - manageLeafs[2] = leafs[2]; //approval borrow1 - manageLeafs[3] = leafs[3]; //operate() deposit params - manageLeafs[4] = leafs[3]; //operate() borrow params - manageLeafs[5] = leafs[3]; //operate() payback params - manageLeafs[6] = leafs[3]; //operate() withdraw params - manageLeafs[7] = leafs[4]; //operatePerfect() deposit params - manageLeafs[8] = leafs[4]; //operatePerfect() borrow params - manageLeafs[9] = leafs[4]; //operatePerfect() payback params - manageLeafs[10] = leafs[4]; //operatePerfect() withdraw params (use type(int256).min for max withdraw) + manageLeafs[0] = leafs[0]; //approval supply + manageLeafs[1] = leafs[1]; //approval borrow0 + manageLeafs[2] = leafs[2]; //approval borrow1 + manageLeafs[3] = leafs[3]; //operate() deposit params + manageLeafs[4] = leafs[3]; //operate() borrow params + manageLeafs[5] = leafs[3]; //operate() payback params + manageLeafs[6] = leafs[3]; //operate() withdraw params + manageLeafs[7] = leafs[4]; //operatePerfect() deposit params + manageLeafs[8] = leafs[4]; //operatePerfect() borrow params + manageLeafs[9] = leafs[4]; //operatePerfect() payback params + manageLeafs[10] = leafs[4]; //operatePerfect() withdraw params (use type(int256).min for max withdraw) bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); - + //tree setup complete // - //setup boring vault tx data - - //this is what will be minted after we deposit - uint256 nftId = 2795; - uint256 nftPerfectId = 2796; + //setup boring vault tx data + + //this is what will be minted after we deposit + uint256 nftId = 2795; + uint256 nftPerfectId = 2796; //deal some dust to payback borrow //deal(getAddress(sourceChain, "USDC"), address(boringVault), 10e18); //I know USDC and USDT don't have 18decimals - //deal(getAddress(sourceChain, "USDT"), address(boringVault), 10e18); - - address[] memory targets = new address[](11); - targets[0] = getAddress(sourceChain, "WBTC"); - targets[1] = getAddress(sourceChain, "cbBTC"); - targets[2] = getAddress(sourceChain, "USDT"); - targets[3] = getAddress(sourceChain,"wBTC-cbBTCDex-USDT"); - targets[4] = getAddress(sourceChain,"wBTC-cbBTCDex-USDT"); - targets[5] = getAddress(sourceChain,"wBTC-cbBTCDex-USDT"); - targets[6] = getAddress(sourceChain,"wBTC-cbBTCDex-USDT"); - targets[7] = getAddress(sourceChain,"wBTC-cbBTCDex-USDT"); - targets[8] = getAddress(sourceChain,"wBTC-cbBTCDex-USDT"); - targets[9] = getAddress(sourceChain,"wBTC-cbBTCDex-USDT"); - targets[10] = getAddress(sourceChain,"wBTC-cbBTCDex-USDT"); - - bytes[] memory targetData = new bytes[](11); + //deal(getAddress(sourceChain, "USDT"), address(boringVault), 10e18); + + address[] memory targets = new address[](11); + targets[0] = getAddress(sourceChain, "WBTC"); + targets[1] = getAddress(sourceChain, "cbBTC"); + targets[2] = getAddress(sourceChain, "USDT"); + targets[3] = getAddress(sourceChain, "wBTC-cbBTCDex-USDT"); + targets[4] = getAddress(sourceChain, "wBTC-cbBTCDex-USDT"); + targets[5] = getAddress(sourceChain, "wBTC-cbBTCDex-USDT"); + targets[6] = getAddress(sourceChain, "wBTC-cbBTCDex-USDT"); + targets[7] = getAddress(sourceChain, "wBTC-cbBTCDex-USDT"); + targets[8] = getAddress(sourceChain, "wBTC-cbBTCDex-USDT"); + targets[9] = getAddress(sourceChain, "wBTC-cbBTCDex-USDT"); + targets[10] = getAddress(sourceChain, "wBTC-cbBTCDex-USDT"); + + bytes[] memory targetData = new bytes[](11); targetData[0] = - abi.encodeWithSignature("approve(address,uint256)", - getAddress(sourceChain,"wBTC-cbBTCDex-USDT"), - 1000e18 - ); + abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "wBTC-cbBTCDex-USDT"), 1000e18); targetData[1] = - abi.encodeWithSignature("approve(address,uint256)", - getAddress(sourceChain,"wBTC-cbBTCDex-USDT"), - 1000e18 - ); + abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "wBTC-cbBTCDex-USDT"), 1000e18); targetData[2] = - abi.encodeWithSignature("approve(address,uint256)", - getAddress(sourceChain,"wBTC-cbBTCDex-USDT"), - 1000e18 - ); + abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "wBTC-cbBTCDex-USDT"), 1000e18); //deposit - targetData[3] = - abi.encodeWithSignature("operate(uint256,int256,int256,int256,int256,address)", - 0, 10e8, 10e8, 10, 0, getAddress(sourceChain, "boringVault") - ); + targetData[3] = abi.encodeWithSignature( + "operate(uint256,int256,int256,int256,int256,address)", + 0, + 10e8, + 10e8, + 10, + 0, + getAddress(sourceChain, "boringVault") + ); //borrow - targetData[4] = - abi.encodeWithSignature("operate(uint256,int256,int256,int256,int256,address)", - nftId, 0, 0, 0, 1e6, getAddress(sourceChain, "boringVault") - ); + targetData[4] = abi.encodeWithSignature( + "operate(uint256,int256,int256,int256,int256,address)", + nftId, + 0, + 0, + 0, + 1e6, + getAddress(sourceChain, "boringVault") + ); //payback - targetData[5] = - abi.encodeWithSignature("operate(uint256,int256,int256,int256,int256,address)", - nftId, 0, 0, 0, -1e5, getAddress(sourceChain, "boringVault") - ); + targetData[5] = abi.encodeWithSignature( + "operate(uint256,int256,int256,int256,int256,address)", + nftId, + 0, + 0, + 0, + -1e5, + getAddress(sourceChain, "boringVault") + ); //withdraw - targetData[6] = - abi.encodeWithSignature("operate(uint256,int256,int256,int256,int256,address)", - nftId, -10e7, -10e7, -100000e18, 0, getAddress(sourceChain, "boringVault") - ); + targetData[6] = abi.encodeWithSignature( + "operate(uint256,int256,int256,int256,int256,address)", + nftId, + -10e7, + -10e7, + -100000e18, + 0, + getAddress(sourceChain, "boringVault") + ); //deposit perfect - targetData[7] = - abi.encodeWithSignature("operatePerfect(uint256,int256,int256,int256,int256,address)", - 0, 1e18, 1e18, 1e18, 0, getAddress(sourceChain, "boringVault") - ); + targetData[7] = abi.encodeWithSignature( + "operatePerfect(uint256,int256,int256,int256,int256,address)", + 0, + 1e18, + 1e18, + 1e18, + 0, + getAddress(sourceChain, "boringVault") + ); //borrow perfect - targetData[8] = - abi.encodeWithSignature("operatePerfect(uint256,int256,int256,int256,int256,address)", - nftPerfectId, 0, 0, 0, 1e6, getAddress(sourceChain, "boringVault") - ); + targetData[8] = abi.encodeWithSignature( + "operatePerfect(uint256,int256,int256,int256,int256,address)", + nftPerfectId, + 0, + 0, + 0, + 1e6, + getAddress(sourceChain, "boringVault") + ); //payback perfect - targetData[9] = - abi.encodeWithSignature("operatePerfect(uint256,int256,int256,int256,int256,address)", - nftPerfectId, 0, 0, 0, -1e5, getAddress(sourceChain, "boringVault") - ); + targetData[9] = abi.encodeWithSignature( + "operatePerfect(uint256,int256,int256,int256,int256,address)", + nftPerfectId, + 0, + 0, + 0, + -1e5, + getAddress(sourceChain, "boringVault") + ); //withdraw perfect - targetData[10] = - abi.encodeWithSignature("operatePerfect(uint256,int256,int256,int256,int256,address)", - nftPerfectId, -1e17, -1e5, -1e5, 0, getAddress(sourceChain, "boringVault") - ); + targetData[10] = abi.encodeWithSignature( + "operatePerfect(uint256,int256,int256,int256,int256,address)", + nftPerfectId, + -1e17, + -1e5, + -1e5, + 0, + getAddress(sourceChain, "boringVault") + ); uint256[] memory values = new uint256[](11); address[] memory decodersAndSanitizers = new address[](11); decodersAndSanitizers[0] = rawDataDecoderAndSanitizer; @@ -240,9 +265,8 @@ contract FluidDexIntegrationTest is Test, MerkleTreeHelper { decodersAndSanitizers[8] = rawDataDecoderAndSanitizer; decodersAndSanitizers[9] = rawDataDecoderAndSanitizer; decodersAndSanitizers[10] = rawDataDecoderAndSanitizer; - - - manager.manageVaultWithMerkleVerification(manageProofs, decodersAndSanitizers, targets, targetData, values); + + manager.manageVaultWithMerkleVerification(manageProofs, decodersAndSanitizers, targets, targetData, values); } // ========================================= HELPER FUNCTIONS ========================================= @@ -251,5 +275,4 @@ contract FluidDexIntegrationTest is Test, MerkleTreeHelper { forkId = vm.createFork(vm.envString(rpcKey), blockNumber); vm.selectFork(forkId); } - } diff --git a/test/integrations/LombardBtcStaking.t.sol b/test/integrations/LombardBtcStaking.t.sol index 937662df..68386e83 100644 --- a/test/integrations/LombardBtcStaking.t.sol +++ b/test/integrations/LombardBtcStaking.t.sol @@ -8,7 +8,8 @@ import {SafeTransferLib} from "@solmate/utils/SafeTransferLib.sol"; import {FixedPointMathLib} from "@solmate/utils/FixedPointMathLib.sol"; import {ERC20} from "@solmate/tokens/ERC20.sol"; import {ERC4626} from "@solmate/tokens/ERC4626.sol"; -import {LombardBTCFullMinterDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/LombardBtcFullMinterDecoderAndSanitizer.sol"; +import {LombardBTCFullMinterDecoderAndSanitizer} from + "src/base/DecodersAndSanitizers/LombardBtcFullMinterDecoderAndSanitizer.sol"; import {DecoderCustomTypes} from "src/interfaces/DecoderCustomTypes.sol"; import {RolesAuthority, Authority} from "@solmate/auth/authorities/RolesAuthority.sol"; import {MerkleTreeHelper} from "test/resources/MerkleTreeHelper/MerkleTreeHelper.sol"; @@ -43,10 +44,10 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { function _setUp(string memory chainName, string memory RPC_URL, uint256 blockNumber) internal { //setSourceChainName("bsc"); - setSourceChainName(chainName); + setSourceChainName(chainName); // Setup forked environment. //string memory rpcKey = "BNB_RPC_URL"; - string memory rpcKey = RPC_URL; + string memory rpcKey = RPC_URL; //uint256 blockNumber = 43951627; _startFork(rpcKey, blockNumber); @@ -56,7 +57,7 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { manager = new ManagerWithMerkleVerification(address(this), address(boringVault), getAddress(sourceChain, "vault")); - rawDataDecoderAndSanitizer = address(new LombardBTCFullMinterDecoderAndSanitizer(address(boringVault))); + rawDataDecoderAndSanitizer = address(new LombardBTCFullMinterDecoderAndSanitizer(address(boringVault))); setAddress(false, sourceChain, "boringVault", address(boringVault)); setAddress(false, sourceChain, "rawDataDecoderAndSanitizer", rawDataDecoderAndSanitizer); @@ -116,30 +117,24 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { rolesAuthority.setPublicCapability(address(boringVault), bytes4(0), true); } - function testLombardStakingIntegrationBNB() external { - _setUp("bsc", "BNB_RPC_URL", 43951627); + _setUp("bsc", "BNB_RPC_URL", 43951627); // Deploy Mock Consortium - MockConsortium mockConsortium = new MockConsortium(); + MockConsortium mockConsortium = new MockConsortium(); // Transfer ownership to Mock Consortium - address LBTC = getAddress(sourceChain, "LBTC"); - vm.startPrank(ILBTC(LBTC).owner()); - ILBTC(LBTC).changeConsortium(address(mockConsortium)); - ILBTC(LBTC).addMinter(address(boringVault)); - ILBTC(LBTC).toggleWithdrawals(); - ILBTC(LBTC).changeTreasuryAddress(address(69)); - vm.stopPrank(); - + address LBTC = getAddress(sourceChain, "LBTC"); + vm.startPrank(ILBTC(LBTC).owner()); + ILBTC(LBTC).changeConsortium(address(mockConsortium)); + ILBTC(LBTC).addMinter(address(boringVault)); + ILBTC(LBTC).toggleWithdrawals(); + ILBTC(LBTC).changeTreasuryAddress(address(69)); + vm.stopPrank(); - deal(address(getAddress(sourceChain, "BTCB")), address(boringVault), 200e18); + deal(address(getAddress(sourceChain, "BTCB")), address(boringVault), 200e18); ManageLeaf[] memory leafs = new ManageLeaf[](8); - _addLombardBTCLeafs( - leafs, - getERC20(sourceChain, "BTCB"), - getERC20(sourceChain, "LBTC") - ); + _addLombardBTCLeafs(leafs, getERC20(sourceChain, "BTCB"), getERC20(sourceChain, "LBTC")); bytes32[][] memory manageTree = _generateMerkleTree(leafs); manager.setManageRoot(address(this), manageTree[manageTree.length - 1][0]); @@ -148,9 +143,9 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { manageLeafs[0] = leafs[0]; manageLeafs[1] = leafs[1]; manageLeafs[2] = leafs[2]; - manageLeafs[3] = leafs[3]; - manageLeafs[4] = leafs[4]; - + manageLeafs[3] = leafs[3]; + manageLeafs[4] = leafs[4]; + bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); // Targets @@ -161,14 +156,15 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { targets[3] = getAddress(sourceChain, "LBTC"); targets[4] = getAddress(sourceChain, "LBTC"); - bytes memory depositData = abi.encode(OutputWithPayload( + bytes memory depositData = abi.encode( + OutputWithPayload( 56, //bsc chain id getAddress(sourceChain, "boringVault"), uint64(uint256(100e18)), bytes32(uint256(5)), uint32(10) ) - ); + ); bytes memory signature = hex"00"; // Could be any bytes @@ -180,18 +176,14 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { // Target Data bytes[] memory targetData = new bytes[](5); - targetData[0] = + targetData[0] = abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "LBTC"), type(uint256).max); - targetData[1] = - abi.encodeWithSignature("mint(address,uint256)", getAddress(sourceChain, "boringVault"), 100e18); - targetData[2] = - abi.encodeWithSignature("mint(bytes,bytes)", depositData, signature); - targetData[3] = - abi.encodeWithSignature("redeem(bytes,uint256)", scriptPubkey, 90e18); - targetData[4] = - abi.encodeWithSignature("burn(uint256)", 10e18); - - // Eth Amounts + targetData[1] = abi.encodeWithSignature("mint(address,uint256)", getAddress(sourceChain, "boringVault"), 100e18); + targetData[2] = abi.encodeWithSignature("mint(bytes,bytes)", depositData, signature); + targetData[3] = abi.encodeWithSignature("redeem(bytes,uint256)", scriptPubkey, 90e18); + targetData[4] = abi.encodeWithSignature("burn(uint256)", 10e18); + + // Eth Amounts uint256[] memory values = new uint256[](5); //empty, not passing any ETH // Decoders and Sanitizers @@ -207,27 +199,23 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { } function testLombardStakingIntegrationBase() external { - _setUp("base", "BASE_RPC_URL", 22662896 ); - deal(address(getAddress(sourceChain, "cbBTC")), address(boringVault), 1000e18); + _setUp("base", "BASE_RPC_URL", 22662896); + deal(address(getAddress(sourceChain, "cbBTC")), address(boringVault), 1000e18); // Deploy Mock Consortium - MockConsortium mockConsortium = new MockConsortium(); + MockConsortium mockConsortium = new MockConsortium(); // Transfer ownership to Mock Consortium - address LBTC = getAddress(sourceChain, "LBTC"); - vm.startPrank(ILBTC(LBTC).owner()); - ILBTC(LBTC).changeConsortium(address(mockConsortium)); - ILBTC(LBTC).addMinter(address(boringVault)); - ILBTC(LBTC).toggleWithdrawals(); - ILBTC(LBTC).changeTreasuryAddress(address(69)); - vm.stopPrank(); + address LBTC = getAddress(sourceChain, "LBTC"); + vm.startPrank(ILBTC(LBTC).owner()); + ILBTC(LBTC).changeConsortium(address(mockConsortium)); + ILBTC(LBTC).addMinter(address(boringVault)); + ILBTC(LBTC).toggleWithdrawals(); + ILBTC(LBTC).changeTreasuryAddress(address(69)); + vm.stopPrank(); ManageLeaf[] memory leafs = new ManageLeaf[](8); - _addLombardBTCLeafs( - leafs, - getERC20(sourceChain, "cbBTC"), - getERC20(sourceChain, "LBTC") - ); + _addLombardBTCLeafs(leafs, getERC20(sourceChain, "cbBTC"), getERC20(sourceChain, "LBTC")); bytes32[][] memory manageTree = _generateMerkleTree(leafs); manager.setManageRoot(address(this), manageTree[manageTree.length - 1][0]); @@ -236,11 +224,11 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { manageLeafs[0] = leafs[0]; manageLeafs[1] = leafs[1]; manageLeafs[2] = leafs[2]; - manageLeafs[3] = leafs[3]; - manageLeafs[4] = leafs[4]; - manageLeafs[5] = leafs[5]; - manageLeafs[6] = leafs[6]; - + manageLeafs[3] = leafs[3]; + manageLeafs[4] = leafs[4]; + manageLeafs[5] = leafs[5]; + manageLeafs[6] = leafs[6]; + bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); address[] memory targets = new address[](7); @@ -252,14 +240,15 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { targets[5] = getAddress(sourceChain, "cbBTC"); targets[6] = getAddress(sourceChain, "cbBTCPMM"); - bytes memory depositData = abi.encode(OutputWithPayload( + bytes memory depositData = abi.encode( + OutputWithPayload( 8453, //bsc chain id getAddress(sourceChain, "boringVault"), uint64(uint256(100e18)), bytes32(uint256(5)), uint32(10) ) - ); + ); bytes memory signature = hex"00"; // Could be any bytes @@ -271,22 +260,17 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { // Target Data bytes[] memory targetData = new bytes[](7); - targetData[0] = + targetData[0] = abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "LBTC"), type(uint256).max); - targetData[1] = - abi.encodeWithSignature("mint(address,uint256)", getAddress(sourceChain, "boringVault"), 100e18); - targetData[2] = - abi.encodeWithSignature("mint(bytes,bytes)", depositData, signature); - targetData[3] = - abi.encodeWithSignature("redeem(bytes,uint256)", scriptPubkey, 90e18); - targetData[4] = - abi.encodeWithSignature("burn(uint256)", 10e18); - targetData[5] = - abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "cbBTCPMM"), type(uint256).max); - targetData[6] = - abi.encodeWithSignature("swapCBBTCToLBTC(uint256)", 1e4); - - // Eth Amounts + targetData[1] = abi.encodeWithSignature("mint(address,uint256)", getAddress(sourceChain, "boringVault"), 100e18); + targetData[2] = abi.encodeWithSignature("mint(bytes,bytes)", depositData, signature); + targetData[3] = abi.encodeWithSignature("redeem(bytes,uint256)", scriptPubkey, 90e18); + targetData[4] = abi.encodeWithSignature("burn(uint256)", 10e18); + targetData[5] = + abi.encodeWithSignature("approve(address,uint256)", getAddress(sourceChain, "cbBTCPMM"), type(uint256).max); + targetData[6] = abi.encodeWithSignature("swapCBBTCToLBTC(uint256)", 1e4); + + // Eth Amounts uint256[] memory values = new uint256[](7); //empty, not passing any ETH // Decoders and Sanitizers @@ -301,10 +285,8 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { // Run the functions manager.manageVaultWithMerkleVerification(manageProofs, decodersAndSanitizers, targets, targetData, values); - } - // ========================================= HELPER FUNCTIONS ========================================= function _startFork(string memory rpcKey, uint256 blockNumber) internal returns (uint256 forkId) { @@ -312,25 +294,25 @@ contract LombardBTCStakingIntegrationTest is Test, MerkleTreeHelper { forkId = vm.createFork(vm.envString(rpcKey), blockNumber); vm.selectFork(forkId); } - } interface ILBTC { - function owner() external returns (address); - function changeConsortium(address newVal) external; - function addMinter(address minter) external; - function toggleWithdrawals() external; - function changeTreasuryAddress(address newValue) external; + function owner() external returns (address); + function changeConsortium(address newVal) external; + function addMinter(address minter) external; + function toggleWithdrawals() external; + function changeTreasuryAddress(address newValue) external; } // Mock consortium that accepts any signature contract MockConsortium { // This is the magic value that EIP1271 expects for valid signatures - bytes4 constant internal MAGIC_VALUE = 0x1626ba7e; + bytes4 internal constant MAGIC_VALUE = 0x1626ba7e; function isValidSignature(bytes32 hash, bytes calldata signature) external pure returns (bytes4) { // Always return the magic value indicating a valid signature - hash; signature; + hash; + signature; return MAGIC_VALUE; } } diff --git a/test/integrations/TermFinanceIntegration.t.sol b/test/integrations/TermFinanceIntegration.t.sol index 705d25bc..0841c115 100644 --- a/test/integrations/TermFinanceIntegration.t.sol +++ b/test/integrations/TermFinanceIntegration.t.sol @@ -8,9 +8,7 @@ import {SafeTransferLib} from "@solmate/utils/SafeTransferLib.sol"; import {FixedPointMathLib} from "@solmate/utils/FixedPointMathLib.sol"; import {ERC20} from "@solmate/tokens/ERC20.sol"; import {ERC4626} from "@solmate/tokens/ERC4626.sol"; -import { - TermFinanceDecoderAndSanitizer -} from "src/base/DecodersAndSanitizers/TermFinanceDecoderAndSanitizer.sol"; +import {TermFinanceDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/TermFinanceDecoderAndSanitizer.sol"; import {DecoderCustomTypes} from "src/interfaces/DecoderCustomTypes.sol"; import {RolesAuthority, Authority} from "@solmate/auth/authorities/RolesAuthority.sol"; import {MerkleTreeHelper} from "test/resources/MerkleTreeHelper/MerkleTreeHelper.sol"; @@ -59,7 +57,7 @@ contract TermFinanceIntegrationTest is Test, MerkleTreeHelper { ManageLeaf[] memory manageLeafs = new ManageLeaf[](2); manageLeafs[0] = leafs[0]; manageLeafs[1] = leafs[1]; - + bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); address[] memory targets = new address[](2); @@ -69,16 +67,19 @@ contract TermFinanceIntegrationTest is Test, MerkleTreeHelper { targetData[0] = abi.encodeWithSignature( "approve(address,uint256)", getAddress(sourceChain, "termRepoLocker"), type(uint256).max ); - DecoderCustomTypes.TermAuctionOfferSubmission memory termAuctionOfferSubmission = DecoderCustomTypes.TermAuctionOfferSubmission( + DecoderCustomTypes.TermAuctionOfferSubmission memory termAuctionOfferSubmission = DecoderCustomTypes + .TermAuctionOfferSubmission( keccak256(abi.encodePacked(uint256(block.timestamp), address(boringVault))), address(boringVault), keccak256(abi.encode(uint256(10e17), uint256(1e18))), 2e18, - weth + weth ); - DecoderCustomTypes.TermAuctionOfferSubmission[] memory offerSubmissions = new DecoderCustomTypes.TermAuctionOfferSubmission[](1); + DecoderCustomTypes.TermAuctionOfferSubmission[] memory offerSubmissions = + new DecoderCustomTypes.TermAuctionOfferSubmission[](1); offerSubmissions[0] = termAuctionOfferSubmission; - targetData[1] = abi.encodeWithSignature("lockOffers((bytes32,address,bytes32,uint256,address)[])", offerSubmissions); + targetData[1] = + abi.encodeWithSignature("lockOffers((bytes32,address,bytes32,uint256,address)[])", offerSubmissions); address[] memory decodersAndSanitizers = new address[](2); decodersAndSanitizers[0] = rawDataDecoderAndSanitizer; @@ -96,14 +97,13 @@ contract TermFinanceIntegrationTest is Test, MerkleTreeHelper { termAuctionOfferLockers[0] = getAddress(sourceChain, "termAuctionOfferLocker"); _addTermFinanceUnlockOfferLeafs(leafs, termAuctionOfferLockers); - bytes32[][] memory manageTree = _generateMerkleTree(leafs); manager.setManageRoot(address(this), manageTree[manageTree.length - 1][0]); ManageLeaf[] memory manageLeafs = new ManageLeaf[](1); manageLeafs[0] = leafs[0]; - + bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); address[] memory targets = new address[](1); @@ -111,12 +111,10 @@ contract TermFinanceIntegrationTest is Test, MerkleTreeHelper { bytes[] memory targetData = new bytes[](1); bytes32[] memory offerIds = new bytes32[](1); - bytes32 idHash = keccak256(abi.encodePacked(uint256(block.timestamp), address(boringVault))); - offerIds[0] = keccak256( - abi.encodePacked(idHash, address(boringVault), termAuctionOfferLockers[0]) - ); + bytes32 idHash = keccak256(abi.encodePacked(uint256(block.timestamp), address(boringVault))); + offerIds[0] = keccak256(abi.encodePacked(idHash, address(boringVault), termAuctionOfferLockers[0])); targetData[0] = abi.encodeWithSignature("unlockOffers(bytes32[])", offerIds); - + address[] memory decodersAndSanitizers = new address[](1); decodersAndSanitizers[0] = rawDataDecoderAndSanitizer; manager.manageVaultWithMerkleVerification( @@ -126,7 +124,7 @@ contract TermFinanceIntegrationTest is Test, MerkleTreeHelper { function testTermFinanceIntegrationRevealOffer() external { testTermFinanceIntegrationLockOffer(); - bytes32 idHash = keccak256(abi.encodePacked(uint256(block.timestamp), address(boringVault))); + bytes32 idHash = keccak256(abi.encodePacked(uint256(block.timestamp), address(boringVault))); vm.warp(1725555601); leafIndex = type(uint256).max; @@ -135,14 +133,13 @@ contract TermFinanceIntegrationTest is Test, MerkleTreeHelper { termAuctionOfferLockers[0] = getAddress(sourceChain, "termAuctionOfferLocker"); _addTermFinanceRevealOfferLeafs(leafs, termAuctionOfferLockers); - bytes32[][] memory manageTree = _generateMerkleTree(leafs); manager.setManageRoot(address(this), manageTree[manageTree.length - 1][0]); ManageLeaf[] memory manageLeafs = new ManageLeaf[](1); manageLeafs[0] = leafs[0]; - + bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); address[] memory targets = new address[](1); @@ -150,9 +147,7 @@ contract TermFinanceIntegrationTest is Test, MerkleTreeHelper { bytes[] memory targetData = new bytes[](1); bytes32[] memory offerIds = new bytes32[](1); - offerIds[0] = keccak256( - abi.encodePacked(idHash, address(boringVault), termAuctionOfferLockers[0]) - ); + offerIds[0] = keccak256(abi.encodePacked(idHash, address(boringVault), termAuctionOfferLockers[0])); uint256[] memory prices = new uint256[](1); prices[0] = uint256(10e17); @@ -161,7 +156,7 @@ contract TermFinanceIntegrationTest is Test, MerkleTreeHelper { nonces[0] = uint256(1e18); targetData[0] = abi.encodeWithSignature("revealOffers(bytes32[],uint256[],uint256[])", offerIds, prices, nonces); - + address[] memory decodersAndSanitizers = new address[](1); decodersAndSanitizers[0] = rawDataDecoderAndSanitizer; manager.manageVaultWithMerkleVerification( @@ -187,9 +182,9 @@ contract TermFinanceIntegrationTest is Test, MerkleTreeHelper { ManageLeaf[] memory manageLeafs = new ManageLeaf[](1); manageLeafs[0] = leafs[0]; - + bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); - + address[] memory targets = new address[](1); targets[0] = getAddress(sourceChain, "termRepoServicer"); @@ -215,11 +210,7 @@ contract TermFinanceIntegrationTest is Test, MerkleTreeHelper { manager = new ManagerWithMerkleVerification(address(this), address(boringVault), getAddress(sourceChain, "vault")); - rawDataDecoderAndSanitizer = address( - new TermFinanceDecoderAndSanitizer( - address(boringVault) - ) - ); + rawDataDecoderAndSanitizer = address(new TermFinanceDecoderAndSanitizer(address(boringVault))); setAddress(false, sourceChain, "boringVault", address(boringVault)); setAddress(false, sourceChain, "rawDataDecoderAndSanitizer", rawDataDecoderAndSanitizer); diff --git a/test/integrations/WeETHIntegration.t.sol b/test/integrations/WeETHIntegration.t.sol index 329f319b..3fd96b86 100644 --- a/test/integrations/WeETHIntegration.t.sol +++ b/test/integrations/WeETHIntegration.t.sol @@ -45,7 +45,7 @@ contract WeETHIntegrationTest is Test, MerkleTreeHelper { manager = new ManagerWithMerkleVerification(address(this), address(boringVault), getAddress(sourceChain, "vault")); - rawDataDecoderAndSanitizer = address(new WeETHFullDecoderAndSanitizer(address(boringVault))); + rawDataDecoderAndSanitizer = address(new WeETHFullDecoderAndSanitizer(address(boringVault))); setAddress(false, sourceChain, "boringVault", address(boringVault)); setAddress(false, sourceChain, "rawDataDecoderAndSanitizer", rawDataDecoderAndSanitizer); @@ -105,9 +105,8 @@ contract WeETHIntegrationTest is Test, MerkleTreeHelper { rolesAuthority.setPublicCapability(address(boringVault), bytes4(0), true); } - function testWeETHIntegration() external { - deal(address(boringVault), 100e18); + deal(address(boringVault), 100e18); ManageLeaf[] memory leafs = new ManageLeaf[](2); _addWeETHLeafs( @@ -118,38 +117,38 @@ contract WeETHIntegrationTest is Test, MerkleTreeHelper { bytes32[][] memory manageTree = _generateMerkleTree(leafs); manager.setManageRoot(address(this), manageTree[manageTree.length - 1][0]); - + ManageLeaf[] memory manageLeafs = new ManageLeaf[](1); manageLeafs[0] = leafs[0]; bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); address[] memory targets = new address[](1); - targets[0] = getAddress(sourceChain, "etherFiL2SyncPool"); - - bytes[] memory targetData = new bytes[](1); - targetData[0] = - abi.encodeWithSignature("deposit(address,uint256,uint256,address)", - getAddress(sourceChain, "ETH"), - 198600000000000000, - 178740000000000000, + targets[0] = getAddress(sourceChain, "etherFiL2SyncPool"); + + bytes[] memory targetData = new bytes[](1); + targetData[0] = abi.encodeWithSignature( + "deposit(address,uint256,uint256,address)", + getAddress(sourceChain, "ETH"), + 198600000000000000, + 178740000000000000, getAddress(sourceChain, "boringVault") ); uint256[] memory values = new uint256[](1); - values[0] = 198600000000000000; + values[0] = 198600000000000000; address[] memory decodersAndSanitizers = new address[](1); - decodersAndSanitizers[0] = rawDataDecoderAndSanitizer; + decodersAndSanitizers[0] = rawDataDecoderAndSanitizer; //send the tx manager.manageVaultWithMerkleVerification(manageProofs, decodersAndSanitizers, targets, targetData, values); - + //sanity check - uint256 weETHBalance = getERC20(sourceChain, "WEETH").balanceOf(address(boringVault)); - assertGt(weETHBalance, 0); + uint256 weETHBalance = getERC20(sourceChain, "WEETH").balanceOf(address(boringVault)); + assertGt(weETHBalance, 0); } function testWeETHIntegration__Reverts() external { - deal(address(boringVault), 1); + deal(address(boringVault), 1); ManageLeaf[] memory leafs = new ManageLeaf[](2); _addWeETHLeafs( @@ -160,43 +159,41 @@ contract WeETHIntegrationTest is Test, MerkleTreeHelper { bytes32[][] memory manageTree = _generateMerkleTree(leafs); manager.setManageRoot(address(this), manageTree[manageTree.length - 1][0]); - + ManageLeaf[] memory manageLeafs = new ManageLeaf[](1); manageLeafs[0] = leafs[0]; bytes32[][] memory manageProofs = _getProofsUsingTree(manageLeafs, manageTree); address[] memory targets = new address[](1); - targets[0] = getAddress(sourceChain, "etherFiL2SyncPool"); - - bytes[] memory targetData = new bytes[](1); - targetData[0] = - abi.encodeWithSignature("deposit(address,uint256,uint256,address)", - getAddress(sourceChain, "ETH"), - 198600000000000000, - 178740000000000000, + targets[0] = getAddress(sourceChain, "etherFiL2SyncPool"); + + bytes[] memory targetData = new bytes[](1); + targetData[0] = abi.encodeWithSignature( + "deposit(address,uint256,uint256,address)", + getAddress(sourceChain, "ETH"), + 198600000000000000, + 178740000000000000, getAddress(sourceChain, "boringVault") ); uint256[] memory values = new uint256[](1); - values[0] = 198600000000000000; + values[0] = 198600000000000000; address[] memory decodersAndSanitizers = new address[](1); - decodersAndSanitizers[0] = rawDataDecoderAndSanitizer; + decodersAndSanitizers[0] = rawDataDecoderAndSanitizer; //send the tx vm.expectRevert(); //not enough ETH manager.manageVaultWithMerkleVerification(manageProofs, decodersAndSanitizers, targets, targetData, values); - + //sanity check - uint256 weETHBalance = getERC20(sourceChain, "WEETH").balanceOf(address(boringVault)); - assertEq(weETHBalance, 0); + uint256 weETHBalance = getERC20(sourceChain, "WEETH").balanceOf(address(boringVault)); + assertEq(weETHBalance, 0); } - // ========================================= HELPER FUNCTIONS ========================================= function _startFork(string memory rpcKey, uint256 blockNumber) internal returns (uint256 forkId) { forkId = vm.createFork(vm.envString(rpcKey), blockNumber); vm.selectFork(forkId); } - } diff --git a/test/resources/ChainValues.sol b/test/resources/ChainValues.sol index 90c74a10..db254e5f 100644 --- a/test/resources/ChainValues.sol +++ b/test/resources/ChainValues.sol @@ -32,6 +32,7 @@ contract ChainValues { uint32 public constant layerZeroArbitrumEndpointId = 30110; uint32 public constant layerZeroLineaEndpointId = 30183; uint32 public constant layerZeroScrollEndpointId = 30214; + uint32 public constant layerZeroCornEndpointId = 30331; uint32 public constant hyperlaneMainnetEndpointId = 1; uint32 public constant hyperlaneEclipseEndpointId = 1408864445; @@ -119,7 +120,7 @@ contract ChainValues { values[mainnet]["DAI"] = 0x6B175474E89094C44Da98b954EedeAC495271d0F.toBytes32(); values[mainnet]["WSTETH"] = 0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0.toBytes32(); values[mainnet]["STETH"] = 0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84.toBytes32(); - values[mainnet]["WeETH"] = 0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee.toBytes32(); + values[mainnet]["WeETH"] = 0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee.toBytes32(); values[mainnet]["FRAX"] = 0x853d955aCEf822Db058eb8505911ED77F175b99e.toBytes32(); values[mainnet]["BAL"] = 0xba100000625a3754423978a60c9317c58a424e3D.toBytes32(); values[mainnet]["COMP"] = 0xc00e94Cb662C3520282E6f5717214004A7f26888.toBytes32(); @@ -180,7 +181,7 @@ contract ChainValues { values[mainnet]["ZRO"] = 0x6985884C4392D348587B19cb9eAAf157F13271cd.toBytes32(); values[mainnet]["eBTC"] = 0x657e8C867D8B37dCC18fA4Caead9C45EB088C642.toBytes32(); values[mainnet]["USDS"] = 0xdC035D45d973E3EC169d2276DDab16f1e407384F.toBytes32(); - values[mainnet]["BTCN"] = 0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6.toBytes32(); + values[mainnet]["BTCN"] = 0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6.toBytes32(); // Rate providers values[mainnet]["WEETH_RATE_PROVIDER"] = 0xCd5fE23C85820F7B72D0926FC9b05b43E359b7ee.toBytes32(); @@ -658,7 +659,7 @@ contract ChainValues { // Aave V3 values[mainnet]["v3Pool"] = 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2.toBytes32(); - values[mainnet]["v3RewardsController"] = 0x8164Cc65827dcFe994AB23944CBC90e0aa80bFcb.toBytes32(); + values[mainnet]["v3RewardsController"] = 0x8164Cc65827dcFe994AB23944CBC90e0aa80bFcb.toBytes32(); // Aave V3 Lido values[mainnet]["v3LidoPool"] = 0x4e033931ad43597d96D6bcc25c280717730B58B1.toBytes32(); @@ -726,9 +727,9 @@ contract ChainValues { values[mainnet]["fWETH"] = 0x90551c1795392094FE6D29B758EcCD233cFAa260.toBytes32(); values[mainnet]["fWSTETH"] = 0x2411802D8BEA09be0aF8fD8D08314a63e706b29C.toBytes32(); values[mainnet]["fGHO"] = 0x6A29A46E21C730DcA1d8b23d637c101cec605C5B.toBytes32(); - values[mainnet]["fVault"] = 0x3E11B9aEb9C7dBbda4DD41477223Cc2f3f24b9d7.toBytes32(); - values[mainnet]["WeETHDexUSDC-USDT"] = 0x01F0D07fdE184614216e76782c6b7dF663F5375e.toBytes32(); - values[mainnet]["wBTC-cbBTCDex-USDT"] = 0xf7FA55D14C71241e3c970E30C509Ff58b5f5D557.toBytes32(); + values[mainnet]["fVault"] = 0x3E11B9aEb9C7dBbda4DD41477223Cc2f3f24b9d7.toBytes32(); + values[mainnet]["WeETHDexUSDC-USDT"] = 0x01F0D07fdE184614216e76782c6b7dF663F5375e.toBytes32(); + values[mainnet]["wBTC-cbBTCDex-USDT"] = 0xf7FA55D14C71241e3c970E30C509Ff58b5f5D557.toBytes32(); // Symbiotic values[mainnet]["wstETHDefaultCollateral"] = 0xC329400492c6ff2438472D4651Ad17389fCb843a.toBytes32(); @@ -840,7 +841,8 @@ contract ChainValues { // corn values[mainnet]["cornSilo"] = 0x8bc93498b861fd98277c3b51d240e7E56E48F23c.toBytes32(); - values[mainnet]["cornSwapFacility"] = 0x5f5ec4E17a2c2851D8c42B78Fc1A3d2c57070732.toBytes32(); + values[mainnet]["cornSwapFacilityWBTC"] = 0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea.toBytes32(); + values[mainnet]["cornSwapFacilitycbBTC"] = 0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1.toBytes32(); // Treehouse values[mainnet]["TreehouseRedemption"] = 0x0618DBdb3Be798346e6D9C08c3c84658f94aD09F.toBytes32(); @@ -855,14 +857,12 @@ contract ChainValues { values[mainnet]["termRepoToken"] = 0x3A1427da14F8A57CEe76a5E85fB465ed72De8EC7.toBytes32(); //Aera - values[mainnet]["aeraCompoundReservesVault"] = 0x3D6eEf6A92b15361697698695334E98C5db91D6b.toBytes32(); - values[mainnet]["aeraLoopBTCVault"] = 0x47562b3738C439B80fe4012e6D40c8acB51ce136.toBytes32(); + values[mainnet]["aeraCompoundReservesVault"] = 0x3D6eEf6A92b15361697698695334E98C5db91D6b.toBytes32(); + values[mainnet]["aeraLoopBTCVault"] = 0x47562b3738C439B80fe4012e6D40c8acB51ce136.toBytes32(); // Hyperlane values[mainnet]["hyperlaneUsdcRouter"] = 0xe1De9910fe71cC216490AC7FCF019e13a34481D7.toBytes32(); values[mainnet]["hyperlaneTestRecipient"] = 0xfb53392bf4a0590a317ca716c28c29ace7c448bc132d7f8188ca234f595aa121; - - } function _addBaseValues() private { @@ -891,14 +891,14 @@ contract ChainValues { values[base]["BSDETH"] = 0xCb327b99fF831bF8223cCEd12B1338FF3aA322Ff.toBytes32(); values[base]["SFRXETH"] = 0x1f55a02A049033E3419a8E2975cF3F572F4e6E9A.toBytes32(); values[base]["cbBTC"] = 0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf.toBytes32(); - values[base]["LBTC"] = 0xecAc9C5F704e954931349Da37F60E39f515c11c1.toBytes32(); + values[base]["LBTC"] = 0xecAc9C5F704e954931349Da37F60E39f515c11c1.toBytes32(); values[base]["tBTC"] = 0x236aa50979D5f3De3Bd1Eeb40E81137F22ab794b.toBytes32(); - values[base]["WBTC"] = 0x0555E30da8f98308EdB960aa94C0Db47230d2B9c.toBytes32(); + values[base]["WBTC"] = 0x0555E30da8f98308EdB960aa94C0Db47230d2B9c.toBytes32(); values[base]["dlcBTC"] = 0x12418783e860997eb99e8aCf682DF952F721cF62.toBytes32(); - //values[base]["PENDLE"] = //no token yet? + //values[base]["PENDLE"] = //no token yet? // Lombard - values[base]["cbBTCPMM"] = 0x92c01FC0F59857c6E920EdFf1139904b2Bb74c7c.toBytes32(); + values[base]["cbBTCPMM"] = 0x92c01FC0F59857c6E920EdFf1139904b2Bb74c7c.toBytes32(); // Balancer vault values[base]["vault"] = 0xBA12222222228d8Ba445958a75a0704d566BF2C8.toBytes32(); @@ -936,16 +936,16 @@ contract ChainValues { values[base]["wstETH_wETH_945"] = 0x3a4048c64ba1b375330d376b1ce40e4047d03b47ab4d48af484edec9fec801ba; values[base]["cbETH_wETH_965"] = 0x6600aae6c56d242fa6ba68bd527aff1a146e77813074413186828fd3f1cdca91; values[base]["cbETH_wETH_945"] = 0x84662b4f95b85d6b082b68d32cf71bb565b3f22f216a65509cc2ede7dccdfe8c; - + // Uniswap values[base]["uniV3Router"] = 0x2626664c2603336E57B271c5C0b26F421741e481.toBytes32(); - + // 1inch values[base]["aggregationRouterV5"] = 0x1111111254EEB25477B68fb85Ed929f73A960582.toBytes32(); values[base]["oneInchExecutor"] = 0xE37e799D5077682FA0a244D46E5649F71457BD09.toBytes32(); - + // MetaMorpho - values[base]["gauntletCbBTCcore"] = 0x6770216aC60F634483Ec073cBABC4011c94307Cb.toBytes32(); + values[base]["gauntletCbBTCcore"] = 0x6770216aC60F634483Ec073cBABC4011c94307Cb.toBytes32(); // Compound V3 values[base]["cWETHV3"] = 0x46e6b214b524310239732D51387075E0e70970bf.toBytes32(); @@ -955,17 +955,13 @@ contract ChainValues { values[base]["fWETH"] = 0x9272D6153133175175Bc276512B2336BE3931CE9.toBytes32(); values[base]["fWSTETH"] = 0x896E39f0E9af61ECA9dD2938E14543506ef2c2b5.toBytes32(); - - // Pendle - values[base]["pendleRouter"] = 0x888888888889758F76e7103c6CbF23ABbF58F946.toBytes32(); - values[base]["pendleLimitOrderRouter"] = 0xf86DDA825885674F85C5420079E1Df1bC0F372c6.toBytes32(); - values[base]["pendle_LBTC_market_05_29_25"] = 0x727cEbAcfb10fFd353Fc221D06A862B437eC1735.toBytes32(); - - - - // EtherFi WeETH - values[base]["etherFiL2SyncPool"] = 0xc38e046dFDAdf15f7F56853674242888301208a5.toBytes32(); + // Pendle + values[base]["pendleRouter"] = 0x888888888889758F76e7103c6CbF23ABbF58F946.toBytes32(); + values[base]["pendleLimitOrderRouter"] = 0xf86DDA825885674F85C5420079E1Df1bC0F372c6.toBytes32(); + values[base]["pendle_LBTC_market_05_29_25"] = 0x727cEbAcfb10fFd353Fc221D06A862B437eC1735.toBytes32(); + // EtherFi WeETH + values[base]["etherFiL2SyncPool"] = 0xc38e046dFDAdf15f7F56853674242888301208a5.toBytes32(); } function _addArbitrumValues() private { @@ -1259,8 +1255,8 @@ contract ChainValues { values[bsc]["LBTC"] = 0xecAc9C5F704e954931349Da37F60E39f515c11c1.toBytes32(); values[bsc]["WBTC"] = 0x0555E30da8f98308EdB960aa94C0Db47230d2B9c.toBytes32(); values[bsc]["WBNB"] = 0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c.toBytes32(); - values[bsc]["BTCB"] = 0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c.toBytes32(); - + values[bsc]["BTCB"] = 0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c.toBytes32(); + //Balancer (not deployed on BSC, but needed for merkle manager) values[bsc]["vault"] = 0xBA12222222228d8Ba445958a75a0704d566BF2C8.toBytes32(); } diff --git a/test/resources/MerkleTreeHelper/MerkleTreeHelper.sol b/test/resources/MerkleTreeHelper/MerkleTreeHelper.sol index fde7df3b..84c7541e 100644 --- a/test/resources/MerkleTreeHelper/MerkleTreeHelper.sol +++ b/test/resources/MerkleTreeHelper/MerkleTreeHelper.sol @@ -7,7 +7,8 @@ import {Strings} from "lib/openzeppelin-contracts/contracts/utils/Strings.sol"; import {ERC4626} from "@solmate/tokens/ERC4626.sol"; import {Address} from "@openzeppelin/contracts/utils/Address.sol"; import {IComet} from "src/interfaces/IComet.sol"; -import {TellerWithMultiAssetSupport} from "src/base/Roles/TellerWithMultiAssetSupport.sol"; import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; +import {TellerWithMultiAssetSupport} from "src/base/Roles/TellerWithMultiAssetSupport.sol"; +import {BaseDecoderAndSanitizer} from "src/base/DecodersAndSanitizers/BaseDecoderAndSanitizer.sol"; import "forge-std/Base.sol"; contract MerkleTreeHelper is CommonBase, ChainValues { @@ -2097,22 +2098,37 @@ contract MerkleTreeHelper is CommonBase, ChainValues { // ========================================= Aave V3 ========================================= - function _addAaveV3Leafs(ManageLeaf[] memory leafs, ERC20[] memory supplyAssets, ERC20[] memory borrowAssets, ERC20[] memory claimAssets) - internal - { - _addAaveV3ForkLeafs("Aave V3", getAddress(sourceChain, "v3Pool"), leafs, supplyAssets, borrowAssets, claimAssets); + function _addAaveV3Leafs( + ManageLeaf[] memory leafs, + ERC20[] memory supplyAssets, + ERC20[] memory borrowAssets, + ERC20[] memory claimAssets + ) internal { + _addAaveV3ForkLeafs( + "Aave V3", getAddress(sourceChain, "v3Pool"), leafs, supplyAssets, borrowAssets, claimAssets + ); } - function _addAaveV3LidoLeafs(ManageLeaf[] memory leafs, ERC20[] memory supplyAssets, ERC20[] memory borrowAssets, ERC20[] memory claimAssets) - internal - { - _addAaveV3ForkLeafs("Aave V3 Lido", getAddress(sourceChain, "v3LidoPool"), leafs, supplyAssets, borrowAssets, claimAssets); + function _addAaveV3LidoLeafs( + ManageLeaf[] memory leafs, + ERC20[] memory supplyAssets, + ERC20[] memory borrowAssets, + ERC20[] memory claimAssets + ) internal { + _addAaveV3ForkLeafs( + "Aave V3 Lido", getAddress(sourceChain, "v3LidoPool"), leafs, supplyAssets, borrowAssets, claimAssets + ); } - function _addSparkLendLeafs(ManageLeaf[] memory leafs, ERC20[] memory supplyAssets, ERC20[] memory borrowAssets, ERC20[] memory claimAssets) - internal - { - _addAaveV3ForkLeafs("SparkLend", getAddress(sourceChain, "sparkLendPool"), leafs, supplyAssets, borrowAssets, claimAssets); + function _addSparkLendLeafs( + ManageLeaf[] memory leafs, + ERC20[] memory supplyAssets, + ERC20[] memory borrowAssets, + ERC20[] memory claimAssets + ) internal { + _addAaveV3ForkLeafs( + "SparkLend", getAddress(sourceChain, "sparkLendPool"), leafs, supplyAssets, borrowAssets, claimAssets + ); } function _addAaveV3ForkLeafs( @@ -2251,8 +2267,8 @@ contract MerkleTreeHelper is CommonBase, ChainValues { ); for (uint256 i; i < claimAssets.length; i++) { - unchecked{ - leafIndex++; + unchecked { + leafIndex++; } leafs[leafIndex] = ManageLeaf( getAddress(sourceChain, "v3RewardsController"), @@ -2261,8 +2277,8 @@ contract MerkleTreeHelper is CommonBase, ChainValues { new address[](1), string.concat("Claim reward", claimAssets[i].symbol()), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); - leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); + ); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); } } @@ -3753,7 +3769,7 @@ contract MerkleTreeHelper is CommonBase, ChainValues { getAddress(sourceChain, "rawDataDecoderAndSanitizer") ); leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); - leafs[leafIndex].argumentAddresses[1] = operator; + leafs[leafIndex].argumentAddresses[1] = operator; leafs[leafIndex].argumentAddresses[2] = getAddress(sourceChain, "boringVault"); leafs[leafIndex].argumentAddresses[3] = strategy; leafs[leafIndex].argumentAddresses[4] = lst; @@ -4321,10 +4337,16 @@ contract MerkleTreeHelper is CommonBase, ChainValues { } // ========================================= Fluid Dex ========================================= - + // @notice dex borrows happen against a vault, but each dex type is different, ranging from T1 to T4 indicating either smart collateral or smart debt (see docs for more) // @param dexType 2000, 3000, 4000. Used by Instadapp for types of pools. They have different operate functions, but each pool will only need it's specific type - function _addFluidDexLeafs(ManageLeaf[] memory leafs, address dex, uint256 dexType, ERC20[] memory supplyTokens, ERC20[] memory borrowTokens) internal { + function _addFluidDexLeafs( + ManageLeaf[] memory leafs, + address dex, + uint256 dexType, + ERC20[] memory supplyTokens, + ERC20[] memory borrowTokens + ) internal { // Approvals for token for (uint256 i = 0; i < supplyTokens.length; i++) { unchecked { @@ -4357,7 +4379,7 @@ contract MerkleTreeHelper is CommonBase, ChainValues { ); leafs[leafIndex].argumentAddresses[0] = dex; } - + //t2 and t3 leaves if (dexType == 2000 || dexType == 3000) { unchecked { @@ -4371,7 +4393,7 @@ contract MerkleTreeHelper is CommonBase, ChainValues { string.concat("Operate on Fluid Dex Vault"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") ); - leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); unchecked { leafIndex++; @@ -4384,7 +4406,7 @@ contract MerkleTreeHelper is CommonBase, ChainValues { string.concat("Operate Perfect on Fluid Dex Vault"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") ); - leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); } //t4 leaves @@ -4400,7 +4422,7 @@ contract MerkleTreeHelper is CommonBase, ChainValues { string.concat("Operate on Fluid Dex Vault"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") ); - leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); unchecked { leafIndex++; @@ -4413,10 +4435,9 @@ contract MerkleTreeHelper is CommonBase, ChainValues { string.concat("Operate on Fluid Dex Vault"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") ); - leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); } - - } + } // ========================================= Symbiotic ========================================= @@ -5694,11 +5715,10 @@ contract MerkleTreeHelper is CommonBase, ChainValues { ); leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); } - } - + // ========================================= Aera Finance ========================================= - + function _addAeraLeafs(ManageLeaf[] memory leafs, address vault, ERC20[] memory assets) internal { for (uint256 i; i < assets.length; i++) { // Approvals. @@ -5719,10 +5739,9 @@ contract MerkleTreeHelper is CommonBase, ChainValues { } } - for (uint256 i; i < assets.length; i++) { - unchecked{ - leafIndex++; + unchecked { + leafIndex++; } leafs[leafIndex] = ManageLeaf( @@ -5733,12 +5752,12 @@ contract MerkleTreeHelper is CommonBase, ChainValues { string.concat("Deposit ", assets[i].symbol(), " into Aera vault"), //description getAddress(sourceChain, "rawDataDecoderAndSanitizer") //d&s address ); - leafs[leafIndex].argumentAddresses[0] = address(assets[i]); + leafs[leafIndex].argumentAddresses[0] = address(assets[i]); } for (uint256 i; i < assets.length; i++) { - unchecked{ - leafIndex++; + unchecked { + leafIndex++; } leafs[leafIndex] = ManageLeaf( vault, //target @@ -5748,11 +5767,11 @@ contract MerkleTreeHelper is CommonBase, ChainValues { string.concat("Withdraw ", assets[i].symbol(), " from Aera vault"), //description getAddress(sourceChain, "rawDataDecoderAndSanitizer") //d&s address ); - leafs[leafIndex].argumentAddresses[0] = address(assets[i]); + leafs[leafIndex].argumentAddresses[0] = address(assets[i]); } - unchecked{ - leafIndex++; + unchecked { + leafIndex++; } leafs[leafIndex] = ManageLeaf( @@ -5764,8 +5783,8 @@ contract MerkleTreeHelper is CommonBase, ChainValues { getAddress(sourceChain, "rawDataDecoderAndSanitizer") //d&s address ); - unchecked{ - leafIndex++; + unchecked { + leafIndex++; } leafs[leafIndex] = ManageLeaf( @@ -5776,15 +5795,14 @@ contract MerkleTreeHelper is CommonBase, ChainValues { string.concat("Resume the Aera vault"), //description getAddress(sourceChain, "rawDataDecoderAndSanitizer") //d&s address ); - } // ========================================= Lombard BTC ========================================= - + // @notice to avoid having an extra unneeded approval leaf for base vs bnb merkle trees function _addLombardBTCLeafs(ManageLeaf[] memory leafs, ERC20 BTCB_or_CBBtc, ERC20 LBTC) internal { unchecked { - leafIndex++; + leafIndex++; } leafs[leafIndex] = ManageLeaf( @@ -5794,11 +5812,11 @@ contract MerkleTreeHelper is CommonBase, ChainValues { new address[](1), string.concat("Approve BTCB to be staked into LBTC"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); - leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "LBTC"); + ); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "LBTC"); unchecked { - leafIndex++; + leafIndex++; } leafs[leafIndex] = ManageLeaf( address(LBTC), //target @@ -5807,11 +5825,11 @@ contract MerkleTreeHelper is CommonBase, ChainValues { new address[](1), string.concat("Mint LBTC if permissioned"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); - leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); + ); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); unchecked { - leafIndex++; + leafIndex++; } leafs[leafIndex] = ManageLeaf( address(LBTC), //target @@ -5820,11 +5838,11 @@ contract MerkleTreeHelper is CommonBase, ChainValues { new address[](1), string.concat("Mint LBTC"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); - leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); + ); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); unchecked { - leafIndex++; + leafIndex++; } leafs[leafIndex] = ManageLeaf( address(LBTC), //target @@ -5833,10 +5851,10 @@ contract MerkleTreeHelper is CommonBase, ChainValues { new address[](0), string.concat("Unstake LBTC"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); + ); unchecked { - leafIndex++; + leafIndex++; } leafs[leafIndex] = ManageLeaf( address(LBTC), //target @@ -5845,11 +5863,11 @@ contract MerkleTreeHelper is CommonBase, ChainValues { new address[](0), string.concat("Burn LBTC"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); + ); if (getAddress("base", "cbBTC") == address(BTCB_or_CBBtc)) { unchecked { - leafIndex++; + leafIndex++; } leafs[leafIndex] = ManageLeaf( address(BTCB_or_CBBtc), //target @@ -5858,11 +5876,11 @@ contract MerkleTreeHelper is CommonBase, ChainValues { new address[](1), string.concat("Approve cbBTC to be swapped for LBTC"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); - leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "cbBTCPMM"); + ); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "cbBTCPMM"); unchecked { - leafIndex++; + leafIndex++; } leafs[leafIndex] = ManageLeaf( getAddress(sourceChain, "cbBTCPMM"), //target @@ -5871,11 +5889,9 @@ contract MerkleTreeHelper is CommonBase, ChainValues { new address[](0), string.concat("Swap cbBTC to LBTC"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); + ); } - } - - + } // ============================================= WeETH ================================================== @@ -5892,29 +5908,33 @@ contract MerkleTreeHelper is CommonBase, ChainValues { string.concat("Depsoit ETH into WeETH"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") ); - leafs[leafIndex].argumentAddresses[0] = ETH; - leafs[leafIndex].argumentAddresses[1] = referral; + leafs[leafIndex].argumentAddresses[0] = ETH; + leafs[leafIndex].argumentAddresses[1] = referral; } // ============================================= BTCN Corn ================================================== - function _addBTCNLeafs(ManageLeaf[] memory leafs, ERC20 WBTC, ERC20 BTCN, address cornSwapFacility) internal { + function _addBTCNLeafs(ManageLeaf[] memory leafs, ERC20 collateralToken, ERC20 BTCN, address cornSwapFacility) + internal + { unchecked { - leafIndex++; + leafIndex++; } leafs[leafIndex] = ManageLeaf( - address(WBTC), //target + address(collateralToken), //target false, "approve(address,uint256)", new address[](1), - string.concat("Approve WBTC to be swapped for BTCN by the Corn SwapFacility Contract"), + string.concat( + "Approve ", collateralToken.symbol(), " to be swapped for BTCN by the Corn SwapFacility Contract" + ), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); - leafs[leafIndex].argumentAddresses[0] = cornSwapFacility; + ); + leafs[leafIndex].argumentAddresses[0] = cornSwapFacility; unchecked { - leafIndex++; + leafIndex++; } leafs[leafIndex] = ManageLeaf( @@ -5922,27 +5942,29 @@ contract MerkleTreeHelper is CommonBase, ChainValues { false, "approve(address,uint256)", new address[](1), - string.concat("Approve BTCN to be swapped for WBTC by the Corn SwapFacility Contract"), + string.concat( + "Approve BTCN to be swapped for ", collateralToken.symbol(), " by the Corn SwapFacility Contract" + ), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); - leafs[leafIndex].argumentAddresses[0] = cornSwapFacility; + ); + leafs[leafIndex].argumentAddresses[0] = cornSwapFacility; unchecked { - leafIndex++; + leafIndex++; } - - leafs[leafIndex] = ManageLeaf( + + leafs[leafIndex] = ManageLeaf( cornSwapFacility, //target false, "swapExactCollateralForDebt(uint256,uint256,address,uint256)", new address[](1), - string.concat("Swap WBTC for BTCN"), + string.concat("Swap ", collateralToken.symbol(), " for BTCN"), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); - leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); + ); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); unchecked { - leafIndex++; + leafIndex++; } leafs[leafIndex] = ManageLeaf( @@ -5950,13 +5972,12 @@ contract MerkleTreeHelper is CommonBase, ChainValues { false, "swapExactDebtForCollateral(uint256,uint256,address,uint256)", new address[](1), - string.concat("Swap BTCN for WBTC"), + string.concat("Swap BTCN for ", collateralToken.symbol()), getAddress(sourceChain, "rawDataDecoderAndSanitizer") - ); - leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); - + ); + leafs[leafIndex].argumentAddresses[0] = getAddress(sourceChain, "boringVault"); } - + // ========================================= BoringVault Teller ========================================= function _addTellerLeafs(ManageLeaf[] memory leafs, address teller, ERC20[] memory assets) internal { @@ -6165,7 +6186,7 @@ contract MerkleTreeHelper is CommonBase, ChainValues { merkleTreeOut[i][j] = merkleTreeIn[i][j]; } } - + uint256 next_layer_length; if (layer_length % 2 != 0) { next_layer_length = (layer_length + 1) / 2; @@ -6184,7 +6205,6 @@ contract MerkleTreeHelper is CommonBase, ChainValues { // We need to process the next layer of leaves. merkleTreeOut = _buildTrees(merkleTreeOut); } - } function _generateMerkleTree(ManageLeaf[] memory manageLeafs) internal pure returns (bytes32[][] memory tree) { From 6d836b9610068fd3490cfca5d3b138ee4d1ecdca Mon Sep 17 00:00:00 2001 From: mel0ndev Date: Mon, 16 Dec 2024 14:34:59 -0500 Subject: [PATCH 3/4] prettier --- leafs/Mainnet/sBTCNStrategistLeafs.json | 1088 ++++++++++++++++++++--- 1 file changed, 954 insertions(+), 134 deletions(-) diff --git a/leafs/Mainnet/sBTCNStrategistLeafs.json b/leafs/Mainnet/sBTCNStrategistLeafs.json index 0d3baf83..c198e1a0 100644 --- a/leafs/Mainnet/sBTCNStrategistLeafs.json +++ b/leafs/Mainnet/sBTCNStrategistLeafs.json @@ -1,135 +1,955 @@ -{ "metadata": -{"AccountantAddress":"0x9A22F5dC4Ec86184D4771E620eb75D52E7b9E043","BoringVaultAddress":"0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089","DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","DigestComposition":["Bytes20(DECODER_AND_SANITIZER_ADDRESS)","Bytes20(TARGET_ADDRESS)","Bytes1(CAN_SEND_VALUE)","Bytes4(TARGET_FUNCTION_SELECTOR)","Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)"],"LeafCount":39,"ManageRoot":"0x486112f2493dc25d93d82779ddd6f7f8488f637c21194d3636c37328ca3086ac","ManagerAddress":"0x5239158272D1f626aF9ef3353489D3Cb68439D66","TreeCapacity":64} -, -"leafs": [ -{"AddressArguments":["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 NonFungible Position Manager to spend WBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xad6bcaf827bca1b809499b7747a23f23dc8c400bb9d0f61f12ebff6e53d4d918","PackedArgumentAddresses":"0xc36442b4a4522e871399cd717abdd847ab11fe88","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} -, -{"AddressArguments":["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 NonFungible Position Manager to spend cbBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xa693189093460697320475628423a7a79a1a6cb20f51b597d5dadb1f43f91c9d","PackedArgumentAddresses":"0xc36442b4a4522e871399cd717abdd847ab11fe88","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} -, -{"AddressArguments":["0xE592427A0AEce92De3Edee1F18E0157C05861564"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 Router to spend WBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xe3d862144f7e205958b9f5153223edc749f11f1dbabcbb6d7065390af40dd053","PackedArgumentAddresses":"0xe592427a0aece92de3edee1f18e0157c05861564","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} -, -{"AddressArguments":["0xE592427A0AEce92De3Edee1F18E0157C05861564"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 Router to spend cbBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xa17d25a123fd8e26a1376f1390cfcf87019b0c2eefb4a749c6ea26bffba33d07","PackedArgumentAddresses":"0xe592427a0aece92de3edee1f18e0157c05861564","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} -, -{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Mint UniswapV3 WBTC cbBTC position","FunctionSelector":"0x88316456","FunctionSignature":"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))","LeafDigest":"0x6f2d30afeb7e252fd620214a27c963e65217ae442a92328f55bf652ccd05c76d","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} -, -{"AddressArguments":["0x0000000000000000000000000000000000000000","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Add liquidity to UniswapV3 WBTC cbBTC position","FunctionSelector":"0x219f5d17","FunctionSignature":"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))","LeafDigest":"0xc9c273a998e2e3c7bc36bae8c1ee1bdd99781473e9aa69a5a890b5e88efc4128","PackedArgumentAddresses":"0x00000000000000000000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} -, -{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for cbBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x283495f62f4de0e4b2b1c4789d8c799dde0b4edd2c85a3c1c0119ae2e2f1c0f6","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} -, -{"AddressArguments":["0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for WBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x63de83700ee38e95eeff4324d6d3f89dbf0d117aa9587785fd7cc9e0056e7e1f","PackedArgumentAddresses":"0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf2260fac5e5542a773aa44fbcfedf7c193bc2c5995e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} -, -{"AddressArguments":["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 NonFungible Position Manager to spend LBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x04ec0da77f5e51062c7772b27723194304aaef94470ea4d68514c2249e17c023","PackedArgumentAddresses":"0xc36442b4a4522e871399cd717abdd847ab11fe88","TargetAddress":"0x8236a87084f8B84306f72007F36F2618A5634494"} -, -{"AddressArguments":["0xE592427A0AEce92De3Edee1F18E0157C05861564"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 Router to spend LBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x240bdb0846157d4e805fb509d90f55da888434cbe7eb930f9ba7e9e68b54fcd3","PackedArgumentAddresses":"0xe592427a0aece92de3edee1f18e0157c05861564","TargetAddress":"0x8236a87084f8B84306f72007F36F2618A5634494"} -, -{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Mint UniswapV3 WBTC LBTC position","FunctionSelector":"0x88316456","FunctionSignature":"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))","LeafDigest":"0x49d9e67d88de9e7a04b957ee70f3e19d053429d49b8a93806cb93a4f6cf8bdde","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} -, -{"AddressArguments":["0x0000000000000000000000000000000000000000","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Add liquidity to UniswapV3 WBTC LBTC position","FunctionSelector":"0x219f5d17","FunctionSignature":"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))","LeafDigest":"0x3d8e43973285a75f163e8ffda0e37de63bba478481d11fcccbabf9df92cd58eb","PackedArgumentAddresses":"0x00000000000000000000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a5634494","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} -, -{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for LBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x4643a014c4bf9a0b0edc6831af6b499e42f16651b955cad54463bb1cb06e1de4","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} -, -{"AddressArguments":["0x8236a87084f8B84306f72007F36F2618A5634494","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for WBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0xa693a1ab5f7812d7e0fd77044565253f6fcb91c4e580e196522bf99a6ada8922","PackedArgumentAddresses":"0x8236a87084f8b84306f72007f36f2618a56344942260fac5e5542a773aa44fbcfedf7c193bc2c5995e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} -, -{"AddressArguments":["0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Mint UniswapV3 LBTC cbBTC position","FunctionSelector":"0x88316456","FunctionSignature":"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))","LeafDigest":"0xa5cd0ec782224597f8411c8a8fadeffd145d464771b46808d7bbbd0f0dfc117f","PackedArgumentAddresses":"0x8236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} -, -{"AddressArguments":["0x0000000000000000000000000000000000000000","0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Add liquidity to UniswapV3 LBTC cbBTC position","FunctionSelector":"0x219f5d17","FunctionSignature":"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))","LeafDigest":"0x99ca4169e67e2f7e21ebb7f9e4b784b280e6b6a5d8fecf07890a13927e4677e0","PackedArgumentAddresses":"0x00000000000000000000000000000000000000008236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} -, -{"AddressArguments":["0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for cbBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x112585178414bcb7979814a363abb8631b17feb36efdebf0a84d69b8466e6ac9","PackedArgumentAddresses":"0x8236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} -, -{"AddressArguments":["0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x8236a87084f8B84306f72007F36F2618A5634494","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for LBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x6ed7ec1cef43ee8c440c9bbb56d22ee19c0cf8b040ea3a9f595aa6f9f84e995e","PackedArgumentAddresses":"0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf8236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Remove liquidity from UniswapV3 position","FunctionSelector":"0x0c49ccbe","FunctionSignature":"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))","LeafDigest":"0xd019e5a8892447516b796d0238ec4f6ca89859380ab900db42b2272c6887dce6","PackedArgumentAddresses":"0x","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} -, -{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Collect fees from UniswapV3 position","FunctionSelector":"0xfc6f7865","FunctionSignature":"collect((uint256,address,uint128,uint128))","LeafDigest":"0x18365ac1a4ca934174097f6bf4290df93096df2a38e770568b63d782c1c4f1f6","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Burn UniswapV3 position","FunctionSelector":"0x42966c68","FunctionSignature":"burn(uint256)","LeafDigest":"0x6f54f61850abf33393cbd9a6821decf80ca1b041df95a0c14ca92da4fc0c78eb","PackedArgumentAddresses":"0x","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} -, -{"AddressArguments":["0x1111111254EEB25477B68fb85Ed929f73A960582"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve 1Inch router to spend WBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x40f30fc6afa6303c78f1c3fa82cedbe8b5714876a0763367ca303886ce8656aa","PackedArgumentAddresses":"0x1111111254eeb25477b68fb85ed929f73a960582","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} -, -{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for LBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x11b5e1b8eaccf01e75439b40c376d663ce875630a6b8b79b9f2d2b827682533e","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8122260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344943451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} -, -{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x8236a87084f8B84306f72007F36F2618A5634494","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for WBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x441b882eb0f510b04c4b41b9c4d65325f58ca892bcdc1d3a16e252d60f846fd8","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8128236a87084f8b84306f72007f36f2618a56344942260fac5e5542a773aa44fbcfedf7c193bc2c5993451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} -, -{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for cbBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0xfa5eb5b9404ea96ae0e2f72d11d85d5265ac1bc37ac5477e14ae1ea74ae9b569","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8122260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf3451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} -, -{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for WBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x9c6d57ee8a68faea38379eaef5413ca1685b94ad99754708ce3ca7be162c67cd","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e812cbb7c0000ab88b473b1f5afd9ef808440eed33bf2260fac5e5542a773aa44fbcfedf7c193bc2c5993451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} -, -{"AddressArguments":["0x1111111254EEB25477B68fb85Ed929f73A960582"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve 1Inch router to spend LBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xe61057ea96a5f7fa65b70136eb569f245cbf13631f858852b10cf4a5a685ef64","PackedArgumentAddresses":"0x1111111254eeb25477b68fb85ed929f73a960582","TargetAddress":"0x8236a87084f8B84306f72007F36F2618A5634494"} -, -{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for cbBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0xa40a9262ecb19fef27370acc35440a72c741c5ef9eae3d2b228971588c74ecd8","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8128236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf3451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} -, -{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x8236a87084f8B84306f72007F36F2618A5634494","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for LBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x25c63688d1cdc7767811f1b1a9d3ef700a7e092f3c8fa3c34a57fb0b1a2ec9d2","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e812cbb7c0000ab88b473b1f5afd9ef808440eed33bf8236a87084f8b84306f72007f36f2618a56344943451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} -, -{"AddressArguments":["0x1111111254EEB25477B68fb85Ed929f73A960582"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve 1Inch router to spend cbBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xd3e597ac7b7824bdf84119f6e11106b557ce87fd354bd2966fb81f08e9e3ae32","PackedArgumentAddresses":"0x1111111254eeb25477b68fb85ed929f73a960582","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} -, -{"AddressArguments":["0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve WBTC to be swapped for BTCN by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x35fc59fdea63eede5beb478db98961951113472ab48799436fbab788ea211726","PackedArgumentAddresses":"0xbf5eb70b93d5895c839b8beb3c27dc36f6b56fea","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} -, -{"AddressArguments":["0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve BTCN to be swapped for WBTC by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x04d52ba8f2beb413f92acfeb9656ba1e39209782a082ec9b21fc019ed5874a2a","PackedArgumentAddresses":"0xbf5eb70b93d5895c839b8beb3c27dc36f6b56fea","TargetAddress":"0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6"} -, -{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for BTCN","FunctionSelector":"0x3cb50d7d","FunctionSignature":"swapExactCollateralForDebt(uint256,uint256,address,uint256)","LeafDigest":"0x6606efb1d6dc67f2cbe79812126871b8531abd608e18eed1d06fd12103c24210","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"} -, -{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap BTCN for WBTC","FunctionSelector":"0x98ad990a","FunctionSignature":"swapExactDebtForCollateral(uint256,uint256,address,uint256)","LeafDigest":"0xce9b3fba26d920a502d1dc68d2d73204d0410f89abdaef0dfa98df24e1091559","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"} -, -{"AddressArguments":["0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve cbBTC to be swapped for BTCN by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xe623090e9a96650bf12e9378c5ec6845b255a5ae8e876e484ae9f360d4f470ed","PackedArgumentAddresses":"0x554335b8c994e47e6dbfdc08fa8aca0510e66ba1","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} -, -{"AddressArguments":["0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve BTCN to be swapped for cbBTC by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xb02a8e07c7d981cadd74bab68e96a3319bc418a10db2730ad2f0570181776165","PackedArgumentAddresses":"0x554335b8c994e47e6dbfdc08fa8aca0510e66ba1","TargetAddress":"0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6"} -, -{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for BTCN","FunctionSelector":"0x3cb50d7d","FunctionSignature":"swapExactCollateralForDebt(uint256,uint256,address,uint256)","LeafDigest":"0x669e93ed03e14b38f65a3c0e1dcaf11ca4171204c1b8ea86d092cc1d6cec2367","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"} -, -{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap BTCN for cbBTC","FunctionSelector":"0x98ad990a","FunctionSignature":"swapExactDebtForCollateral(uint256,uint256,address,uint256)","LeafDigest":"0xb50ff4166d04da36b20e418b1adfa1b44e05158659370faf667467c0891cb148","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"} -, -{"AddressArguments":["0x000000000000000000000000000000000000767b","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":true,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Bridge BTCN to LayerZero endpoint: 30331","FunctionSelector":"0xc7c7f5b3","FunctionSignature":"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)","LeafDigest":"0xd691b803e14bd56dc959631e532fb0f3024c54c73d90ef1bb77f60deb4e25f8d","PackedArgumentAddresses":"0x000000000000000000000000000000000000767b5e272ca4bd94e57ec5c51d26703621ccac1a70895e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -, -{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} -], -"MerkleTree": -{"0":["0x486112f2493dc25d93d82779ddd6f7f8488f637c21194d3636c37328ca3086ac"],"1":["0x2a337d46daadba4bdacf63be1c4403b3c63145ea3ba13f42d1e48f92b626ee63","0x896437b9bae5efce5048641132419bfd9642e1339bc2c76d10a551784d81f0b1"],"2":["0x049b3dd161ece9ff679ecb07b47253653b250a458e2a3344e86e7572a8b7e8b2","0x76bbd7a493bb1f65e96ca16a3c17488ca650c0c9503795e0838a7452f3b27b45","0x40998d88018d3b1bdedc8ab1d61edd2ce6b4311abd0c45836c04b90ce84d761b","0xc8e2d8c65f68c2edf703a349b0189c66520f43472e76097f69a501107adf656c"],"3":["0x4cb9bbd04f448fe7817c38f51d8558c9f84cc37a86cb81a3753b315aa501288f","0x93383ce12de8c167c1f0213a845e5b66c16ec79c9f53f6a9803b7650173b8c9e","0xf2e04b0fd4acafb0315aa770476572d4fbc944f0cc820dd40c3e50596e6a4801","0x24d94193ad48eac1c1cb67455b66be55895c7c62f7e940d5225bc9c18305ebc0","0xe7406ae7e46cd5322f0171717b92196cb7f151e897c2016ecc9b75d79b9032b5","0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704","0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704","0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704"],"4":["0xf3eaf755db59cb2fff167883d6c299788edf6341c723a4f5d735daf7ea91c0a8","0xfd30e948cc7d9c5ff21232fcaa19b38ba985b4ec9734031bde1bba5859500905","0x974f4c9da13cedff34a06ce667e9fd82dbe489158e0f7c85efb4f00877f8de3a","0xb9fc9decfe1c406bd41d695ddf00c37def749dee6f7a893022177dbc99e16d24","0xe9fb9ea261358bd38ef529cdd300a6d9bd1e7b348d2514613a4b974ad9fd9168","0x12dfc15c3f35313497acb433ab6c48d353340e4f5b890ad8c332ba0b9212d61d","0x2ffddc32c92354854ed50a74c87cfadf213a07929dc731ac77821ec3dbc5c0d2","0xc3b42570c3844ae3a81f3038a0eb27f15b8936b26b87262c52ce9ca7c7fd71e9","0xc203cbc4823373be6e008dd142ef1e72583833b2d7e07df127b82195725179f8","0x6c7c707ca7cb20909e009d5ce9ea388961d928cc02b7dcc99f6492c0184e6854","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe"],"5":["0x09d02fe1d9f4df375aee79fd23823276578fa12d7290a844958f3c7b10503d56","0xea245d1fc712d3d97b14f7572af7c6da5c7caf601ca09c3cea20b0281c9d8d84","0x6b0f8be85a043bc398a3118e8957ab001b3ba3a4deb6c01c3654be7064a42143","0x0b409e21c82c1890a1200dac817ec5162af4429f64c32989c1eafd0dbf5d3d09","0x300bcf2646926db85278c5f6343ef2ad53b96976a08f82d659f5c658aa9dc1a7","0x56044082e18e84995d895d64f63f67de9d7c14693667aa413f436738b5973a10","0x3652d23f60d02d3465bdcdedbf356b8f65b542820c1a6abe3562ec5b7532bfdf","0xe1d08d2930b6ce30c12872c3f77cc3bfdd8c6d5d4bca141f27108bd0d6179190","0xc1554b04ecec1e832919e86bda670429160987d754d51cf23cd89d8dee97019c","0x1712b68d97a5e4805e7d896ac958d4de9addcb6b83d20391b0d916aeb91fd883","0xd4d13c9a47265077b4f18eaef217fd30b08fc04647389de6a601461cd3e51517","0x4c2b3d94719f90c50020f29223b4de002871fc229cf6e27ba5e854e6060ad728","0x29d11d34e3ef38ba7c894d96b3528d7ac83358cd2c9d4a4f813ee6aea16c8c26","0xdaf7a7a0c972aba9669666c45790b9fd87987703082725925f59b35b7f04a84a","0x5ac510d17cf6db882d2f7796553101f13fdd01441cd6d2b04e2fb70f41165399","0x4549148faf39f75a7062e6b45498404be67bd22fd184ad4faf632e5642e0046f","0xa24606fb3ba268657ba228cdee4bcfb8ca3cf95a80a5655badd681f63092f76b","0xa1c40ffb7cb430aea8f8a9c008a0993e00adddac7a5423c9fbfdff42564d90e5","0xaee2770b18c9381b3262e6448502e95b99301046dff5bd70c5c8b242a1f15c67","0xbf1307a058a3bcd26ce648f04b0abf994b6cc9208a25d7f119e2f2e30fbc907b","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba"],"6":["0xad6bcaf827bca1b809499b7747a23f23dc8c400bb9d0f61f12ebff6e53d4d918","0xa693189093460697320475628423a7a79a1a6cb20f51b597d5dadb1f43f91c9d","0xe3d862144f7e205958b9f5153223edc749f11f1dbabcbb6d7065390af40dd053","0xa17d25a123fd8e26a1376f1390cfcf87019b0c2eefb4a749c6ea26bffba33d07","0x6f2d30afeb7e252fd620214a27c963e65217ae442a92328f55bf652ccd05c76d","0xc9c273a998e2e3c7bc36bae8c1ee1bdd99781473e9aa69a5a890b5e88efc4128","0x283495f62f4de0e4b2b1c4789d8c799dde0b4edd2c85a3c1c0119ae2e2f1c0f6","0x63de83700ee38e95eeff4324d6d3f89dbf0d117aa9587785fd7cc9e0056e7e1f","0x04ec0da77f5e51062c7772b27723194304aaef94470ea4d68514c2249e17c023","0x240bdb0846157d4e805fb509d90f55da888434cbe7eb930f9ba7e9e68b54fcd3","0x49d9e67d88de9e7a04b957ee70f3e19d053429d49b8a93806cb93a4f6cf8bdde","0x3d8e43973285a75f163e8ffda0e37de63bba478481d11fcccbabf9df92cd58eb","0x4643a014c4bf9a0b0edc6831af6b499e42f16651b955cad54463bb1cb06e1de4","0xa693a1ab5f7812d7e0fd77044565253f6fcb91c4e580e196522bf99a6ada8922","0xa5cd0ec782224597f8411c8a8fadeffd145d464771b46808d7bbbd0f0dfc117f","0x99ca4169e67e2f7e21ebb7f9e4b784b280e6b6a5d8fecf07890a13927e4677e0","0x112585178414bcb7979814a363abb8631b17feb36efdebf0a84d69b8466e6ac9","0x6ed7ec1cef43ee8c440c9bbb56d22ee19c0cf8b040ea3a9f595aa6f9f84e995e","0xd019e5a8892447516b796d0238ec4f6ca89859380ab900db42b2272c6887dce6","0x18365ac1a4ca934174097f6bf4290df93096df2a38e770568b63d782c1c4f1f6","0x6f54f61850abf33393cbd9a6821decf80ca1b041df95a0c14ca92da4fc0c78eb","0x40f30fc6afa6303c78f1c3fa82cedbe8b5714876a0763367ca303886ce8656aa","0x11b5e1b8eaccf01e75439b40c376d663ce875630a6b8b79b9f2d2b827682533e","0x441b882eb0f510b04c4b41b9c4d65325f58ca892bcdc1d3a16e252d60f846fd8","0xfa5eb5b9404ea96ae0e2f72d11d85d5265ac1bc37ac5477e14ae1ea74ae9b569","0x9c6d57ee8a68faea38379eaef5413ca1685b94ad99754708ce3ca7be162c67cd","0xe61057ea96a5f7fa65b70136eb569f245cbf13631f858852b10cf4a5a685ef64","0xa40a9262ecb19fef27370acc35440a72c741c5ef9eae3d2b228971588c74ecd8","0x25c63688d1cdc7767811f1b1a9d3ef700a7e092f3c8fa3c34a57fb0b1a2ec9d2","0xd3e597ac7b7824bdf84119f6e11106b557ce87fd354bd2966fb81f08e9e3ae32","0x35fc59fdea63eede5beb478db98961951113472ab48799436fbab788ea211726","0x04d52ba8f2beb413f92acfeb9656ba1e39209782a082ec9b21fc019ed5874a2a","0x6606efb1d6dc67f2cbe79812126871b8531abd608e18eed1d06fd12103c24210","0xce9b3fba26d920a502d1dc68d2d73204d0410f89abdaef0dfa98df24e1091559","0xe623090e9a96650bf12e9378c5ec6845b255a5ae8e876e484ae9f360d4f470ed","0xb02a8e07c7d981cadd74bab68e96a3319bc418a10db2730ad2f0570181776165","0x669e93ed03e14b38f65a3c0e1dcaf11ca4171204c1b8ea86d092cc1d6cec2367","0xb50ff4166d04da36b20e418b1adfa1b44e05158659370faf667467c0891cb148","0xd691b803e14bd56dc959631e532fb0f3024c54c73d90ef1bb77f60deb4e25f8d","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400"]} +{ + "metadata": { + "AccountantAddress": "0x9A22F5dC4Ec86184D4771E620eb75D52E7b9E043", + "BoringVaultAddress": "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089", + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "DigestComposition": [ + "Bytes20(DECODER_AND_SANITIZER_ADDRESS)", + "Bytes20(TARGET_ADDRESS)", + "Bytes1(CAN_SEND_VALUE)", + "Bytes4(TARGET_FUNCTION_SELECTOR)", + "Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)" + ], + "LeafCount": 39, + "ManageRoot": "0x486112f2493dc25d93d82779ddd6f7f8488f637c21194d3636c37328ca3086ac", + "ManagerAddress": "0x5239158272D1f626aF9ef3353489D3Cb68439D66", + "TreeCapacity": 64 + }, + "leafs": [ + { + "AddressArguments": ["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve UniswapV3 NonFungible Position Manager to spend WBTC", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0xad6bcaf827bca1b809499b7747a23f23dc8c400bb9d0f61f12ebff6e53d4d918", + "PackedArgumentAddresses": "0xc36442b4a4522e871399cd717abdd847ab11fe88", + "TargetAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" + }, + { + "AddressArguments": ["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve UniswapV3 NonFungible Position Manager to spend cbBTC", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0xa693189093460697320475628423a7a79a1a6cb20f51b597d5dadb1f43f91c9d", + "PackedArgumentAddresses": "0xc36442b4a4522e871399cd717abdd847ab11fe88", + "TargetAddress": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" + }, + { + "AddressArguments": ["0xE592427A0AEce92De3Edee1F18E0157C05861564"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve UniswapV3 Router to spend WBTC", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0xe3d862144f7e205958b9f5153223edc749f11f1dbabcbb6d7065390af40dd053", + "PackedArgumentAddresses": "0xe592427a0aece92de3edee1f18e0157c05861564", + "TargetAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" + }, + { + "AddressArguments": ["0xE592427A0AEce92De3Edee1F18E0157C05861564"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve UniswapV3 Router to spend cbBTC", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0xa17d25a123fd8e26a1376f1390cfcf87019b0c2eefb4a749c6ea26bffba33d07", + "PackedArgumentAddresses": "0xe592427a0aece92de3edee1f18e0157c05861564", + "TargetAddress": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" + }, + { + "AddressArguments": [ + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Mint UniswapV3 WBTC cbBTC position", + "FunctionSelector": "0x88316456", + "FunctionSignature": "mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))", + "LeafDigest": "0x6f2d30afeb7e252fd620214a27c963e65217ae442a92328f55bf652ccd05c76d", + "PackedArgumentAddresses": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + }, + { + "AddressArguments": [ + "0x0000000000000000000000000000000000000000", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Add liquidity to UniswapV3 WBTC cbBTC position", + "FunctionSelector": "0x219f5d17", + "FunctionSignature": "increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))", + "LeafDigest": "0xc9c273a998e2e3c7bc36bae8c1ee1bdd99781473e9aa69a5a890b5e88efc4128", + "PackedArgumentAddresses": "0x00000000000000000000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf", + "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + }, + { + "AddressArguments": [ + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap WBTC for cbBTC using UniswapV3 router", + "FunctionSelector": "0xc04b8d59", + "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", + "LeafDigest": "0x283495f62f4de0e4b2b1c4789d8c799dde0b4edd2c85a3c1c0119ae2e2f1c0f6", + "PackedArgumentAddresses": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" + }, + { + "AddressArguments": [ + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap cbBTC for WBTC using UniswapV3 router", + "FunctionSelector": "0xc04b8d59", + "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", + "LeafDigest": "0x63de83700ee38e95eeff4324d6d3f89dbf0d117aa9587785fd7cc9e0056e7e1f", + "PackedArgumentAddresses": "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf2260fac5e5542a773aa44fbcfedf7c193bc2c5995e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" + }, + { + "AddressArguments": ["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve UniswapV3 NonFungible Position Manager to spend LBTC", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0x04ec0da77f5e51062c7772b27723194304aaef94470ea4d68514c2249e17c023", + "PackedArgumentAddresses": "0xc36442b4a4522e871399cd717abdd847ab11fe88", + "TargetAddress": "0x8236a87084f8B84306f72007F36F2618A5634494" + }, + { + "AddressArguments": ["0xE592427A0AEce92De3Edee1F18E0157C05861564"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve UniswapV3 Router to spend LBTC", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0x240bdb0846157d4e805fb509d90f55da888434cbe7eb930f9ba7e9e68b54fcd3", + "PackedArgumentAddresses": "0xe592427a0aece92de3edee1f18e0157c05861564", + "TargetAddress": "0x8236a87084f8B84306f72007F36F2618A5634494" + }, + { + "AddressArguments": [ + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x8236a87084f8B84306f72007F36F2618A5634494", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Mint UniswapV3 WBTC LBTC position", + "FunctionSelector": "0x88316456", + "FunctionSignature": "mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))", + "LeafDigest": "0x49d9e67d88de9e7a04b957ee70f3e19d053429d49b8a93806cb93a4f6cf8bdde", + "PackedArgumentAddresses": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + }, + { + "AddressArguments": [ + "0x0000000000000000000000000000000000000000", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x8236a87084f8B84306f72007F36F2618A5634494" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Add liquidity to UniswapV3 WBTC LBTC position", + "FunctionSelector": "0x219f5d17", + "FunctionSignature": "increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))", + "LeafDigest": "0x3d8e43973285a75f163e8ffda0e37de63bba478481d11fcccbabf9df92cd58eb", + "PackedArgumentAddresses": "0x00000000000000000000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a5634494", + "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + }, + { + "AddressArguments": [ + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x8236a87084f8B84306f72007F36F2618A5634494", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap WBTC for LBTC using UniswapV3 router", + "FunctionSelector": "0xc04b8d59", + "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", + "LeafDigest": "0x4643a014c4bf9a0b0edc6831af6b499e42f16651b955cad54463bb1cb06e1de4", + "PackedArgumentAddresses": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" + }, + { + "AddressArguments": [ + "0x8236a87084f8B84306f72007F36F2618A5634494", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap LBTC for WBTC using UniswapV3 router", + "FunctionSelector": "0xc04b8d59", + "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", + "LeafDigest": "0xa693a1ab5f7812d7e0fd77044565253f6fcb91c4e580e196522bf99a6ada8922", + "PackedArgumentAddresses": "0x8236a87084f8b84306f72007f36f2618a56344942260fac5e5542a773aa44fbcfedf7c193bc2c5995e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" + }, + { + "AddressArguments": [ + "0x8236a87084f8B84306f72007F36F2618A5634494", + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Mint UniswapV3 LBTC cbBTC position", + "FunctionSelector": "0x88316456", + "FunctionSignature": "mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))", + "LeafDigest": "0xa5cd0ec782224597f8411c8a8fadeffd145d464771b46808d7bbbd0f0dfc117f", + "PackedArgumentAddresses": "0x8236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + }, + { + "AddressArguments": [ + "0x0000000000000000000000000000000000000000", + "0x8236a87084f8B84306f72007F36F2618A5634494", + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Add liquidity to UniswapV3 LBTC cbBTC position", + "FunctionSelector": "0x219f5d17", + "FunctionSignature": "increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))", + "LeafDigest": "0x99ca4169e67e2f7e21ebb7f9e4b784b280e6b6a5d8fecf07890a13927e4677e0", + "PackedArgumentAddresses": "0x00000000000000000000000000000000000000008236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf", + "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + }, + { + "AddressArguments": [ + "0x8236a87084f8B84306f72007F36F2618A5634494", + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap LBTC for cbBTC using UniswapV3 router", + "FunctionSelector": "0xc04b8d59", + "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", + "LeafDigest": "0x112585178414bcb7979814a363abb8631b17feb36efdebf0a84d69b8466e6ac9", + "PackedArgumentAddresses": "0x8236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" + }, + { + "AddressArguments": [ + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", + "0x8236a87084f8B84306f72007F36F2618A5634494", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap cbBTC for LBTC using UniswapV3 router", + "FunctionSelector": "0xc04b8d59", + "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", + "LeafDigest": "0x6ed7ec1cef43ee8c440c9bbb56d22ee19c0cf8b040ea3a9f595aa6f9f84e995e", + "PackedArgumentAddresses": "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf8236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Remove liquidity from UniswapV3 position", + "FunctionSelector": "0x0c49ccbe", + "FunctionSignature": "decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))", + "LeafDigest": "0xd019e5a8892447516b796d0238ec4f6ca89859380ab900db42b2272c6887dce6", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + }, + { + "AddressArguments": ["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Collect fees from UniswapV3 position", + "FunctionSelector": "0xfc6f7865", + "FunctionSignature": "collect((uint256,address,uint128,uint128))", + "LeafDigest": "0x18365ac1a4ca934174097f6bf4290df93096df2a38e770568b63d782c1c4f1f6", + "PackedArgumentAddresses": "0x5e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Burn UniswapV3 position", + "FunctionSelector": "0x42966c68", + "FunctionSignature": "burn(uint256)", + "LeafDigest": "0x6f54f61850abf33393cbd9a6821decf80ca1b041df95a0c14ca92da4fc0c78eb", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" + }, + { + "AddressArguments": ["0x1111111254EEB25477B68fb85Ed929f73A960582"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve 1Inch router to spend WBTC", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0x40f30fc6afa6303c78f1c3fa82cedbe8b5714876a0763367ca303886ce8656aa", + "PackedArgumentAddresses": "0x1111111254eeb25477b68fb85ed929f73a960582", + "TargetAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" + }, + { + "AddressArguments": [ + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x8236a87084f8B84306f72007F36F2618A5634494", + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap WBTC for LBTC using 1inch router", + "FunctionSelector": "0x12aa3caf", + "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", + "LeafDigest": "0x11b5e1b8eaccf01e75439b40c376d663ce875630a6b8b79b9f2d2b827682533e", + "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e8122260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344943451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" + }, + { + "AddressArguments": [ + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0x8236a87084f8B84306f72007F36F2618A5634494", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap LBTC for WBTC using 1inch router", + "FunctionSelector": "0x12aa3caf", + "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", + "LeafDigest": "0x441b882eb0f510b04c4b41b9c4d65325f58ca892bcdc1d3a16e252d60f846fd8", + "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e8128236a87084f8b84306f72007f36f2618a56344942260fac5e5542a773aa44fbcfedf7c193bc2c5993451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" + }, + { + "AddressArguments": [ + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap WBTC for cbBTC using 1inch router", + "FunctionSelector": "0x12aa3caf", + "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", + "LeafDigest": "0xfa5eb5b9404ea96ae0e2f72d11d85d5265ac1bc37ac5477e14ae1ea74ae9b569", + "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e8122260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf3451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" + }, + { + "AddressArguments": [ + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", + "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap cbBTC for WBTC using 1inch router", + "FunctionSelector": "0x12aa3caf", + "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", + "LeafDigest": "0x9c6d57ee8a68faea38379eaef5413ca1685b94ad99754708ce3ca7be162c67cd", + "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e812cbb7c0000ab88b473b1f5afd9ef808440eed33bf2260fac5e5542a773aa44fbcfedf7c193bc2c5993451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" + }, + { + "AddressArguments": ["0x1111111254EEB25477B68fb85Ed929f73A960582"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve 1Inch router to spend LBTC", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0xe61057ea96a5f7fa65b70136eb569f245cbf13631f858852b10cf4a5a685ef64", + "PackedArgumentAddresses": "0x1111111254eeb25477b68fb85ed929f73a960582", + "TargetAddress": "0x8236a87084f8B84306f72007F36F2618A5634494" + }, + { + "AddressArguments": [ + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0x8236a87084f8B84306f72007F36F2618A5634494", + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap LBTC for cbBTC using 1inch router", + "FunctionSelector": "0x12aa3caf", + "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", + "LeafDigest": "0xa40a9262ecb19fef27370acc35440a72c741c5ef9eae3d2b228971588c74ecd8", + "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e8128236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf3451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" + }, + { + "AddressArguments": [ + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", + "0x8236a87084f8B84306f72007F36F2618A5634494", + "0x3451B6b219478037a1AC572706627FC2BDa1e812", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap cbBTC for LBTC using 1inch router", + "FunctionSelector": "0x12aa3caf", + "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", + "LeafDigest": "0x25c63688d1cdc7767811f1b1a9d3ef700a7e092f3c8fa3c34a57fb0b1a2ec9d2", + "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e812cbb7c0000ab88b473b1f5afd9ef808440eed33bf8236a87084f8b84306f72007f36f2618a56344943451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" + }, + { + "AddressArguments": ["0x1111111254EEB25477B68fb85Ed929f73A960582"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve 1Inch router to spend cbBTC", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0xd3e597ac7b7824bdf84119f6e11106b557ce87fd354bd2966fb81f08e9e3ae32", + "PackedArgumentAddresses": "0x1111111254eeb25477b68fb85ed929f73a960582", + "TargetAddress": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" + }, + { + "AddressArguments": ["0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve WBTC to be swapped for BTCN by the Corn SwapFacility Contract", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0x35fc59fdea63eede5beb478db98961951113472ab48799436fbab788ea211726", + "PackedArgumentAddresses": "0xbf5eb70b93d5895c839b8beb3c27dc36f6b56fea", + "TargetAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" + }, + { + "AddressArguments": ["0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve BTCN to be swapped for WBTC by the Corn SwapFacility Contract", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0x04d52ba8f2beb413f92acfeb9656ba1e39209782a082ec9b21fc019ed5874a2a", + "PackedArgumentAddresses": "0xbf5eb70b93d5895c839b8beb3c27dc36f6b56fea", + "TargetAddress": "0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6" + }, + { + "AddressArguments": ["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap WBTC for BTCN", + "FunctionSelector": "0x3cb50d7d", + "FunctionSignature": "swapExactCollateralForDebt(uint256,uint256,address,uint256)", + "LeafDigest": "0x6606efb1d6dc67f2cbe79812126871b8531abd608e18eed1d06fd12103c24210", + "PackedArgumentAddresses": "0x5e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea" + }, + { + "AddressArguments": ["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap BTCN for WBTC", + "FunctionSelector": "0x98ad990a", + "FunctionSignature": "swapExactDebtForCollateral(uint256,uint256,address,uint256)", + "LeafDigest": "0xce9b3fba26d920a502d1dc68d2d73204d0410f89abdaef0dfa98df24e1091559", + "PackedArgumentAddresses": "0x5e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea" + }, + { + "AddressArguments": ["0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve cbBTC to be swapped for BTCN by the Corn SwapFacility Contract", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0xe623090e9a96650bf12e9378c5ec6845b255a5ae8e876e484ae9f360d4f470ed", + "PackedArgumentAddresses": "0x554335b8c994e47e6dbfdc08fa8aca0510e66ba1", + "TargetAddress": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" + }, + { + "AddressArguments": ["0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Approve BTCN to be swapped for cbBTC by the Corn SwapFacility Contract", + "FunctionSelector": "0x095ea7b3", + "FunctionSignature": "approve(address,uint256)", + "LeafDigest": "0xb02a8e07c7d981cadd74bab68e96a3319bc418a10db2730ad2f0570181776165", + "PackedArgumentAddresses": "0x554335b8c994e47e6dbfdc08fa8aca0510e66ba1", + "TargetAddress": "0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6" + }, + { + "AddressArguments": ["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap cbBTC for BTCN", + "FunctionSelector": "0x3cb50d7d", + "FunctionSignature": "swapExactCollateralForDebt(uint256,uint256,address,uint256)", + "LeafDigest": "0x669e93ed03e14b38f65a3c0e1dcaf11ca4171204c1b8ea86d092cc1d6cec2367", + "PackedArgumentAddresses": "0x5e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1" + }, + { + "AddressArguments": ["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Swap BTCN for cbBTC", + "FunctionSelector": "0x98ad990a", + "FunctionSignature": "swapExactDebtForCollateral(uint256,uint256,address,uint256)", + "LeafDigest": "0xb50ff4166d04da36b20e418b1adfa1b44e05158659370faf667467c0891cb148", + "PackedArgumentAddresses": "0x5e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1" + }, + { + "AddressArguments": [ + "0x000000000000000000000000000000000000767b", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089", + "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" + ], + "CanSendValue": true, + "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", + "Description": "Bridge BTCN to LayerZero endpoint: 30331", + "FunctionSelector": "0xc7c7f5b3", + "FunctionSignature": "send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)", + "LeafDigest": "0xd691b803e14bd56dc959631e532fb0f3024c54c73d90ef1bb77f60deb4e25f8d", + "PackedArgumentAddresses": "0x000000000000000000000000000000000000767b5e272ca4bd94e57ec5c51d26703621ccac1a70895e272ca4bd94e57ec5c51d26703621ccac1a7089", + "TargetAddress": "0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + }, + { + "AddressArguments": [], + "CanSendValue": false, + "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", + "Description": "", + "FunctionSelector": "0xc5d24601", + "FunctionSignature": "", + "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "PackedArgumentAddresses": "0x", + "TargetAddress": "0x0000000000000000000000000000000000000000" + } + ], + "MerkleTree": { + "0": [ + "0x486112f2493dc25d93d82779ddd6f7f8488f637c21194d3636c37328ca3086ac" + ], + "1": [ + "0x2a337d46daadba4bdacf63be1c4403b3c63145ea3ba13f42d1e48f92b626ee63", + "0x896437b9bae5efce5048641132419bfd9642e1339bc2c76d10a551784d81f0b1" + ], + "2": [ + "0x049b3dd161ece9ff679ecb07b47253653b250a458e2a3344e86e7572a8b7e8b2", + "0x76bbd7a493bb1f65e96ca16a3c17488ca650c0c9503795e0838a7452f3b27b45", + "0x40998d88018d3b1bdedc8ab1d61edd2ce6b4311abd0c45836c04b90ce84d761b", + "0xc8e2d8c65f68c2edf703a349b0189c66520f43472e76097f69a501107adf656c" + ], + "3": [ + "0x4cb9bbd04f448fe7817c38f51d8558c9f84cc37a86cb81a3753b315aa501288f", + "0x93383ce12de8c167c1f0213a845e5b66c16ec79c9f53f6a9803b7650173b8c9e", + "0xf2e04b0fd4acafb0315aa770476572d4fbc944f0cc820dd40c3e50596e6a4801", + "0x24d94193ad48eac1c1cb67455b66be55895c7c62f7e940d5225bc9c18305ebc0", + "0xe7406ae7e46cd5322f0171717b92196cb7f151e897c2016ecc9b75d79b9032b5", + "0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704", + "0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704", + "0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704" + ], + "4": [ + "0xf3eaf755db59cb2fff167883d6c299788edf6341c723a4f5d735daf7ea91c0a8", + "0xfd30e948cc7d9c5ff21232fcaa19b38ba985b4ec9734031bde1bba5859500905", + "0x974f4c9da13cedff34a06ce667e9fd82dbe489158e0f7c85efb4f00877f8de3a", + "0xb9fc9decfe1c406bd41d695ddf00c37def749dee6f7a893022177dbc99e16d24", + "0xe9fb9ea261358bd38ef529cdd300a6d9bd1e7b348d2514613a4b974ad9fd9168", + "0x12dfc15c3f35313497acb433ab6c48d353340e4f5b890ad8c332ba0b9212d61d", + "0x2ffddc32c92354854ed50a74c87cfadf213a07929dc731ac77821ec3dbc5c0d2", + "0xc3b42570c3844ae3a81f3038a0eb27f15b8936b26b87262c52ce9ca7c7fd71e9", + "0xc203cbc4823373be6e008dd142ef1e72583833b2d7e07df127b82195725179f8", + "0x6c7c707ca7cb20909e009d5ce9ea388961d928cc02b7dcc99f6492c0184e6854", + "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe", + "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe", + "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe", + "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe", + "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe", + "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe" + ], + "5": [ + "0x09d02fe1d9f4df375aee79fd23823276578fa12d7290a844958f3c7b10503d56", + "0xea245d1fc712d3d97b14f7572af7c6da5c7caf601ca09c3cea20b0281c9d8d84", + "0x6b0f8be85a043bc398a3118e8957ab001b3ba3a4deb6c01c3654be7064a42143", + "0x0b409e21c82c1890a1200dac817ec5162af4429f64c32989c1eafd0dbf5d3d09", + "0x300bcf2646926db85278c5f6343ef2ad53b96976a08f82d659f5c658aa9dc1a7", + "0x56044082e18e84995d895d64f63f67de9d7c14693667aa413f436738b5973a10", + "0x3652d23f60d02d3465bdcdedbf356b8f65b542820c1a6abe3562ec5b7532bfdf", + "0xe1d08d2930b6ce30c12872c3f77cc3bfdd8c6d5d4bca141f27108bd0d6179190", + "0xc1554b04ecec1e832919e86bda670429160987d754d51cf23cd89d8dee97019c", + "0x1712b68d97a5e4805e7d896ac958d4de9addcb6b83d20391b0d916aeb91fd883", + "0xd4d13c9a47265077b4f18eaef217fd30b08fc04647389de6a601461cd3e51517", + "0x4c2b3d94719f90c50020f29223b4de002871fc229cf6e27ba5e854e6060ad728", + "0x29d11d34e3ef38ba7c894d96b3528d7ac83358cd2c9d4a4f813ee6aea16c8c26", + "0xdaf7a7a0c972aba9669666c45790b9fd87987703082725925f59b35b7f04a84a", + "0x5ac510d17cf6db882d2f7796553101f13fdd01441cd6d2b04e2fb70f41165399", + "0x4549148faf39f75a7062e6b45498404be67bd22fd184ad4faf632e5642e0046f", + "0xa24606fb3ba268657ba228cdee4bcfb8ca3cf95a80a5655badd681f63092f76b", + "0xa1c40ffb7cb430aea8f8a9c008a0993e00adddac7a5423c9fbfdff42564d90e5", + "0xaee2770b18c9381b3262e6448502e95b99301046dff5bd70c5c8b242a1f15c67", + "0xbf1307a058a3bcd26ce648f04b0abf994b6cc9208a25d7f119e2f2e30fbc907b", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", + "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba" + ], + "6": [ + "0xad6bcaf827bca1b809499b7747a23f23dc8c400bb9d0f61f12ebff6e53d4d918", + "0xa693189093460697320475628423a7a79a1a6cb20f51b597d5dadb1f43f91c9d", + "0xe3d862144f7e205958b9f5153223edc749f11f1dbabcbb6d7065390af40dd053", + "0xa17d25a123fd8e26a1376f1390cfcf87019b0c2eefb4a749c6ea26bffba33d07", + "0x6f2d30afeb7e252fd620214a27c963e65217ae442a92328f55bf652ccd05c76d", + "0xc9c273a998e2e3c7bc36bae8c1ee1bdd99781473e9aa69a5a890b5e88efc4128", + "0x283495f62f4de0e4b2b1c4789d8c799dde0b4edd2c85a3c1c0119ae2e2f1c0f6", + "0x63de83700ee38e95eeff4324d6d3f89dbf0d117aa9587785fd7cc9e0056e7e1f", + "0x04ec0da77f5e51062c7772b27723194304aaef94470ea4d68514c2249e17c023", + "0x240bdb0846157d4e805fb509d90f55da888434cbe7eb930f9ba7e9e68b54fcd3", + "0x49d9e67d88de9e7a04b957ee70f3e19d053429d49b8a93806cb93a4f6cf8bdde", + "0x3d8e43973285a75f163e8ffda0e37de63bba478481d11fcccbabf9df92cd58eb", + "0x4643a014c4bf9a0b0edc6831af6b499e42f16651b955cad54463bb1cb06e1de4", + "0xa693a1ab5f7812d7e0fd77044565253f6fcb91c4e580e196522bf99a6ada8922", + "0xa5cd0ec782224597f8411c8a8fadeffd145d464771b46808d7bbbd0f0dfc117f", + "0x99ca4169e67e2f7e21ebb7f9e4b784b280e6b6a5d8fecf07890a13927e4677e0", + "0x112585178414bcb7979814a363abb8631b17feb36efdebf0a84d69b8466e6ac9", + "0x6ed7ec1cef43ee8c440c9bbb56d22ee19c0cf8b040ea3a9f595aa6f9f84e995e", + "0xd019e5a8892447516b796d0238ec4f6ca89859380ab900db42b2272c6887dce6", + "0x18365ac1a4ca934174097f6bf4290df93096df2a38e770568b63d782c1c4f1f6", + "0x6f54f61850abf33393cbd9a6821decf80ca1b041df95a0c14ca92da4fc0c78eb", + "0x40f30fc6afa6303c78f1c3fa82cedbe8b5714876a0763367ca303886ce8656aa", + "0x11b5e1b8eaccf01e75439b40c376d663ce875630a6b8b79b9f2d2b827682533e", + "0x441b882eb0f510b04c4b41b9c4d65325f58ca892bcdc1d3a16e252d60f846fd8", + "0xfa5eb5b9404ea96ae0e2f72d11d85d5265ac1bc37ac5477e14ae1ea74ae9b569", + "0x9c6d57ee8a68faea38379eaef5413ca1685b94ad99754708ce3ca7be162c67cd", + "0xe61057ea96a5f7fa65b70136eb569f245cbf13631f858852b10cf4a5a685ef64", + "0xa40a9262ecb19fef27370acc35440a72c741c5ef9eae3d2b228971588c74ecd8", + "0x25c63688d1cdc7767811f1b1a9d3ef700a7e092f3c8fa3c34a57fb0b1a2ec9d2", + "0xd3e597ac7b7824bdf84119f6e11106b557ce87fd354bd2966fb81f08e9e3ae32", + "0x35fc59fdea63eede5beb478db98961951113472ab48799436fbab788ea211726", + "0x04d52ba8f2beb413f92acfeb9656ba1e39209782a082ec9b21fc019ed5874a2a", + "0x6606efb1d6dc67f2cbe79812126871b8531abd608e18eed1d06fd12103c24210", + "0xce9b3fba26d920a502d1dc68d2d73204d0410f89abdaef0dfa98df24e1091559", + "0xe623090e9a96650bf12e9378c5ec6845b255a5ae8e876e484ae9f360d4f470ed", + "0xb02a8e07c7d981cadd74bab68e96a3319bc418a10db2730ad2f0570181776165", + "0x669e93ed03e14b38f65a3c0e1dcaf11ca4171204c1b8ea86d092cc1d6cec2367", + "0xb50ff4166d04da36b20e418b1adfa1b44e05158659370faf667467c0891cb148", + "0xd691b803e14bd56dc959631e532fb0f3024c54c73d90ef1bb77f60deb4e25f8d", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", + "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400" + ] + } } From 3cf25d53ac36ae03f39c42110df02ad0b3bb2351 Mon Sep 17 00:00:00 2001 From: mel0ndev Date: Mon, 16 Dec 2024 17:35:03 -0500 Subject: [PATCH 4/4] add lbtc layer zero --- leafs/Mainnet/sBTCNStrategistLeafs.json | 1088 ++--------------- .../Mainnet/CreateStakedBTCNMerkleRoot.s.sol | 3 + test/resources/ChainValues.sol | 4 + 3 files changed, 141 insertions(+), 954 deletions(-) diff --git a/leafs/Mainnet/sBTCNStrategistLeafs.json b/leafs/Mainnet/sBTCNStrategistLeafs.json index c198e1a0..b38ec085 100644 --- a/leafs/Mainnet/sBTCNStrategistLeafs.json +++ b/leafs/Mainnet/sBTCNStrategistLeafs.json @@ -1,955 +1,135 @@ -{ - "metadata": { - "AccountantAddress": "0x9A22F5dC4Ec86184D4771E620eb75D52E7b9E043", - "BoringVaultAddress": "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089", - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "DigestComposition": [ - "Bytes20(DECODER_AND_SANITIZER_ADDRESS)", - "Bytes20(TARGET_ADDRESS)", - "Bytes1(CAN_SEND_VALUE)", - "Bytes4(TARGET_FUNCTION_SELECTOR)", - "Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)" - ], - "LeafCount": 39, - "ManageRoot": "0x486112f2493dc25d93d82779ddd6f7f8488f637c21194d3636c37328ca3086ac", - "ManagerAddress": "0x5239158272D1f626aF9ef3353489D3Cb68439D66", - "TreeCapacity": 64 - }, - "leafs": [ - { - "AddressArguments": ["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve UniswapV3 NonFungible Position Manager to spend WBTC", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0xad6bcaf827bca1b809499b7747a23f23dc8c400bb9d0f61f12ebff6e53d4d918", - "PackedArgumentAddresses": "0xc36442b4a4522e871399cd717abdd847ab11fe88", - "TargetAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" - }, - { - "AddressArguments": ["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve UniswapV3 NonFungible Position Manager to spend cbBTC", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0xa693189093460697320475628423a7a79a1a6cb20f51b597d5dadb1f43f91c9d", - "PackedArgumentAddresses": "0xc36442b4a4522e871399cd717abdd847ab11fe88", - "TargetAddress": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" - }, - { - "AddressArguments": ["0xE592427A0AEce92De3Edee1F18E0157C05861564"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve UniswapV3 Router to spend WBTC", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0xe3d862144f7e205958b9f5153223edc749f11f1dbabcbb6d7065390af40dd053", - "PackedArgumentAddresses": "0xe592427a0aece92de3edee1f18e0157c05861564", - "TargetAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" - }, - { - "AddressArguments": ["0xE592427A0AEce92De3Edee1F18E0157C05861564"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve UniswapV3 Router to spend cbBTC", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0xa17d25a123fd8e26a1376f1390cfcf87019b0c2eefb4a749c6ea26bffba33d07", - "PackedArgumentAddresses": "0xe592427a0aece92de3edee1f18e0157c05861564", - "TargetAddress": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" - }, - { - "AddressArguments": [ - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Mint UniswapV3 WBTC cbBTC position", - "FunctionSelector": "0x88316456", - "FunctionSignature": "mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))", - "LeafDigest": "0x6f2d30afeb7e252fd620214a27c963e65217ae442a92328f55bf652ccd05c76d", - "PackedArgumentAddresses": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - { - "AddressArguments": [ - "0x0000000000000000000000000000000000000000", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Add liquidity to UniswapV3 WBTC cbBTC position", - "FunctionSelector": "0x219f5d17", - "FunctionSignature": "increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))", - "LeafDigest": "0xc9c273a998e2e3c7bc36bae8c1ee1bdd99781473e9aa69a5a890b5e88efc4128", - "PackedArgumentAddresses": "0x00000000000000000000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf", - "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - { - "AddressArguments": [ - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap WBTC for cbBTC using UniswapV3 router", - "FunctionSelector": "0xc04b8d59", - "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", - "LeafDigest": "0x283495f62f4de0e4b2b1c4789d8c799dde0b4edd2c85a3c1c0119ae2e2f1c0f6", - "PackedArgumentAddresses": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" - }, - { - "AddressArguments": [ - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap cbBTC for WBTC using UniswapV3 router", - "FunctionSelector": "0xc04b8d59", - "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", - "LeafDigest": "0x63de83700ee38e95eeff4324d6d3f89dbf0d117aa9587785fd7cc9e0056e7e1f", - "PackedArgumentAddresses": "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf2260fac5e5542a773aa44fbcfedf7c193bc2c5995e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" - }, - { - "AddressArguments": ["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve UniswapV3 NonFungible Position Manager to spend LBTC", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0x04ec0da77f5e51062c7772b27723194304aaef94470ea4d68514c2249e17c023", - "PackedArgumentAddresses": "0xc36442b4a4522e871399cd717abdd847ab11fe88", - "TargetAddress": "0x8236a87084f8B84306f72007F36F2618A5634494" - }, - { - "AddressArguments": ["0xE592427A0AEce92De3Edee1F18E0157C05861564"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve UniswapV3 Router to spend LBTC", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0x240bdb0846157d4e805fb509d90f55da888434cbe7eb930f9ba7e9e68b54fcd3", - "PackedArgumentAddresses": "0xe592427a0aece92de3edee1f18e0157c05861564", - "TargetAddress": "0x8236a87084f8B84306f72007F36F2618A5634494" - }, - { - "AddressArguments": [ - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x8236a87084f8B84306f72007F36F2618A5634494", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Mint UniswapV3 WBTC LBTC position", - "FunctionSelector": "0x88316456", - "FunctionSignature": "mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))", - "LeafDigest": "0x49d9e67d88de9e7a04b957ee70f3e19d053429d49b8a93806cb93a4f6cf8bdde", - "PackedArgumentAddresses": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - { - "AddressArguments": [ - "0x0000000000000000000000000000000000000000", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x8236a87084f8B84306f72007F36F2618A5634494" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Add liquidity to UniswapV3 WBTC LBTC position", - "FunctionSelector": "0x219f5d17", - "FunctionSignature": "increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))", - "LeafDigest": "0x3d8e43973285a75f163e8ffda0e37de63bba478481d11fcccbabf9df92cd58eb", - "PackedArgumentAddresses": "0x00000000000000000000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a5634494", - "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - { - "AddressArguments": [ - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x8236a87084f8B84306f72007F36F2618A5634494", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap WBTC for LBTC using UniswapV3 router", - "FunctionSelector": "0xc04b8d59", - "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", - "LeafDigest": "0x4643a014c4bf9a0b0edc6831af6b499e42f16651b955cad54463bb1cb06e1de4", - "PackedArgumentAddresses": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" - }, - { - "AddressArguments": [ - "0x8236a87084f8B84306f72007F36F2618A5634494", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap LBTC for WBTC using UniswapV3 router", - "FunctionSelector": "0xc04b8d59", - "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", - "LeafDigest": "0xa693a1ab5f7812d7e0fd77044565253f6fcb91c4e580e196522bf99a6ada8922", - "PackedArgumentAddresses": "0x8236a87084f8b84306f72007f36f2618a56344942260fac5e5542a773aa44fbcfedf7c193bc2c5995e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" - }, - { - "AddressArguments": [ - "0x8236a87084f8B84306f72007F36F2618A5634494", - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Mint UniswapV3 LBTC cbBTC position", - "FunctionSelector": "0x88316456", - "FunctionSignature": "mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))", - "LeafDigest": "0xa5cd0ec782224597f8411c8a8fadeffd145d464771b46808d7bbbd0f0dfc117f", - "PackedArgumentAddresses": "0x8236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - { - "AddressArguments": [ - "0x0000000000000000000000000000000000000000", - "0x8236a87084f8B84306f72007F36F2618A5634494", - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Add liquidity to UniswapV3 LBTC cbBTC position", - "FunctionSelector": "0x219f5d17", - "FunctionSignature": "increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))", - "LeafDigest": "0x99ca4169e67e2f7e21ebb7f9e4b784b280e6b6a5d8fecf07890a13927e4677e0", - "PackedArgumentAddresses": "0x00000000000000000000000000000000000000008236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf", - "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - { - "AddressArguments": [ - "0x8236a87084f8B84306f72007F36F2618A5634494", - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap LBTC for cbBTC using UniswapV3 router", - "FunctionSelector": "0xc04b8d59", - "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", - "LeafDigest": "0x112585178414bcb7979814a363abb8631b17feb36efdebf0a84d69b8466e6ac9", - "PackedArgumentAddresses": "0x8236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" - }, - { - "AddressArguments": [ - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "0x8236a87084f8B84306f72007F36F2618A5634494", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap cbBTC for LBTC using UniswapV3 router", - "FunctionSelector": "0xc04b8d59", - "FunctionSignature": "exactInput((bytes,address,uint256,uint256,uint256))", - "LeafDigest": "0x6ed7ec1cef43ee8c440c9bbb56d22ee19c0cf8b040ea3a9f595aa6f9f84e995e", - "PackedArgumentAddresses": "0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf8236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xE592427A0AEce92De3Edee1F18E0157C05861564" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Remove liquidity from UniswapV3 position", - "FunctionSelector": "0x0c49ccbe", - "FunctionSignature": "decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))", - "LeafDigest": "0xd019e5a8892447516b796d0238ec4f6ca89859380ab900db42b2272c6887dce6", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - { - "AddressArguments": ["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Collect fees from UniswapV3 position", - "FunctionSelector": "0xfc6f7865", - "FunctionSignature": "collect((uint256,address,uint128,uint128))", - "LeafDigest": "0x18365ac1a4ca934174097f6bf4290df93096df2a38e770568b63d782c1c4f1f6", - "PackedArgumentAddresses": "0x5e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Burn UniswapV3 position", - "FunctionSelector": "0x42966c68", - "FunctionSignature": "burn(uint256)", - "LeafDigest": "0x6f54f61850abf33393cbd9a6821decf80ca1b041df95a0c14ca92da4fc0c78eb", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0xC36442b4a4522E871399CD717aBDD847Ab11FE88" - }, - { - "AddressArguments": ["0x1111111254EEB25477B68fb85Ed929f73A960582"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve 1Inch router to spend WBTC", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0x40f30fc6afa6303c78f1c3fa82cedbe8b5714876a0763367ca303886ce8656aa", - "PackedArgumentAddresses": "0x1111111254eeb25477b68fb85ed929f73a960582", - "TargetAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" - }, - { - "AddressArguments": [ - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x8236a87084f8B84306f72007F36F2618A5634494", - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap WBTC for LBTC using 1inch router", - "FunctionSelector": "0x12aa3caf", - "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", - "LeafDigest": "0x11b5e1b8eaccf01e75439b40c376d663ce875630a6b8b79b9f2d2b827682533e", - "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e8122260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344943451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" - }, - { - "AddressArguments": [ - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0x8236a87084f8B84306f72007F36F2618A5634494", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap LBTC for WBTC using 1inch router", - "FunctionSelector": "0x12aa3caf", - "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", - "LeafDigest": "0x441b882eb0f510b04c4b41b9c4d65325f58ca892bcdc1d3a16e252d60f846fd8", - "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e8128236a87084f8b84306f72007f36f2618a56344942260fac5e5542a773aa44fbcfedf7c193bc2c5993451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" - }, - { - "AddressArguments": [ - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap WBTC for cbBTC using 1inch router", - "FunctionSelector": "0x12aa3caf", - "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", - "LeafDigest": "0xfa5eb5b9404ea96ae0e2f72d11d85d5265ac1bc37ac5477e14ae1ea74ae9b569", - "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e8122260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf3451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" - }, - { - "AddressArguments": [ - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599", - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap cbBTC for WBTC using 1inch router", - "FunctionSelector": "0x12aa3caf", - "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", - "LeafDigest": "0x9c6d57ee8a68faea38379eaef5413ca1685b94ad99754708ce3ca7be162c67cd", - "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e812cbb7c0000ab88b473b1f5afd9ef808440eed33bf2260fac5e5542a773aa44fbcfedf7c193bc2c5993451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" - }, - { - "AddressArguments": ["0x1111111254EEB25477B68fb85Ed929f73A960582"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve 1Inch router to spend LBTC", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0xe61057ea96a5f7fa65b70136eb569f245cbf13631f858852b10cf4a5a685ef64", - "PackedArgumentAddresses": "0x1111111254eeb25477b68fb85ed929f73a960582", - "TargetAddress": "0x8236a87084f8B84306f72007F36F2618A5634494" - }, - { - "AddressArguments": [ - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0x8236a87084f8B84306f72007F36F2618A5634494", - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap LBTC for cbBTC using 1inch router", - "FunctionSelector": "0x12aa3caf", - "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", - "LeafDigest": "0xa40a9262ecb19fef27370acc35440a72c741c5ef9eae3d2b228971588c74ecd8", - "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e8128236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf3451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" - }, - { - "AddressArguments": [ - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf", - "0x8236a87084f8B84306f72007F36F2618A5634494", - "0x3451B6b219478037a1AC572706627FC2BDa1e812", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap cbBTC for LBTC using 1inch router", - "FunctionSelector": "0x12aa3caf", - "FunctionSignature": "swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)", - "LeafDigest": "0x25c63688d1cdc7767811f1b1a9d3ef700a7e092f3c8fa3c34a57fb0b1a2ec9d2", - "PackedArgumentAddresses": "0x3451b6b219478037a1ac572706627fc2bda1e812cbb7c0000ab88b473b1f5afd9ef808440eed33bf8236a87084f8b84306f72007f36f2618a56344943451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0x1111111254EEB25477B68fb85Ed929f73A960582" - }, - { - "AddressArguments": ["0x1111111254EEB25477B68fb85Ed929f73A960582"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve 1Inch router to spend cbBTC", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0xd3e597ac7b7824bdf84119f6e11106b557ce87fd354bd2966fb81f08e9e3ae32", - "PackedArgumentAddresses": "0x1111111254eeb25477b68fb85ed929f73a960582", - "TargetAddress": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" - }, - { - "AddressArguments": ["0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve WBTC to be swapped for BTCN by the Corn SwapFacility Contract", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0x35fc59fdea63eede5beb478db98961951113472ab48799436fbab788ea211726", - "PackedArgumentAddresses": "0xbf5eb70b93d5895c839b8beb3c27dc36f6b56fea", - "TargetAddress": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599" - }, - { - "AddressArguments": ["0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve BTCN to be swapped for WBTC by the Corn SwapFacility Contract", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0x04d52ba8f2beb413f92acfeb9656ba1e39209782a082ec9b21fc019ed5874a2a", - "PackedArgumentAddresses": "0xbf5eb70b93d5895c839b8beb3c27dc36f6b56fea", - "TargetAddress": "0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6" - }, - { - "AddressArguments": ["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap WBTC for BTCN", - "FunctionSelector": "0x3cb50d7d", - "FunctionSignature": "swapExactCollateralForDebt(uint256,uint256,address,uint256)", - "LeafDigest": "0x6606efb1d6dc67f2cbe79812126871b8531abd608e18eed1d06fd12103c24210", - "PackedArgumentAddresses": "0x5e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea" - }, - { - "AddressArguments": ["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap BTCN for WBTC", - "FunctionSelector": "0x98ad990a", - "FunctionSignature": "swapExactDebtForCollateral(uint256,uint256,address,uint256)", - "LeafDigest": "0xce9b3fba26d920a502d1dc68d2d73204d0410f89abdaef0dfa98df24e1091559", - "PackedArgumentAddresses": "0x5e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea" - }, - { - "AddressArguments": ["0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve cbBTC to be swapped for BTCN by the Corn SwapFacility Contract", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0xe623090e9a96650bf12e9378c5ec6845b255a5ae8e876e484ae9f360d4f470ed", - "PackedArgumentAddresses": "0x554335b8c994e47e6dbfdc08fa8aca0510e66ba1", - "TargetAddress": "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf" - }, - { - "AddressArguments": ["0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Approve BTCN to be swapped for cbBTC by the Corn SwapFacility Contract", - "FunctionSelector": "0x095ea7b3", - "FunctionSignature": "approve(address,uint256)", - "LeafDigest": "0xb02a8e07c7d981cadd74bab68e96a3319bc418a10db2730ad2f0570181776165", - "PackedArgumentAddresses": "0x554335b8c994e47e6dbfdc08fa8aca0510e66ba1", - "TargetAddress": "0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6" - }, - { - "AddressArguments": ["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap cbBTC for BTCN", - "FunctionSelector": "0x3cb50d7d", - "FunctionSignature": "swapExactCollateralForDebt(uint256,uint256,address,uint256)", - "LeafDigest": "0x669e93ed03e14b38f65a3c0e1dcaf11ca4171204c1b8ea86d092cc1d6cec2367", - "PackedArgumentAddresses": "0x5e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1" - }, - { - "AddressArguments": ["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Swap BTCN for cbBTC", - "FunctionSelector": "0x98ad990a", - "FunctionSignature": "swapExactDebtForCollateral(uint256,uint256,address,uint256)", - "LeafDigest": "0xb50ff4166d04da36b20e418b1adfa1b44e05158659370faf667467c0891cb148", - "PackedArgumentAddresses": "0x5e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1" - }, - { - "AddressArguments": [ - "0x000000000000000000000000000000000000767b", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089", - "0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089" - ], - "CanSendValue": true, - "DecoderAndSanitizerAddress": "0xCAc92301f96e3b6554EF11366482f464c6f87cFB", - "Description": "Bridge BTCN to LayerZero endpoint: 30331", - "FunctionSelector": "0xc7c7f5b3", - "FunctionSignature": "send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)", - "LeafDigest": "0xd691b803e14bd56dc959631e532fb0f3024c54c73d90ef1bb77f60deb4e25f8d", - "PackedArgumentAddresses": "0x000000000000000000000000000000000000767b5e272ca4bd94e57ec5c51d26703621ccac1a70895e272ca4bd94e57ec5c51d26703621ccac1a7089", - "TargetAddress": "0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - }, - { - "AddressArguments": [], - "CanSendValue": false, - "DecoderAndSanitizerAddress": "0x0000000000000000000000000000000000000000", - "Description": "", - "FunctionSelector": "0xc5d24601", - "FunctionSignature": "", - "LeafDigest": "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "PackedArgumentAddresses": "0x", - "TargetAddress": "0x0000000000000000000000000000000000000000" - } - ], - "MerkleTree": { - "0": [ - "0x486112f2493dc25d93d82779ddd6f7f8488f637c21194d3636c37328ca3086ac" - ], - "1": [ - "0x2a337d46daadba4bdacf63be1c4403b3c63145ea3ba13f42d1e48f92b626ee63", - "0x896437b9bae5efce5048641132419bfd9642e1339bc2c76d10a551784d81f0b1" - ], - "2": [ - "0x049b3dd161ece9ff679ecb07b47253653b250a458e2a3344e86e7572a8b7e8b2", - "0x76bbd7a493bb1f65e96ca16a3c17488ca650c0c9503795e0838a7452f3b27b45", - "0x40998d88018d3b1bdedc8ab1d61edd2ce6b4311abd0c45836c04b90ce84d761b", - "0xc8e2d8c65f68c2edf703a349b0189c66520f43472e76097f69a501107adf656c" - ], - "3": [ - "0x4cb9bbd04f448fe7817c38f51d8558c9f84cc37a86cb81a3753b315aa501288f", - "0x93383ce12de8c167c1f0213a845e5b66c16ec79c9f53f6a9803b7650173b8c9e", - "0xf2e04b0fd4acafb0315aa770476572d4fbc944f0cc820dd40c3e50596e6a4801", - "0x24d94193ad48eac1c1cb67455b66be55895c7c62f7e940d5225bc9c18305ebc0", - "0xe7406ae7e46cd5322f0171717b92196cb7f151e897c2016ecc9b75d79b9032b5", - "0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704", - "0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704", - "0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704" - ], - "4": [ - "0xf3eaf755db59cb2fff167883d6c299788edf6341c723a4f5d735daf7ea91c0a8", - "0xfd30e948cc7d9c5ff21232fcaa19b38ba985b4ec9734031bde1bba5859500905", - "0x974f4c9da13cedff34a06ce667e9fd82dbe489158e0f7c85efb4f00877f8de3a", - "0xb9fc9decfe1c406bd41d695ddf00c37def749dee6f7a893022177dbc99e16d24", - "0xe9fb9ea261358bd38ef529cdd300a6d9bd1e7b348d2514613a4b974ad9fd9168", - "0x12dfc15c3f35313497acb433ab6c48d353340e4f5b890ad8c332ba0b9212d61d", - "0x2ffddc32c92354854ed50a74c87cfadf213a07929dc731ac77821ec3dbc5c0d2", - "0xc3b42570c3844ae3a81f3038a0eb27f15b8936b26b87262c52ce9ca7c7fd71e9", - "0xc203cbc4823373be6e008dd142ef1e72583833b2d7e07df127b82195725179f8", - "0x6c7c707ca7cb20909e009d5ce9ea388961d928cc02b7dcc99f6492c0184e6854", - "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe", - "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe", - "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe", - "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe", - "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe", - "0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe" - ], - "5": [ - "0x09d02fe1d9f4df375aee79fd23823276578fa12d7290a844958f3c7b10503d56", - "0xea245d1fc712d3d97b14f7572af7c6da5c7caf601ca09c3cea20b0281c9d8d84", - "0x6b0f8be85a043bc398a3118e8957ab001b3ba3a4deb6c01c3654be7064a42143", - "0x0b409e21c82c1890a1200dac817ec5162af4429f64c32989c1eafd0dbf5d3d09", - "0x300bcf2646926db85278c5f6343ef2ad53b96976a08f82d659f5c658aa9dc1a7", - "0x56044082e18e84995d895d64f63f67de9d7c14693667aa413f436738b5973a10", - "0x3652d23f60d02d3465bdcdedbf356b8f65b542820c1a6abe3562ec5b7532bfdf", - "0xe1d08d2930b6ce30c12872c3f77cc3bfdd8c6d5d4bca141f27108bd0d6179190", - "0xc1554b04ecec1e832919e86bda670429160987d754d51cf23cd89d8dee97019c", - "0x1712b68d97a5e4805e7d896ac958d4de9addcb6b83d20391b0d916aeb91fd883", - "0xd4d13c9a47265077b4f18eaef217fd30b08fc04647389de6a601461cd3e51517", - "0x4c2b3d94719f90c50020f29223b4de002871fc229cf6e27ba5e854e6060ad728", - "0x29d11d34e3ef38ba7c894d96b3528d7ac83358cd2c9d4a4f813ee6aea16c8c26", - "0xdaf7a7a0c972aba9669666c45790b9fd87987703082725925f59b35b7f04a84a", - "0x5ac510d17cf6db882d2f7796553101f13fdd01441cd6d2b04e2fb70f41165399", - "0x4549148faf39f75a7062e6b45498404be67bd22fd184ad4faf632e5642e0046f", - "0xa24606fb3ba268657ba228cdee4bcfb8ca3cf95a80a5655badd681f63092f76b", - "0xa1c40ffb7cb430aea8f8a9c008a0993e00adddac7a5423c9fbfdff42564d90e5", - "0xaee2770b18c9381b3262e6448502e95b99301046dff5bd70c5c8b242a1f15c67", - "0xbf1307a058a3bcd26ce648f04b0abf994b6cc9208a25d7f119e2f2e30fbc907b", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba", - "0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba" - ], - "6": [ - "0xad6bcaf827bca1b809499b7747a23f23dc8c400bb9d0f61f12ebff6e53d4d918", - "0xa693189093460697320475628423a7a79a1a6cb20f51b597d5dadb1f43f91c9d", - "0xe3d862144f7e205958b9f5153223edc749f11f1dbabcbb6d7065390af40dd053", - "0xa17d25a123fd8e26a1376f1390cfcf87019b0c2eefb4a749c6ea26bffba33d07", - "0x6f2d30afeb7e252fd620214a27c963e65217ae442a92328f55bf652ccd05c76d", - "0xc9c273a998e2e3c7bc36bae8c1ee1bdd99781473e9aa69a5a890b5e88efc4128", - "0x283495f62f4de0e4b2b1c4789d8c799dde0b4edd2c85a3c1c0119ae2e2f1c0f6", - "0x63de83700ee38e95eeff4324d6d3f89dbf0d117aa9587785fd7cc9e0056e7e1f", - "0x04ec0da77f5e51062c7772b27723194304aaef94470ea4d68514c2249e17c023", - "0x240bdb0846157d4e805fb509d90f55da888434cbe7eb930f9ba7e9e68b54fcd3", - "0x49d9e67d88de9e7a04b957ee70f3e19d053429d49b8a93806cb93a4f6cf8bdde", - "0x3d8e43973285a75f163e8ffda0e37de63bba478481d11fcccbabf9df92cd58eb", - "0x4643a014c4bf9a0b0edc6831af6b499e42f16651b955cad54463bb1cb06e1de4", - "0xa693a1ab5f7812d7e0fd77044565253f6fcb91c4e580e196522bf99a6ada8922", - "0xa5cd0ec782224597f8411c8a8fadeffd145d464771b46808d7bbbd0f0dfc117f", - "0x99ca4169e67e2f7e21ebb7f9e4b784b280e6b6a5d8fecf07890a13927e4677e0", - "0x112585178414bcb7979814a363abb8631b17feb36efdebf0a84d69b8466e6ac9", - "0x6ed7ec1cef43ee8c440c9bbb56d22ee19c0cf8b040ea3a9f595aa6f9f84e995e", - "0xd019e5a8892447516b796d0238ec4f6ca89859380ab900db42b2272c6887dce6", - "0x18365ac1a4ca934174097f6bf4290df93096df2a38e770568b63d782c1c4f1f6", - "0x6f54f61850abf33393cbd9a6821decf80ca1b041df95a0c14ca92da4fc0c78eb", - "0x40f30fc6afa6303c78f1c3fa82cedbe8b5714876a0763367ca303886ce8656aa", - "0x11b5e1b8eaccf01e75439b40c376d663ce875630a6b8b79b9f2d2b827682533e", - "0x441b882eb0f510b04c4b41b9c4d65325f58ca892bcdc1d3a16e252d60f846fd8", - "0xfa5eb5b9404ea96ae0e2f72d11d85d5265ac1bc37ac5477e14ae1ea74ae9b569", - "0x9c6d57ee8a68faea38379eaef5413ca1685b94ad99754708ce3ca7be162c67cd", - "0xe61057ea96a5f7fa65b70136eb569f245cbf13631f858852b10cf4a5a685ef64", - "0xa40a9262ecb19fef27370acc35440a72c741c5ef9eae3d2b228971588c74ecd8", - "0x25c63688d1cdc7767811f1b1a9d3ef700a7e092f3c8fa3c34a57fb0b1a2ec9d2", - "0xd3e597ac7b7824bdf84119f6e11106b557ce87fd354bd2966fb81f08e9e3ae32", - "0x35fc59fdea63eede5beb478db98961951113472ab48799436fbab788ea211726", - "0x04d52ba8f2beb413f92acfeb9656ba1e39209782a082ec9b21fc019ed5874a2a", - "0x6606efb1d6dc67f2cbe79812126871b8531abd608e18eed1d06fd12103c24210", - "0xce9b3fba26d920a502d1dc68d2d73204d0410f89abdaef0dfa98df24e1091559", - "0xe623090e9a96650bf12e9378c5ec6845b255a5ae8e876e484ae9f360d4f470ed", - "0xb02a8e07c7d981cadd74bab68e96a3319bc418a10db2730ad2f0570181776165", - "0x669e93ed03e14b38f65a3c0e1dcaf11ca4171204c1b8ea86d092cc1d6cec2367", - "0xb50ff4166d04da36b20e418b1adfa1b44e05158659370faf667467c0891cb148", - "0xd691b803e14bd56dc959631e532fb0f3024c54c73d90ef1bb77f60deb4e25f8d", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400", - "0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400" - ] - } +{ "metadata": +{"AccountantAddress":"0x9A22F5dC4Ec86184D4771E620eb75D52E7b9E043","BoringVaultAddress":"0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089","DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","DigestComposition":["Bytes20(DECODER_AND_SANITIZER_ADDRESS)","Bytes20(TARGET_ADDRESS)","Bytes1(CAN_SEND_VALUE)","Bytes4(TARGET_FUNCTION_SELECTOR)","Bytes{N*20}(ADDRESS_ARGUMENT_0,...,ADDRESS_ARGUMENT_N)"],"LeafCount":41,"ManageRoot":"0x09c91655dfed4dd81797f6dad2f2f7d5e7fa4c4cb8a4534a906d3735ea3875d3","ManagerAddress":"0x5239158272D1f626aF9ef3353489D3Cb68439D66","TreeCapacity":64} +, +"leafs": [ +{"AddressArguments":["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 NonFungible Position Manager to spend WBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xad6bcaf827bca1b809499b7747a23f23dc8c400bb9d0f61f12ebff6e53d4d918","PackedArgumentAddresses":"0xc36442b4a4522e871399cd717abdd847ab11fe88","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} +, +{"AddressArguments":["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 NonFungible Position Manager to spend cbBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xa693189093460697320475628423a7a79a1a6cb20f51b597d5dadb1f43f91c9d","PackedArgumentAddresses":"0xc36442b4a4522e871399cd717abdd847ab11fe88","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} +, +{"AddressArguments":["0xE592427A0AEce92De3Edee1F18E0157C05861564"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 Router to spend WBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xe3d862144f7e205958b9f5153223edc749f11f1dbabcbb6d7065390af40dd053","PackedArgumentAddresses":"0xe592427a0aece92de3edee1f18e0157c05861564","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} +, +{"AddressArguments":["0xE592427A0AEce92De3Edee1F18E0157C05861564"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 Router to spend cbBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xa17d25a123fd8e26a1376f1390cfcf87019b0c2eefb4a749c6ea26bffba33d07","PackedArgumentAddresses":"0xe592427a0aece92de3edee1f18e0157c05861564","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} +, +{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Mint UniswapV3 WBTC cbBTC position","FunctionSelector":"0x88316456","FunctionSignature":"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))","LeafDigest":"0x6f2d30afeb7e252fd620214a27c963e65217ae442a92328f55bf652ccd05c76d","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x0000000000000000000000000000000000000000","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Add liquidity to UniswapV3 WBTC cbBTC position","FunctionSelector":"0x219f5d17","FunctionSignature":"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))","LeafDigest":"0xc9c273a998e2e3c7bc36bae8c1ee1bdd99781473e9aa69a5a890b5e88efc4128","PackedArgumentAddresses":"0x00000000000000000000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for cbBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x283495f62f4de0e4b2b1c4789d8c799dde0b4edd2c85a3c1c0119ae2e2f1c0f6","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":["0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for WBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x63de83700ee38e95eeff4324d6d3f89dbf0d117aa9587785fd7cc9e0056e7e1f","PackedArgumentAddresses":"0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf2260fac5e5542a773aa44fbcfedf7c193bc2c5995e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":["0xC36442b4a4522E871399CD717aBDD847Ab11FE88"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 NonFungible Position Manager to spend LBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x04ec0da77f5e51062c7772b27723194304aaef94470ea4d68514c2249e17c023","PackedArgumentAddresses":"0xc36442b4a4522e871399cd717abdd847ab11fe88","TargetAddress":"0x8236a87084f8B84306f72007F36F2618A5634494"} +, +{"AddressArguments":["0xE592427A0AEce92De3Edee1F18E0157C05861564"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve UniswapV3 Router to spend LBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x240bdb0846157d4e805fb509d90f55da888434cbe7eb930f9ba7e9e68b54fcd3","PackedArgumentAddresses":"0xe592427a0aece92de3edee1f18e0157c05861564","TargetAddress":"0x8236a87084f8B84306f72007F36F2618A5634494"} +, +{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Mint UniswapV3 WBTC LBTC position","FunctionSelector":"0x88316456","FunctionSignature":"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))","LeafDigest":"0x49d9e67d88de9e7a04b957ee70f3e19d053429d49b8a93806cb93a4f6cf8bdde","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x0000000000000000000000000000000000000000","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Add liquidity to UniswapV3 WBTC LBTC position","FunctionSelector":"0x219f5d17","FunctionSignature":"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))","LeafDigest":"0x3d8e43973285a75f163e8ffda0e37de63bba478481d11fcccbabf9df92cd58eb","PackedArgumentAddresses":"0x00000000000000000000000000000000000000002260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a5634494","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for LBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x4643a014c4bf9a0b0edc6831af6b499e42f16651b955cad54463bb1cb06e1de4","PackedArgumentAddresses":"0x2260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":["0x8236a87084f8B84306f72007F36F2618A5634494","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for WBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0xa693a1ab5f7812d7e0fd77044565253f6fcb91c4e580e196522bf99a6ada8922","PackedArgumentAddresses":"0x8236a87084f8b84306f72007f36f2618a56344942260fac5e5542a773aa44fbcfedf7c193bc2c5995e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":["0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Mint UniswapV3 LBTC cbBTC position","FunctionSelector":"0x88316456","FunctionSignature":"mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256))","LeafDigest":"0xa5cd0ec782224597f8411c8a8fadeffd145d464771b46808d7bbbd0f0dfc117f","PackedArgumentAddresses":"0x8236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x0000000000000000000000000000000000000000","0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Add liquidity to UniswapV3 LBTC cbBTC position","FunctionSelector":"0x219f5d17","FunctionSignature":"increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256))","LeafDigest":"0x99ca4169e67e2f7e21ebb7f9e4b784b280e6b6a5d8fecf07890a13927e4677e0","PackedArgumentAddresses":"0x00000000000000000000000000000000000000008236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for cbBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x112585178414bcb7979814a363abb8631b17feb36efdebf0a84d69b8466e6ac9","PackedArgumentAddresses":"0x8236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":["0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x8236a87084f8B84306f72007F36F2618A5634494","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for LBTC using UniswapV3 router","FunctionSelector":"0xc04b8d59","FunctionSignature":"exactInput((bytes,address,uint256,uint256,uint256))","LeafDigest":"0x6ed7ec1cef43ee8c440c9bbb56d22ee19c0cf8b040ea3a9f595aa6f9f84e995e","PackedArgumentAddresses":"0xcbb7c0000ab88b473b1f5afd9ef808440eed33bf8236a87084f8b84306f72007f36f2618a56344945e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xE592427A0AEce92De3Edee1F18E0157C05861564"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Remove liquidity from UniswapV3 position","FunctionSelector":"0x0c49ccbe","FunctionSignature":"decreaseLiquidity((uint256,uint128,uint256,uint256,uint256))","LeafDigest":"0xd019e5a8892447516b796d0238ec4f6ca89859380ab900db42b2272c6887dce6","PackedArgumentAddresses":"0x","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Collect fees from UniswapV3 position","FunctionSelector":"0xfc6f7865","FunctionSignature":"collect((uint256,address,uint128,uint128))","LeafDigest":"0x18365ac1a4ca934174097f6bf4290df93096df2a38e770568b63d782c1c4f1f6","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Burn UniswapV3 position","FunctionSelector":"0x42966c68","FunctionSignature":"burn(uint256)","LeafDigest":"0x6f54f61850abf33393cbd9a6821decf80ca1b041df95a0c14ca92da4fc0c78eb","PackedArgumentAddresses":"0x","TargetAddress":"0xC36442b4a4522E871399CD717aBDD847Ab11FE88"} +, +{"AddressArguments":["0x1111111254EEB25477B68fb85Ed929f73A960582"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve 1Inch router to spend WBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x40f30fc6afa6303c78f1c3fa82cedbe8b5714876a0763367ca303886ce8656aa","PackedArgumentAddresses":"0x1111111254eeb25477b68fb85ed929f73a960582","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x8236a87084f8B84306f72007F36F2618A5634494","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for LBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x11b5e1b8eaccf01e75439b40c376d663ce875630a6b8b79b9f2d2b827682533e","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8122260fac5e5542a773aa44fbcfedf7c193bc2c5998236a87084f8b84306f72007f36f2618a56344943451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x8236a87084f8B84306f72007F36F2618A5634494","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for WBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x441b882eb0f510b04c4b41b9c4d65325f58ca892bcdc1d3a16e252d60f846fd8","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8128236a87084f8b84306f72007f36f2618a56344942260fac5e5542a773aa44fbcfedf7c193bc2c5993451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for cbBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0xfa5eb5b9404ea96ae0e2f72d11d85d5265ac1bc37ac5477e14ae1ea74ae9b569","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8122260fac5e5542a773aa44fbcfedf7c193bc2c599cbb7c0000ab88b473b1f5afd9ef808440eed33bf3451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for WBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x9c6d57ee8a68faea38379eaef5413ca1685b94ad99754708ce3ca7be162c67cd","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e812cbb7c0000ab88b473b1f5afd9ef808440eed33bf2260fac5e5542a773aa44fbcfedf7c193bc2c5993451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x1111111254EEB25477B68fb85Ed929f73A960582"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve 1Inch router to spend LBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xe61057ea96a5f7fa65b70136eb569f245cbf13631f858852b10cf4a5a685ef64","PackedArgumentAddresses":"0x1111111254eeb25477b68fb85ed929f73a960582","TargetAddress":"0x8236a87084f8B84306f72007F36F2618A5634494"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0x8236a87084f8B84306f72007F36F2618A5634494","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap LBTC for cbBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0xa40a9262ecb19fef27370acc35440a72c741c5ef9eae3d2b228971588c74ecd8","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e8128236a87084f8b84306f72007f36f2618a5634494cbb7c0000ab88b473b1f5afd9ef808440eed33bf3451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x3451B6b219478037a1AC572706627FC2BDa1e812","0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf","0x8236a87084f8B84306f72007F36F2618A5634494","0x3451B6b219478037a1AC572706627FC2BDa1e812","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for LBTC using 1inch router","FunctionSelector":"0x12aa3caf","FunctionSignature":"swap(address,(address,address,address,address,uint256,uint256,uint256),bytes,bytes)","LeafDigest":"0x25c63688d1cdc7767811f1b1a9d3ef700a7e092f3c8fa3c34a57fb0b1a2ec9d2","PackedArgumentAddresses":"0x3451b6b219478037a1ac572706627fc2bda1e812cbb7c0000ab88b473b1f5afd9ef808440eed33bf8236a87084f8b84306f72007f36f2618a56344943451b6b219478037a1ac572706627fc2bda1e8125e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x1111111254EEB25477B68fb85Ed929f73A960582"} +, +{"AddressArguments":["0x1111111254EEB25477B68fb85Ed929f73A960582"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve 1Inch router to spend cbBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xd3e597ac7b7824bdf84119f6e11106b557ce87fd354bd2966fb81f08e9e3ae32","PackedArgumentAddresses":"0x1111111254eeb25477b68fb85ed929f73a960582","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} +, +{"AddressArguments":["0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve WBTC to be swapped for BTCN by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x35fc59fdea63eede5beb478db98961951113472ab48799436fbab788ea211726","PackedArgumentAddresses":"0xbf5eb70b93d5895c839b8beb3c27dc36f6b56fea","TargetAddress":"0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599"} +, +{"AddressArguments":["0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve BTCN to be swapped for WBTC by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0x04d52ba8f2beb413f92acfeb9656ba1e39209782a082ec9b21fc019ed5874a2a","PackedArgumentAddresses":"0xbf5eb70b93d5895c839b8beb3c27dc36f6b56fea","TargetAddress":"0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6"} +, +{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap WBTC for BTCN","FunctionSelector":"0x3cb50d7d","FunctionSignature":"swapExactCollateralForDebt(uint256,uint256,address,uint256)","LeafDigest":"0x6606efb1d6dc67f2cbe79812126871b8531abd608e18eed1d06fd12103c24210","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"} +, +{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap BTCN for WBTC","FunctionSelector":"0x98ad990a","FunctionSignature":"swapExactDebtForCollateral(uint256,uint256,address,uint256)","LeafDigest":"0xce9b3fba26d920a502d1dc68d2d73204d0410f89abdaef0dfa98df24e1091559","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea"} +, +{"AddressArguments":["0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve cbBTC to be swapped for BTCN by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xe623090e9a96650bf12e9378c5ec6845b255a5ae8e876e484ae9f360d4f470ed","PackedArgumentAddresses":"0x554335b8c994e47e6dbfdc08fa8aca0510e66ba1","TargetAddress":"0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"} +, +{"AddressArguments":["0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve BTCN to be swapped for cbBTC by the Corn SwapFacility Contract","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xb02a8e07c7d981cadd74bab68e96a3319bc418a10db2730ad2f0570181776165","PackedArgumentAddresses":"0x554335b8c994e47e6dbfdc08fa8aca0510e66ba1","TargetAddress":"0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6"} +, +{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap cbBTC for BTCN","FunctionSelector":"0x3cb50d7d","FunctionSignature":"swapExactCollateralForDebt(uint256,uint256,address,uint256)","LeafDigest":"0x669e93ed03e14b38f65a3c0e1dcaf11ca4171204c1b8ea86d092cc1d6cec2367","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"} +, +{"AddressArguments":["0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Swap BTCN for cbBTC","FunctionSelector":"0x98ad990a","FunctionSignature":"swapExactDebtForCollateral(uint256,uint256,address,uint256)","LeafDigest":"0xb50ff4166d04da36b20e418b1adfa1b44e05158659370faf667467c0891cb148","PackedArgumentAddresses":"0x5e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1"} +, +{"AddressArguments":["0x000000000000000000000000000000000000767b","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":true,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Bridge BTCN to LayerZero endpoint: 30331","FunctionSelector":"0xc7c7f5b3","FunctionSignature":"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)","LeafDigest":"0xd691b803e14bd56dc959631e532fb0f3024c54c73d90ef1bb77f60deb4e25f8d","PackedArgumentAddresses":"0x000000000000000000000000000000000000767b5e272ca4bd94e57ec5c51d26703621ccac1a70895e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x386E7A3a0c0919c9d53c3b04FF67E73Ff9e45Fb6"} +, +{"AddressArguments":["0x6bc15D7930839Ec18A57F6f7dF72aE1B439D077f"],"CanSendValue":false,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Approve LayerZero to spend LBTC","FunctionSelector":"0x095ea7b3","FunctionSignature":"approve(address,uint256)","LeafDigest":"0xe80b550f78d15cc4633f3558deb5be37a3381b2b4299c7055cebe121971083d5","PackedArgumentAddresses":"0x6bc15d7930839ec18a57f6f7df72ae1b439d077f","TargetAddress":"0x8236a87084f8B84306f72007F36F2618A5634494"} +, +{"AddressArguments":["0x000000000000000000000000000000000000767b","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089","0x5E272ca4bD94e57Ec5C51D26703621Ccac1A7089"],"CanSendValue":true,"DecoderAndSanitizerAddress":"0xCAc92301f96e3b6554EF11366482f464c6f87cFB","Description":"Bridge LBTC to LayerZero endpoint: 30331","FunctionSelector":"0xc7c7f5b3","FunctionSignature":"send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)","LeafDigest":"0x4735328c5e9ed959146e28f5109e6803f0b67aa4c0f0e3ef7ffa84f22a844db2","PackedArgumentAddresses":"0x000000000000000000000000000000000000767b5e272ca4bd94e57ec5c51d26703621ccac1a70895e272ca4bd94e57ec5c51d26703621ccac1a7089","TargetAddress":"0x6bc15D7930839Ec18A57F6f7dF72aE1B439D077f"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +, +{"AddressArguments":[],"CanSendValue":false,"DecoderAndSanitizerAddress":"0x0000000000000000000000000000000000000000","Description":"","FunctionSelector":"0xc5d24601","FunctionSignature":"","LeafDigest":"0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","PackedArgumentAddresses":"0x","TargetAddress":"0x0000000000000000000000000000000000000000"} +], +"MerkleTree": +{"0":["0x09c91655dfed4dd81797f6dad2f2f7d5e7fa4c4cb8a4534a906d3735ea3875d3"],"1":["0x2a337d46daadba4bdacf63be1c4403b3c63145ea3ba13f42d1e48f92b626ee63","0xe35395cedcfcbe04dfbd8d6f0fd57e39d106b2a0422cb5bbbcb8bea7eb0d7654"],"2":["0x049b3dd161ece9ff679ecb07b47253653b250a458e2a3344e86e7572a8b7e8b2","0x76bbd7a493bb1f65e96ca16a3c17488ca650c0c9503795e0838a7452f3b27b45","0x6052b0ca1f24ab64bbce75cc8f41a3a302d88f562a780a004ca2188365832198","0xc8e2d8c65f68c2edf703a349b0189c66520f43472e76097f69a501107adf656c"],"3":["0x4cb9bbd04f448fe7817c38f51d8558c9f84cc37a86cb81a3753b315aa501288f","0x93383ce12de8c167c1f0213a845e5b66c16ec79c9f53f6a9803b7650173b8c9e","0xf2e04b0fd4acafb0315aa770476572d4fbc944f0cc820dd40c3e50596e6a4801","0x24d94193ad48eac1c1cb67455b66be55895c7c62f7e940d5225bc9c18305ebc0","0x2a55ef65537f8cb4e37298e00efa78f83b42594acad6288b4709ff12e226bf80","0x4cf418a94630c03c27bd2468e10ba4e02c02cfc2fb457aa90767f36b5ccd5d5d","0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704","0x41fbd3a0cfdfcee05cf3eb16d95ed1c81f50c3c6268bb806b406ec06ee93e704"],"4":["0xf3eaf755db59cb2fff167883d6c299788edf6341c723a4f5d735daf7ea91c0a8","0xfd30e948cc7d9c5ff21232fcaa19b38ba985b4ec9734031bde1bba5859500905","0x974f4c9da13cedff34a06ce667e9fd82dbe489158e0f7c85efb4f00877f8de3a","0xb9fc9decfe1c406bd41d695ddf00c37def749dee6f7a893022177dbc99e16d24","0xe9fb9ea261358bd38ef529cdd300a6d9bd1e7b348d2514613a4b974ad9fd9168","0x12dfc15c3f35313497acb433ab6c48d353340e4f5b890ad8c332ba0b9212d61d","0x2ffddc32c92354854ed50a74c87cfadf213a07929dc731ac77821ec3dbc5c0d2","0xc3b42570c3844ae3a81f3038a0eb27f15b8936b26b87262c52ce9ca7c7fd71e9","0xc203cbc4823373be6e008dd142ef1e72583833b2d7e07df127b82195725179f8","0xf0797aa994d78a1d7df6f8597f78e80eec94e545dea64d1968fd372c696736dc","0x3145fb87607c0b69050c57df1f74ce9d3a7d43da17b269a4c3f956c90e6ff80f","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe","0x849eda7a295b642e5ddaf49a30eec4470cf507efa83b4104c0752d069c7638fe"],"5":["0x09d02fe1d9f4df375aee79fd23823276578fa12d7290a844958f3c7b10503d56","0xea245d1fc712d3d97b14f7572af7c6da5c7caf601ca09c3cea20b0281c9d8d84","0x6b0f8be85a043bc398a3118e8957ab001b3ba3a4deb6c01c3654be7064a42143","0x0b409e21c82c1890a1200dac817ec5162af4429f64c32989c1eafd0dbf5d3d09","0x300bcf2646926db85278c5f6343ef2ad53b96976a08f82d659f5c658aa9dc1a7","0x56044082e18e84995d895d64f63f67de9d7c14693667aa413f436738b5973a10","0x3652d23f60d02d3465bdcdedbf356b8f65b542820c1a6abe3562ec5b7532bfdf","0xe1d08d2930b6ce30c12872c3f77cc3bfdd8c6d5d4bca141f27108bd0d6179190","0xc1554b04ecec1e832919e86bda670429160987d754d51cf23cd89d8dee97019c","0x1712b68d97a5e4805e7d896ac958d4de9addcb6b83d20391b0d916aeb91fd883","0xd4d13c9a47265077b4f18eaef217fd30b08fc04647389de6a601461cd3e51517","0x4c2b3d94719f90c50020f29223b4de002871fc229cf6e27ba5e854e6060ad728","0x29d11d34e3ef38ba7c894d96b3528d7ac83358cd2c9d4a4f813ee6aea16c8c26","0xdaf7a7a0c972aba9669666c45790b9fd87987703082725925f59b35b7f04a84a","0x5ac510d17cf6db882d2f7796553101f13fdd01441cd6d2b04e2fb70f41165399","0x4549148faf39f75a7062e6b45498404be67bd22fd184ad4faf632e5642e0046f","0xa24606fb3ba268657ba228cdee4bcfb8ca3cf95a80a5655badd681f63092f76b","0xa1c40ffb7cb430aea8f8a9c008a0993e00adddac7a5423c9fbfdff42564d90e5","0xaee2770b18c9381b3262e6448502e95b99301046dff5bd70c5c8b242a1f15c67","0x6b885bab4b84610e8010e81e3055b24124e80d1636ea8e304ef8fb7c2d0f4266","0x473584f693cbad339a80c9d4cf0ee8e72c23d6af063cd37f1dbf9d44b1db3b6d","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba","0xc5a36f3b7b955966d5ed3135dcc612f978306d73bce3697e230afae57fbaeeba"],"6":["0xad6bcaf827bca1b809499b7747a23f23dc8c400bb9d0f61f12ebff6e53d4d918","0xa693189093460697320475628423a7a79a1a6cb20f51b597d5dadb1f43f91c9d","0xe3d862144f7e205958b9f5153223edc749f11f1dbabcbb6d7065390af40dd053","0xa17d25a123fd8e26a1376f1390cfcf87019b0c2eefb4a749c6ea26bffba33d07","0x6f2d30afeb7e252fd620214a27c963e65217ae442a92328f55bf652ccd05c76d","0xc9c273a998e2e3c7bc36bae8c1ee1bdd99781473e9aa69a5a890b5e88efc4128","0x283495f62f4de0e4b2b1c4789d8c799dde0b4edd2c85a3c1c0119ae2e2f1c0f6","0x63de83700ee38e95eeff4324d6d3f89dbf0d117aa9587785fd7cc9e0056e7e1f","0x04ec0da77f5e51062c7772b27723194304aaef94470ea4d68514c2249e17c023","0x240bdb0846157d4e805fb509d90f55da888434cbe7eb930f9ba7e9e68b54fcd3","0x49d9e67d88de9e7a04b957ee70f3e19d053429d49b8a93806cb93a4f6cf8bdde","0x3d8e43973285a75f163e8ffda0e37de63bba478481d11fcccbabf9df92cd58eb","0x4643a014c4bf9a0b0edc6831af6b499e42f16651b955cad54463bb1cb06e1de4","0xa693a1ab5f7812d7e0fd77044565253f6fcb91c4e580e196522bf99a6ada8922","0xa5cd0ec782224597f8411c8a8fadeffd145d464771b46808d7bbbd0f0dfc117f","0x99ca4169e67e2f7e21ebb7f9e4b784b280e6b6a5d8fecf07890a13927e4677e0","0x112585178414bcb7979814a363abb8631b17feb36efdebf0a84d69b8466e6ac9","0x6ed7ec1cef43ee8c440c9bbb56d22ee19c0cf8b040ea3a9f595aa6f9f84e995e","0xd019e5a8892447516b796d0238ec4f6ca89859380ab900db42b2272c6887dce6","0x18365ac1a4ca934174097f6bf4290df93096df2a38e770568b63d782c1c4f1f6","0x6f54f61850abf33393cbd9a6821decf80ca1b041df95a0c14ca92da4fc0c78eb","0x40f30fc6afa6303c78f1c3fa82cedbe8b5714876a0763367ca303886ce8656aa","0x11b5e1b8eaccf01e75439b40c376d663ce875630a6b8b79b9f2d2b827682533e","0x441b882eb0f510b04c4b41b9c4d65325f58ca892bcdc1d3a16e252d60f846fd8","0xfa5eb5b9404ea96ae0e2f72d11d85d5265ac1bc37ac5477e14ae1ea74ae9b569","0x9c6d57ee8a68faea38379eaef5413ca1685b94ad99754708ce3ca7be162c67cd","0xe61057ea96a5f7fa65b70136eb569f245cbf13631f858852b10cf4a5a685ef64","0xa40a9262ecb19fef27370acc35440a72c741c5ef9eae3d2b228971588c74ecd8","0x25c63688d1cdc7767811f1b1a9d3ef700a7e092f3c8fa3c34a57fb0b1a2ec9d2","0xd3e597ac7b7824bdf84119f6e11106b557ce87fd354bd2966fb81f08e9e3ae32","0x35fc59fdea63eede5beb478db98961951113472ab48799436fbab788ea211726","0x04d52ba8f2beb413f92acfeb9656ba1e39209782a082ec9b21fc019ed5874a2a","0x6606efb1d6dc67f2cbe79812126871b8531abd608e18eed1d06fd12103c24210","0xce9b3fba26d920a502d1dc68d2d73204d0410f89abdaef0dfa98df24e1091559","0xe623090e9a96650bf12e9378c5ec6845b255a5ae8e876e484ae9f360d4f470ed","0xb02a8e07c7d981cadd74bab68e96a3319bc418a10db2730ad2f0570181776165","0x669e93ed03e14b38f65a3c0e1dcaf11ca4171204c1b8ea86d092cc1d6cec2367","0xb50ff4166d04da36b20e418b1adfa1b44e05158659370faf667467c0891cb148","0xd691b803e14bd56dc959631e532fb0f3024c54c73d90ef1bb77f60deb4e25f8d","0xe80b550f78d15cc4633f3558deb5be37a3381b2b4299c7055cebe121971083d5","0x4735328c5e9ed959146e28f5109e6803f0b67aa4c0f0e3ef7ffa84f22a844db2","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400","0xa7a0fd846665d92e66be6155c6221b3acd7145ca7c4e4b67a594e4c516969400"]} } diff --git a/script/MerkleRootCreation/Mainnet/CreateStakedBTCNMerkleRoot.s.sol b/script/MerkleRootCreation/Mainnet/CreateStakedBTCNMerkleRoot.s.sol index 1d0a7125..3e25334c 100644 --- a/script/MerkleRootCreation/Mainnet/CreateStakedBTCNMerkleRoot.s.sol +++ b/script/MerkleRootCreation/Mainnet/CreateStakedBTCNMerkleRoot.s.sol @@ -66,6 +66,9 @@ contract CreateStakedBTCNMerkleRoot is Script, MerkleTreeHelper { _addLayerZeroLeafs( leafs, getERC20(sourceChain, "BTCN"), getAddress(sourceChain, "BTCN"), layerZeroCornEndpointId ); + _addLayerZeroLeafs( + leafs, getERC20(sourceChain, "LBTC"), getAddress(sourceChain, "LBTCOFTAdapter"), layerZeroCornEndpointId + ); _verifyDecoderImplementsLeafsFunctionSelectors(leafs); diff --git a/test/resources/ChainValues.sol b/test/resources/ChainValues.sol index db254e5f..99813490 100644 --- a/test/resources/ChainValues.sol +++ b/test/resources/ChainValues.sol @@ -844,6 +844,9 @@ contract ChainValues { values[mainnet]["cornSwapFacilityWBTC"] = 0xBf5eB70b93d5895C839B8BeB3C27dc36f6B56fea.toBytes32(); values[mainnet]["cornSwapFacilitycbBTC"] = 0x554335b8C994E47e6dbfDC08Fa8aca0510e66BA1.toBytes32(); + values[mainnet]["LBTCOFTAdapter"] = 0x6bc15D7930839Ec18A57F6f7dF72aE1B439D077f.toBytes32(); + + // Treehouse values[mainnet]["TreehouseRedemption"] = 0x0618DBdb3Be798346e6D9C08c3c84658f94aD09F.toBytes32(); values[mainnet]["TreehouseRouter"] = 0xeFA3fa8e85D2b3CfdB250CdeA156c2c6C90628F5.toBytes32(); @@ -899,6 +902,7 @@ contract ChainValues { // Lombard values[base]["cbBTCPMM"] = 0x92c01FC0F59857c6E920EdFf1139904b2Bb74c7c.toBytes32(); + // Balancer vault values[base]["vault"] = 0xBA12222222228d8Ba445958a75a0704d566BF2C8.toBytes32();