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
MediumDomain Pricer Contract Can Charge More than Expected when Purchasing DomainAcknowledged

The `ZNSSubRegistrar` contract provides a setter function, `setPricerContractForDomain()`, allowing the domain owner/operator to change the pricer contract for a specific domain. With this ability, a malicious domain owner could potentially front-run a domain purchase transaction, swapping out the pricer contract for one that charges an unexpectedly high price. This is problematic if a user purchasing the domain approves a transaction for a significantly higher amount than required or unlimited approval, as they may end up being charged much more than anticipated.

MediumPrecision Loss Can Result in Lower than Expected Purchase PriceAcknowledged

The primary concern identified in the `ZNSCurvePricer._getPrice()` function is the potential incompatibility between the `precisionMultiplier` and the token's decimals, leading to incorrect pricing calculations. This incompatibility can result in a significant loss of precision, especially evident when using a high `precisionMultiplier` (e.g., 10^18) with tokens that have a lower decimal precision (e.g., USDC with 6 decimal places). This precision loss can result in the computed price being truncated to zero, as demonstrated in the given exploit scenario.

MediumRisk of Insolvency Due to Inaccurate Accounting with Deflationary or Rebasing TokensAcknowledged

The `ZNSTreasury.stakeForDomain()` function accounts for staked amounts based on the tokens deposited. If deflationary tokens, which automatically subtract fees on transfer, or rebasing tokens, which can adjust balances algorithmically, are used, this can lead to discrepancies between the recorded `stakedForDomain.stakedAmount` and the actual reserve. Furthermore, since the protocol accepts any token, a malicious token could exacerbate this discrepancy. These inaccuracies can lead to insolvency issues during unstaking.

LowDeviation From Traditional Domain and Subdomain RepresentationAcknowledged

The documentation denotes the structure `wilder.wapes`, indicating that `wilder` is the root domain and `wapes` is its subdomain. This portrayal is in contrast with the traditional way domains and subdomains are represented. Typically, given the full string `wilder.wapes`, `wilder` would be the subdomain, and `wapes` would be the domain.

LowPotential for Disrupted Access Control Due to Registry MismatchAcknowledged

The protocol contracts contain a setter function to update the registry contract. If the address of the registry contract is updated and missed for one of the contracts, it can lead to a mismatched registry across the different contracts. This mismatch is concerning since the registry plays a pivotal role in determining privileged roles, domain ownership, and associated operations. Consequently, if the registry is mismatched, it could disrupt the control and permissions system, affecting which functions are accessible when updating configurations. This is an information issue because it is a limitation of the design choice.

LowPrevious Owner Can Update Domain ConfigurationAcknowledged

The ownership transfer process of a `domainHash` in the protocol requires two distinct actions: transferring the corresponding ERC721 token and calling the `ZNSRootRegistrar.reclaimDomain()` function. This approach introduces a potential oversight issue. If an owner transfers the ERC721 token but the new owner fails to immediately invoke `reclaimDomain()`, there exists a window of time where the original owner or operator, despite not having the ERC721 token, retains the ability to make impactful changes via the `ZNSSubRegistrar` contract. During this window, the previous owner or operator could, for instance, update configuration settings through methods such as `setDistributionConfigForDomain()` and `setPricerContractForDomain()`.

LowUpgradabilityAcknowledged

While upgradeability is not a vulnerability in itself, users of the ZNS protocol should be aware that many contracts in the system can be upgraded at any time. This carries certain risks, as upgrading contracts is a delicate operation that can introduce bugs, regressions, and other undesirable code. It is important to note that this audit does not guarantee the behavior of future contracts that the protocol may be upgraded to. Here is a list of contracts that have been explicitly marked as upgradeable (please note that the list might not be exhaustive): ```bash ▶ grep -rl --exclude="I*" --exclude-dir="mocks" "function initialize" contracts contracts/token/ZNSDomainToken.sol contracts/registrar/ZNSSubRegistrar.sol contracts/registrar/ZNSRootRegistrar.sol contracts/price/ZNSFixedPricer.sol contracts/price/ZNSCurvePricer.sol contracts/registry/ZNSRegistry.sol contracts/treasury/ZNSTreasury.sol contracts/resolver/ZNSAddressResolver.sol ```

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