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):
trust_txs
votes
market_decls → market_votes → market_resolutions
- Finalization trigger (if height ≥ K + 1)
- Trust snapshot
code_commitments → code_proposals → code_proposal_votes → auto-resolve proposals from code_commits
norm_decls → norm_votes → norm_resolutions
rbac_role_decls → rbac_grants → rbac_revokes
conflict_records → conflict_patches
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).