Files
smom-dbis-138/script/deploy/DeployAaveQuotePushFlashReceiver.s.sol
defiQUG 848a5e35ea
Some checks failed
CI/CD Pipeline / Security Scanning (push) Has been cancelled
CI/CD Pipeline / Solidity Contracts (push) Has been cancelled
CI/CD Pipeline / Lint and Format (push) Has been cancelled
CI/CD Pipeline / Terraform Validation (push) Has been cancelled
CI/CD Pipeline / Kubernetes Validation (push) Has been cancelled
Validation / validate-genesis (push) Has started running
Validation / validate-terraform (push) Has been cancelled
Validation / validate-kubernetes (push) Has been cancelled
Validation / validate-smart-contracts (push) Has been cancelled
Validation / validate-security (push) Has been cancelled
Validation / validate-documentation (push) Has been cancelled
Add Aave quote-push collateral supply and toggle hooks.
Extends AaveQuotePushFlashReceiver with before/after swap collateral steps, env-driven run scripts, forkproof parity, and scoped forge tests for supply/toggle callback ordering.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-26 02:07:30 -07:00

44 lines
1.7 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import {Script, console} from "forge-std/Script.sol";
import {AaveQuotePushFlashReceiver} from "../../contracts/flash/AaveQuotePushFlashReceiver.sol";
/**
* @title DeployAaveQuotePushFlashReceiver
* @notice Deploy the Aave V3 quote-push flash receiver.
*
* Env:
* PRIVATE_KEY required
* AAVE_POOL_ADDRESS optional; defaults to Aave V3 mainnet Pool
* QUOTE_PUSH_RECEIVER_OWNER optional; defaults to deployer derived from PRIVATE_KEY
*
* Post-deploy: set AAVE_QUOTE_PUSH_RECEIVER_MAINNET; verify collateralHooksVersion() == 1.
* Redeploy wrapper: bash scripts/deployment/redeploy-aave-quote-push-receiver-mainnet.sh
*
* Usage:
* forge script script/deploy/DeployAaveQuotePushFlashReceiver.s.sol:DeployAaveQuotePushFlashReceiver \
* --rpc-url $ETHEREUM_MAINNET_RPC --broadcast -vvvv
*/
contract DeployAaveQuotePushFlashReceiver is Script {
address internal constant DEFAULT_AAVE_POOL_MAINNET = 0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2;
function run() external {
uint256 pk = vm.envUint("PRIVATE_KEY");
address pool = vm.envOr("AAVE_POOL_ADDRESS", DEFAULT_AAVE_POOL_MAINNET);
address deployer = vm.addr(pk);
address owner = vm.envOr("QUOTE_PUSH_RECEIVER_OWNER", deployer);
console.log("Deployer:", deployer);
console.log("Aave Pool:", pool);
console.log("Receiver owner:", owner);
vm.startBroadcast(pk);
AaveQuotePushFlashReceiver receiver = new AaveQuotePushFlashReceiver(pool, owner);
vm.stopBroadcast();
console.log("AaveQuotePushFlashReceiver:", address(receiver));
console.log("collateralHooksVersion:", receiver.collateralHooksVersion());
}
}