Files
smom-dbis-138/script/deploy/01_DeployCore.s.sol
2026-03-02 12:14:09 -08:00

35 lines
1.6 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
import "forge-std/Script.sol";
import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
import "../../contracts/registry/UniversalAssetRegistry.sol";
import "../../contracts/governance/GovernanceController.sol";
contract DeployCore is Script {
function run() external {
uint256 pk = vm.envUint("PRIVATE_KEY");
address deployer = vm.addr(pk);
vm.startBroadcast(pk);
// Deploy UniversalAssetRegistry behind proxy (UUPS upgradeable)
UniversalAssetRegistry registryImpl = new UniversalAssetRegistry();
bytes memory registryInitData = abi.encodeCall(UniversalAssetRegistry.initialize, (deployer));
ERC1967Proxy registryProxy = new ERC1967Proxy(address(registryImpl), registryInitData);
UniversalAssetRegistry registry = UniversalAssetRegistry(address(registryProxy));
registry.addValidator(deployer);
// Deploy GovernanceController behind proxy (UUPS upgradeable)
GovernanceController governanceImpl = new GovernanceController();
bytes memory governanceInitData = abi.encodeCall(GovernanceController.initialize, (address(registry), deployer));
ERC1967Proxy governanceProxy = new ERC1967Proxy(address(governanceImpl), governanceInitData);
GovernanceController governance = GovernanceController(address(governanceProxy));
vm.stopBroadcast();
console.log("UNIVERSAL_ASSET_REGISTRY=", address(registry));
console.log("GOVERNANCE_CONTROLLER=", address(governance));
}
}