Files
smom-dbis-138/script/deploy/DeployCAUSDT.s.sol
defiQUG 76aa419320 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
2026-04-07 23:40:52 -07:00

54 lines
2.0 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "forge-std/Script.sol";
import {CREATE2Factory} from "../../contracts/utils/CREATE2Factory.sol";
import {CompliantFiatToken} from "../../contracts/tokens/CompliantFiatToken.sol";
/**
* @title DeployCAUSDT
* @notice Deterministically deploy the Chain 138 cAUSDT contract via CREATE2.
*
* Env:
* PRIVATE_KEY (required)
* CREATE2_FACTORY_ADDRESS (required; CREATE2_FACTORY accepted as fallback)
* OWNER / ADMIN (optional; default deployer)
* INITIAL_SUPPLY_CAUSDT (optional; defaults to 1_000_000e6)
*/
contract DeployCAUSDT is Script {
uint8 constant DECIMALS = 6;
string constant SYMBOL = "cAUSDT";
string constant NAME = "Alltra USD Token (Compliant)";
string constant CURRENCY_CODE = "USD";
function run() external returns (address deployed) {
uint256 pk = vm.envUint("PRIVATE_KEY");
address deployer = vm.addr(pk);
address owner = vm.envOr("OWNER", deployer);
address admin = vm.envOr("ADMIN", deployer);
uint256 initialSupply = vm.envOr("INITIAL_SUPPLY_CAUSDT", uint256(1_000_000 * 10**6));
address factoryAddr = vm.envOr("CREATE2_FACTORY_ADDRESS", vm.envAddress("CREATE2_FACTORY"));
require(factoryAddr != address(0), "CREATE2 factory required");
CREATE2Factory factory = CREATE2Factory(factoryAddr);
uint256 salt = uint256(keccak256(abi.encodePacked("CompliantFiatToken.", SYMBOL)));
bytes memory bytecode = abi.encodePacked(
type(CompliantFiatToken).creationCode,
abi.encode(NAME, SYMBOL, uint8(DECIMALS), CURRENCY_CODE, owner, admin, initialSupply)
);
deployed = factory.computeAddress(bytecode, salt);
if (deployed.code.length > 0) {
console.log("cAUSDT already deployed", deployed);
return deployed;
}
vm.startBroadcast(pk);
deployed = factory.deploy(bytecode, salt);
vm.stopBroadcast();
console.log("cAUSDT", deployed);
}
}