Every state-changing function in the protocol and who may call it. Generated from the per-contract references; the per-function pages carry the full behavior.
Function
Access
recordAcquisition
patron-only (msg.sender must equal the wired patron address, else NotPatron)
markCustody
returnAuctionModule-only (msg.sender must equal the wired returnAuctionModule address, else NotReturnAuction)
setWiring
deployer one-shot (OneTimeSetup gate: caller must be the constructor-time deployer, callable exactly once)
Function
Access
acceptBid
permissionless (owner pre-condition: the Punk must be listed
acceptListing
permissionless (listing pre-condition: the seller must be allowlisted
skimSurplus
permissionless
addAllowedSeller
admin-only (raw ProtocolAdmin.admin(); a lifetime carve-out that
removeAllowedSeller
admin-only (raw ProtocolAdmin.admin(); same lifetime carve-out as
setWiring
deployer one-shot (gated by OneTimeSetup; permanently closed after
receive
adapter-only (msg.sender must be liveBidAdapter)
Function
Access
listForSettlement
module-only (MODULE, the deploying ReturnAuctionModule; any other caller reverts NotModule)
sweepProceeds
module-only (any other caller reverts NotModule)
receive
market-only (only the CryptoPunks market; any other sender reverts UnexpectedEtherSender)
Function
Access
receivePunk
returnAuctionModule-only (NotReturnAuction for any other caller)
mintProofs
returnAuctionModule-only (NotReturnAuction for any other caller)
mintToAuction
titleAuction-only (NotTitleAuction for any other caller)
setTitleAuction
deployer one-shot (NotDeployer for others; TitleAuctionAlreadySet
setRendererRegistry
deployer one-shot (NotDeployer for others;
renounceOwnership
owner-only (NotOwner for any other caller)
approve
permissionless (token owner or an isApprovedForAll operator; solmate
setApprovalForAll
permissionless (sets the caller's own operator flag)
transferFrom
permissionless (owner, approved spender, or operator of id)
safeTransferFrom
permissionless (owner, approved spender, or operator of id)
safeTransferFrom
permissionless (owner, approved spender, or operator of id)
Function
Access
sweep
permissionless
streamForward
permissionless (implements IPreSwapStream; designed to be called by the official pool's hook in _beforeSwap, but anyone may call)
contribute
permissionless, payable
poolReplenish
module-only (msg.sender must equal returnAuctionModule; anyone else reverts NotReturnAuction)
setMaxSweepWei
admin-only (ProtocolAdmin.checkAdmin; subject to the 1-year auto-lock, no carve-out)
setMinBlocksBetweenSweeps
admin-only (ProtocolAdmin.checkAdmin; subject to the 1-year auto-lock, no carve-out)
setActivationThreshold
admin-only carve-out (raw ProtocolAdmin.admin(), ignoring the 1-year timer; live until the role is burned via transferAdmin(address(0)))
receive
permissionless
Function
Access
executeStep
permissionless
setup
deployer one-shot, gated by OneTimeSetup (original deployer only, before finalization)
setMinBlocksBetweenSteps
admin-only, ProtocolAdmin.checkAdmin(msg.sender); locks at the 1-year admin expiry
setMaxStepWei
admin-only, ProtocolAdmin.checkAdmin(msg.sender); locks at the 1-year admin expiry
unlockCallback
PoolManager-only, reverts NotPoolManager for any other caller
receive
permissionless, accepts ETH from any sender
Function
Access
sweep
returnAuctionModule-only (any other caller reverts NotReturnAuctionModule)
setup
deployer one-shot (onlySetup: deployer-only until finalized, then closed forever)
receive
permissionless
Function
Access
claim
permissionless
claimFor
permissionless
notify
hook-only (the immutable hook address set at construction; every other caller reverts Unauthorized)
receive
permissionless
Function
Access
bid
permissionless (payable)
settle
permissionless
kickoff
permissionless, gated on the collected-trait threshold
mintTitle
permissionless, idempotent
withdrawRefund
permissionless, pays msg.sender's own queued refund
withdrawProceeds
permissionless, funds always go to the credited recipient
withdrawProceeds
permissionless, pays msg.sender's own credit
Function
Access
enterSwap
extension-only (msg.sender must equal the current authorizedExtension, which must be non-zero; otherwise reverts NotAuthorizedExtension)
exitSwap
extension-only (same gate as enterSwap)
setAuthorizedExtension
owner-only (reverts NotOwner otherwise; reverts AuthorizedExtensionAlreadyLocked after the lock)
lockAuthorizedExtension
owner-only (reverts NotOwner otherwise; reverts AuthorizedExtensionAlreadyLocked if already locked)
transferOwnership
owner-only (reverts NotOwner otherwise)
Function
Access
setup
owner-only, one-shot (reverts AlreadySetup on a second call)
bindExtension
owner-only (reverts NotOwner otherwise; reverts NotSetup before setup)
lockExtension
owner-only (reverts NotOwner otherwise; reverts NotSetup before setup)
setHookMaxReferralBps
two-key (either owner or the current ProtocolAdmin.admin() EOA; all other callers revert NotAuthorized; reverts NotSetup before setup)
setTokenTaxBps
two-key (either owner or the current ProtocolAdmin.admin() EOA; all other callers revert NotAuthorized; reverts NotSetup if the token isn't pinned yet)
transferOwnership
owner-only (reverts NotOwner otherwise)
Function
Access
transferAdmin
admin-only (msg.sender must equal the current admin; any other caller reverts NotAdmin)
Function
Access
setImplementation
admin-only (ProtocolAdmin.checkAdmin(msg.sender) must be true, so the caller must hold the admin role with its 1-year timer unexpired)
freeze
admin-only (ProtocolAdmin.checkAdmin(msg.sender)), one-way
Previous ABIs and the protocol manifest Next Errors index