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:
56
script/deploy/DeployCompliantFiatTokensV2ForChain.s.sol
Normal file
56
script/deploy/DeployCompliantFiatTokensV2ForChain.s.sol
Normal file
@@ -0,0 +1,56 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {Script, console} from "forge-std/Script.sol";
|
||||
import {CompliantUSDTTokenV2} from "../../contracts/tokens/CompliantUSDTTokenV2.sol";
|
||||
import {CompliantUSDCTokenV2} from "../../contracts/tokens/CompliantUSDCTokenV2.sol";
|
||||
|
||||
/**
|
||||
* @title DeployCompliantFiatTokensV2ForChain
|
||||
* @notice Deploy canonical cUSDT V2 / cUSDC V2 contracts to the current chain.
|
||||
* @dev Defaults to safe pre-cutover posture: new addresses with forwardCanonical disabled unless env overrides it.
|
||||
*
|
||||
* Env:
|
||||
* PRIVATE_KEY (required)
|
||||
* INITIAL_OPERATOR (optional; default deployer)
|
||||
* ADMIN (optional; default deployer)
|
||||
* OWNER (optional alias for ADMIN when ADMIN unset)
|
||||
* INITIAL_SUPPLY (optional; default 1_000_000e6)
|
||||
* FORWARD_CANONICAL=1 to mark deployed V2 as forward canonical immediately
|
||||
* DEPLOY_CUSDT_V2=1 / DEPLOY_CUSDC_V2=1 (default both 1)
|
||||
*/
|
||||
contract DeployCompliantFiatTokensV2ForChain is Script {
|
||||
uint256 internal constant DEFAULT_INITIAL_SUPPLY = 1_000_000 * 10 ** 6;
|
||||
|
||||
function run() external {
|
||||
uint256 pk = vm.envUint("PRIVATE_KEY");
|
||||
address deployer = vm.addr(pk);
|
||||
address initialOperator = vm.envOr("INITIAL_OPERATOR", deployer);
|
||||
address ownerAlias = vm.envOr("OWNER", deployer);
|
||||
address admin = vm.envOr("ADMIN", ownerAlias);
|
||||
uint256 initialSupply = vm.envOr("INITIAL_SUPPLY", DEFAULT_INITIAL_SUPPLY);
|
||||
bool forwardCanonical = vm.envOr("FORWARD_CANONICAL", false);
|
||||
|
||||
vm.startBroadcast(pk);
|
||||
|
||||
if (vm.envOr("DEPLOY_CUSDT_V2", uint256(1)) != 0) {
|
||||
CompliantUSDTTokenV2 cusdtV2 =
|
||||
new CompliantUSDTTokenV2(initialOperator, admin, initialSupply, forwardCanonical);
|
||||
console.log("cUSDT_V2", address(cusdtV2));
|
||||
console.log("cUSDT_V2_admin", admin);
|
||||
console.log("cUSDT_V2_initialOperator", initialOperator);
|
||||
console.log("cUSDT_V2_forwardCanonical", forwardCanonical);
|
||||
}
|
||||
|
||||
if (vm.envOr("DEPLOY_CUSDC_V2", uint256(1)) != 0) {
|
||||
CompliantUSDCTokenV2 cusdcV2 =
|
||||
new CompliantUSDCTokenV2(initialOperator, admin, initialSupply, forwardCanonical);
|
||||
console.log("cUSDC_V2", address(cusdcV2));
|
||||
console.log("cUSDC_V2_admin", admin);
|
||||
console.log("cUSDC_V2_initialOperator", initialOperator);
|
||||
console.log("cUSDC_V2_forwardCanonical", forwardCanonical);
|
||||
}
|
||||
|
||||
vm.stopBroadcast();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user