pub enum IntelAction {
SubnetRegister {
schema: Vec<u8>,
tier: u8,
gas_limit: u64,
},
NeuronRegister {
subnet_id: u32,
role: u8,
hotkey: Vec<u8>,
bond: u64,
gas_limit: u64,
},
SetWeightsCommit {
subnet_id: u32,
commit: [u8; 32],
gas_limit: u64,
},
SetWeightsReveal {
subnet_id: u32,
uids: Vec<u32>,
weights: Vec<u32>,
nonce: [u8; 32],
gas_limit: u64,
},
NeuronClaim {
gas_limit: u64,
},
NeuronDeregister {
subnet_id: u32,
uid: u32,
gas_limit: u64,
},
ValidationProof {
subnet_id: u32,
beacon_ack: [u8; 32],
gas_limit: u64,
},
}Expand description
A Blockle VM action carried by a transaction. Gas is prepaid: consensus
requires fee >= gas_limit * gas_price, whether or not execution
succeeds or uses less.
Blockle Intelligence actions (height-gated at ChainParams::intel_activation_height;
see docs/BLOCKLE-INTELLIGENCE.md §3). Wrapped in ContractAction::Intel so they ride
the existing contract-action rails (fees, gas, refunds) without touching base-tx rules.
Additive: old nodes decode the unknown tag as malformed, so these are inherently a
height-activated fork — rejected below H_INTEL, accepted at/above it.
Variants§
SubnetRegister
Register a subnet (a task market). tier = verifiability tier (0 checkable,
1 redundant/reference, 2 subjective). schema describes the task.
NeuronRegister
Register a neuron (miner role=0 / validator role=1) in a subnet, locking a
bond of BLOCK (from inputs; recoverable later via Unbond). hotkey is the
serving/identity key.
SetWeightsCommit
Validator commits a hash of its weight vector for the epoch (commit-reveal §5.4).
SetWeightsReveal
Validator reveals the weights committed last epoch. uids are miner UIDs and
weights the matching fixed-point weights (0..1_000_000). The reveal is accepted
only if sha256(canonical(uids,weights) ‖ nonce) equals the stored commit.
NeuronClaim
Pay out the sender’s accrued intelligence emission to a new BLOCK output.
NeuronDeregister
Deregister (unbond) a neuron the sender owns, identified by (subnet_id, uid).
The remaining (post-slash) bond is refunded to the owner and the neuron is
retired. Height-gated separately (not active until the unbond height) and
subject to a one-epoch cooldown after registration so a validator cannot
register, vote, and flee within a single epoch.
ValidationProof
Proof-of-validation (liveness): a validator acknowledges the current epoch’s
in-node beacon (beacon_ack must equal it), proving it is live against fresh,
unpredictable randomness. Validators that reveal weights but skip this each epoch
are excluded from emission and have their bond slashed.