Genesis document reference

STELS Genesis Smart — document structure and field reference

Field-by-field reference for the genesis document: how the chain is configured at creation, which values the runtime enforces, and how the document is signed. Each section below mirrors a block of the published artifact, so any statement here can be checked against the file itself.

Schema version
1.0.0
Artifact
genesis.json

Production-grade JSON Schema for STELS monochain genesis configuration. Structure validation only; runtime MUST enforce policy invariants described in $comment.

JSON Schema Draft 2020-12.

GENESIS VALIDATOR REQUIREMENTS
  • cross-field equality
  • hash/signing-view validation
  • threshold math (k<=n; k>=ceil(2/3 n) where required)
  • balance conservation
  • committee/quorum math
  • and compliance invariants.

Current Network Configuration

Network Name
STELS Mainnet Network
Environment
MAINNET
Chain ID
1
Version
1.0.0-mainnet.smart-1
Created At
12/14/2025, 6:04:16 PM UTC
Activation Time
12/14/2025, 6:19:16 PM UTC
Issuer
Gliesereum Ukraine LLC
27
Required Fields
28
Technical Sections
13
Type Definitions

Network Configuration

Defines the network identity, environment (devnet/mainnet), and chain identifier.

Schema ID
https://stels.io/schemas/genesis-smart-1.0.production.json
Version
1.0.0-mainnet.smart-1
Network Name
STELS Mainnet Network
Environment
MAINNET
Chain ID
1

Current Network Data

Network ID
mainnet
Network Name
STELS Mainnet Network
Environment
mainnet
Chain ID
1
PropertyTypeDescriptionRequired
id
string
-No
name
string
-No
environment
string
-No
chain_id
integer
-No

Blockless-Quorum Consensus

STELS uses a blockless-quorum consensus mechanism where validators reach agreement without traditional block production. The system uses VRF-based committee selection, stake-weighted voting, and notary certificates for finality.

Consensus Type
blockless-quorum
Committee Size
all active notaries (bootstrap: 5)
Quorum Rule
2/3
Epoch Duration
60000ms (60s)
Time Source
notary-median
Max Clock Skew
N/A

How Blockless-Quorum Works

Unlike traditional blockchain systems that produce blocks, STELS uses an event stream model where transactions are processed and finalized through epoch-based committees. The consensus process:

  • Epoch-Based Processing: Time is divided into epochs (60000ms each). Each epoch has a selected committee of validators.
  • VRF Selection: Validators are selected using ed25519-vrf algorithm based on stake weight. The seed comes from the previous epoch beacon, ensuring unpredictability.
  • Quorum Finality: A result is final when 2/3 of the committee has signed, rounded up. The committee size is not a fixed number in this document, so the threshold is expressed as a fraction rather than a count.
  • Notary Certificates: Finality is attested through notary certificates signed by the committee. This document specifies ecdsa-secp256k1-multi.
  • No Block Production: There is no block to be included in and no depth to accumulate. A transaction is applied when its notary certificate exists, so the wait is one round of committee signing rather than a number of confirmations.

Committee Selection (VRF-Based)

Committee selection uses Verifiable Random Function (VRF) to ensure fair and unpredictable validator selection:

  • Algorithm: ed25519-vrf - provides cryptographic proof of randomness
  • Seed Source: prev_epoch_beacon - ensures each epoch's selection is unpredictable
  • Weight: stake - validators with higher stake have proportionally higher selection probability
  • Churn Limits: Maximum 8% of committee can enter/exit per epoch to prevent rapid changes
  • Activation Delay: New validators wait 1 epoch(s) before becoming active
PropertyTypeDescriptionRequired
mode
string
-No
epoch_ms
integer
-No
committee_size
integernull
-No
quorum_rule
object
-
Yes
selection
object
-
Yes
activation_delay_epochs
integer
-No
churn_limit
object
-
Yes
bootstrap
object
-
Yes

Time Source & Synchronization

STELS uses notary-median time for consensus timestamping:

  • Primary: Median time from notary validators - prevents time manipulation attacks
  • Fallback: System NTP if notary median unavailable
  • Max Skew: N/Ams maximum allowed clock difference
  • Enforcement: Skew violations trigger enforcement actions at 1000ms threshold

Notary Registry & Slashing

Validators must stake a minimum amount to participate. Slashing penalties apply for misbehavior:

  • Min Stake: 100000000000 not in the published document required to become validator
  • Bonding Period: 3 days before stake becomes active
  • Unbonding Period: 7 days to withdraw stake
  • Double Sign Penalty: 5% of stake slashed
  • Surround Vote Penalty: 2% of stake slashed
  • Key Rotation: Minimum 1 hours between key rotations
PropertyTypeDescriptionRequired
min_stake
any
-No
bonding_ms
integer
-No
unbonding_ms
integer
-No
slash
object
-
Yes
key_rotation
object
-
Yes
identity_spec
object
-
Yes

Finality Certificates

Finality is achieved through cryptographic certificates signed by the committee:

  • Hash Algorithm: sha256
  • Signature Algorithm: ecdsa-secp256k1-multi
  • Signers per certificate: up to 256

Protocol Specification

Defines transaction format, virtual machine version, canonicalization algorithm, and encoding standards.

Transaction Version
smart-1.0
VM Version
intrinsics-1
Canonicalization
gls-det-1
Encoding
utf-8

Canonicalization Algorithm (gls-det-1)

STELS uses GLS-DET-1 (Gliesereum Deterministic) canonicalization to ensure all nodes produce identical transaction hashes:

  • Objects: Keys sorted lexicographically (byte-wise), undefined values omitted, null only if explicitly present
  • Arrays: Order preserved (critical for transaction structure)
  • Numbers: JSON.stringify semantics (no precision loss)
  • Strings: UTF-8 encoding, no Unicode normalization
  • Booleans/Null: Standard JSON representation
{ "gls-det-1": { "arrays": "keep order", "booleans_null": "JSON", "note": "This is a formalization of the provided deterministicStringify() with NFC normalization and integer-only numbers for regulatory compliance", "numbers": "integer only (no float, no exponential notation); use string for decimal(8) amounts", "objects": "sort keys lexicographically (byte-wise), omit keys with missing value, serialize values recursively; null is preserved only if explicitly present", "strings": "UTF-8 with NFC normalization (Unicode Normalization Form C)" } }

Signing Domains

Different message types use separate signing domains to prevent cross-protocol attacks:

COSIGN
["STELS-COSIGN",1,"chain:1"]

Cosignature approvals

CRL
["STELS-CRL",1,"v1","chain:1"]

Certificate revocation lists

GENESIS
["STELS-GENESIS",1,"v1","chain:1"]

Genesis document signatures

NOTARY
["STELS-NOTARY",1,"v2","chain:1"]

Notary certificates

TX
["STELS-TX",1,"smart-1.0","chain:1"]

Transaction signatures

Each domain includes context identifier, chain_id, and version. Runtime validates that chain_id matches network.chain_id to prevent cross-chain attacks.

Verifiable Execution (Optional)

Not enabled in current configuration

PropertyTypeDescriptionRequired
tx_version
string
-No
vm_version
string
-No
canonicalization
string
-No
encoding
string
-No
smart_execution
object
-
Yes
genesis_validation
object
-
Yes
canon_specs
object
-No
sign_domains
object
-
Yes

Monetary Policy & Rewards

Rewards are paid per unit of execution, with a per-epoch cap. A verifiable random function spreads selection so the same participants are not favoured, and a Gini threshold raises the penalty multiplier when reward distribution concentrates. The adaptive engine that would tune these at runtime is defined in the document and is disabled in this configuration.

Supply Cap
2100000000000000
Minting
disabled
Rewards Mode
execution-mining
Rewards Source
treasury

Current Monetary Policy

Supply Cap
2100000000000000
Minting
disabled
Rewards Mode
execution-mining
Rewards Source
treasury
Rate per Unit
100000
Max per Epoch
159800000

The values recorded in the signed artifact — supply, decimals, chain id, genesis balances and stake — are listed in the genesis parameter reference. They are the values fixed at chain creation, not live cluster state.

Execution-Mining Rewards

Nodes receive native rewards for executing operations. Rewards are distributed based on stake, lock duration, mined history, and behavioral reputation.

Adaptive Economics

The network automatically adjusts economic parameters based on inflation, activity, and centralization metrics.

PropertyTypeDescriptionRequired
mode
string
-No
source
string
-No
unit
string
-No
rate_per_unit
string
-No
max_per_epoch
string
-No
disable_on_treasury_empty
boolean
-No
fee_reward_ratio
any
-No
caps
object
-
Yes
invariants
array
-No
staking
object
-
Yes
vrf_fairness
object
-
Yes
decentralization_guard
object
-
Yes
layers
object
-
Yes
rating_model
object
-
Yes

Security Features

Signatures must use canonical DER with low-S, so a valid signature has exactly one encoding. Enclave attestation and verifiable execution proofs are defined in the schema and are not enabled in this configuration.

DER Signature Requirements

STELS enforces strict DER (Distinguished Encoding Rules) signature requirements:

  • Low S: Required - prevents signature malleability (S value must be ≤ n/2)
  • Canonical DER: Required - signatures must use canonical DER encoding

These requirements prevent signature replay attacks and ensure deterministic signature verification across all nodes.

Enclave Security (TEE)

Trusted Execution Environment (TEE) provides hardware-backed security:

  • Attestation Type: N/A - Intel SGX, ARM TrustZone, or WASM-enclave
  • Verification Required: Optional
  • Benefits: Nodes provably execute instructions, preventing state forgery and operation simulation
  • Ideal For: Blockless-runtime where nodes don't need to verify all operations, but can verify execution honesty

Verifiable Execution Proofs

Not enabled in current configuration

Deterministic Execution

Pure-deterministic execution profile ensures security through determinism:

  • No External I/O: Network and filesystem access denied during execution
  • Logical Time: Uses transaction timestamp, not system clock
  • Controlled State: Limited access to accounts, transaction index, and KV storage
  • Security Benefit: Prevents timing attacks, external data injection, and non-deterministic behavior
PropertyTypeDescriptionRequired
der_requirements
object
-
Yes

Governance & Upgrades

Network upgrades require 2/3 majority threshold. Emergency pause functionality is available with strict controls.

PropertyTypeDescriptionRequired
upgrade_envelope
object
-
Yes
revocation
object
-
Yes
emergency_pause
object
-
Yes

Intrinsics & Smart Operations

STELS provides deterministic intrinsic functions for smart contract execution. Operations include assertions, transfers, and event emission.

Determinism Profile

STELS enforces pure-deterministic execution to ensure all nodes produce identical results:

  • Network I/O: Denied - no external network access during execution
  • Filesystem: Denied - no file system access
  • Clock: Logical-only - uses transaction timestamp, not system clock
  • State Access: Limited to accounts, tx_index, kv - controlled state access

This ensures that the same transaction produces identical results on all nodes, enabling consensus without requiring all nodes to execute every transaction.

Intrinsic Functions Registry

Available intrinsic functions for smart contract execution:

smart.exec@1.0.0
Active
Arguments:
  • ops: array<smart_op> (max: 32) (max: 8192B)
  • memo: string (max: 256B)
Preconditions:
  • fee >= fee_min(size(tx), ops)
  • timestamp within tx_rules.timestamp_rule
  • accounts[from].last_tx_hash == prev_hash OR (prev_hash == null AND accounts[from].last_tx_hash == null)
  • all asserts in ops hold (time/balance/compare)
State Transitions:
  • apply transfers in order; each reduces accounts[from] and increases accounts[to]
  • collect fee to parameters.treasury_address
  • append events (emit) to tx_index (bounded)
  • accounts[from].last_tx_hash = tx_hash
notary.registry@1.0.0
Active
Arguments:
  • op: enum(register,stake,unstake,rotate,exit)
  • consensus_pubkey: string
  • vrf_pubkey: string
  • proof_of_possession: string
  • pubkey: string
  • amount: string

Dispatch & Version Resolution

Function dispatch uses semantic versioning for compatibility:

  • Resolver: max-satisfying - selects highest compatible version
  • Policy: prefer_latest_minor - prefers latest minor version
  • Allowed Versions: ~1.0
  • Denied Versions:
  • Unknown Methods: reject - strict validation

Enclave Security (Optional)

TEE/WASM Enclave: Provides verifiable execution honesty through trusted execution environments.

  • Attestation: N/A - Intel SGX, ARM TrustZone, or WASM-enclave
  • Verification Required: No
  • Benefits: Prevents nodes from forging runtime state, simulating operations, or artificially inflating metrics

Smart Operations Specification

Available smart operations and their limits:

Operation Types:
assert.time

require now<=before_ms and/or now>=after_ms relative to tx.timestamp

assert.balance

require balance[address] >= gte

assert.compare

pure arithmetic compare

transfer

move funds from tx.from to to

emit.event

append small, indexable event; no external effects

Max Operations
32
Max Ops Bytes
8192B
Max Event Data
1024B
PropertyTypeDescriptionRequired
security
object
-
Yes
determinism
object
-
Yes
registry
array
-No
dispatch
object
-
Yes

State Management

Distributed key-value storage with local data ownership. State includes accounts, aliases, and registries.

PropertyTypeDescriptionRequired
accounts
array
-No
aliases
object
-No
registries
object
-
Yes

Complete Genesis Document

Full genesis.json document with all configuration data, state, and parameters.

Genesis Information

activation_time:
2025-12-14T18:19:16.750Z(12/14/2025, 6:19:16 PM UTC)
string
created_at:
2025-12-14T18:04:16.750Z(12/14/2025, 6:04:16 PM UTC)
string
id:
"genesis:sha256:982839404f558bbe53e0d21cbe01b17de035ebc83537d4182e78389bfb04f333"
string
issuer:
object
2 items
contact:
string
org:
"Gliesereum Ukraine LLC"
string
previous_genesis_id:
null
null
upgrade_policy:
object
3 items
allowed:
true
boolean
envelope_domain:
array
4 items
[0]:
"STELS-GENESIS"
string
[1]:
1
number
[2]:
"v1"
string
[3]:
"chain:1"
string
requires_threshold:
object
3 items
k:
4
number
n:
5
number
type:
"k-of-n"
string

Content Hash & Verification

SHA256 hash of the genesis document content for integrity verification.

Content Information

genesis_signing_view_exclude:
array
3 items
[0]:
"/signatures"
string
[1]:
"/content/hash"
string
[2]:
"/content/size"
string
hash:
sha256:982839404f558bbe53e0d21cbe01b17de035ebc83537d4182e78389bfb04f333
string
hash_alg:
"sha256"
string
hash_scope:
"gls-det-1(document_without_signatures_and_content_hash)"
string
size:
35,574
number
size_scope:
"utf8-bytes(gls-det-1(document_without_signatures_and_content_hash))"
string

Protocol Configuration

Transaction version, VM version, canonicalization, and encoding settings from genesis document.

Protocol Settings

canon_specs:
object
1 item
gls-det-1:
object
6 items
arrays:
"keep order"
string
booleans_null:
"JSON"
string
note:
"This is a formalization of the provided deterministicStringify() with NFC normalization and integer-only numbers for regulatory compliance"
string
numbers:
"integer only (no float, no exponential notation); use string for decimal(8) amounts"
string
objects:
"sort keys lexicographically (byte-wise), omit keys with missing value, serialize values recursively; null is preserved only if explicitly present"
string
strings:
"UTF-8 with NFC normalization (Unicode Normalization Form C)"
string
canonicalization:
"gls-det-1"
string
encoding:
"utf-8"
string
genesis_validation:
object
3 items
error_codes:
true
boolean
failure_policy:
"reject-and-halt"
string
procedure:
array
7 items
[0]:
"normalize_state_accounts_order"
string
[1]:
"canonicalize"
string
[2]:
"compute_hash"
string
[3]:
"verify_signatures"
string
[4]:
"verify_stake_invariants"
string
[5]:
"verify_supply_conservation"
string
[6]:
"verify_compliance_flags"
string
sign_domains:
object
5 items
cosign:
array
3 items
[0]:
"STELS-COSIGN"
string
[1]:
1
number
[2]:
"chain:1"
string
crl:
array
4 items
[0]:
"STELS-CRL"
string
[1]:
1
number
[2]:
"v1"
string
[3]:
"chain:1"
string
genesis:
array
4 items
[0]:
"STELS-GENESIS"
string
[1]:
1
number
[2]:
"v1"
string
[3]:
"chain:1"
string
notary:
array
4 items
[0]:
"STELS-NOTARY"
string
[1]:
1
number
[2]:
"v2"
string
[3]:
"chain:1"
string
tx:
array
4 items
[0]:
"STELS-TX"
string
[1]:
1
number
[2]:
"smart-1.0"
string
[3]:
"chain:1"
string
smart_execution:
object
10 items
fuel_metering:
true
boolean
fuel_overhead:
object
5 items
canonicalization:
30
number
parsing:
50
number
signature_validation:
100
number
state_access:
50
number
total:
230
number
fuel_per_op:
object
5 items
max_cpu_per_tx_ms:
200
number
max_fuel_per_tx:
2,000
number
model:
"host-native-intrinsics"
string
sandbox:
object
3 items
memory_isolated:
true
boolean
no_syscalls:
true
boolean
type:
"process-isolation"
string
syscalls_allowed:
false
boolean
turing_complete:
false
boolean
worst_case_cpu_bounds:
object
5 items
tx_version:
"smart-1.0"
string
vm_version:
"intrinsics-1"
string

Wallet Protocol

Cryptographic algorithms, signature encoding, and key formats for wallet operations.

Cryptographic Stack

STELS uses gliesereum-core wallet protocol with standardized cryptographic primitives:

  • Protocol Name: gliesereum-core
  • Version: 1.0
  • Signature Algorithm: ecdsa-secp256k1 - Elliptic Curve Digital Signature Algorithm on secp256k1 curve
  • Hash Algorithm: sha256 - SHA-256 for message hashing
  • Signature Encoding: der-hex(lowS,canonical) - DER-encoded with low-S and canonical form requirements
  • ECDSA Nonce: rfc6979 - RFC 6979 deterministic nonce generation
  • Message Canonicalization: gls-det-1 - same algorithm as transaction canonicalization
  • Public Key Format: secp256k1-compressed-hex - 33-byte compressed public key (0x02/0x03 prefix + 32-byte x-coordinate)
Signature Generation Process:
  1. Canonicalize message using gls-det-1 algorithm
  2. Compute SHA256 hash of canonicalized message
  3. Generate deterministic nonce using RFC 6979 (prevents nonce reuse attacks)
  4. Compute ECDSA signature (r, s) on secp256k1 curve
  5. Apply low-S normalization (s ≤ n/2) to prevent signature malleability
  6. Encode signature in DER format (canonical)
  7. Convert to hexadecimal string

Security Features

  • Deterministic Nonces: RFC 6979 ensures nonce is deterministically derived from message and private key, preventing nonce reuse vulnerabilities
  • Low-S Requirement: S value normalized to ≤ n/2, preventing signature malleability and ensuring unique signature representation
  • Canonical DER: Strict DER encoding requirements prevent invalid signature formats
  • Message Canonicalization: Same gls-det-1 algorithm ensures deterministic message hashing across all implementations

Wallet Protocol Configuration

ecdsa_nonce:
"rfc6979"
string
hash_alg:
"sha256"
string
message_canon:
"gls-det-1"
string
name:
"gliesereum-core"
string
pubkey_format:
"secp256k1-compressed-hex"
string
sig_encoding:
"der-hex(lowS,canonical)"
string
sign_alg:
"ecdsa-secp256k1"
string
version:
"1.0"
string

Address Encoding

Address format, encoding scheme, and checksum algorithm.

Address Format (Base58)

STELS uses Base58 encoding for addresses, similar to Bitcoin but optimized for STELS network:

  • Version Byte: 98 - network identifier (0x62 in hex)
  • Public Key Format: secp256k1-compressed-hex - compressed secp256k1 public key
  • Payload: version_byte || RIPEMD160(SHA256(pubkey_compressed))
  • Checksum: SHA256(version_byte||h160)[0..4] (custom-checksum-v1, not base58check) - first 4 bytes of double SHA256
  • Encoding: base58 - Base58Check encoding
Address Generation Process:
  1. Compress secp256k1 public key (33 bytes: 0x02/0x03 prefix + 32-byte x-coordinate)
  2. Compute SHA256 hash of compressed public key
  3. Compute RIPEMD160 hash of SHA256 result (20 bytes = h160)
  4. Prepend version byte (98) to h160
  5. Compute checksum: SHA256(SHA256(version_byte || h160))[0..4]
  6. Append checksum to (version_byte || h160)
  7. Encode entire payload in Base58

Base58 encoding excludes 0, O, I, l to prevent visual confusion. Addresses typically start with 'g' for STELS network.

Addressing Configuration

address_encoding:
array
1 item
[0]:
"base58"
string
address_prefix:
"g"
string
checksum:
"SHA256(version_byte||h160)[0..4] (custom-checksum-v1, not base58check)"
string
payload:
"version_byte || RIPEMD160(SHA256(pubkey_compressed))"
string
preferred_encoding:
"base58"
string
pubkey_format:
"secp256k1-compressed-hex"
string
version_byte:
98
number

Consensus Configuration

Complete consensus mechanism configuration including committee selection, notary registry, and finality certificates.

Consensus Configuration

committee:
object
8 items
activation_delay_epochs:
1
number
bootstrap:
object
4 items
enabled:
true
boolean
initial_committee_size:
5
number
churn_limit:
object
2 items
enter_frac:
0.08
number
exit_frac:
0.08
number
committee_size:
null
null
epoch_ms:
60,000
number
mode:
"all-active-notaries"
string
quorum_rule:
object
4 items
den:
3
number
num:
2
number
round_up:
true
boolean
type:
"fraction"
string
selection:
object
8 items
max_committee_size:
256
number
rng:
"vrf"
string
seed_source:
"prev_epoch_beacon"
string
vrf_alg:
"ed25519-vrf"
string
vrf_key_required:
true
boolean
vrf_pubkey_format:
"ed25519-pubkey-hex"
string
weight:
"stake"
string
description:
"Event stream with notarized finality via epoch committees."
string
finality_certificate:
object
3 items
alg:
"ecdsa-secp256k1-multi"
string
encoding:
object
1 item
hash_alg:
"sha256"
string
network_clock_skew_ms:
500
number
notary_envelope:
object
3 items
equivocation_policy:
object
2 items
action:
"ban"
string
ban_ms:
3,600,000
number
schema_ref:
"stels://schemas/notary-certificate-v2.json"
string
sign_domain:
array
4 items
[0]:
"STELS-NOTARY"
string
[1]:
1
number
[2]:
"v2"
string
[3]:
"chain:1"
string
notary_registry:
object
6 items
bonding_ms:
259,200,000
number
identity_spec:
object
4 items
consensus_pubkey_format:
"secp256k1-compressed-hex"
string
proof_of_possession_required:
true
boolean
vrf_pubkey_format:
"ed25519-pubkey-hex"
string
key_rotation:
object
1 item
min_interval_ms:
3,600,000
number
min_stake:
100,000,000,000
number
slash:
object
2 items
double_sign:
0.05
number
surround_vote:
0.02
number
unbonding_ms:
604,800,000
number
state_root:
object
6 items
algorithm:
"sha256"
string
canonicalization:
"gls-det-1"
string
input:
"gls-det-1({accounts,aliases,registries})"
string
model:
"hash-of-canonical-json"
string
note:
"State root includes: accounts, aliases, registries (from genesis.state). Excludes: mempool, logs, metrics, audit namespaces. Accounts MUST be sorted by address (lexicographic ascending) before computation. genesis.id MUST equal content.hash (both from same document). NORMATIVE SPECIFICATIONS: 1. Proof-of-Possession (PoP) Byte Specification: msg = SHA256("STELS-POP" || 0x00 || uint32_be(chain_id) || consensus_pubkey_bytes || vrf_pubkey_bytes) Where: - "STELS-POP" = UTF-8 bytes (9 bytes) - 0x00 = separator (1 byte) - uint32_be(chain_id) = chain_id as uint32 big-endian (4 bytes) - consensus_pubkey_bytes = raw 33-byte secp256k1 compressed key - vrf_pubkey_bytes = raw 32-byte ed25519 public key Signature: ECDSA secp256k1, DER encoded, low-S, verified against consensus_pubkey 2. Committee Root Algorithm (NORMATIVE): - Select leaves: All members from bootstrap.initial_members (or current committee for epoch > 0) - Extract addresses: Get base58 address (kid) from each member - Sort addresses: Sort by address_bytes (lexicographic byte-wise, ascending) - Hash each leaf: leaf_hash = SHA256("committee-leaf" || address_bytes) * domain_tag = UTF-8 bytes of "committee-leaf" (15 bytes) * address_bytes = base58 decode of address → raw bytes - Merkle construction: Pairwise SHA256(left_hash || right_hash), duplicate-last for odd nodes - committee_root = Merkle root (SHA256 hex, 64 chars) 3. Registry Root Algorithm (NORMATIVE): - Select leaves: All accounts where stake.status == "active" AND stake.amount >= min_stake - Extract addresses: Get base58 address from each account - Sort addresses: Sort by address_bytes (lexicographic byte-wise, ascending) - Hash each leaf: leaf_hash = SHA256("registry-leaf" || address_bytes) * domain_tag = UTF-8 bytes of "registry-leaf" (14 bytes) * address_bytes = base58 decode of address → raw bytes - Merkle construction: Pairwise SHA256(left_hash || right_hash), duplicate-last for odd nodes - registry_root = Merkle root (SHA256 hex, 64 chars)"
string
scope:
array
3 items
[0]:
"state.accounts"
string
[1]:
"state.aliases"
string
[2]:
"state.registries"
string
time_source:
object
3 items
fallback:
"system-ntp"
string
mode:
"notary-median"
string
skew_enforcement_ms:
1,000
number
type:
"blockless-quorum"
string
window_ms:
5,000
number

Intrinsic Functions

Registry of intrinsic functions, determinism profile, and dispatch configuration.

Intrinsics Configuration

determinism:
object
3 items
io:
object
3 items
clock:
"logical-only"
string
filesystem:
"denied"
string
network:
"denied"
string
profile:
"pure-deterministic"
string
state_access:
array
3 items
[0]:
"accounts"
string
[1]:
"tx_index"
string
[2]:
"kv"
string
dispatch:
object
4 items
policy:
"prefer_latest_minor"
string
resolver:
"max-satisfying"
string
semver:
object
2 items
deny:
array
empty
unknown_method:
"reject"
string
registry:
array
2 items
[0]:
object
8 items
name:
"smart.exec"
string
version:
"1.0.0"
string
[1]:
object
3 items
name:
"notary.registry"
string
version:
"1.0.0"
string
security:
object
1 item
enclave:
object
1 item
enabled:
false
boolean

Smart Operations Specification

Available smart operations, their schemas, semantics, and limits.

Smart Operations

limits:
object
3 items
max_event_data_bytes:
1,024
number
max_ops:
32
number
max_ops_bytes:
8,192
number
types:
array
5 items
[0]:
object
3 items
op:
"assert.time"
string
semantics:
"require now<=before_ms and/or now>=after_ms relative to tx.timestamp"
string
[1]:
object
3 items
op:
"assert.balance"
string
semantics:
"require balance[address] >= gte"
string
[2]:
object
3 items
op:
"assert.compare"
string
semantics:
"pure arithmetic compare"
string
[3]:
object
3 items
op:
"transfer"
string
semantics:
"move funds from tx.from to to"
string
[4]:
object
3 items
op:
"emit.event"
string
semantics:
"append small, indexable event; no external effects"
string

Network Parameters

Fee structure, currency settings, limits, treasury address, KV limits, mempool, and gate configuration.

Network Parameters

currency:
object
4 items
decimals:
8
number
fee_unit:
"10^8 SLI"
string
name:
"Stels Liq Index"
string
symbol:
"SLI"
string
fees:
object
3 items
base:
10,000
number
currency:
"SLI"
string
per_byte:
20
number
gate:
object
5 items
eviction:
"lru"
string
max_per_address:
512
number
max_total:
2,000,000
number
on_expire:
"reject"
string
ttl_ms:
3,600,000
number
kv_limits:
object
1 item
value_max_bytes:
65,536
number
limits:
object
2 items
max_signatures:
16
number
max_tx_size:
65,536
number
mempool:
object
6 items
max_pending_bytes_per_address:
8,000,000
number
max_pending_per_address:
256
number
priority:
"fee_per_weighted_byte"
string
reject_duplicate_prev_hash:
true
boolean
reject_siblings_on_prev_hash:
true
boolean
ttl_ms:
300,000
number
treasury_address:
ghJejxMRW5V5ZyFyxsn9tqQ4BNcSvmqMrv
string

Transaction Rules

Transaction validation rules, fee calculation, mempool priority, raw policy, and methods policy.

Transaction Hash & Signing View

Transaction hash is computed from the signing view, which excludes signature fields:

  • Hash Formula: sha256:982839404f558bbe53e0d21cbe01b17de035ebc83537d4182e78389bfb04f333
  • Excluded Fields: signature, signatures, cosigs, verified, status, validators, hash
  • Canonicalization: Uses gls-det-1 algorithm to ensure deterministic serialization
  • Encoding: UTF-8 encoding before hashing

The signing view ensures that signatures are computed over a deterministic representation, preventing signature malleability attacks.

Fee Calculation

Transaction fees are calculated using a linear formula based on transaction size and operations:

fee_min = fees.base + fees.per_byte * tx_bytes + Σ per_op(ops)
  • Base Fee: 10000 SLI - minimum fee per transaction
  • Per Byte: 20 SLI - fee for each byte of transaction data
  • Raw Per Byte: not in the published document SLI - higher fee for raw data (attached files)
  • Per Operation: Additional fee for each smart operation (assert, transfer, emit)
  • Rounding: compare as decimals with 8 fraction digits (no binary rounding)

Example: A transaction with 1000 bytes (no raw data) and 3 operations would pay: base (10000) + (1000 × 20) + (3 × per_op_fee) = total fee

Mempool Priority

Transactions are prioritized in the mempool based on fee per weighted byte:

  • Raw Weight: not in the published document - raw data is weighted higher
  • Weighted Size: tx_bytes
  • Priority Score: fee / weighted_size - higher score = higher priority
  • Tie Breaker: lower tx_bytes first - smaller transactions preferred when scores equal

This ensures that transactions with higher fee density (fee per byte) are processed first, optimizing network throughput and revenue.

Transaction Validation Rules

  • Time Window: 60000ms (60s) - transactions must be within this window
  • Timestamp Rule: abs(tx.timestamp - now) <= 5000
  • Max Size: 65536 bytes (64KB)
  • Min Fee: 10000 SLI
  • Previous Hash: Required - prevents transaction replay and ensures ordering
  • Signature Binding: require any(s in signatures: s.address == tx.from)

Raw Data Policy

Transactions can include raw data (attached files) with specific constraints:

  • Allowed: No
  • Max Raw Bytes: not in the published document - dynamic limit based on available space
  • Encoding: utf8
  • Require Hash: No - raw data must be hashed
  • Bind in Signature: No - raw hash included in signing view
  • MIME Types: text/plain
  • PII Allowed: No
  • TTL: N/A

Cosignatures (Multi-Sig)

Transactions can require cosignatures for multi-signature approval:

  • Max Methods: 8 cosignatures per transaction
  • Max Methods Bytes: 4096B
  • Signature Encoding: der-hex(lowS)
  • Key Format: secp256k1-compressed-hex
  • Rate Limit: 60 cosignatures per approver per minute
  • Action Fee: 1000 SLI
  • Address Match: Required

Fair Ordering (MEV Resistance)

STELS implements VRF-based fair ordering to prevent front-running and MEV attacks:

  • Mode: vrf
  • Seed Source: not in the published document
  • Benefits: Transactions are ordered by VRF timestamp, preventing predictable manipulation and front-running attacks

In blockless-quorum systems, MEV is minimal, but VRF ordering provides additional protection against transaction ordering manipulation.

Complete Transaction Rules

admission_skew_ms:
5,000
number
fair_ordering:
object
1 item
mode:
"vrf"
string
fee_calculation:
object
4 items
canon:
"gls-det-1(signing_view) encoded as UTF-8"
string
formula_linear:
"fee_min = fees.base + fees.per_byte * tx_bytes + Σ per_op(ops)"
string
rounding:
"compare as decimals with 8 fraction digits (no binary rounding)"
string
tx_bytes:
"byteLength(UTF8(gls-det-1(signing_view)))"
string
fee_policy_composition:
"effective_min_fee = max(tx_rules.min_fee, fees.base) + fees.per_byte * tx_bytes + Σ per_op(ops)"
string
fee_type_in_signing_view:
"string"
string
fees_currency:
"SLI"
string
finalization_skew_ms:
500
number
max_tx_size:
65,536
number
mempool_priority:
object
3 items
score:
"fee / weighted_size"
string
tie_breaker:
"lower tx_bytes first"
string
weighted_size:
"tx_bytes"
string
methods_policy:
object
5 items
binding:
"methods MUST be part of signing_view"
string
cosign:
object
7 items
deadline_required:
false
boolean
kid_format:
"secp256k1-compressed-hex"
string
require_approver_address_match:
true
boolean
sig_encoding:
"der-hex(lowS)"
string
max_methods:
8
number
max_methods_bytes:
4,096
number
types:
array
5 items
[0]:
"cosign"
string
[1]:
"governance.upgrade"
string
[2]:
"governance.pause"
string
[3]:
"governance.unpause"
string
[4]:
"notary.registry"
string
min_fee:
10,000
number
now_definition:
object
2 items
finalization:
"notary_median_time"
string
mempool:
"local_validator_time"
string
raw_policy:
object
2 items
allowed:
false
boolean
note:
"All raw-related fields are omitted when allowed=false (mainnet-hard: no dead parameters)"
string
require_prev_hash:
"per-address-seq"
string
signature_binding:
"require any(s in signatures: s.address == tx.from)"
string
signing_domain_rule:
object
4 items
domain_field_purpose:
"identifier"
string
domain_field_validation:
"must_match_first_element"
string
domain_source:
"protocol.sign_domains.tx"
string
message_to_sign_includes:
"full_domain_array"
string
signing_view_exclude:
array
7 items
[0]:
"signature"
string
[1]:
"signatures"
string
[2]:
"cosigs"
string
[3]:
"verified"
string
[4]:
"status"
string
[5]:
"validators"
string
[6]:
"hash"
string
time_window_ms:
60,000
number
timestamp_max_skew_ms:
5,000
number
timestamp_rule:
"abs(tx.timestamp - now) <= 5000"
string
tx_hash:
sha256:982839404f558bbe53e0d21cbe01b17de035ebc83537d4182e78389bfb04f333
string

Transaction Schema

JSON Schema definition for smart transactions.

Transaction Schema

governance:
object
6 items
$id:
"stels://schemas/tx-governance-v1.json"
string
$schema:
"https://json-schema.org/draft/2020-12/schema"
string
additionalProperties:
false
boolean
required:
array
8 items
[0]:
"type"
string
[1]:
"method"
string
[2]:
"from"
string
[3]:
"fee"
string
[4]:
"currency"
string
[5]:
"prev_hash"
string
[6]:
"timestamp"
string
[7]:
"signatures"
string
title:
"STELS Governance TX v1.0"
string
type:
"object"
string
notary_registry:
object
6 items
$id:
"stels://schemas/tx-notary-registry-v1.json"
string
$schema:
"https://json-schema.org/draft/2020-12/schema"
string
additionalProperties:
false
boolean
required:
array
9 items
[0]:
"type"
string
[1]:
"method"
string
[2]:
"from"
string
[3]:
"fee"
string
[4]:
"currency"
string
[5]:
"prev_hash"
string
[6]:
"timestamp"
string
[7]:
"signatures"
string
[8]:
"registry_data"
string
title:
"STELS Notary Registry TX v1.0"
string
type:
"object"
string
smart:
object
7 items
$id:
"stels://schemas/tx-smart-1.0.json"
string
$schema:
"https://json-schema.org/draft/2020-12/schema"
string
additionalProperties:
false
boolean
properties:
object
9 items
required:
array
9 items
[0]:
"type"
string
[1]:
"method"
string
[2]:
"args"
string
[3]:
"from"
string
[4]:
"fee"
string
[5]:
"currency"
string
[6]:
"prev_hash"
string
[7]:
"timestamp"
string
[8]:
"signatures"
string
title:
"STELS Smart TX v1.0"
string
type:
"object"
string

Schema Definitions

Additional schema definitions including notary certificates.

Schema Definitions

execution_receipt_v1:
object
6 items
$id:
"stels://schemas/execution-receipt-v1.json"
string
$schema:
"https://json-schema.org/draft/2020-12/schema"
string
additionalProperties:
false
boolean
properties:
object
7 items
required:
array
7 items
[0]:
"epoch"
string
[1]:
"worker_id"
string
[2]:
"tx_hash"
string
[3]:
"ops_hash"
string
[4]:
"ops_count"
string
[5]:
"state_root"
string
[6]:
"notary_certificate"
string
type:
"object"
string
notary_certificate_v2:
object
6 items
$id:
"stels://schemas/notary-certificate-v2.json"
string
$schema:
"https://json-schema.org/draft/2020-12/schema"
string
additionalProperties:
false
boolean
properties:
object
11 items
required:
array
10 items
[0]:
"tx_hash"
string
[1]:
"chain_id"
string
[2]:
"committee_epoch"
string
[3]:
"committee_root"
string
[4]:
"committee_size"
string
[5]:
"alg"
string
[6]:
"signatures"
string
[7]:
"timestamp"
string
[8]:
"state_root"
string
[9]:
"notary_threshold"
string
type:
"object"
string

Initial Network State

Initial accounts, aliases, and registries configuration.

Initial State

accounts:
array
5 items
[0]:
object
4 items
address:
gYjDnckjrKCw3CYVerH1LMbgTWv3dmg6Hu
string
balance:
"100000000000"
string
last_tx_hash:
null
null
[1]:
object
4 items
address:
ghJejxMRW5V5ZyFyxsn9tqQ4BNcSvmqMrv
string
balance:
"4596000000000"
string
last_tx_hash:
null
null
[2]:
object
4 items
address:
gncGHDzymYmC37EPEK3kk3kWp2fJ9W52tH
string
balance:
"100000000000"
string
last_tx_hash:
null
null
[3]:
object
4 items
address:
gohgoWbJK7dMf5MUKKtthRJdCAMmoVqDMo
string
balance:
"100000000000"
string
last_tx_hash:
null
null
[4]:
object
4 items
address:
gpcr2Uqbqg3zt6a3VkkCcMm2s2xUtvT2L9
string
balance:
"100000000000"
string
last_tx_hash:
null
null
aliases:
object
1 item
treasury:
ghJejxMRW5V5ZyFyxsn9tqQ4BNcSvmqMrv
string
registries:
object
3 items
genesis:
"genesis:sha256:982839404f558bbe53e0d21cbe01b17de035ebc83537d4182e78389bfb04f333"
string
intrinsics:
array
2 items
[0]:
string
[1]:
string
notary:
object
5 items
bootstrap:
true
boolean
committee_root:
08b777a873dff03ef9c191229f64f83ff3999718aaddafda8a0626b6b72e5947
string
epoch:
0
number
registry_root:
b77f290efc42759d04fb7b13159e0eae5d0ac694988bc5105bc202e699c08893
string
total_stake:
"500000000000"
string

Complete Monetary Policy

Full monetary policy configuration including supply cap, minting, faucet, rewards system, and adaptive engine.

Monetary Policy

adaptive_engine:
object
4 items
activity_target:
10,000
number
adjustment_rules:
object
3 items
activity_decrease:
"decrease_min_stake"
string
centralization_increase:
"increase_lock_range"
string
inflation_increase:
"decrease_rate"
string
enabled:
false
boolean
inflation_target:
0.05
number
circulating_supply_model:
object
3 items
genesis_circulating:
"sum(state.accounts[*].balance)"
string
release_mechanism:
"treasury_reward_decrement"
string
uncirculated_supply:
"virtual_treasury_reserve"
string
disclaimer:
object
4 items
no_profit_guarantee:
true
boolean
rewards_are_fees:
true
boolean
staking_is_security_mechanism:
true
boolean
token_is_not_equity:
true
boolean
faucet:
object
2 items
cooldown_ms:
60,000
number
rate_per_request:
0
number
fee_distribution:
object
10 items
burn_bps:
0
number
distribution_addresses:
object
2 items
insurance_address:
gohgoWbJK7dMf5MUKKtthRJdCAMmoVqDMo
string
treasury_address:
ghJejxMRW5V5ZyFyxsn9tqQ4BNcSvmqMrv
string
distribution_algorithm:
object
4 items
insurance_method:
"fixed-address"
string
treasury_method:
"fixed-address"
string
validators_method:
"pro-rata-by-effective-stake"
string
workers_method:
"pro-rata-by-verified-ops"
string
distribution_rules:
object
2 items
validators_rule:
"pro-rata-by-effective-stake"
string
workers_rule:
"pro-rata-by-verified-ops"
string
insurance_bps:
1,000
number
total_bps:
10,000
number
treasury_bps:
2,000
number
validators_bps:
4,000
number
worker_verification:
object
5 items
invalid_ops_policy:
"discard-and-penalize"
string
model:
"notary-attested"
string
verification_epoch_window:
1
number
workers_bps:
3,000
number
minting:
"disabled"
string
rewards:
object
14 items
caps:
object
3 items
global_ops_cap_per_epoch:
1,598
number
overflow_policy:
"pro-rata-scale-down"
string
per_worker_ops_cap_per_epoch:
1,000
number
decentralization_guard:
object
4 items
enabled:
true
boolean
gini_threshold:
0.85
number
penalty_multiplier:
0.8
number
disable_on_treasury_empty:
true
boolean
fee_reward_ratio:
1
number
invariants:
array
1 item
[0]:
"max_per_epoch == rate_per_unit * caps.global_ops_cap_per_epoch"
string
layers:
object
3 items
execution:
true
boolean
worker_execution:
true
boolean
max_per_epoch:
"159800000"
string
mode:
"execution-mining"
string
rate_per_unit:
"100000"
string
rating_model:
object
7 items
mode:
"fair-stake-lock-mined-v1"
string
window_ms:
604,800,000
number
source:
"treasury"
string
staking:
object
4 items
currency:
"SLI"
string
max_stake:
10,000,000,000,000
number
min_stake:
100,000,000,000
number
required:
true
boolean
unit:
"smart_op"
string
vrf_fairness:
object
3 items
enabled:
true
boolean
seed_source:
"prev_epoch_beacon"
string
rewards_mode_switch:
object
3 items
bootstrap:
"treasury"
string
irreversible:
true
boolean
on_treasury_empty:
"fee-only"
string
supply_cap:
"2100000000000000"
string
treasury_policy:
object
9 items
accounting:
"decrement-only"
string
accounting_model:
"virtual-reserve-cap"
string
bootstrap_rule:
object
2 items
enabled:
true
boolean
max_multiplier:
2
number
currency:
"SLI"
string
reward_cap_per_epoch:
"159800000"
string
reward_cap_per_year:
"83990880000000"
string
reward_cap_total:
"420000000000000"
string
reward_pool_initial:
"420000000000000"
string
reward_pool_mode:
"virtual-ledger"
string

Security Configuration

DER requirements and security specifications.

Security Configuration

der_requirements:
object
2 items
canonical_DER:
true
boolean
lowS:
true
boolean

Governance Configuration

Upgrade envelope, revocation lists, and emergency pause configuration.

Governance Configuration

emergency_pause:
object
5 items
allowed:
true
boolean
max_duration_ms:
3,600,000
number
operational_during_pause:
object
3 items
governance_upgrade:
true
boolean
notary_operations:
true
boolean
state_queries:
true
boolean
pause_mode:
object
5 items
allow_unpause_tx:
true
boolean
finalization:
"deny_all_except_allowed_methods"
string
mempool_admission:
"deny_all_except_allowed_methods"
string
smart_exec:
true
boolean
trigger_threshold:
object
3 items
k:
4
number
n:
5
number
type:
"k-of-n"
string
revocation:
object
2 items
crl:
object
2 items
revoked:
array
empty
seq:
1
number
sign_domain:
array
4 items
[0]:
"STELS-CRL"
string
[1]:
1
number
[2]:
"v1"
string
[3]:
"chain:1"
string
upgrade_envelope:
object
3 items
schema:
object
1 item
sign_domain:
array
4 items
[0]:
"STELS-GENESIS"
string
[1]:
1
number
[2]:
"v1"
string
[3]:
"chain:1"
string
threshold:
object
3 items
k:
4
number
n:
5
number
type:
"k-of-n"
string

Signing Keys

Public keys used for genesis and upgrade signing.

Signing Keys

[0]:
object
6 items
alg:
"ecdsa-secp256k1"
string
kid:
ghJejxMRW5V5ZyFyxsn9tqQ4BNcSvmqMrv
string
not_after:
2028-01-01T05:00:00.000Z(1/1/2028, 5:00:00 AM UTC)
string
not_before:
2025-01-01T05:00:00.000Z(1/1/2025, 5:00:00 AM UTC)
string
public_key:
"03892f1c484b14f551c61fa997bb647fdfe84fabb48bc868696b07813e700ab631"
string
purpose:
array
2 items
[0]:
"genesis-sign"
string
[1]:
"upgrade-sign"
string
[1]:
object
6 items
alg:
"ecdsa-secp256k1"
string
kid:
gYjDnckjrKCw3CYVerH1LMbgTWv3dmg6Hu
string
not_after:
2028-01-01T05:00:00.000Z(1/1/2028, 5:00:00 AM UTC)
string
not_before:
2025-01-01T05:00:00.000Z(1/1/2025, 5:00:00 AM UTC)
string
public_key:
"036da3f9491d99e824e06a7d6aa4727a810fae8e9bea5c3054dad2a1c83a63bc9f"
string
purpose:
array
2 items
[0]:
"genesis-sign"
string
[1]:
"upgrade-sign"
string
[2]:
object
6 items
alg:
"ecdsa-secp256k1"
string
kid:
gohgoWbJK7dMf5MUKKtthRJdCAMmoVqDMo
string
not_after:
2028-01-01T05:00:00.000Z(1/1/2028, 5:00:00 AM UTC)
string
not_before:
2025-01-01T05:00:00.000Z(1/1/2025, 5:00:00 AM UTC)
string
public_key:
"02a4bc9ffcbd2e3baec54441adeb23d873caa38b16ab9cf5c6da1eb1ee21303cbf"
string
purpose:
array
2 items
[0]:
"genesis-sign"
string
[1]:
"upgrade-sign"
string
[3]:
object
6 items
alg:
"ecdsa-secp256k1"
string
kid:
gncGHDzymYmC37EPEK3kk3kWp2fJ9W52tH
string
not_after:
2028-01-01T05:00:00.000Z(1/1/2028, 5:00:00 AM UTC)
string
not_before:
2025-01-01T05:00:00.000Z(1/1/2025, 5:00:00 AM UTC)
string
public_key:
"03da5eed2f76a3be0ef446d15a82ac49234f6aafd25b06e81ffaefda59c1b1121e"
string
purpose:
array
2 items
[0]:
"genesis-sign"
string
[1]:
"upgrade-sign"
string
[4]:
object
6 items
alg:
"ecdsa-secp256k1"
string
kid:
gpcr2Uqbqg3zt6a3VkkCcMm2s2xUtvT2L9
string
not_after:
2028-01-01T05:00:00.000Z(1/1/2028, 5:00:00 AM UTC)
string
not_before:
2025-01-01T05:00:00.000Z(1/1/2025, 5:00:00 AM UTC)
string
public_key:
"03524783c7997e991c546d2dbd2928cef0fe9ab5902ddf5a5cc9b693433b9a0cda"
string
purpose:
array
2 items
[0]:
"genesis-sign"
string
[1]:
"upgrade-sign"
string

Document Signatures

Threshold signatures validating the genesis document.

Signatures

signers:
array
5 items
[0]:
object
3 items
alg:
"ecdsa-secp256k1"
string
kid:
ghJejxMRW5V5ZyFyxsn9tqQ4BNcSvmqMrv
string
sig:
"3045022100a158a562bb670f00df731b211c247324ab48d9dbd2df2f8968a67902c8400489022067b47667e9040aa726ded6b761dca1ded433bd12dd9e196e9caf6c32768ab3bf"
string
[1]:
object
3 items
alg:
"ecdsa-secp256k1"
string
kid:
gYjDnckjrKCw3CYVerH1LMbgTWv3dmg6Hu
string
sig:
"3045022100b1d87852916c3f20bc3f68657d2d41be328ea59ccfe086b44945d6f9e616569f022078be65fc232a28f32d68f003d45d34ed79a7f869731d8738c8c0316546836751"
string
[2]:
object
3 items
alg:
"ecdsa-secp256k1"
string
kid:
gohgoWbJK7dMf5MUKKtthRJdCAMmoVqDMo
string
sig:
"30450221009015e4313b252048f7805f2a7b35ac5b01bddd22a8b7353ba1935ccd68e20fcb02201337fd4b158b0badb130df1d8dccdcc18a49f84dbebf43388211139818d0f443"
string
[3]:
object
3 items
alg:
"ecdsa-secp256k1"
string
kid:
gncGHDzymYmC37EPEK3kk3kWp2fJ9W52tH
string
sig:
"3045022100b73c9e1499c7df55bb930a14af9469903a4f7512c21ae737676048e215ffba9c02206f48439d0c04537544d0787c3d5793799d762b4daff58f2dcef0fcf50f44dedb"
string
[4]:
object
3 items
alg:
"ecdsa-secp256k1"
string
kid:
gpcr2Uqbqg3zt6a3VkkCcMm2s2xUtvT2L9
string
sig:
"3044022040389f7e64be608a1f1b808ec0d24454c32fea469f4dcdde2d5bb83c9d4b0674022062b07a35008a0c152eacc305b6af822d6f90555e7ca019af8908b6fe57313c6c"
string
threshold:
object
3 items
k:
4
number
n:
5
number
type:
"k-of-n"
string

STELS Policy

Policy profile, strict mode, and rules version.

STELS Policy

profile:
"mainnet-hard"
string
rules_version:
"1.0"
string
strict_mode:
true
boolean

Observability Configuration

Metrics and logging configuration.

Observability

logging:
object
1 item
level:
"info"
string
metrics:
object
2 items
enabled:
true
boolean
endpoints:
array
empty

Token Metadata

Token name, symbol, decimals, description, contact, website, and icon.

STELS Runtime Configuration

Storage namespaces and communication channels.

Runtime Configuration

channels:
array
6 items
[0]:
object
2 items
id:
"staking/events"
string
kind:
"pubsub"
string
[1]:
object
2 items
id:
"workers/events"
string
kind:
"pubsub"
string
[2]:
object
2 items
id:
"training/events"
string
kind:
"stream"
string
[3]:
object
2 items
id:
"market/orderbook"
string
kind:
"stream"
string
[4]:
object
2 items
id:
"logs"
string
kind:
"stream"
string
[5]:
object
2 items
id:
"audit"
string
kind:
"stream"
string
storage:
object
1 item
kv_namespaces:
array
6 items

Complete Schema Reference

The complete JSON Schema is available for download. All properties, types, and constraints are documented.

genesis-smart-1.0.json

JSON Schema Draft 2020-12

Download
https://stels.io/schemas/genesis-smart-1.0.production.json

STELS Genesis Smart Document v1.0

Schema ID: https://stels.io/schemas/genesis-smart-1.0.production.json