DybboProof
Monad

The claim

Check it yourself. Every read and simulation on this page runs against Monad, not against our server.

A possessor can never move, approve or list the Chog they control, and their control ends in the block the lease expires or the Chog changes hands.

The three checks

Simulated, so they cost nothing
  1. Move it as a possessor

    Not run

    transferFrom(holder, you, id) on Chog Genesis

    Expected
    Reverts
    Got
    —
  2. Haunt after the lease

    Not run

    haunt(id, target, mark) from the last possessor

    Expected
    Reverted: LeaseExpired
    Got
    —
  3. Claim as a non-holder

    Not run

    claim(id) from a wallet that doesn't hold it

    Expected
    Reverted: NotOwner
    Got
    —

Tests that prove it

51 unit tests, 3 fork tests
  • test_NoCallPathToApproveOrTransfer
    The contract's bytecode holds no approve or transfer selector, only ownerOf
    Proof.t.sol
  • test_PossessorTransferFromReverts
    A possessor's transferFrom on Chog Genesis reverts
    Proof.t.sol
  • test_NoApprovalAfterAnyFlow
    isApprovedForAll(holder, Dybbo) stays false after every flow
    Proof.t.sol
  • test_HauntAtUntilRevertsLeaseExpired
    A haunt in the second the lease ends reverts with LeaseExpired
    Haunt.t.sol
  • test_SaleMidLeaseRevertsOwnerChanged
    After a transfer mid-lease, the next haunt reverts with OwnerChanged
    Haunt.t.sol
  • test_ClaimByNonOwnerReverts
    Neither the possessor nor a stranger can claim the escrow
    Claim.t.sol
  • test_EscrowFollowsTokenAfterSale
    Unclaimed escrow goes to the buyer
    Claim.t.sol
  • test_ContractHolderClosedByDefault
    A Chog held by a contract starts closed and opens after setTerms
    Lease.t.sol
  • test_ForkAgainstMainnetChog
    The whole story against the real Chog Genesis on a Monad fork
    Fork.t.sol

The contract

Verified
Dybbo
0x908D…72e9
Chog Genesis
0xc96d…3763
Admin
None
Pause
None
Upgrade
None
Protocol fee
0%

Every call to Chog Genesis

  • ownerOf(tokenId)read
  • owner.code.lengthread

Nothing else. No approve, no transfer.

Approvals

Run the checks to read
Holder
—
isApprovedForAll(holder, Dybbo)
—
getApproved(id)
—

Read Chog Genesis on MonadScan

Dybbo never asks for an approval. If a page that looks like Dybbo asks you to approve anything, it is not Dybbo.