Skip to content

Artifacts

DISCLAIMER // NFA // DYOR

This analysis is based on observations of the contract behavior. We are not smart contract security experts. This document aims to explain what the contract appears to do based on the code. It should not be considered a comprehensive security audit or financial advice. Always verify critical information independently and consult with blockchain security professionals for important decisions.

⊙ generated by robots | curated by humans

METADATA
Contract Address 0x00000060...531524 (etherscan)
Network Ethereum Mainnet
Analysis Date 2026-08-08

Runtime Bytecode

The deployed contract bytecode fetched from the blockchain. 24,243 bytes — 333 bytes below the
EIP-170 ceiling of 24,576. Too large to inline; reproduce locally with the command below.

Source: Etherscan — Contract Code

Command:

export ETH_RPC_URL=https://eth.llamarpc.com
cast code 0x0000006013dF75A31678B786061C2B54bf531524
cast codesize 0x0000006013dF75A31678B786061C2B54bf531524

Artifact (first 160 bytes of the dispatcher):

0x6080806040526004361015610012575f80fd5b5f905f3560e01c90816301ffc9a714613565575080630697b3ab1461354957806306fdde03146134fa578063081812fc146134a9578063095ea7b314...

The dispatcher opens with supportsInterface (0x01ffc9a7) and proceeds through a selector jump
table in ascending order, which is the standard viaIR layout for a contract of this size.


Creation Bytecode

Full creation bytecode used to deploy the contract, including constructor code and the two address
arguments appended after the metadata CBOR.

Source: Etherscan — Creation TX

Command:

export ETH_RPC_URL=https://eth.llamarpc.com
cast tx 0xe5e00f9671a8ebe7a0812806d1ad2986e8c2f54f6bd81bef513cfc286c21dd38 input

Constructor arguments (decoded from the trailing 64 bytes):

initialOwner = 0x006cd14f36f65ecbb29b2519ccbe63a0dc8549f2
renderer_    = 0x000000d595e36dd0228c4040d981a01a59dbbe87

Both arguments matter to the analysis. initialOwner is not an Externally Owned Account (EOA) — it is a minimal proxy to a
2-of-3 Multisig. And renderer_ is not the renderer currently in use: renderer() returns
0x00000096...1eDcF4 (etherscan), confirming setRenderer was called after deployment.

The contract was deployed through the CREATE2 vanity factory at
0x00000000...4e6f2a (etherscan),
which is also how both renderers were deployed — consistent with the per-contract vanity-addressing
pattern documented in DNZN's z0r0z entity profile.


Verified Source Code

Source code verified on Etherscan as an exact match. The verified bundle contains 11 files: the
primary src/utils/TokenList.sol and src/utils/TokenListRenderer.sol, plus 9 vendored Solady
library files.

Source: Etherscan — Contract Source

Bundle contents:

FILE LINES ROLE
src/utils/TokenList.sol 1,289 The registry — storage, access control, id derivation, provenance logic
src/utils/TokenListRenderer.sol 755 Card and JSON assembly (the constructor-era version; the live renderer differs)
lib/solady/src/tokens/ERC721.sol 913 NFT base with manually placed storage slots
lib/solady/src/auth/Ownable.sol 278 Owner slot at 0xffffffff...873927, two-step handover
lib/solady/src/utils/LibString.sol 977 String search, case folding, hex conversion, slicing
lib/solady/src/utils/LibSort.sol 942 The sort backing rankedIds
lib/solady/src/utils/LibBytes.sol 888 Byte primitives used by LibString
lib/solady/src/utils/MetadataReaderLib.sol 223 Gas-capped name/symbol/decimals reads — the provenance mechanism
lib/solady/src/utils/Base58.sol 205 Solana account rendering
lib/solady/src/utils/Base64.sol 175 Data URI encoding for logos and cards
lib/solady/src/utils/Multicallable.sol 112 Read batching

Compiler settings:

{
  "remappings": ["forge-std/=lib/forge-std/src/", "solady/=lib/solady/src/"],
  "optimizer": { "enabled": true, "runs": 20 },
  "metadata": { "useLiteralContent": false, "bytecodeHash": "ipfs", "appendCBOR": true },
  "evmVersion": "prague",
  "viaIR": true
}

The optimizer is set to 20 runs, which favours deployed size over runtime gas — the expected choice
for a contract sitting 333 bytes under the size limit.

Primary source — TokenList.sol (head):

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.36;

import {TokenListRenderer} from "./TokenListRenderer.sol";
import {ERC721} from "../../lib/solady/src/tokens/ERC721.sol";
import {Ownable} from "../../lib/solady/src/auth/Ownable.sol";
import {Base64} from "../../lib/solady/src/utils/Base64.sol";
import {LibSort} from "../../lib/solady/src/utils/LibSort.sol";
import {LibString} from "../../lib/solady/src/utils/LibString.sol";
import {Multicallable} from "../../lib/solady/src/utils/Multicallable.sol";
import {MetadataReaderLib} from "../../lib/solady/src/utils/MetadataReaderLib.sol";

contract TokenList is ERC721, Ownable, Multicallable {
    using LibString for string;

    enum Kind { EVM, SVM, OTHER }

    enum Standard {
        UNKNOWN, NATIVE, ERC20, ERC721, ERC1155,
        TACIT, RUNE, ORDINAL, BRC20
    }

    struct Token {
        bytes32 account;    // token address / mint, right-aligned for EVM
        uint64 chainId;     // eip155 chain id; 0 for non-EVM namespaces
        uint8 decimals;
        Kind kind;
        Standard standard;
        bool deployed;
        bool onchainSvg;
        bool synced;        // true when name/symbol/decimals came from the token itself
        uint24 color;
        uint32 rank;
        bool frozen;
        string name;
        string symbol;
        string logo;
        string url;
        string audit;
        string description;
    }

Additional Artifacts

Live Registry State

Captured 2026-08-08. Seventeen listings, none frozen, none delisted.

Command:

cast call 0x0000006013dF75A31678B786061C2B54bf531524 \
  "summariesPaged(uint256,uint256)((uint256,bytes32,uint64,uint8,uint8,uint8,bool,bool,bool,uint24,uint32,bool,string,string)[])" \
  0 30

Artifact:

RANK SYMBOL NAME ACCOUNT STANDARD DECIMALS SYNCED
1,000,000 ETH Ether 0x00000000...000000 (native) NATIVE 18 ☒
999,000 WETH Wrapped Ether 0xC02aaA39...756Cc2 (etherscan) ERC20 18 ☑
998,000 wstETH Wrapped liquid staked Ether 2.0 0x7f39C581...5E2cA0 (etherscan) ERC20 18 ☑
997,500 stETH Liquid staked Ether 2.0 0xae7ab965...d7fE84 (etherscan) ERC20 18 ☑
997,000 rETH Rocket Pool ETH 0xae78736C...fc6393 (etherscan) ERC20 18 ☑
996,000 WBTC Wrapped BTC 0x2260FAC5...c2C599 (etherscan) ERC20 8 ☑
995,000 USDC USD Coin 0xA0b86991...06eB48 (etherscan) ERC20 6 ☑
994,000 USDT Tether USD 0xdAC17F95...831ec7 (etherscan) ERC20 6 ☑
993,500 DAI Dai Stablecoin 0x6B175474...271d0F (etherscan) ERC20 18 ☑
993,000 BOLD BOLD Stablecoin 0x6440f144...beB01D (etherscan) ERC20 18 ☑
992,500 LUSD LUSD Stablecoin 0x5f98805A...568bA0 (etherscan) ERC20 18 ☑
992,000 ZORG zOrg Shares 0x00a6bA94...2dCb12 (etherscan) ERC20 18 ☑
991,500 ZAMM ZAMM 0xE9b1cFEA...1664ED (etherscan) ERC20 18 ☑
991,000 zzz zOrgz 0x00000000...6b63A6 (etherscan) ERC721 0 ☑
990,000 WEI Wei Name Service 0x00000000...c242EB (etherscan) ERC721 0 ☑
989,000 FWA Fake World Assets 0xa0Df17B5...20C845 (etherscan) ERC20 18 ☑
988,000 TAC Tacit Coin f0bbe868...94762b (tacitscan) TACIT 8 ☒

The two ☒ entries are exactly the listings with no readable on-chain source here — native ETH,
which has no contract at address(0) on any chain, and the Bitcoin-rooted Tacit asset. Both are
held by the registry itself rather than by a subject contract, which is why balanceOf(registry)
returns 2. The Tacit asset id matches the asset documented in DNZN's
Tacit Project Overview.

Two of the seventeen listings carry the onchainSvg flag: zOrgz and Wei Name Service, both
ERC-721 collections.


Complete Event History

Eight transactions across five days. The registry itself has zero direct transactions — every
owner call arrives as an internal call from the multisig — so this log is the whole history.

Command:

curl -s "https://api.etherscan.io/v2/api?chainid=1&module=logs&action=getLogs\
&address=0x0000006013dF75A31678B786061C2B54bf531524\
&fromBlock=0&toBlock=latest&page=1&offset=1000&apikey=$ETHERSCAN_API_KEY"

Artifact:

BLOCK TIMESTAMP (UTC) TX ACTIVITY
25675344 2026-08-03 15:43 0xe5e00f96...21dd38 (tx) Deployment. OwnershipTransferred plus 4 seeded listings — ETH, WETH, USDC, USDT
25676194 2026-08-03 18:34 0x813536e1...ce2a12 (tx) 1 listing added (wstETH) plus an art update
25677323 2026-08-03 22:20 0x2831c647...3f7a14 (tx) 6 listings added, 8 updates — including the two nftArt flags on zOrgz and WNS
25688515 2026-08-05 11:45 0xc3a02053...b2cfc9 (tx) Renderer swap. RendererSet, BatchMetadataUpdate(0, max), ContractURIUpdated
25689390 2026-08-05 14:41 0xd7e73668...e41ca5 (tx) 1 listing added
25698321 2026-08-06 20:31 0x78b0caf4...dc9faa (tx) Tacit Coin listed, plus text, art ×2, audit, and the only two ExtraSet writes (etch tx, issued)
25703609 2026-08-07 14:12 0xc88acef8...d9255a (tx) 1 listing added plus an art update
25704901 2026-08-07 18:32 0x9eaf7f3e...f2f88c (tx) 3 listings added plus 3 art updates

Event totals: 95 logs — 19 Updated, 19 MetadataUpdate, 17 Transfer (all mints), 17
Locked, 17 Listed, 2 ExtraSet, 1 OwnershipTransferred, 1 RendererSet, 1
BatchMetadataUpdate, 1 ContractURIUpdated.

Events with zero occurrences: Delisted, Froze, Reserved, Activated, RendererLocked.
No listing has ever been removed, sealed, or reserved, and the renderer choice remains unsealed.


Governance Chain

The owner address returns code, which is why the analysis followed it upward.

Command:

cast code 0x006CD14F36F65eCbB29b2519cCBe63A0DC8549F2
cast call 0x006CD14F36F65eCbB29b2519cCBe63A0DC8549F2 "getOwners()(address[])"
cast call 0x006CD14F36F65eCbB29b2519cCBe63A0DC8549F2 "threshold()(uint16)"
cast call 0x006CD14F36F65eCbB29b2519cCBe63A0DC8549F2 "delay()(uint32)"
cast call 0x006CD14F36F65eCbB29b2519cCBe63A0DC8549F2 "executor()(address)"

Artifact:

# Owner runtime code — 45 bytes, a minimal proxy delegating to 0xD54cb652...9f4FB0
0x5f5f365f5f37365f73d54cb65224410f3ff97a8e72f363f224419f4fb05af43d5f5f3e6029573d5ffd5b3d5ff3

getOwners() -> [
  0x1C0Aa8cCD568d90d61659F060D1bFb1e6f855A20,   # z0r0z canonical EOA (23 bytes of code — EIP-7702 delegation)
  0x999657A41753b8E69C66e7b1A8E37d513CB44E1C,   # plain EOA
  0xCB0592589602B841BE035e1e64C2A5b1Ef006aa2    # plain EOA
]
threshold() -> 2
delay()     -> 3600
executor()  -> 0x00000000a72A30AdBf38e14d36BCE2610ec3973F   # TimelockExecutor
ownerCount()-> 3
nonce()     -> 16

# TimelockExecutor.forwardEnabled(multisig) -> true

Seven of the eight transactions that reached the registry were broadcast by
0x1C0Aa8cC...855A20 (etherscan);
the eighth is the deployment, sent by the deployer EOA to the factory. Of the seven, two routed
through the TimelockExecutor (etherscan)
and five went directly to the multisig (etherscan)
as executeQueued calls after the delay elapsed.

This is only half the picture, because a queued action reaches the registry one transaction later
than it is proposed. Reading the multisig's own history shows signer 2
0x999657A4...B44E1C (etherscan)
queuing two of the eight actions with execute — the wstETH listing at 2026-08-03 18:25 UTC
(0x56385866...6e6848, tx)
and the renderer swap at 2026-08-05 11:39 UTC
(0xe5995b7a...c53b27, tx) —
each force-executed by z0r0z through the unanimous bypass within ten minutes. A third attempt on
2026-08-07 reverted.

Command:

curl -s "https://api.etherscan.io/v2/api?chainid=1&module=account&action=txlist\
&address=0x006CD14F36F65eCbB29b2519cCBe63A0DC8549F2&startblock=0&endblock=99999999\
&sort=asc&apikey=$ETHERSCAN_API_KEY"
# selector 0xda0980c7 = execute(address,uint256,bytes,bytes)        -> queues
# selector 0x7f576d13 = executeQueued(address,uint256,bytes,uint32) -> applies


Deployer Lineage

Establishes the link between the deploying EOA and z0r0z's canonical address.

Command:

curl -s "https://api.etherscan.io/v2/api?chainid=1&module=account&action=txlist\
&address=0xacfba7ce872c6ead99d535586f84b0d68ade4082&startblock=0&endblock=99999999\
&sort=asc&apikey=$ETHERSCAN_API_KEY"

Artifact:

2026-08-03 15:39  0x1c0aa8ccd5... -> 0xacfba7ce87...   0.02 ETH      # funding
2026-08-03 15:43  0xacfba7ce87... -> factory           create2Deploy # TokenList deployed

The deployer EOA 0xAcFBA7Ce...DE4082 (etherscan)
was funded by z0r0z's canonical EOA 0x1C0Aa8cC...855A20 (etherscan)
four minutes before deploying the registry, and has no prior history. The
original renderer at 0x000000d5...DbbE87 (etherscan) was deployed directly by the canonical EOA. This is the
same funding-then-deploy pattern DNZN observed in the
ConfidentialPool analysis.


Renderer Comparison

The live renderer differs from the constructor argument, so both verified sources were fetched and
diffed to establish what the swap actually changed.

Command:

# FETCH BOTH VERIFIED SOURCES AND DIFF THE RENDERER FILE

curl -s "https://api.etherscan.io/v2/api?chainid=1&module=contract&action=getsourcecode\
&address=0x0000009650f4aEF08AdB2De98bdD2695A41eDcF4&apikey=$ETHERSCAN_API_KEY"

curl -s "https://api.etherscan.io/v2/api?chainid=1&module=contract&action=getsourcecode\
&address=0x000000d595e36dd0228c4040d981a01a59dbbe87&apikey=$ETHERSCAN_API_KEY"

Artifact:

PROPERTY ORIGINAL ACTIVE
Address 0x000000d5...DbbE87 (etherscan) 0x00000096...1eDcF4 (etherscan)
Deployed Block 25674923 Block 25688433
Deployed by 0x1C0Aa8cC...855A20 (etherscan) (z0r0z, directly) 0xAcFBA7Ce...DE4082 (etherscan)
Source lines 755 866
Runtime size 17,025 bytes 17,871 bytes

Substantive differences, all presentational:

  • _chainLabel added — Bitcoin-rooted standards (TACIT, RUNE, ORDINAL, BRC20) now render as
    bitcoin rather than raw:0. Added the day before the Tacit listing was created
  • _initials fallback — a listing with no logo renders its symbol initials instead of an empty well
  • _provenanceChip restyled from the theme colour to white at reduced opacity, and no longer takes
    a theme argument
  • _accountLabel added, with explicit NONE - NATIVE ASSET / NONE - NO ACCOUNT text for
    zero-account listings
  • display_type: "number" added to the Decimals and Sort Weight traits
  • _artTrait replaces _artHint, emitting the trait conditionally rather than always

Nothing in the diff touches storage, access control, or the values the registry holds — consistent
with the renderer being pure and stateless. That is an observation about this particular swap, not
a constraint on future ones.


Rendered Card Sample

Decoded output of tokenURI for the ZORG listing, confirming the renderer path works end to end.

Command:

cast call 0x0000006013dF75A31678B786061C2B54bf531524 "tokenURI(uint256)(string)" \
  3718177199436581777268575498026466751093263122

Artifact (decoded metadata):

{
  "name": "ZORG / Token Listing",
  "description": "zOrg governance shares. Bonded with zOrgz to direct conviction toward existing TokenList entries.",
  "external_url": "https://zorg.wei.domains",
  "image": "data:image/svg+xml;base64,...",
  "attributes": [
    { "trait_type": "Symbol",        "value": "ZORG" },
    { "trait_type": "Decimals",      "value": 18, "display_type": "number" },
    { "trait_type": "Token Standard","value": "ERC-20" },
    { "trait_type": "Chain",         "value": "eip155:1" },
    { "trait_type": "Source",        "value": "Onchain" },
    { "trait_type": "Deployment",    "value": "Deployed" },
    { "trait_type": "Curation",      "value": "Editable" },
    { "trait_type": "Sort Weight",   "value": 992000, "display_type": "number" }
  ]
}

The description is curator-authored text, not a claim the registry enforces. The mechanism it
refers to lives in a separate contract deployed three days later — see
ZorgConviction.

The embedded SVG is 2,580 bytes and fully self-contained — a 720×420 black terminal frame with the
logo, symbol, name, address, description and footer links drawn inline, no external fetch.

"Source": "Onchain" is the rendered form of synced = true, and "Curation": "Editable"
reflects frozen = false.


Storage Verification Sample

The native ETH listing at id 0, read directly from storage to confirm the declared struct layout.

Command:

BASE=$(cast index uint256 0 3)   # keccak256(abi.encode(0, 3))
for i in 0 1 2 3 4 5 6 7; do
  cast storage 0x0000006013dF75A31678B786061C2B54bf531524 \
    $(python3 -c "print('0x%064x'%(int('$BASE',16)+$i))")
done

Artifact:

base = 0x3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff

+0  0x0000000000000000000000000000000000000000000000000000000000000000   account = 0 (native)
+1  0x0000000000000000000000000f4240627eea0000010100120000000000000001   packed scalars
+2  0x457468657200000000000000000000000000000000000000000000000000000a   name   = "Ether"
+3  0x4554480000000000000000000000000000000000000000000000000000000006   symbol = "ETH"
+4  0x00000000000000000000000000000000000000000000000000000000000005ed   logo   = 758 bytes, out of line
+5  0x68747470733a2f2f657468657265756d2e6f7267000000000000000000000028   url    = "https://ethereum.org"
+6  0x0000000000000000000000000000000000000000000000000000000000000000   audit  = empty
+7  0x000000000000000000000000000000000000000000000000000000000000008b   description = 69 bytes

Decoding the packed word at +1 by byte offset yields chainId = 1, decimals = 18,
kind = EVM, standard = NATIVE, deployed = true, onchainSvg = false, synced = false,
color = 0x627eea, rank = 1,000,000, frozen = false — matching summariesPaged exactly.