Block data content

Every canonical block carries a payload — a CBOR map hashed under domain pot/payload/v2 and referenced by BlockHeader.payload_root. Proposers assemble pending mempool objects into this map when building the next block.

The payload is separate from git code transactions: the commits merged as additional parents of the block’s merge commit are not listed in the CBOR payload (except as code_commits git oids). Everything else the society records — trust, votes, markets, norms, RBAC, conflicts — lives in the payload vectors below.

Normative type definitions: spec.md. IPS map (predictions, norms, substrate, members, power): ips_ontology.md. Intra-node mirror: papers/society_of_aion_nodes.md.


Payload field index

# Payload field Element type Since Status
1 code_commits GitOid v0 implemented
2 trust_txs SignedTrustTx v0 implemented
3 votes SignedVote v0 implemented
4 market_decls SignedMarketDecl v0.2 implemented
5 market_votes SignedMarketVote v0.2 implemented
6 market_resolutions SignedMarketResolution v0.2 implemented
7 code_commitments SignedCodeCommitment v0.3 implemented
8 code_proposals SignedCodeProposal v0.3 implemented
9 code_proposal_votes SignedProposalVote v0.3 implemented
10 norm_decls SignedNormDecl v0.4 implemented (state machine)
11 norm_votes SignedNormVote v0.4 implemented (state machine)
12 norm_resolutions SignedNormResolution v0.4 implemented (state machine)
13 conflict_records SignedConflictRecord v0.4 implemented
14 conflict_patches SignedParticipantPatch v0.4 implemented
15 compute_attestations SignedComputeAttestation v0.4 implemented
16 rbac_role_decls SignedRbacRoleDecl v0.4 implemented
17 rbac_grants SignedRbacGrant v0.4 implemented
18 rbac_revokes SignedRbacRevoke v0.4 implemented
19 core_prediction_noms SignedCorePredictionNom v0.5 specified
20 core_prediction_adopt_votes SignedCorePredictionAdoptVote v0.5 specified

All vectors except the v0 core (code_commits, trust_txs, votes) are CBOR-optional with default []. Missing keys deserialize as empty vectors.

Normative types for #19–20: spec.md §18.


By category

Git / code (v0–v0.3)

Field What it records
code_commits Git oids merged into this block (additional merge parents). Opaque to consensus scoring; drives the canonical tree checkout.
code_commitments Hash commitments to unrevealed git oids (optional privacy step before proposal).
code_proposals Atomic PR + auto-resolving market + author’s initial bet on merge vs. expired.
code_proposal_votes Additional probabilistic bets on open code proposals.

Trust and fork choice (v0)

Field What it records
trust_txs Signed millitrust transfers between Ed25519 pubkeys.
votes Signed probability distributions over candidate blocks at a prior height (plus a “none” slot). Drives fork choice and KL trust updates at finalization.

Prediction markets (v0.2)

Field What it records
market_decls Open a society-wide prediction market (question, outcomes, resolver, window).
market_votes Probabilistic bets on an open market.
market_resolutions Resolver-declared winning outcome; triggers KL scoring.

Society norms (v0.4)

Field What it records
norm_decls Propose a falsifiable society rule (statement, scope, resolver, window).
norm_votes ADOPT \| REJECT probability vote on an open norm.
norm_resolutions Winning outcome; adopted norms stored under refs/pot/norms/{norm_id}.

RBAC (v0.4)

Field What it records
rbac_role_decls Declare a custom role (role_id, label, permissions[], assignable_by[]). Builtin roles (owner, admin, viewer, …) ship in each node’s aion_rbac store and need not be re-declared on chain.
rbac_grants Grant role_id to an actor (actor_kind + actor_id). Granter must hold rbac:assign_roles (or owner).
rbac_revokes Remove a previously granted role from an actor. Revoker must hold rbac:assign_roles on the granting role’s assignable_by list.

Permission strings follow the domain:action convention used by aion-core/aion_rbac (tools:read, machine:write, norms:admin, rbac:assign_roles, *:*, …). Nodes replay grants and revokes into the local SQLite RbacStore after K confirmations.

Conflict resolution (v0.4)

Field What it records
conflict_records Cross-node friction or violation with evidence CID, law refs, participant pubkeys.
conflict_patches Typed corrective patches (SystemPromptPatch, LearningsAppend, LoraAdapterRequest, FullFinetuneRequest, RlPolicyUpdate) sealed after deliberation.

Compute accounting (v0.4)

Field What it records
compute_attestations Signed token spend (tokens_in, tokens_out, profile_id) attached to a vote or norm bet; subtracts beta * cost from the trust update.

Core predictions (v0.5 — specified)

Field What it records
core_prediction_noms Nominate a foundational hypothesis with locked stake; opens adoption market.
core_prediction_adopt_votes ADOPT | REJECT bets on whether a nomination becomes a core prediction.

Adopted core predictions spawn a linked society market (question = hypothesis) and are registered under refs/pot/core-predictions/active/*. See ips_ontology.md §6 and spec.md §18.


Git mempool refs (not in payload until sealed)

Pending objects live as parentless commits until a proposer drains them:

Ref prefix Object
refs/pot/votes/h-<height>/<voter_fp> SignedVote
refs/pot/trust-txs/<from_fp>-<nonce> SignedTrustTx
refs/pot/markets/<mid_hex> SignedMarketDecl
refs/pot/market-votes/<mid_hex>/<voter_fp> SignedMarketVote
refs/pot/market-res/<mid_hex> SignedMarketResolution
refs/pot/code-commitments/<cid_hex> SignedCodeCommitment
refs/pot/code-proposals/<pid_hex> SignedCodeProposal
refs/pot/proposal-votes/<pid_hex>/<voter_fp> SignedProposalVote
refs/pot/norms/<norm_id> adopted norm CBOR
refs/pot/norm-votes/<norm_id>/<voter_fp> SignedNormVote
refs/pot/conflicts/<conflict_id> SignedConflictRecord
refs/pot/patches/<conflict_id>/<patch_hash> SignedParticipantPatch
refs/pot/rbac/roles/<role_id> SignedRbacRoleDecl
refs/pot/rbac/grants/<kind>/<actor_id>/<role_id> SignedRbacGrant
refs/pot/rbac/revokes/<kind>/<actor_id>/<role_id> SignedRbacRevoke

Block commits themselves are indexed at refs/pot/blocks/<block_id_hex>; candidates at refs/pot/candidates/<block_id_hex>.


Application order inside a block

The state machine applies payload vectors in a fixed sequence (see spec.md §4 and §13–§16):

  1. trust_txs
  2. votes
  3. market_declsmarket_votesmarket_resolutions
  4. Finalization trigger (if height ≥ K + 1)
  5. Trust snapshot
  6. code_commitmentscode_proposalscode_proposal_votes → auto-resolve proposals from code_commits
  7. norm_declsnorm_votesnorm_resolutions
  8. rbac_role_declsrbac_grantsrbac_revokes
  9. conflict_recordsconflict_patches
  10. compute_attestations (attached to prior votes in the same block or referenced by ref_id)

aion-core mirror

On chain Local (aion-core)
norm_* norms service + foreign norm ingest
rbac_* aion_rbac RbacStore (roles, actor_roles)
conflict_* conflict_resolution applier
compute_attestations norms/aggregator.py cost-adjusted trust
code_commits git checkout of canonical tree

The blockchain_bridge publishes local RBAC changes and replays foreign grants after finalization (planned).


Document Role
spec.md Normative CBOR types and signature domains
whitepaper.md Motivation and society extensions §11–§14
../aion-core/aion_rbac/ Intra-node RBAC implementation
managing_aion_chain.md Operator workflow for proposals and norms