feat: bridges, PMM, flash workflow, token-aggregation, and deployment docs
- CCIP/trustless bridge contracts, GRU tokens, DEX/PMM tests, reserve vault. - Token-aggregation service routes, planner, chain config, relay env templates. - Config snapshots and multi-chain deployment markdown updates. - gitignore services/btc-intake/dist/ (tsc output); do not track dist. Run forge build && forge test before deploy (large solc graph). Made-with: Cursor
This commit is contained in:
77
script/deploy/DeployCrossChainFlashInfrastructure.s.sol
Normal file
77
script/deploy/DeployCrossChainFlashInfrastructure.s.sol
Normal file
@@ -0,0 +1,77 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {Script, console} from "forge-std/Script.sol";
|
||||
import {UniversalCCIPFlashBridgeAdapter} from "../../contracts/flash/UniversalCCIPFlashBridgeAdapter.sol";
|
||||
import {CrossChainFlashRepayReceiver} from "../../contracts/flash/CrossChainFlashRepayReceiver.sol";
|
||||
import {CrossChainFlashVaultCreditReceiver} from "../../contracts/flash/CrossChainFlashVaultCreditReceiver.sol";
|
||||
|
||||
/**
|
||||
* @title DeployCrossChainFlashInfrastructure
|
||||
* @notice Deploys the Chain 138 cross-chain flash adapter plus both CCIP receivers.
|
||||
*
|
||||
* Env:
|
||||
* PRIVATE_KEY required
|
||||
* FLASH_UNIVERSAL_CCIP_BRIDGE optional; fallback UNIVERSAL_CCIP_BRIDGE
|
||||
* FLASH_CCIP_ROUTER optional default router for both receivers
|
||||
* FLASH_REPAY_RECEIVER_ROUTER optional; fallback FLASH_CCIP_ROUTER / CCIP_ROUTER*
|
||||
* FLASH_VAULT_CREDIT_ROUTER optional; fallback FLASH_CCIP_ROUTER / CCIP_ROUTER*
|
||||
* CCIP_ROUTER optional fallback
|
||||
* CCIP_ROUTER_ADDRESS optional fallback
|
||||
* CCIP_ROUTER_CHAIN138 optional fallback
|
||||
*
|
||||
* Usage:
|
||||
* forge script script/deploy/DeployCrossChainFlashInfrastructure.s.sol:DeployCrossChainFlashInfrastructure \
|
||||
* --rpc-url $RPC_URL_138 --broadcast --with-gas-price 1000000000 -vvvv
|
||||
*/
|
||||
contract DeployCrossChainFlashInfrastructure is Script {
|
||||
function run() external {
|
||||
uint256 pk = vm.envUint("PRIVATE_KEY");
|
||||
address deployer = vm.addr(pk);
|
||||
|
||||
address universalBridge = vm.envOr("FLASH_UNIVERSAL_CCIP_BRIDGE", address(0));
|
||||
if (universalBridge == address(0)) {
|
||||
universalBridge = vm.envOr("UNIVERSAL_CCIP_BRIDGE", address(0));
|
||||
}
|
||||
require(universalBridge != address(0), "FLASH_UNIVERSAL_CCIP_BRIDGE or UNIVERSAL_CCIP_BRIDGE not set");
|
||||
|
||||
address router = vm.envOr("FLASH_CCIP_ROUTER", address(0));
|
||||
if (router == address(0)) {
|
||||
router = vm.envOr("CCIP_ROUTER", address(0));
|
||||
}
|
||||
if (router == address(0)) {
|
||||
router = vm.envOr("CCIP_ROUTER_ADDRESS", address(0));
|
||||
}
|
||||
if (router == address(0)) {
|
||||
router = vm.envOr("CCIP_ROUTER_CHAIN138", address(0));
|
||||
}
|
||||
require(router != address(0), "FLASH_CCIP_ROUTER or CCIP_ROUTER* not set");
|
||||
|
||||
address repayReceiverRouter = vm.envOr("FLASH_REPAY_RECEIVER_ROUTER", router);
|
||||
address vaultCreditRouter = vm.envOr("FLASH_VAULT_CREDIT_ROUTER", router);
|
||||
|
||||
console.log("Deployer:", deployer);
|
||||
console.log("UniversalCCIPBridge:", universalBridge);
|
||||
console.log("Repay receiver router:", repayReceiverRouter);
|
||||
console.log("Vault credit receiver router:", vaultCreditRouter);
|
||||
|
||||
vm.startBroadcast(pk);
|
||||
|
||||
UniversalCCIPFlashBridgeAdapter adapter = new UniversalCCIPFlashBridgeAdapter(universalBridge);
|
||||
CrossChainFlashRepayReceiver repayReceiver = new CrossChainFlashRepayReceiver(repayReceiverRouter);
|
||||
CrossChainFlashVaultCreditReceiver vaultCreditReceiver =
|
||||
new CrossChainFlashVaultCreditReceiver(vaultCreditRouter);
|
||||
|
||||
vm.stopBroadcast();
|
||||
|
||||
console.log("UniversalCCIPFlashBridgeAdapter:", address(adapter));
|
||||
console.log("CrossChainFlashRepayReceiver:", address(repayReceiver));
|
||||
console.log("CrossChainFlashVaultCreditReceiver:", address(vaultCreditReceiver));
|
||||
console.log("Export: CROSS_CHAIN_FLASH_BRIDGE_ADAPTER=%s", vm.toString(address(adapter)));
|
||||
console.log("Export: CROSS_CHAIN_FLASH_REPAY_RECEIVER=%s", vm.toString(address(repayReceiver)));
|
||||
console.log(
|
||||
"Export: CROSS_CHAIN_FLASH_VAULT_CREDIT_RECEIVER=%s",
|
||||
vm.toString(address(vaultCreditReceiver))
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user