TRANSFER, BURN, ATTESTATION_REWARD
Core value-movement transactions. Active from genesis (no fork required).
TRANSFER
Moves OMBRA from one account to another.
| Field | Type | Notes |
|---|---|---|
type | "TRANSFER" | — |
from | string | Sender address (40 hex) |
to | string | Recipient address (40 hex) |
amount | string (bigint) | Micro-OMBRA |
fee | string (bigint) | Micro-OMBRA paid to proposer |
nonce | number | — |
timestamp | number | — |
Validation:
tois valid 40-char lowercase hexstate.balance(from) >= amount + fee- Signature valid
Effect:
state.balance(from) -= amount + feestate.balance(to) += amountstate.balance(proposer) += feestate.nonce(from) += 1
Example signed JSON:
{
"type": "TRANSFER",
"from": "7a8b70389a52a96aa85ca641c5ad2fb7a1e2e1ca",
"to": "abcdef0123456789abcdef0123456789abcdef01",
"amount": "1000000",
"fee": "1000",
"nonce": 5,
"timestamp": 1735389942000,
"publicKey": "...",
"hash": "...",
"signature": "..."
}
BURN
Permanently destroys OMBRA from the sender's account. Used by:
- Block proposer for PoTU (see Protocol Spec › PoTU)
- Slashing penalties
| Field | Type | Notes |
|---|---|---|
type | "BURN" | — |
from | string | Burner (typically block proposer) |
amount | string (bigint) | Micro-OMBRA to burn |
reason | string | "block_energy" for PoTU, "slashing" for penalties |
blockIndex | number | Block this burn belongs to |
tokensConsumed | number | Sum of outputTokens + thinkingTokens in block (for PoTU validation) |
nonce | number | — |
timestamp | number | — |
Validation:
- For
reason = "block_energy":amount == max(MIN_BURN_PER_BLOCK, tokensConsumed / BURN_TOKEN_DIVISOR) state.balance(from) >= amount- Signature valid
Effect:
state.balance(from) -= amountstate.totalBurned += amountstate.nonce(from) += 1
ATTESTATION_REWARD
Pays a validator for attesting to a previous block. Built by the next block's proposer.
| Field | Type | Notes |
|---|---|---|
type | "ATTESTATION_REWARD" | — |
from | string | Proposer of the new block |
validatorAddress | string | Validator that attested |
amount | string (bigint) | Typically VALIDATOR_BASE_REWARD = 100 |
blockIndex | number | Block being attested |
attestationHash | string | sha256 of attestation message |
nonce | number | — |
timestamp | number | — |
Validation:
validatorAddresswas in the active validator set forblockIndexattestationHashmatches a known attestation signed byvalidatorAddress- Same attestation hasn't been rewarded before
Effect:
state.balance(validatorAddress) += amountstate.attestations[attestationHash].rewarded = truestate.nonce(from) += 1
Next: TASK_* (tasks) →