مرجع فنیشواهد آزمونشواهد
این صفحه فقط به انگلیسی موجود است.
Evidence: Stellar protocol assumptions (spike)
Date: 2026-10-29. Network: Quickstart stellar/quickstart:v689-b1585.1-latest (digest sha256:e05d68bb3b26…), --local, protocol 30, passphrase Standalone Network ; February 2017. SDK: go-stellar-sdk v0.8.0. Program: scripts/spikes/stellar-assumptions/main.go (run: cd scripts/spikes/stellar-assumptions && go run . with Quickstart on :8000).
Every [verify] item in docs/stellar/STELLAR_ARCHITECTURE.md §1, §2, §4, §6, §7 and §8 is covered. Result: 20/20 PASS.
| Assumption | Check | Result |
|---|---|---|
| A low-weight key reaches only the low threshold | B1, B2, F1: issuance/clawback signed by AUTH (1) or AUTH+H1 (11) | Refused at submission (txFAILED / opBAD_AUTH); never enters a ledger, consumes no sequence |
| 2-of-4 humans issue and claw back | B3, F2 | Applied |
| Channel as tx source, issuer/Treasury/customer as op source | A, B3, BUY, SELL, TRANSFER | Applied; issuer sequence untouched |
| Sponsored custodial account in one tx | C | Customer XLM = 0; one signer (CUSTODY); master 0; numSponsored = 4; trustline flags = 5 (authorized + clawback enabled) |
| Clawback flag inherited by new trustlines | A, C | flags = 5 |
| In-ledger failure consumes the sequence | D | channel seq +1; PAYMENT_NOT_AUTHORIZED |
| Freeze = revoke authorization | E1–E3 | Frozen account cannot send (PAYMENT_SRC_NOT_AUTHORIZED); re-authorization restores |
| Burn = payment to the issuer | G | Supply −100,000 |
| Expired envelope can never apply | H | txTOO_LATE |
| SDK refuses missing time bounds | I | txnbuild error |
| Supply from the closed holder set | final | 899,995 = 1,000,000 − 100,000 − 5 |
Raw output
[PASS] ceremony: flags, signers, thresholds, master 0 status=SUCCESS code=TransactionResultCodeTxSuccess SetOptions SetOptions SetOptions SetOptions SetOptions SetOptions SetOptions
[PASS] cold+hot trustlines status=SUCCESS code=TransactionResultCodeTxSuccess ChangeTrust ChangeTrust SetOptions SetOptions
[PASS] A: AUTH key authorizes COLD+HOT (channel source, op source issuer) status=SUCCESS code=TransactionResultCodeTxSuccess SetTrustLineFlags SetTrustLineFlags
COLD trustline flags=5 (1=authorized, 4=clawback enabled)
[PASS] B1: issue signed by AUTH + H1 (weight 11 < 20) is refused status=ERROR code=TransactionResultCodeTxFailed op:OperationResultCodeOpBadAuth
[PASS] B2: issue signed by AUTH alone is refused status=ERROR code=TransactionResultCodeTxFailed op:OperationResultCodeOpBadAuth
[PASS] B3: issue 1,000,000 signed by H1 + H2 status=SUCCESS code=TransactionResultCodeTxSuccess pay:PaymentResultCodePaymentSuccess
[PASS] C: sponsored account + trustline + custody signer + authorize status=SUCCESS code=TransactionResultCodeTxSuccess BeginSponsoringFutureReserves CreateAccount ChangeTrust SetOptions SetOptions EndSponsoringFutureReserves SetTrustLineFlags
[PASS] C: sponsored account + trustline + custody signer + authorize status=SUCCESS code=TransactionResultCodeTxSuccess BeginSponsoringFutureReserves CreateAccount ChangeTrust SetOptions SetOptions EndSponsoringFutureReserves SetTrustLineFlags
customer XLM=0 stroops, signers=1, master=0, numSponsored=4, trustline flags=5
[PASS] refill COLD→HOT 10,000 status=SUCCESS code=TransactionResultCodeTxSuccess pay:PaymentResultCodePaymentSuccess
[PASS] BUY: HOT→A 100 (signed channel + HOT key) status=SUCCESS code=TransactionResultCodeTxSuccess pay:PaymentResultCodePaymentSuccess
[PASS] TRANSFER: A→B 20 (CUSTODY key) status=SUCCESS code=TransactionResultCodeTxSuccess pay:PaymentResultCodePaymentSuccess
[PASS] SELL: A→HOT 30 (CUSTODY key) status=SUCCESS code=TransactionResultCodeTxSuccess pay:PaymentResultCodePaymentSuccess
[PASS] D: HOT→stranger (not authorized) fails in ledger status=FAILED code=TransactionResultCodeTxFailed pay:PaymentResultCodePaymentNotAuthorized
channel seq before=1335734829061 after=1335734829062 (consumed=true)
[PASS] E1: AUTH revokes A status=SUCCESS code=TransactionResultCodeTxSuccess SetTrustLineFlags
[PASS] E2: frozen A cannot send status=FAILED code=TransactionResultCodeTxFailed pay:PaymentResultCodePaymentSrcNotAuthorized
[PASS] E3: AUTH re-authorizes A status=SUCCESS code=TransactionResultCodeTxSuccess SetTrustLineFlags
[PASS] F1: clawback signed by AUTH is refused status=ERROR code=TransactionResultCodeTxFailed op:OperationResultCodeOpBadAuth
[PASS] F2: clawback 5 from B signed by H3 + H4 status=SUCCESS code=TransactionResultCodeTxSuccess claw:ClawbackResultCodeClawbackSuccess
[PASS] G: burn 100,000 COLD→issuer status=SUCCESS code=TransactionResultCodeTxSuccess pay:PaymentResultCodePaymentSuccess
[PASS] H: envelope submitted after maxTime is refused status=ERROR code=TransactionResultCodeTxTooLate
[INFO] txnbuild without timebounds: err=invalid preconditions: timebounds must be constructed using NewTimebounds(), NewTimeout(), or NewInfiniteTimeout()
COLD 890000.0000000
HOT 9930.0000000
A 50.0000000
B 15.0000000
supply(closed holder set) = 899995.0000000 expected 1,000,000 - 100,000 - 5 = 899,995