HENS HISTORICAL PUBLIC-MINT BOND — SOURCE AND EVENT EVIDENCE Contract: 0x8774c09F32755c3147137439467B1e66C9fef607 Chain: Robinhood Chain, chain ID 4663 Deployment transaction: 0x31583d19bd62aeed7623707aea774cccb52c4d64f658826a8beffcc7d00d20e9 Deployment block: 83050559 Verification block: 88848659 Prepared: 15 October 2026 CONTENTS AND PROVENANCE sources/ contains the exact eight Solidity source files needed for this bond. Each file's Keccak-256 hash matches the included compiler metadata. abi.json is the full ABI, including event names, types and indexed fields. events.json additionally supplies each event's signature and topic0. metadata.json preserves the matching compiler metadata byte-for-byte. constructor-arguments.json contains the public constructor values decoded from the deployment transaction, together with their encoded representation. creation-input.hex is that public transaction's complete creation input. chain-evidence.json records the public deployment and on-chain checks. verification.json records the successful local reproduction checks. standard-input.reconstructed.json is a minimal Standard JSON compiler input reconstructed from the matching metadata and hash-verified source files. It is NOT presented as the original saved compiler-session input. The original full compiler-session input/output was not recovered. This deliberately scoped input reproduces the exact deployed creation bytecode and exact compiler metadata. standard-output.recompiled.json is the fresh compiler output from that input. Compiler: Solidity 0.8.30+commit.73712a01 Optimizer: enabled, 500 runs viaIR: true EVM target: cancun Metadata bytecode hash: ipfs Linked/deployed libraries: none (link references and libraries are empty). Required source imports are included; the compiler settings preserve the original remapping strings, which do not require unrelated source files. Metadata CID, recovered from deployed bytecode and reproduced by compilation: QmPfZeBKi9UCjGSV3YTnJfAiX1tuWfJAZ1YtKsx6HQ293u Recompile with a trusted installation of the exact compiler: solc-0.8.30 --standard-json < standard-input.reconstructed.json > output.json The JSON embeds its source content, so no filesystem import callbacks are needed. Compare output.contracts["src/HenPublicMintBond.sol"].HenPublicMintBond. Its creation bytecode followed by the encoded constructor arguments must equal creation-input.hex. Its metadata must equal metadata.json exactly. Runtime bytecode contains constructor immutables: use the output's immutableReferences and the included verified values rather than expecting zero placeholders to match the deployed code. Foundry's ABI entry ordering can differ from solc's; entry names, types, input order and indexed flags are equivalent. PROXY AND UPGRADE STATUS This bond address is a direct, non-proxy deployment of HenPublicMintBond. Its exact creation code matches the deployment transaction, its runtime code matches the reproduced build with verified immutable values, and its runtime code is identical at the deployment block and verification block. The standard ERC-1967 implementation, admin and beacon slots are zero. Its source contains no owner, upgrade function or delegatecall path. There is no bond implementation upgrade history to apply to these events. The separate claimController address is a distinct contract and is not covered by that non-proxy statement. This package does not include its upgrade history or unrelated mint/NFT implementation sources. Read the bond's own logs at the exact address above for the bond accounting described below. Explorer reference (verification status not confirmed in this review): https://robin.etherscan.io/address/0x8774c09F32755c3147137439467B1e66C9fef607#code The explorer blocked automated access. Sourcify's legacy full_match and partial_match metadata endpoints returned 404 on 15 October 2026. No claim is made here that the contract has an existing public verified explorer entry. The included checks establish an independent local reproduction; they do not publish or verify the contract on an external service. HOW TO CLASSIFY HISTORICAL BOND ACTIVITY 1. BondLocked(address indexed account, uint256 amount, uint256 indexed ticket) A successful deposit through lock(). Increase that account's outstanding bonded HEGG by amount. This is escrow, not a sale or a burn. The bond amount for this deployment is 100000000000000000000 units, i.e. 100 HEGG. 2. ClaimConsumed(address indexed account, uint256 indexed ticket, uint256 indexed allocationIndex, uint256 refundAvailableAt) The claim controller consumed the entrant's selected allocation. This does not withdraw, burn or refund the HEGG bond. refundAvailableAt gives the earliest refund time for that claimed entry: claimedAt + 2 hours. It is eligibility information, not proof of a transfer. 3. There is NO separate BondUnlocked event. Unlocking is a time/state condition. The amount remains bonded until a successful withdraw() emits BondWithdrawn. entries(account).locked stays true while an eligible but unwithdrawn bond is still held. Eligibility rules: - Selection not finalized: refund available from publicMintStart. - Claimed entrant: refund available 2 hours after claimedAt. - Finalized selection, non-winning entrant: immediately eligible. - Winning entrant who never claimed: eligible at claimDeadline. refundAvailableAt(account) is a view of eligibility, not historical payment evidence. For a non-winning locked entrant it returns the block's current timestamp. For an already withdrawn or absent entry it returns zero; zero alone must not be used to distinguish those cases. 4. BondWithdrawn(address indexed account, uint256 amount) A successful reclaim/refund. Decrease that account's outstanding bonded HEGG by amount and record the refund at this transaction. The same successful receipt includes the HEGG Transfer from the bond to that account. It is not a sale or burn. Failed/reverted withdrawal attempts do not count. 5. SelectionRequested, EntropyCaptured and SelectionFinalized describe selection, not deposits or refunds. All six event schemas and topic0 values are included in events.json. Under-subscribed rounds finalize immediately, with zero seed, multiplier and offset; no entropy reveal is required for that branch. Replay successful canonical logs in block/transaction/log order, handling chain reorganizations and deduplicating by transaction hash and log index. Match logs to this exact contract and chain. Outstanding bonded HEGG is deposits recorded by BondLocked minus refunds recorded by BondWithdrawn; unlocking alone does not reduce it. Reconcile against totalLocked and entries at the same block. Do not classify every raw HEGG Transfer to this address as a valid bond deposit. An unsolicited token transfer does not create an entry and is not credited by lock(). Likewise, an NFT sale/transfer does not transfer the original entrant's bond refund entitlement: withdraw() returns funds only to its caller's entry. DISCLOSURE BOUNDARY This package is limited to the historical bond and its required imports. It contains no wallet private keys, signing credentials, API tokens, environment files, operational scripts, private entropy reveal, mint allocation files, token-to-artwork mappings, artwork files, image-hosting URLs, NFT metadata collection or future mint plans. The entropyCommitment constructor value is a public on-chain hash, not its secret preimage. Compiler metadata IPFS references identify Solidity source/metadata, not Hen artwork. Sharing these files supplies code and public evidence; it does not grant wallet access, contract administration or website access. This review verifies the package contents and deployment correspondence, not the absence of every possible smart-contract vulnerability. Nothing has been sent or published.