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
| field | value |
|---|---|
| address | 0xDC95f1569E0399114D6764dF5a1A10603759de64 |
| deploy block | 90705606 |
| deploy transaction | 0xb229a313a833315ab1d6c89b195547a5d492f308120a0ee2194fb3e784525ecd |
| contract version | 0.1.0 |
| release | v0.1.0 |
| owner | 0xc2bC9794beb9944D55d841995Fe5d6D533ebFeFD |
| source verified | yes · 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
| concept | on-chain representation |
|---|---|
| record id | bytes32 = keccak256(utf8(recordId)); exposed by the API as chainKey |
| proposal | contributor, contentHash, committedAt, blockNumber, parents[] (each must already exist) |
| baseline | a proposal with no parents, committed by the operator |
| evaluation | proposalId, evaluator, resultHash, status, priorStatus, committedAt, supersededBy |
| status codes | 1 PENDING_REPLICATION · 2 VALIDATED · 3 REJECTED · 4 CHALLENGED · 5 SUPERSEDED · 6 WITHDRAWN |
| challenge | evaluationId, challenger, reasonHash, resolutionHash, outcome (OPEN/UPHELD/DISMISSED), timestamps |
| roles | owner (two-step transfer), evaluators (delayed set changes), pause |
Write functions
| function | access |
|---|---|
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
| principle | implementation |
|---|---|
| minimal permissions | no admin withdrawal exists because the contract holds no funds; evaluator changes are queued and executed after adminDelay |
| transparency | every state transition emits an event; the indexer records them behind a confirmation depth |
| emergency procedures | pause() stops writes; challenge resolution still works while paused |
| upgrades | none; v0.1 is immutable and a successor would be a new deployment recorded in the manifest |
| independent review | required 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": "[…]"
}
}
}