Zero Name Service (ZNS)

QuantstampRepository at commit 46f632e

Quantstamp reviewed ZNS Token Upgrade (Zero Name Service (ZNS)) on 17 Nov 2023: 18 findings, 0 critical; 10 marked fixed, 7 acknowledged, 1 open.

No open critical findings
Open the reportOpen ZNS Token Upgrade’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings18

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High001
Medium033
Low146
LowMissing Input ValidationOpen

It is crucial to validate inputs, even if the inputs come from trusted addresses, to avoid human error. A lack of robust input validation can only increase the likelihood and impact in the event of mistakes. Following is the list of places that can potentially benefit from stricter input validation: 1. qs-badge-fixed `ZNSAccessController.sol#77`: the `addresses` of the `_grantRoleToMany()` should not be zero. 2. qs-badge-fixed `ZNSDomainToken.sol#122`: the `royaltyFraction` of the `setDefaultRoyalty()` should be equal to or less than base `10_000`. 3. qs-badge-fixed `ZNSRegistry.sol#60`: the `msg.sender` of the `initialize()` should be a contract. The NatSpec claims the owner of 0x0 is a multisig. 4. qs-badge-acknowledged `ZNSRegistry.sol#262`: the `resolver` interface of the `_setDomainResolver` should be validated before setting the resolver address. 5. qs-badge-acknowledged `ARegistryWired.sol#35`: the `registry_` interface of the `_setRegistry()` should be validated before setting the registry. 6. qs-badge-fixed `ZNSCurvePricer.sol#109`: the `priceConfig.feePercentage` of the `setPriceConfig()` should be equal to or less than `PERCENT_BASIS`. 7. qs-badge-fixed `ZNSCurvePricer.sol#246`: the `feePercentage` of the `setFeePercentage()` should be equal to or less than `PERCENT_BASIS`. 8. qs-badge-fixed `ZNSFixedPricer.sol#130`: the `feePercentage` of the `_setFeePercentage()` should be equal to or less than `PERCENT_BASIS`.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (129)

  • https://github.com/zer0-os/zNS/docs/contracts/distribution/ZNSPriceOracle.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/ZNSAddressResolver.test.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/types/ICurvePriceConfig.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/ZNSRootRegistrar.test.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/docgen-templates/common.hbs at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/access/AccessControlled.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/src/tenderly/devnet/run-all-flows.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/src/tenderly/playground/create-playground.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/ZNSRegistry.test.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/utils/StringUtils.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/registrar/IZNSSubRegistrar.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/img/full.jpg at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/types/IDistributionConfig.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/ZNSAccessController.test.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/.solhint.json at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/events.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/types.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/access.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/registrar/ZNSRootRegistrar.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/upgrade-test-mocks/registry/ZNSRegistryMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/img/discovery.jpg at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/registry/ARegistryWired.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/access/IZNSAccessController.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/ZNSTreasury.test.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/hardhat.config.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/types/IZNSPricer.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/upgrade-test-mocks/token/ZNSDomainTokenMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/yarn.lock at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/README.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/upgrade-test-mocks/resolver/ZNSAddressResolverMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/types/IZNSPricer.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/price/IZNSCurvePricer.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/upgrade-test-mocks/distribution/ZNSRootRegistrarMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/access/ZNSRoles.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/token/IZNSDomainToken.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/price/ZNSFixedPricer.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/price/ZNSFixedPricer.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/types/ICurvePriceConfig.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/docgen-templates/page.hbs at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/upgrade-test-mocks/distribution/ZNSTreasuryMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/registrar/ZNSSubRegistrar.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/tenderly.yaml at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/gas/gas-costs.json at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/treasury/IZNSTreasury.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/token/mocks/IZeroTokenMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/flows.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/.releaserc at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/.eslintrc at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/constants.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/distribution/ZNSTreasury.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/src/tenderly/playground/fork-execute.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/resolver/ZNSAddressResolver.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/ZNSDomainToken.test.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/flows/registration.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/tsconfig.json at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/registry/ARegistryWired.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/access/ZNSRoles.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/src/tenderly/playground/fork.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/LICENSE.Zero.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/distribution/IZNSTreasury.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/index.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/validate-upgrade.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/src/tenderly/devnet/devnet-execute.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/price/ZNSCurvePricer.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/gas/TransactionGasCosts.test.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/distribution/IZNSRegistrar.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/registrar/IZNSSubRegistrar.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/token/ZNSDomainToken.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/price/ZNSCurvePricer.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/tokens.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/distribution/ZNSRegistrar.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/deploy/deploy-zns.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/hashing.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/upgrade-test-mocks/distribution/ZNSCurvePricerMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/img/register.jpg at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/registry/IZNSRegistry.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/access/ZNSAccessController.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/src/tenderly/devnet/spawn-devnet.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/ZNSCurvePricer.test.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/errors.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/upgrade-test-mocks/distribution/ZNSFixedPricerMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/upgrade-test-mocks/UpgradeMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/utils.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/resolver/IZNSAddressResolver.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/registrar/ZNSSubRegistrar.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/img/revoke.jpg at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/.gitignore at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/distribution/IZNSPriceOracle.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/access/IZNSAccessController.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/img/ac.jpg at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/registrar/ZNSRootRegistrar.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/package.json at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/registrar/IZNSRootRegistrar.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/balances.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/token/ZNSDomainToken.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/registry/ZNSRegistry.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/registry/IZNSRegistry.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/treasury/ZNSTreasury.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/types/IDistributionConfig.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/oz-proxies/TransparentUpgradeableProxyAcc.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/oz-proxies/ERC1967ProxyAcc.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/.circleci/config.yml at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/ZNSFixedPricer.test.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/src/tenderly/playground/utils.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/token/mocks/CustomDecimalTokenMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/resolver/ZNSAddressResolver.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/price/IZNSFixedPricer.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/LICENSE.TrueNamesLtd.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/token/mocks/ZeroTokenMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/register-setup.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/access/ZNSAccessController.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/resolver/IZNSAddressResolver.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/upgrade-test-mocks/distribution/ZNSSubRegistrarMock.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/src/utils/gas-costs.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/ZNSSubRegistrar.test.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/img/transfer.jpg at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/treasury/IZNSTreasury.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/access/AAccessControlled.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/registry/ZNSRegistry.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/architecture.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/.solcover.js at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/token/IZNSDomainToken.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/price/IZNSCurvePricer.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/pricing.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/registrar/IZNSRootRegistrar.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/test/helpers/deploy/mocks.ts at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/docs/contracts/access/AAccessControlled.md at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/treasury/ZNSTreasury.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0
  • https://github.com/zer0-os/zNS/contracts/price/IZNSFixedPricer.sol at commit 46f632e6e4e5e3e74bf3552079d873f7b9866ec0

Part of ZNS Token Upgrade’s security record

ZNS Token Upgrade
Audits2 audits by 1 firmLast audit Nov 2023, by Quantstamp.
Critical findingsNo open critical findingsAcross 2 reports.
Open ZNS Token Upgrade’s security record

Security firm

Quantstamp

236 projects reviewed · 332 reports · latest Oct 2026

See Quantstamp’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us