Skip to content

CONTRACTS

KuxerRegistry v0.1

A minimal commitment registry: proposal commitments with parents, evaluator attestations with statuses, and challenges. It holds no funds. The interface below is generated from the compiled ABI.

Robinhood Chain · 4663deployed · verifiedaudit: none yet

Deployment

fieldvalue
address0xDC95f1569E0399114D6764dF5a1A10603759de64
deploy block90705606
deploy transaction0xb229a313a833315ab1d6c89b195547a5d492f308120a0ee2194fb3e784525ecd
contract version0.1.0
releasev0.1.0
owner0xc2bC9794beb9944D55d841995Fe5d6D533ebFeFD
source verifiedyes · explorer

Network configuration is environment-based: production resolves to chain id 4663 or fails to start. Testnet addresses are never reused as mainnet addresses.

Model

concepton-chain representation
record idbytes32 = keccak256(utf8(recordId)); exposed by the API as chainKey
proposalcontributor, contentHash, committedAt, blockNumber, parents[] (each must already exist)
baselinea proposal with no parents, committed by the operator
evaluationproposalId, evaluator, resultHash, status, priorStatus, committedAt, supersededBy
status codes1 PENDING_REPLICATION · 2 VALIDATED · 3 REJECTED · 4 CHALLENGED · 5 SUPERSEDED · 6 WITHDRAWN
challengeevaluationId, challenger, reasonHash, resolutionHash, outcome (OPEN/UPHELD/DISMISSED), timestamps
rolesowner (two-step transfer), evaluators (delayed set changes), pause

Write functions

functionaccess
acceptOwnership()pending owner
cancelEvaluatorChange(address account)owner
commitEvaluation(bytes32 id, bytes32 proposalId, bytes32 resultHash, uint8 status)evaluator · not paused
commitProposal(bytes32 id, bytes32 contentHash, bytes32[] parents)anyone · not paused
executeEvaluatorChange(address account)owner
openChallenge(bytes32 id, bytes32 evaluationId, bytes32 reasonHash)anyone · not paused
pause()owner
queueEvaluatorChange(address account, bool allowed)owner
resolveChallenge(bytes32 id, uint8 outcome, bytes32 resolutionHash)owner
setChallengeWindow(uint64 newWindow)owner
supersedeEvaluation(bytes32 id, bytes32 newId)evaluator · not paused
transferOwnership(address newOwner)owner
unpause()owner
updateEvaluationStatus(bytes32 id, uint8 status)evaluator · not paused

Read functions

function
MAX_PARENTS()
VERSION()
activeChallengeOf(bytes32)
adminDelay()
challengeCount()
challengeDeadline(bytes32 evaluationId)
challengeWindow()
evaluationCount()
evaluationExists(bytes32 id)
getChallenge(bytes32 id)
getEvaluation(bytes32 id)
getProposal(bytes32 id)
isEvaluator(address)
owner()
paused()
pendingEvaluatorChanges(address)
pendingOwner()
proposalCount()
proposalExists(bytes32 id)

Events

event
ChallengeOpened(bytes32 id, bytes32 evaluationId, address challenger, bytes32 reasonHash)
ChallengeResolved(bytes32 id, bytes32 evaluationId, uint8 outcome, bytes32 resolutionHash)
ChallengeWindowUpdated(uint64 previous, uint64 current)
EvaluationCommitted(bytes32 id, bytes32 proposalId, address evaluator, bytes32 resultHash, uint8 status)
EvaluationStatusChanged(bytes32 id, uint8 from, uint8 to)
EvaluationSuperseded(bytes32 id, bytes32 supersededBy)
EvaluatorChangeCancelled(address account)
EvaluatorChangeQueued(address account, bool allowed, uint64 executableAt)
EvaluatorUpdated(address account, bool allowed)
OwnershipTransferStarted(address previousOwner, address newOwner)
OwnershipTransferred(address previousOwner, address newOwner)
Paused(address account)
ProposalCommitted(bytes32 id, address contributor, bytes32 contentHash, bytes32[] parents)
Unpaused(address account)

Permissions and principles

principleimplementation
minimal permissionsno admin withdrawal exists because the contract holds no funds; evaluator changes are queued and executed after adminDelay
transparencyevery state transition emits an event; the indexer records them behind a confirmation depth
emergency procedurespause() stops writes; challenge resolution still works while paused
upgradesnone; v0.1 is immutable and a successor would be a new deployment recorded in the manifest
independent reviewrequired before any contract that manages funds or rewards is deployed; none has been performed on v0.1

ABI

The full ABI is served by /api/v1/contracts together with the manifest.

GET /api/v1/contracts (shape)
{
  "data": {
    "network": {
      "chainId": 4663
    },
    "manifest": {
      "contracts": {
        "KuxerRegistry": {
          "address": "0xDC95f1569E0399114D6764dF5a1A10603759de64"
        }
      }
    },
    "abi": {
      "KuxerRegistry": "[…]"
    }
  }
}