From 532dabf4c6bf63d16bb42ddd906bc5bb62de9a91 Mon Sep 17 00:00:00 2001 From: Shah <10547529+shahthepro@users.noreply.github.com> Date: Thu, 30 Jan 2025 16:25:17 +0530 Subject: [PATCH] Add runlog and update bash script (#2373) * Add runlog and update bash script * cleanup --- brownie/abi/oeth_arm.json | 1 + brownie/addresses.py | 2 ++ brownie/runlogs/2025_01_strategist.py | 31 +++++++++++++++++++++++++++ brownie/world.py | 2 ++ brownie/world_base.py | 2 ++ contracts/fork-test.sh | 15 +++---------- 6 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 brownie/abi/oeth_arm.json diff --git a/brownie/abi/oeth_arm.json b/brownie/abi/oeth_arm.json new file mode 100644 index 0000000000..f8859d9a53 --- /dev/null +++ b/brownie/abi/oeth_arm.json @@ -0,0 +1 @@ +[{"inputs":[{"internalType":"address","name":"_oeth","type":"address"},{"internalType":"address","name":"_weth","type":"address"},{"internalType":"address","name":"_oethVault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"OperatorChanged","type":"event"},{"inputs":[],"name":"approvals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256"}],"name":"claimWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"requestIds","type":"uint256[]"}],"name":"claimWithdrawals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"oeth","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oethVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"requestWithdrawal","outputs":[{"internalType":"uint256","name":"requestId","type":"uint256"},{"internalType":"uint256","name":"queued","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOperator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapExactTokensForTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"inToken","type":"address"},{"internalType":"contract IERC20","name":"outToken","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOutMin","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"swapExactTokensForTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"swapTokensForExactTokens","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"inToken","type":"address"},{"internalType":"contract IERC20","name":"outToken","type":"address"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"amountInMax","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"swapTokensForExactTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"token0","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"token1","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferToken","outputs":[],"stateMutability":"nonpayable","type":"function"}] diff --git a/brownie/addresses.py b/brownie/addresses.py index 4426c54831..7d91ff8d79 100644 --- a/brownie/addresses.py +++ b/brownie/addresses.py @@ -150,6 +150,8 @@ CCIP_ROUTER = "0x80226fc0Ee2b096224EeAc085Bb9a8cba1146f7D" +BASE_CCIP_ROUTER = "0x881e3A65B4d4a04dD529061dd0071cf975F58bCD" + ADDR_ZERO = '0x0000000000000000000000000000000000000000' EQUALIZER_SPECTRA_OETHB_BRIBE_CONTRACT = "0xaAbF246f6f4Fa87717690dE00896a49c18A944b9" diff --git a/brownie/runlogs/2025_01_strategist.py b/brownie/runlogs/2025_01_strategist.py index 1bcabccbc1..a978713182 100644 --- a/brownie/runlogs/2025_01_strategist.py +++ b/brownie/runlogs/2025_01_strategist.py @@ -148,3 +148,34 @@ def main(): ) print(to_gnosis_json(txs, MULTICHAIN_STRATEGIST, "1")) + +# ------------------------------------- +# Jan 29, 2025 - Bridge wOETH to Ethereum +# ------------------------------------- +from world_base import * +import eth_abi + +def main(): + with TemporaryForkForReallocations() as txs: + + eth_chain_selector = 5009297550715157269 + amount = woeth.balanceOf(MULTICHAIN_STRATEGIST) + + # bridge wOETH to Ethereum using CCIP + txs.append( + woeth.approve(BASE_CCIP_ROUTER, amount, {'from': MULTICHAIN_STRATEGIST}) + ) + + txs.append( + ccip_router.ccipSend( + eth_chain_selector, + [ + eth_abi.encode(['address'], [MULTICHAIN_STRATEGIST]), + '0x', + [(BRIDGED_WOETH_BASE, amount)], + ADDR_ZERO, + '0x97a657c9000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000' + ], + {'from': MULTICHAIN_STRATEGIST, 'value': 0.003 * 10**18} + ) + ) \ No newline at end of file diff --git a/brownie/world.py b/brownie/world.py index 02f38a5bcd..f2d96f8c24 100644 --- a/brownie/world.py +++ b/brownie/world.py @@ -95,6 +95,8 @@ uniswap_v3_quoter = load_contract('uniswap_v3_quoter', UNISWAP_V3_QUOTER) +oeth_arm = load_contract('oeth_arm', OETH_ARM) + CONTRACT_ADDRESSES = {} CONTRACT_ADDRESSES[VAULT_PROXY_ADDRESS.lower()] = {'name': 'Vault'} CONTRACT_ADDRESSES[HARVESTER.lower()] = {'name': 'Harvester'} diff --git a/brownie/world_base.py b/brownie/world_base.py index 7acf4eed96..6ab88ed610 100644 --- a/brownie/world_base.py +++ b/brownie/world_base.py @@ -33,6 +33,8 @@ harvester = load_contract('oethb_harvester', OETHB_HARVESTER) +ccip_router = load_contract('ccip_router', BASE_CCIP_ROUTER) + decimalsMap = { AERO_BASE: 18, WETH_BASE: 18, diff --git a/contracts/fork-test.sh b/contracts/fork-test.sh index 97b4c47ec0..8f631100ff 100755 --- a/contracts/fork-test.sh +++ b/contracts/fork-test.sh @@ -75,21 +75,12 @@ main() cp -r deployments/localhost deployments/hardhat fi - if [ -z "$1" ]; then - if [[ $FORK_NETWORK_NAME == "holesky" ]]; then - # Run all files with `.holesky.fork-test.js` suffix when no file name param is given - # pass all other params along - params+="test/**/*.holesky.fork-test.js" - else - # Run all files with `.fork-test.js` suffix when no file name param is given - # pass all other params along - params+="test/**/*.fork-test.js" - fi - else - # Run specific files when a param is given + # Run specific files when a param is given + if [[ ! -z "$1" ]]; then params+="$@" fi + # Add trace flag if enabled if [[ $is_trace == "true" ]]; then params+=" --trace" fi