본문으로 건너뛰기
수동 업데이트 v0.33.1 · 릴리스 공개

BTX v0.33.1가 최신 릴리스입니다.

GitHub를 통해 업그레이드하세요. 이 지갑 상호운용 릴리스는 네이티브 .btxwallet 가져오기/내보내기를 추가하며 현재 소스, 플랫폼별 바이너리와 v9 빠른 시작 스냅샷을 포함합니다.

업데이트 경로 수동 즉시 업그레이드하려면 GitHub v0.33.1 릴리스 자산, SHA256SUMS.asc 서명과 스냅샷을 사용하세요. 독립적으로 서명된 btx.dev 자동 업데이트 매니페스트는 일치하는 서명이 준비될 때까지 v0.32.8에 고정됩니다.

Shielded Settlement (SMILE v2)

SMILE v2 shielded settlement status: note commitments, nullifiers, selective disclosure, account registry, and current exit/recovery support.

경로 선택

여기 온 이유에 맞는 작업 흐름에서 시작하세요.

문서 범위는 넓습니다. 이 두 경로는 새 microsite 뒤에 있는 운영자용과 빌더용 핵심 자료로 바로 안내합니다.

Overview

BTX includes a native shielded transaction pool based on SMILE v2, a lattice-based confidential transaction system introduced at genesis (block 0). In the v0.33 release-line production policy, the active support surface is strict shielded-to-transparent exits and wallet recovery for existing shielded state. Transparent-to-shielded deposits, z-to-z sends, re-shielding, and bridge shield ingress are not production-supported.

Current Production Status

HeightChangeEffect
125000Shielded pool credits and new shielded appends disabledNo new shielded credits or appended shielded outputs are accepted.
128000Public-flow and direct-send shielding disabledTransparent-to-shielded deposits and direct shielding flows are not production-supported.
135000Unshield velocity quota endsExisting shielded notes continue through the strict shielded-to-transparent exit/recovery path.

Protected Assets

AssetProtection Mechanism
Transaction valuesLattice Pedersen commitments + range proofs (51-bit, covering MAX_MONEY)
Sender identityRing signature over configurable anonymity set (default 8, supported 8..32)
Receiver identityML-KEM (FIPS 203) encrypted notes (IND-CCA2)
Transaction graphKey images (nullifiers) unlinkable to ring members
Note plaintextChaCha20-Poly1305 AEAD under ML-KEM shared secret

Spend Surfaces and Status

SMILE v2 defines three transaction paths that share the same proof system and note format. Their production status differs after the v0.33 release-line shielded wind-down heights:

PathDirectionCurrent Status
Deposit (Shield) Transparent → Shielded Disabled for production. Shielded pool credits and new appends stop at height 125000, and public-flow/direct-send shielding stops at height 128000.
Transfer Shielded → Shielded Disabled for production z-to-z sends and re-shielding because new shielded appends are disabled. Historical transactions remain validated for consensus and recovery.
Unshield (Withdraw) Shielded → Transparent Supported for strict exits from existing shielded notes to transparent outputs. The withdrawal amount becomes publicly visible; the unshield velocity quota ends at height 135000.

Cryptographic Primitives

Lattice Parameters

ParameterValuePurpose
POLY_Q8,380,417Dilithium/CRYSTALS prime; NTT-friendly (q ≡ 1 mod 2n, n=256)
MODULE_RANK4Lattice dimension 1024 (~192-bit classical, ~128-bit quantum)
BETA_CHALLENGE60Infinity-norm bound on Fiat-Shamir challenge polynomials
GAMMA_RESPONSE131,072 (217)Rejection sampling threshold for response vectors
VALUE_BITS51Range proof decomposition depth (covers MAX_MONEY)

Commitment Scheme

Values are committed using lattice Pedersen commitments: C = A · blind + g · value (mod q). The scheme is computationally hiding under MLWE and computationally binding under MSIS.

Range Proofs

Each output carries a range proof decomposing the committed value into 51 individual bit commitments. Each bit is proven to be 0 or 1 via a lattice OR-proof, and a Schnorr-style relation proof binds the decomposition to the original commitment.

Balance Proofs

A Schnorr-style balance proof demonstrates that sum(input_commitments) − sum(output_commitments) − Commit(fee, 0) = Commit(0, delta_blind), preventing supply inflation without revealing individual amounts.

Note Commitments and Nullifiers

Note Structure

A shielded note contains: value, owner commitment, randomness (rho, rseed), source binding, and an optional memo. Notes are stored as commitments in a Merkle tree of depth 32 (nShieldedMerkleTreeDepth).

Nullifiers

Each spend publishes a deterministic nullifier derived from the key image: DeriveInputNullifier(spending_key, ring_member_commitment). The NullifierSet (LevelDB-backed with in-memory cache, capped at 2,000,000 entries) enforces uniqueness to prevent double-spending. The same note always produces the same nullifier regardless of which ring it appears in.

Ring Signatures

Sender anonymity uses module-lattice ring signatures. For each input, the prover demonstrates knowledge of a short vector solving the Module-SIS relation for one ring member without revealing which one. The Fiat-Shamir transcript binds all ring members symmetrically, making them computationally indistinguishable under MLWE.

Note Encryption

Shielded outputs include encrypted note data so that recipients can discover and decode incoming payments:

  1. Key encapsulation: ML-KEM (FIPS 203) establishes an IND-CCA2 shared secret with the recipient's public key.
  2. Key derivation: HKDF-SHA256 derives an AEAD key from the ML-KEM shared secret.
  3. Symmetric encryption: ChaCha20-Poly1305 AEAD encrypts the note plaintext (value, blinding factor, memo). Maximum ciphertext size: 2,048 bytes.

A 1-byte view tag (derived from KEM ciphertext and public key) enables recipients to quickly reject non-matching notes during wallet scanning, reducing trial-decryption cost at the expense of leaking 8 bits of recipient information to observers who can test candidate public keys.

Selective Disclosure

Shielded transactions support selective disclosure for compliance and audit: a note holder can reveal specific transaction details (value, sender, or both) to a designated auditor without breaking the privacy of other transactions. This is enabled by the separation between spending keys, viewing keys, and the ML-KEM encryption layer.

Account Registry

Before the shielded sunset, shielded accounts were managed through a consensus-enforced registry with bounded growth. New shielded appends are disabled at height 125000, so these limits describe the historical bounded surface rather than a currently open production deposit path:

LimitValue
Max registry appends per block before height 1250004,096
Max total registry entries65,536

Consensus Limits

ParameterValueRationale
Max shielded tx size6.5 MBUpper bound on proof + encrypted note payload
Max ring size32Anonymity set ceiling (default 8 at launch)
Merkle tree depth32Supports 232 notes before tree exhaustion
Block verify cost budget240,000 units~1,042 SMILE txns; CPU: 3.6s (4% of 90s block)
Block scan units24,576Wallet-facing discovery pressure bound
Block tree update units24,576Nullifier + commitment mutation bound
Shielded pool introductionHeight 0 (genesis)Historical activation from chain start
Shielded pool credits / new appends disabledHeight 125000Disables new shielded credits and appended shielded outputs
Public-flow / direct-send shielding disabledHeight 128000Disables production transparent-to-shielded and direct-send shielding paths
Unshield velocity quota endHeight 135000Ends the temporary quota while retaining strict exit/recovery support

BATCH_SMILE Bridge Path

The shielded pool has consensus-visible bridge commitment surfaces through the BATCH_SMILE transaction family, but bridge shield ingress is not production-supported after the sunset heights above. Bridge structures may still commit to historical ingress data and recovery/exit metadata; they should not be read as an active transparent-to-shielded deposit path. See the Bridges specification for the current bridge commitment model.

Shielded State Recovery

Wallet recovery scans the full shielded Merkle tree using the owner's viewing key. The view-tag optimization rejects ~99.6% of notes without trial decryption. Recovery produces the complete set of unspent notes by cross-referencing discovered notes against the published nullifier set.

Security Assumptions

AssumptionUsed ByConsequence if Broken
MLWECommitment hiding, ring anonymity, ML-KEM encryptionValues and sender identity revealed
MSISCommitment binding, ring unforgeability, balance soundnessSupply inflation, unauthorized spending
SHA-256 collision resistanceFiat-Shamir transcripts, nullifier derivationProof malleability, nullifier collisions
ML-KEM IND-CCA2 (FIPS 203)Note encryptionNote plaintext disclosed to passive observer
ChaCha20-Poly1305 AEADSymmetric note encryption layerNote plaintext disclosed if shared secret known