- 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
54 lines
2.0 KiB
Solidity
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);
|
|
}
|
|
}
|