diff --git a/contracts/deployments/dos-testnet-3939.json b/contracts/deployments/dos-testnet-3939.json index 2b7d6a074..b22cdda64 100644 --- a/contracts/deployments/dos-testnet-3939.json +++ b/contracts/deployments/dos-testnet-3939.json @@ -1,35 +1,54 @@ { "environment": "dos-testnet", "chainId": 3939, - "deploymentBlock": 9, - "finalDeploymentBlock": 55, - "deployedAt": "2026-08-22T18:56:26Z", + "deploymentBlock": 120, + "finalDeploymentBlock": 166, + "deployedAt": "2026-08-12T15:49:48Z", "deployer": "0x99999e454138f6be73E2bE82c890bc5765749999", "owner": "0x310Bc061214ee89aF5CfB28a6ebF96c5436fa3CD", "beneficiary": "0x310Bc061214ee89aF5CfB28a6ebF96c5436fa3CD", "smokeName": "bens-smoke.dos", "smokeResolvedAddress": "0x99999e454138f6be73E2bE82c890bc5765749999", "transactions": { - "first": "0x4335e554287b08d1abedc1d6cd26e5b09fa6b427573d73c4306c885ba13e3a71", - "last": "0x33f1789f46590117fc44eb3e941da2579e53586ce1d1de45d582cb069612c719", + "first": "0xc0f8e5390dab49911ce5f0f4c0a035e3251033c7d502f3db2632e389ef3ab599", + "last": "0xa3f4e38ec91c8db369df6afa40eea3e28f73a858e3a4c1bbceca3a60b38e6d0a", "count": 47 }, "contracts": { - "wrappedDOS": "0xc647ccf449dec38bb8b7272e60fc14b3548c9547", - "contractNamerImplementation": "0x069056b2ae8fd8c071efb827c5af73a0996840e1", - "contractNamer": "0x030eec847cf5d9d1c4a0b4e0459d130d0b35577c", - "verifiableFactory": "0xb86bb608e6afd7a8eb209510c01bb859a7c315f1", - "labelStore": "0x38fc582690c3f28099087a88520056afab08ce5f", - "rootRegistry": "0xb17fec6fe18ac0b7f3dd934495e84ec06cf88564", - "dosRegistry": "0x8a2730c903d93b2116fab3d9110c7d585f7b5a91", - "reverseRegistry": "0x641ee4711013ee40b34fae860894227c4771f273", - "priceOracle": "0x1f31e05948769174da256d0484b8f26cfd3d8c97", - "dosRegistrar": "0x27a3b7ff0ef7fb96d49eb50b069570f407387362", - "permissionedResolverImplementation": "0xfa579733d7c5a21b5d3c4399d3d6ef89fc3a3720", - "userRegistryImplementation": "0x8291f1c6aef2acbc58f3fe11c9e4ec0d3d4ae904", - "gatewayProvider": "0xcb20a0c349f079b8bd403ea8f668fe3da49e981f", - "universalResolver": "0x5a34c9fb9806239ed61f1570c51edb198333fbea", - "reverseRegistrar": "0x3cd8bddeb177492c5e521c3b82179887f472f018", - "smokeResolver": "0xee4b6427b88b8aa30fe2295139b8b2216f32d51b" + "wrappedDOS": "0x4bb2dcea9e18604741287a12d87abd9de793e3f4", + "contractNamerImplementation": "0xdd20fc2290cf664eccd3414799a9f024bdea531c", + "contractNamer": "0x64A04D812cdc62971f7E446E15a53c3C57f11418", + "verifiableFactory": "0xC9A8C00499Ef4f20Fffad7114C0eFfE8E766FE11", + "labelStore": "0x57C06ec4a92eC4eEB7c4eaFaBfBc64661483f3Bb", + "rootRegistry": "0x0dC5af261429d661BbF4903AbB79049a0713e04B", + "dosRegistry": "0x95366f1E44532F50c022aEefF708F424b7854173", + "reverseRegistry": "0x4d5429C2c0EE50b903407F44F8A21d20CAAcB475", + "priceOracle": "0x2eE958BcF29d140cdf64ad767f32E2554B0CCfa6", + "dosRegistrar": "0x4E5B48aC8B221aAF8cFF070671CB6Eeea2122b5c", + "permissionedResolverImplementation": "0x7C320eF16DE9CDD1BB9591AACF38c4c26f391e25", + "userRegistryImplementation": "0x440F74b09DfD3a848a9168d7d73784bCC03eF590", + "gatewayProvider": "0xEc7dFA7Dd3C7882d8716782689cE85e1Ccf9C68c", + "universalResolver": "0xbd0f96e3E8510a1bb806cAA9836fc76dfb1a5c47", + "reverseRegistrar": "0xD445f533aeC6E8BAE185f9903943e7B2E655472e", + "smokeResolver": "0xf2de697266073C4ba4D546d4305c228BBF5B1813" + }, + "domainPolicy": { + "deployedAt": "2026-10-21", + "deploymentBlock": 177, + "finalDeploymentBlock": 181, + "admin": "0x99999e454138f6be73E2bE82c890bc5765749999", + "adminGrantTransaction": "0x467cec3cdaef51dde39dfff02baf99d19f7d2dbfe6208a8be058fe387a02a6f8", + "voucherSigner": "0x257958FF376B6C340ea2BDFCCc8e7d6420Fbb5f4", + "minimumScore": 20, + "policy": "0xBF613B2c72E9595204767AD9f6c0b47834Ccd3a2", + "registrar": "0xb4A8DbcA69b2FB8d57049c28c4c7e10a77197785", + "retiredRegistrar": "0x4E5B48aC8B221aAF8cFF070671CB6Eeea2122b5c", + "transactions": [ + "0x3b85bc4b5597fa037159dc8f029fe5c6630a4d38379c30b2b60eb525952bdb43", + "0x383629c325cafc23db749b00218351be30376bda13c9957a4fbbf5d56868a29f", + "0xbcf971d1ed48aff55ab0e98326f4e21468944320d4b36c17a5a1718d5429633d", + "0xe5fb969213435a87df1d3a479ca83e0997c8ebcbcc4e4136a9afb2c810087f36", + "0x65e71e8d9bbb6cc27a40ad94a28f69baf61d07a677aa6ac6eefcbd2178b18184" + ] } } diff --git a/contracts/script/foundry/DeployDOSDomainPolicyTestnet.s.sol b/contracts/script/foundry/DeployDOSDomainPolicyTestnet.s.sol index 2508af701..6a782ce9f 100644 --- a/contracts/script/foundry/DeployDOSDomainPolicyTestnet.s.sol +++ b/contracts/script/foundry/DeployDOSDomainPolicyTestnet.s.sol @@ -11,8 +11,9 @@ import {PermissionedRegistry} from "~src/registry/PermissionedRegistry.sol"; /// @title Deploy DOS ID Domain Policy on DOS Testnet /// @notice Replaces the public Testnet registrar role with a policy-controlled registrar. -/// @dev Required env: PRIVATE_KEY (the canonical registry owner), DOS_DOMAIN_VOUCHER_SIGNER, -/// DOS_DOMAIN_REGISTRY, DOS_DOMAIN_PRICE_ORACLE, and DOS_DOMAIN_LEGACY_REGISTRAR. +/// @dev Required env: PRIVATE_KEY (the testnet admin 0x99999e45; Secret Manager +/// dos-deployer-99999e45-private-key), DOS_DOMAIN_VOUCHER_SIGNER, DOS_DOMAIN_REGISTRY, +/// DOS_DOMAIN_PRICE_ORACLE, and DOS_DOMAIN_LEGACY_REGISTRAR. /// No private voucher key is read by this deployment script. contract DeployDOSDomainPolicyTestnet is Script { //////////////////////////////////////////////////////////////////////// @@ -42,8 +43,11 @@ contract DeployDOSDomainPolicyTestnet is Script { /// @dev Expected DOS Testnet chain ID. uint256 internal constant EXPECTED_CHAIN_ID = 3939; - /// @dev Account that owns the deployed registry roles. - address internal constant EXPECTED_OWNER = 0x310Bc061214ee89aF5CfB28a6ebF96c5436fa3CD; + /// @dev Testnet admin that broadcasts this deployment and owns the policy and registrar. + /// The Ledger owner 0x310Bc granted it the registrar admin roles once, on testnet only + /// (owner-approved 2026-10-21), so testnet operations do not need the hardware wallet. + /// Mainnet keeps the Ledger owner. + address internal constant EXPECTED_OWNER = 0x99999e454138f6be73E2bE82c890bc5765749999; /// @dev Renewable period after a name expires. uint64 internal constant GRACE_PERIOD = 28 days; diff --git a/contracts/script/foundry/Invoke-DeployDOSDomainPolicyTestnet.ps1 b/contracts/script/foundry/Invoke-DeployDOSDomainPolicyTestnet.ps1 index 4d9e2d63c..0348efd5b 100644 --- a/contracts/script/foundry/Invoke-DeployDOSDomainPolicyTestnet.ps1 +++ b/contracts/script/foundry/Invoke-DeployDOSDomainPolicyTestnet.ps1 @@ -9,8 +9,8 @@ $ErrorActionPreference = "Stop" $expectedRpcUrl = "https://test.doschain.com" $expectedChainId = 3939 -$expectedGenesisHash = "0x1f6dd88694681d79a3a56313f59de56b1b6555c8e06a2ef377084f1e897feef4" -$expectedOwner = "0x310bc061214ee89af5cfb28a6ebf96c5436fa3cd" +$expectedGenesisHash = "0x36f98b2e8b3084d57efc46622a065c2a96ed51aca86ac229bce998be6b8abd2c" +$expectedOwner = "0x99999e454138f6be73e2be82c890bc5765749999" $minimumBalanceWei = [System.Numerics.BigInteger]::Parse("1000000000000000000") $requiredEnvironmentVariables = @( "PRIVATE_KEY", diff --git a/contracts/script/foundry/Invoke-DeployDOSTestnet.ps1 b/contracts/script/foundry/Invoke-DeployDOSTestnet.ps1 index 1ddee1dd7..4237e4815 100644 --- a/contracts/script/foundry/Invoke-DeployDOSTestnet.ps1 +++ b/contracts/script/foundry/Invoke-DeployDOSTestnet.ps1 @@ -9,7 +9,7 @@ $ErrorActionPreference = "Stop" $expectedRpcUrl = "https://test.doschain.com" $expectedChainId = 3939 -$expectedGenesisHash = "0x1f6dd88694681d79a3a56313f59de56b1b6555c8e06a2ef377084f1e897feef4" +$expectedGenesisHash = "0x36f98b2e8b3084d57efc46622a065c2a96ed51aca86ac229bce998be6b8abd2c" $expectedDeployer = "0x99999e454138f6be73e2be82c890bc5765749999" $expectedOwner = "0x310bc061214ee89af5cfb28a6ebf96c5436fa3cd" $minimumBalanceWei = [System.Numerics.BigInteger]::Parse("1000000000000000000") diff --git a/contracts/test/unit/testnet/DeployDOSDomainPolicyTestnet.t.sol b/contracts/test/unit/testnet/DeployDOSDomainPolicyTestnet.t.sol index 06cf60b5d..61430799f 100644 --- a/contracts/test/unit/testnet/DeployDOSDomainPolicyTestnet.t.sol +++ b/contracts/test/unit/testnet/DeployDOSDomainPolicyTestnet.t.sol @@ -10,7 +10,7 @@ import {StandardRentPriceOracleFixture} from "~test/fixtures/StandardRentPriceOr import {V2Fixture} from "~test/fixtures/V2Fixture.sol"; contract DeployDOSDomainPolicyTestnetTest is V2Fixture, StandardRentPriceOracleFixture { - address internal constant EXPECTED_OWNER = 0x310Bc061214ee89aF5CfB28a6ebF96c5436fa3CD; + address internal constant EXPECTED_OWNER = 0x99999e454138f6be73E2bE82c890bc5765749999; uint256 internal constant REGISTRAR_ROLES = RegistryRolesLib.ROLE_REGISTRAR | RegistryRolesLib.ROLE_RENEW; uint256 internal constant REGISTRAR_ADMIN_ROLES =