Shekyl Stats

Refreshing...

Network

Connected
Seed Nodes Active
--

Chain

Current Block
0
Target Height
0
Top Block Hash
--
Block Time Target
2 min

Rewards

Last Block Reward
0.000000 SKL
Difficulty
0
Estimated Hash Rate
0 H/s

Supply

Circulating Supply
--
Remaining Supply
--
Total Burned
0.000000 SKL

Economics

Release Multiplier
0
Burn Rate %
0

Staking

Stake Ratio
0
Staker Pool
0.000000 SKL
Staker Emission Share
0
Total Staked
N/A
Staking Height
N/A
Tier 0 Lock Blocks
N/A
Tier 1 Lock Blocks
N/A
Tier 2 Lock Blocks
N/A

Protocol

Transaction Format
TransactionV3
Membership Proof
FCMP++
Spend Auth
Ed25519 + ML-DSA-65
Confidentiality
Stealth + BP+

Node

TX Pool Size
0
Database Size
0 B
Node Version
--
Sync Status
Syncing
All Documentation

V3 Rollout

TransactionV3 activation plan, FCMP++ integration, and hard fork coordination.

Shekyl v3 Rollout (HF1)

Last updated: 2026-07-15

Scope

This note is for operators and wallet integrators rolling out TransactionV3 on Shekyl NG.

Activation

  • Consensus gate: HF_VERSION_SHEKYL_NG = 1
  • At/after HF1:
    • user tx max version: 3
    • pqc_auth verification is required for non-coinbase v3 txs
  • Coinbase txs remain outside pqc_auth requirements

Transaction Size Impact

Measured canonical component sizes (oracle: shekyl-engine-core tx_fee_model::pqc_auth_weight):

  • HybridPublicKey: 1996 bytes
  • HybridSignature: 3385 bytes
  • pqc_auth body contribution (single-signer, per input): 5389 bytes — auth_version + scheme_id + flags(u16) + varint(pk_len)‖pk + varint(sig_len)‖sig (1+1+2 + 2+1996 + 2+3385)
  • FCMP++ membership proof: ~3-4 KB per input
  • ML-KEM ciphertext (per output): 1088 bytes (stored in tx_extra tag 0x06)

With per-input pqc_auths (pqc_auths.size() == vin.size()), a typical 2-in/2-out transaction is approximately ~23 KB total (per-input pqc_auths at ~5.4 KB each dominate the size).

Operators can achieve ~95% storage reduction by running --prune-blockchain, which strips prunable transaction data while retaining headers and recent blocks.

Multisig Size Impact (scheme_id = 2)

Classical Monero-style multisig (secret-splitting) is removed from the rebooted chain. All multisig uses PQC-only authorization via scheme_id = 2. See docs/PQC_MULTISIG.md for full specification.

Multisig transactions carry N public keys and M signatures. Target consensus cap (MSW-G, decided 2026-07-15): MAX_MULTISIG_PARTICIPANTS = 5 (2f+1 at f=2 — largest group served; see PQC_MULTISIG.md §5). Not yet live — code still uses = 7 until MSW-1. Size table below is sized to the target cap. Auth is ~⅓ of a solo tx; whole-tx weights (1-in/2-out, depth 12, measured FCMP proof) dominate:

ConfigurationApprox tx totalvs 1 solovs N solos
solo~15.6 KB1.0×
3-of-3~26.5 KB~1.7×~0.57× (26.5 / (3×15.6))
5-of-5~37.3 KB~2.4×~0.48× (37.3 / (5×15.6))

A 5-of-5 spend is ~2.4× one solo and well under five separate solos — it amortizes FCMP++/Bp+/KEM/prefix fixed costs. Do not read auth-overhead "×N vs single-signer" as whole-tx cost. (Do not reuse figures from a former "vs 7 solos" column under a relabeled "vs N solos" header.)

Multisig usage is expected to be well under 1% of transaction volume. Aggregate chain growth impact is negligible.

Practical effect:

  • larger mempool footprint
  • higher relay bandwidth usage
  • larger RPC transaction payloads
  • file-based at N≥3 after MSW-8 (~5.8k chars); N=2 QR-able; §15.3 registry is an optimization, not a ship prerequisite (PQC_MULTISIG.md §15.3)

Wallet Migration Notes

  • Wallets must construct v3 payload first, then sign and attach pqc_auth.
  • Wallet scanners should continue handling classical tx metadata (extra) and treat pqc_auth as authorization material, not scan metadata.
  • Restored wallets should have PQ key material generated and persisted.
  • Hardware-wallet PQ support remains deferred; software wallets are the supported v3 path for now.
  • Classical multisig removed: Monero-style secret-splitting multisig is not carried forward to the rebooted chain. The make_multisig code path, MMS transport, and classical multisig wallet state are deleted. All multisig uses PQC-only authorization (scheme_id = 2).
  • Multisig wallets: Product path is Option E′ (PQC_MULTISIG.md §15.4a / design §0.5): dealer-mode, group-plaintext b (local balance/KI), FROST M-of-N on y with per-output tweak, spend_auth_version = 0x02 (0x01 never issued). Address after MSW-8 is KEM-only per participant (+ E′ B/Y). Not fixed group-aggregate PQC key (Option A rejected 2026-04-04) and not mandatory-prover Option D. Signing coordination uses file-based export/import of payload and signature blobs.
  • Staking / archival bonds with multisig: Funding inputs may use scheme_id = 2 while the bond vin authorizes with scheme-1 P (bond_spend_pk remains a single hybrid key — pseudonym uniformity). That requires relaxing tx-wide scheme agreement (MSW-6); archival core never sees funding pqc_auths. Multisig is not "the recommended configuration" for long-duration positions by default — it is an optional custody shape once MSW-6 lands.

Payload Limit Guidance

Operators and indexers must accommodate the increased per-transaction size:

  • Minimum recommended mempool tx limit: The 5389-byte pqc_auth figure (pqc_auth_weight()) is per-input, not per-transaction. With 2 inputs, that is ~10.8 KB of pqc_auth alone, plus ~3-4 KB per input for FCMP++ proofs and ~1 KB per output for ML-KEM ciphertexts. Budget at least 25 KB above current median user tx size.
  • Multisig headroom: the target cap MAX_MULTISIG_PARTICIPANTS = 5 (MSW-G; code still = 7 until MSW-1) bounds planned worst-case pqc_auth overhead to ~27 KB (5-of-5). Typical configurations (2-of-3, 3-of-5) are well under this. Operators should not reject transactions solely based on pre-PQC size assumptions.
  • RPC consumers: adjust any hardcoded maximum payload buffers to at least 150 KB per transaction (typical 2-input/2-output tx + PQC auth). For multisig, budget up to 200 KB.
  • Levin relay: the existing 100 MB default message limit is sufficient, but per-message transaction count assumptions should be revisited if batching relay payloads.
  • Monitoring dashboards: alert thresholds tied to tx size should be rebased against post-v3 norms, not pre-PQC averages. Consider separate alerting bands for scheme_id = 1 (single) and scheme_id = 2 (multisig).

Node/Infrastructure Checklist

  • Ensure all validating nodes run HF1-capable binaries before activation.
  • Verify custom RPC clients/indexers accept larger tx payloads.
  • Update any tx-size assumptions in monitoring/alerting and mempool dashboards.
  • Confirm seed/boot nodes are upgraded first to avoid propagation asymmetry.
  • Verify that transaction validation correctly handles both scheme_id = 1 (single-signer) and scheme_id = 2 (multisig signature list).
  • Test multisig transaction relay and mempool acceptance at realistic sizes (2-of-2 through 5-of-5 — configurations with n_total > 5 are consensus-invalid under MSW-G).