Flash unwinder contracts and scripts, relay lane tuning, trustless bridge and token-aggregation updates.
Made-with: Cursor
This commit is contained in:
34
script/deploy/DeployDODOIntegrationExternalUnwinder.s.sol
Normal file
34
script/deploy/DeployDODOIntegrationExternalUnwinder.s.sol
Normal file
@@ -0,0 +1,34 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {Script, console} from "forge-std/Script.sol";
|
||||
import {DODOIntegrationExternalUnwinder} from "../../contracts/flash/DODOIntegrationExternalUnwinder.sol";
|
||||
|
||||
/**
|
||||
* @title DeployDODOIntegrationExternalUnwinder
|
||||
* @notice Deploy DODOIntegrationExternalUnwinder (unwind via another registered PMM pool).
|
||||
*
|
||||
* Env:
|
||||
* PRIVATE_KEY required
|
||||
* DODO_PMM_INTEGRATION_MAINNET required (same integration as quote-push source pool)
|
||||
*
|
||||
* Usage:
|
||||
* forge script script/deploy/DeployDODOIntegrationExternalUnwinder.s.sol:DeployDODOIntegrationExternalUnwinder \
|
||||
* --rpc-url $ETHEREUM_MAINNET_RPC --broadcast -vvvv
|
||||
*/
|
||||
contract DeployDODOIntegrationExternalUnwinder is Script {
|
||||
function run() external {
|
||||
uint256 pk = vm.envUint("PRIVATE_KEY");
|
||||
address integration = vm.envAddress("DODO_PMM_INTEGRATION_MAINNET");
|
||||
address deployer = vm.addr(pk);
|
||||
|
||||
console.log("Deployer:", deployer);
|
||||
console.log("DODO PMM integration:", integration);
|
||||
|
||||
vm.startBroadcast(pk);
|
||||
DODOIntegrationExternalUnwinder unwinder = new DODOIntegrationExternalUnwinder(integration);
|
||||
vm.stopBroadcast();
|
||||
|
||||
console.log("DODOIntegrationExternalUnwinder:", address(unwinder));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {Script, console} from "forge-std/Script.sol";
|
||||
import {DODOToUniswapV3MultiHopExternalUnwinder} from "../../contracts/flash/DODOToUniswapV3MultiHopExternalUnwinder.sol";
|
||||
|
||||
/**
|
||||
* @title DeployDODOToUniswapV3MultiHopExternalUnwinder
|
||||
* @notice Deploy mixed DODO->Uniswap V3 unwinder for quote-push workflows.
|
||||
*
|
||||
* Env:
|
||||
* PRIVATE_KEY required
|
||||
* DODO_PMM_INTEGRATION_MAINNET required
|
||||
* UNISWAP_V3_SWAP_ROUTER_MAINNET optional; defaults to legacy SwapRouter `0xE592...`
|
||||
*
|
||||
* Usage:
|
||||
* forge script script/deploy/DeployDODOToUniswapV3MultiHopExternalUnwinder.s.sol:DeployDODOToUniswapV3MultiHopExternalUnwinder \
|
||||
* --rpc-url $ETHEREUM_MAINNET_RPC --broadcast -vvvv
|
||||
*/
|
||||
contract DeployDODOToUniswapV3MultiHopExternalUnwinder is Script {
|
||||
address internal constant DEFAULT_UNISWAP_V3_ROUTER_MAINNET = 0xE592427A0AEce92De3Edee1F18E0157C05861564;
|
||||
|
||||
function run() external {
|
||||
uint256 pk = vm.envUint("PRIVATE_KEY");
|
||||
address integration = vm.envAddress("DODO_PMM_INTEGRATION_MAINNET");
|
||||
address router = vm.envOr("UNISWAP_V3_SWAP_ROUTER_MAINNET", DEFAULT_UNISWAP_V3_ROUTER_MAINNET);
|
||||
address deployer = vm.addr(pk);
|
||||
|
||||
console.log("Deployer:", deployer);
|
||||
console.log("DODO PMM integration:", integration);
|
||||
console.log("Uniswap V3 router:", router);
|
||||
|
||||
vm.startBroadcast(pk);
|
||||
DODOToUniswapV3MultiHopExternalUnwinder unwinder =
|
||||
new DODOToUniswapV3MultiHopExternalUnwinder(integration, router);
|
||||
vm.stopBroadcast();
|
||||
|
||||
console.log("DODOToUniswapV3MultiHopExternalUnwinder:", address(unwinder));
|
||||
}
|
||||
}
|
||||
34
script/deploy/DeployTwoHopDodoIntegrationUnwinder.s.sol
Normal file
34
script/deploy/DeployTwoHopDodoIntegrationUnwinder.s.sol
Normal file
@@ -0,0 +1,34 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {Script, console} from "forge-std/Script.sol";
|
||||
import {TwoHopDodoIntegrationUnwinder} from "../../contracts/flash/TwoHopDodoIntegrationUnwinder.sol";
|
||||
|
||||
/**
|
||||
* @title DeployTwoHopDodoIntegrationUnwinder
|
||||
* @notice Deploy TwoHopDodoIntegrationUnwinder for Mainnet cWUSDC unwind via cWUSDT.
|
||||
*
|
||||
* Env:
|
||||
* PRIVATE_KEY required
|
||||
* DODO_PMM_INTEGRATION_MAINNET required
|
||||
*
|
||||
* Usage:
|
||||
* forge script script/deploy/DeployTwoHopDodoIntegrationUnwinder.s.sol:DeployTwoHopDodoIntegrationUnwinder \
|
||||
* --rpc-url $ETHEREUM_MAINNET_RPC --broadcast -vvvv
|
||||
*/
|
||||
contract DeployTwoHopDodoIntegrationUnwinder is Script {
|
||||
function run() external {
|
||||
uint256 pk = vm.envUint("PRIVATE_KEY");
|
||||
address integration = vm.envAddress("DODO_PMM_INTEGRATION_MAINNET");
|
||||
address deployer = vm.addr(pk);
|
||||
|
||||
console.log("Deployer:", deployer);
|
||||
console.log("DODO PMM integration:", integration);
|
||||
|
||||
vm.startBroadcast(pk);
|
||||
TwoHopDodoIntegrationUnwinder unwinder = new TwoHopDodoIntegrationUnwinder(integration);
|
||||
vm.stopBroadcast();
|
||||
|
||||
console.log("TwoHopDodoIntegrationUnwinder:", address(unwinder));
|
||||
}
|
||||
}
|
||||
37
script/deploy/DeployUniswapV3ExternalUnwinder.s.sol
Normal file
37
script/deploy/DeployUniswapV3ExternalUnwinder.s.sol
Normal file
@@ -0,0 +1,37 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {Script, console} from "forge-std/Script.sol";
|
||||
import {UniswapV3ExternalUnwinder} from "../../contracts/flash/UniswapV3ExternalUnwinder.sol";
|
||||
|
||||
/**
|
||||
* @title DeployUniswapV3ExternalUnwinder
|
||||
* @notice Deploy UniswapV3ExternalUnwinder for quote-push unwind legs (cW* -> USDC on V3).
|
||||
*
|
||||
* Env:
|
||||
* PRIVATE_KEY required
|
||||
* UNISWAP_V3_SWAP_ROUTER_MAINNET optional; defaults to legacy SwapRouter `0xE592...` on Ethereum mainnet
|
||||
*
|
||||
* Usage:
|
||||
* forge script script/deploy/DeployUniswapV3ExternalUnwinder.s.sol:DeployUniswapV3ExternalUnwinder \
|
||||
* --rpc-url $ETHEREUM_MAINNET_RPC --broadcast -vvvv
|
||||
*/
|
||||
contract DeployUniswapV3ExternalUnwinder is Script {
|
||||
/// @dev SwapRouter02 (`0x68b3…`) is multicall-based and does not expose the legacy `exactInputSingle` ABI used by `UniswapV3ExternalUnwinder`.
|
||||
address internal constant DEFAULT_UNISWAP_V3_ROUTER_MAINNET = 0xE592427A0AEce92De3Edee1F18E0157C05861564;
|
||||
|
||||
function run() external {
|
||||
uint256 pk = vm.envUint("PRIVATE_KEY");
|
||||
address router = vm.envOr("UNISWAP_V3_SWAP_ROUTER_MAINNET", DEFAULT_UNISWAP_V3_ROUTER_MAINNET);
|
||||
address deployer = vm.addr(pk);
|
||||
|
||||
console.log("Deployer:", deployer);
|
||||
console.log("Uniswap V3 router:", router);
|
||||
|
||||
vm.startBroadcast(pk);
|
||||
UniswapV3ExternalUnwinder unwinder = new UniswapV3ExternalUnwinder(router);
|
||||
vm.stopBroadcast();
|
||||
|
||||
console.log("UniswapV3ExternalUnwinder:", address(unwinder));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user