Files
gru_emoney_token-factory/script/Configure.s.sol
defiQUG 651ff4f7eb Initial project setup: Add contracts, API definitions, tests, and documentation
- Add Foundry project configuration (foundry.toml, foundry.lock)
- Add Solidity contracts (TokenFactory138, BridgeVault138, ComplianceRegistry, etc.)
- Add API definitions (OpenAPI, GraphQL, gRPC, AsyncAPI)
- Add comprehensive test suite (unit, integration, fuzz, invariants)
- Add API services (REST, GraphQL, orchestrator, packet service)
- Add documentation (ISO20022 mapping, runbooks, adapter guides)
- Add development tools (RBC tool, Swagger UI, mock server)
- Update OpenZeppelin submodules to v5.0.0
2025-12-12 10:59:41 -08:00

75 lines
3.1 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "forge-std/Script.sol";
import "../src/TokenFactory138.sol";
import "../src/ComplianceRegistry.sol";
import "../src/PolicyManager.sol";
import "./helpers/Config.sol";
import "./helpers/EnvValidation.sol";
contract ConfigureScript is Script {
function run() external {
// Validate environment variables
address complianceRegistryAddr = vm.envAddress("COMPLIANCE_REGISTRY");
EnvValidation.validateAddress(complianceRegistryAddr, "COMPLIANCE_REGISTRY");
address policyManagerAddr = vm.envOr("POLICY_MANAGER", address(0)); // Optional
address tokenFactoryAddr = vm.envOr("TOKEN_FACTORY", address(0)); // Optional
ComplianceRegistry complianceRegistry = ComplianceRegistry(complianceRegistryAddr);
uint256 deployerPrivateKey = vm.envUint("PRIVATE_KEY");
vm.startBroadcast(deployerPrivateKey);
address deployer = vm.addr(deployerPrivateKey);
console.log("=== Configuration Script ===");
console.log("ComplianceRegistry:", vm.toString(complianceRegistryAddr));
console.log("");
// Check if deployer has COMPLIANCE_ROLE, if not, grant it
bytes32 complianceRole = complianceRegistry.COMPLIANCE_ROLE();
if (!complianceRegistry.hasRole(complianceRole, deployer)) {
console.log("Granting COMPLIANCE_ROLE to deployer...");
// Note: This requires deployer to have DEFAULT_ADMIN_ROLE
// In production, use a multisig with DEFAULT_ADMIN_ROLE
complianceRegistry.grantRole(complianceRole, deployer);
console.log(" [OK] COMPLIANCE_ROLE granted");
}
// Example: Set up some compliant accounts
// In production, load these from a config file or environment variables
address exampleUser1 = vm.envOr("EXAMPLE_USER_1", address(0));
address exampleUser2 = vm.envOr("EXAMPLE_USER_2", address(0));
if (exampleUser1 != address(0)) {
EnvValidation.validateAddress(exampleUser1, "EXAMPLE_USER_1");
console.log("Setting compliance for exampleUser1:", vm.toString(exampleUser1));
complianceRegistry.setCompliance(exampleUser1, true, 1, bytes32(0));
console.log(" [OK] Compliance set");
}
if (exampleUser2 != address(0)) {
EnvValidation.validateAddress(exampleUser2, "EXAMPLE_USER_2");
console.log("Setting compliance for exampleUser2:", vm.toString(exampleUser2));
complianceRegistry.setCompliance(exampleUser2, true, 1, bytes32(0));
console.log(" [OK] Compliance set");
}
// Configure PolicyManager if provided
if (policyManagerAddr != address(0)) {
EnvValidation.validateAddress(policyManagerAddr, "POLICY_MANAGER");
console.log("");
console.log("PolicyManager:", vm.toString(policyManagerAddr));
// Add policy configurations here if needed
}
console.log("");
console.log("=== Configuration Complete ===");
vm.stopBroadcast();
}
}