@bsv/sdk 1.6.9 → 1.6.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -4
- package/dist/cjs/package.json +4 -2
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +5 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +5 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +1 -1
- package/docs/concepts/beef.md +84 -0
- package/docs/concepts/chain-tracking.md +122 -0
- package/docs/concepts/decentralized-identity.md +184 -0
- package/docs/concepts/fees.md +217 -0
- package/docs/concepts/identity-certificates.md +255 -0
- package/docs/concepts/index.md +62 -0
- package/docs/concepts/key-management.md +176 -0
- package/docs/concepts/script-templates.md +163 -0
- package/docs/concepts/sdk-philosophy.md +72 -0
- package/docs/concepts/signatures.md +179 -0
- package/docs/concepts/spv-verification.md +106 -0
- package/docs/concepts/transaction-encoding.md +148 -0
- package/docs/concepts/transaction-structure.md +63 -0
- package/docs/concepts/trust-model.md +123 -0
- package/docs/concepts/verification.md +219 -0
- package/docs/concepts/wallet-integration.md +95 -0
- package/docs/guides/direct-transaction-creation.md +137 -0
- package/docs/guides/http-client-configuration.md +414 -0
- package/docs/guides/index.md +30 -0
- package/docs/guides/transaction-signing-methods.md +268 -0
- package/docs/index.md +74 -0
- package/docs/reference/arc-config.md +698 -0
- package/docs/reference/brc-100.md +33 -0
- package/docs/reference/configuration.md +829 -0
- package/docs/reference/debugging.md +700 -0
- package/docs/reference/errors.md +547 -0
- package/docs/reference/index.md +98 -0
- package/docs/reference/network-config.md +914 -0
- package/docs/reference/op-codes.md +306 -0
- package/docs/reference/transaction-signatures.md +94 -0
- package/docs/requirements.txt +3 -0
- package/docs/tutorials/advanced-transaction.md +575 -0
- package/docs/tutorials/aes-encryption.md +947 -0
- package/docs/tutorials/authfetch-tutorial.md +957 -0
- package/docs/tutorials/ecdh-key-exchange.md +547 -0
- package/docs/tutorials/elliptic-curve-fundamentals.md +603 -0
- package/docs/tutorials/error-handling.md +1215 -0
- package/docs/tutorials/first-transaction-low-level.md +204 -0
- package/docs/tutorials/first-transaction.md +278 -0
- package/docs/tutorials/hashes-and-hmacs.md +814 -0
- package/docs/tutorials/identity-management.md +702 -0
- package/docs/tutorials/index.md +182 -0
- package/docs/tutorials/key-management.md +536 -0
- package/docs/tutorials/protowallet-development.md +716 -0
- package/docs/tutorials/script-construction.md +690 -0
- package/docs/tutorials/spv-merkle-proofs.md +682 -0
- package/docs/tutorials/testnet-transactions-low-level.md +352 -0
- package/docs/tutorials/transaction-broadcasting.md +535 -0
- package/docs/tutorials/transaction-types.md +419 -0
- package/docs/tutorials/type-42.md +582 -0
- package/docs/tutorials/uhrp-storage.md +579 -0
- package/package.json +4 -2
- package/src/wallet/substrates/HTTPWalletJSON.ts +6 -1
- package/dist/cjs/src/auth/__tests/Peer.test.js +0 -446
- package/dist/cjs/src/auth/__tests/Peer.test.js.map +0 -1
- package/dist/cjs/src/auth/__tests/SessionManager.test.js +0 -69
- package/dist/cjs/src/auth/__tests/SessionManager.test.js.map +0 -1
- package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js +0 -182
- package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
- package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
- package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
- package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
- package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
- package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js +0 -101
- package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
- package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
- package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
- package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js +0 -111
- package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
- package/dist/cjs/src/auth/utils/certificateHelpers.js +0 -51
- package/dist/cjs/src/auth/utils/certificateHelpers.js.map +0 -1
- package/dist/cjs/src/compat/__tests/BSM.test.js +0 -69
- package/dist/cjs/src/compat/__tests/BSM.test.js.map +0 -1
- package/dist/cjs/src/compat/__tests/ECIES.test.js +0 -115
- package/dist/cjs/src/compat/__tests/ECIES.test.js.map +0 -1
- package/dist/cjs/src/compat/__tests/HD.test.js +0 -336
- package/dist/cjs/src/compat/__tests/HD.test.js.map +0 -1
- package/dist/cjs/src/compat/__tests/Mnemonic.test.js +0 -150
- package/dist/cjs/src/compat/__tests/Mnemonic.test.js.map +0 -1
- package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js +0 -175
- package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
- package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js +0 -57
- package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
- package/dist/cjs/src/messages/__tests/SignedMessage.test.js +0 -52
- package/dist/cjs/src/messages/__tests/SignedMessage.test.js.map +0 -1
- package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
- package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
- package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
- package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
- package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
- package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/AESGCM.test.js +0 -248
- package/dist/cjs/src/primitives/__tests/AESGCM.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js +0 -36
- package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js +0 -36
- package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
- package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js +0 -185
- package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
- package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
- package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js +0 -268
- package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
- package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js +0 -322
- package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Curve.unit.test.js +0 -145
- package/dist/cjs/src/primitives/__tests/Curve.unit.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/DRBG.test.js +0 -22
- package/dist/cjs/src/primitives/__tests/DRBG.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/DRBG.vectors.js +0 -170
- package/dist/cjs/src/primitives/__tests/DRBG.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/ECDH.test.js +0 -34
- package/dist/cjs/src/primitives/__tests/ECDH.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/ECDSA.test.js +0 -89
- package/dist/cjs/src/primitives/__tests/ECDSA.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/HMAC.test.js +0 -60
- package/dist/cjs/src/primitives/__tests/HMAC.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Hash.test.js +0 -159
- package/dist/cjs/src/primitives/__tests/Hash.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js +0 -122
- package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js +0 -105
- package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/PrivateKey.test.js +0 -90
- package/dist/cjs/src/primitives/__tests/PrivateKey.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/PublicKey.test.js +0 -83
- package/dist/cjs/src/primitives/__tests/PublicKey.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Random.test.js +0 -19
- package/dist/cjs/src/primitives/__tests/Random.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Reader.test.js +0 -282
- package/dist/cjs/src/primitives/__tests/Reader.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/ReductionContext.test.js +0 -224
- package/dist/cjs/src/primitives/__tests/ReductionContext.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Schnorr.test.js +0 -213
- package/dist/cjs/src/primitives/__tests/Schnorr.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js +0 -51
- package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
- package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/Writer.test.js +0 -176
- package/dist/cjs/src/primitives/__tests/Writer.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/bug-31.test.js +0 -32
- package/dist/cjs/src/primitives/__tests/bug-31.test.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/sighash.vectors.js +0 -3506
- package/dist/cjs/src/primitives/__tests/sighash.vectors.js.map +0 -1
- package/dist/cjs/src/primitives/__tests/utils.test.js +0 -110
- package/dist/cjs/src/primitives/__tests/utils.test.js.map +0 -1
- package/dist/cjs/src/script/__tests/Script.test.js +0 -347
- package/dist/cjs/src/script/__tests/Script.test.js.map +0 -1
- package/dist/cjs/src/script/__tests/Spend.test.js +0 -282
- package/dist/cjs/src/script/__tests/Spend.test.js.map +0 -1
- package/dist/cjs/src/script/__tests/SpendComplex.test.js +0 -52
- package/dist/cjs/src/script/__tests/SpendComplex.test.js.map +0 -1
- package/dist/cjs/src/script/__tests/script.invalid.vectors.js +0 -2370
- package/dist/cjs/src/script/__tests/script.invalid.vectors.js.map +0 -1
- package/dist/cjs/src/script/__tests/script.valid.vectors.js +0 -1181
- package/dist/cjs/src/script/__tests/script.valid.vectors.js.map +0 -1
- package/dist/cjs/src/script/__tests/spend.valid.vectors.js +0 -2298
- package/dist/cjs/src/script/__tests/spend.valid.vectors.js.map +0 -1
- package/dist/cjs/src/script/templates/__tests/PushDrop.test.js +0 -161
- package/dist/cjs/src/script/templates/__tests/PushDrop.test.js.map +0 -1
- package/dist/cjs/src/totp/__tests/totp.test.js +0 -67
- package/dist/cjs/src/totp/__tests/totp.test.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/Beef.test.js +0 -393
- package/dist/cjs/src/transaction/__tests/Beef.test.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/MerklePath.test.js +0 -209
- package/dist/cjs/src/transaction/__tests/MerklePath.test.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
- package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/Transaction.test.js +0 -1073
- package/dist/cjs/src/transaction/__tests/Transaction.test.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/bigtx.vectors.js +0 -7
- package/dist/cjs/src/transaction/__tests/bigtx.vectors.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js +0 -11
- package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js +0 -7
- package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js +0 -230
- package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
- package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js +0 -296
- package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
- package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
- package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
- package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
- package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
- package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
- package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
- package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js +0 -39
- package/dist/cjs/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
- package/dist/cjs/src/wallet/WalletSigner.js +0 -260
- package/dist/cjs/src/wallet/WalletSigner.js.map +0 -1
- package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
- package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
- package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js +0 -114
- package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
- package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js +0 -475
- package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
- package/dist/cjs/src/wallet/createActionSdk.js +0 -230
- package/dist/cjs/src/wallet/createActionSdk.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js +0 -174
- package/dist/cjs/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/CertOps.js +0 -181
- package/dist/cjs/src/wallet/sdk/CertOps.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/Certificate.js +0 -162
- package/dist/cjs/src/wallet/sdk/Certificate.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/KeyDeriver.js +0 -176
- package/dist/cjs/src/wallet/sdk/KeyDeriver.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/ProtoWallet.js +0 -75
- package/dist/cjs/src/wallet/sdk/ProtoWallet.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/StorageSyncReader.js +0 -3
- package/dist/cjs/src/wallet/sdk/StorageSyncReader.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WERR_errors.js +0 -107
- package/dist/cjs/src/wallet/sdk/WERR_errors.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js +0 -3
- package/dist/cjs/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WalletCrypto.js +0 -171
- package/dist/cjs/src/wallet/sdk/WalletCrypto.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WalletError.js +0 -103
- package/dist/cjs/src/wallet/sdk/WalletError.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js +0 -3
- package/dist/cjs/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js +0 -3
- package/dist/cjs/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js +0 -3
- package/dist/cjs/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/index.js +0 -31
- package/dist/cjs/src/wallet/sdk/index.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/types.js +0 -11
- package/dist/cjs/src/wallet/sdk/types.js.map +0 -1
- package/dist/cjs/src/wallet/sdk/validationHelpers.js +0 -601
- package/dist/cjs/src/wallet/sdk/validationHelpers.js.map +0 -1
- package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
- package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
- package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js +0 -579
- package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
- package/dist/cjs/src/wallet/utilityHelpers.js +0 -305
- package/dist/cjs/src/wallet/utilityHelpers.js.map +0 -1
- package/dist/cjs/src/wallet/validationHelpers.js +0 -601
- package/dist/cjs/src/wallet/validationHelpers.js.map +0 -1
- package/dist/esm/src/auth/__tests/Peer.test.js +0 -448
- package/dist/esm/src/auth/__tests/Peer.test.js.map +0 -1
- package/dist/esm/src/auth/__tests/SessionManager.test.js +0 -69
- package/dist/esm/src/auth/__tests/SessionManager.test.js.map +0 -1
- package/dist/esm/src/auth/certificates/__tests/Certificate.test.js +0 -182
- package/dist/esm/src/auth/certificates/__tests/Certificate.test.js.map +0 -1
- package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js +0 -184
- package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js.map +0 -1
- package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js +0 -75
- package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +0 -1
- package/dist/esm/src/auth/utils/__tests/cryptononce.test.js +0 -101
- package/dist/esm/src/auth/utils/__tests/cryptononce.test.js.map +0 -1
- package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js +0 -106
- package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +0 -1
- package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js +0 -111
- package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js.map +0 -1
- package/dist/esm/src/auth/utils/certificateHelpers.js +0 -47
- package/dist/esm/src/auth/utils/certificateHelpers.js.map +0 -1
- package/dist/esm/src/compat/__tests/BSM.test.js +0 -69
- package/dist/esm/src/compat/__tests/BSM.test.js.map +0 -1
- package/dist/esm/src/compat/__tests/ECIES.test.js +0 -115
- package/dist/esm/src/compat/__tests/ECIES.test.js.map +0 -1
- package/dist/esm/src/compat/__tests/HD.test.js +0 -336
- package/dist/esm/src/compat/__tests/HD.test.js.map +0 -1
- package/dist/esm/src/compat/__tests/Mnemonic.test.js +0 -150
- package/dist/esm/src/compat/__tests/Mnemonic.test.js.map +0 -1
- package/dist/esm/src/compat/__tests/Mnemonic.vectors.js +0 -175
- package/dist/esm/src/compat/__tests/Mnemonic.vectors.js.map +0 -1
- package/dist/esm/src/messages/__tests/EncryptedMessage.test.js +0 -57
- package/dist/esm/src/messages/__tests/EncryptedMessage.test.js.map +0 -1
- package/dist/esm/src/messages/__tests/SignedMessage.test.js +0 -52
- package/dist/esm/src/messages/__tests/SignedMessage.test.js.map +0 -1
- package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js +0 -1471
- package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js.map +0 -1
- package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +0 -78
- package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +0 -1
- package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js +0 -933
- package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/AESGCM.test.js +0 -248
- package/dist/esm/src/primitives/__tests/AESGCM.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js +0 -36
- package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js +0 -36
- package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js +0 -501
- package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js +0 -185
- package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js +0 -149
- package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js +0 -23
- package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js +0 -268
- package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js +0 -147
- package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js +0 -322
- package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Curve.unit.test.js +0 -145
- package/dist/esm/src/primitives/__tests/Curve.unit.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/DRBG.test.js +0 -22
- package/dist/esm/src/primitives/__tests/DRBG.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/DRBG.vectors.js +0 -170
- package/dist/esm/src/primitives/__tests/DRBG.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/ECDH.test.js +0 -34
- package/dist/esm/src/primitives/__tests/ECDH.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/ECDSA.test.js +0 -89
- package/dist/esm/src/primitives/__tests/ECDSA.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/HMAC.test.js +0 -60
- package/dist/esm/src/primitives/__tests/HMAC.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Hash.test.js +0 -159
- package/dist/esm/src/primitives/__tests/Hash.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js +0 -122
- package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js +0 -105
- package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/PrivateKey.test.js +0 -90
- package/dist/esm/src/primitives/__tests/PrivateKey.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/PublicKey.test.js +0 -83
- package/dist/esm/src/primitives/__tests/PublicKey.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Random.test.js +0 -19
- package/dist/esm/src/primitives/__tests/Random.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Reader.test.js +0 -282
- package/dist/esm/src/primitives/__tests/Reader.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/ReductionContext.test.js +0 -223
- package/dist/esm/src/primitives/__tests/ReductionContext.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Schnorr.test.js +0 -213
- package/dist/esm/src/primitives/__tests/Schnorr.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/SymmetricKey.test.js +0 -51
- package/dist/esm/src/primitives/__tests/SymmetricKey.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js +0 -43
- package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/Writer.test.js +0 -176
- package/dist/esm/src/primitives/__tests/Writer.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/bug-31.test.js +0 -32
- package/dist/esm/src/primitives/__tests/bug-31.test.js.map +0 -1
- package/dist/esm/src/primitives/__tests/sighash.vectors.js +0 -3506
- package/dist/esm/src/primitives/__tests/sighash.vectors.js.map +0 -1
- package/dist/esm/src/primitives/__tests/utils.test.js +0 -110
- package/dist/esm/src/primitives/__tests/utils.test.js.map +0 -1
- package/dist/esm/src/script/__tests/Script.test.js +0 -347
- package/dist/esm/src/script/__tests/Script.test.js.map +0 -1
- package/dist/esm/src/script/__tests/Spend.test.js +0 -282
- package/dist/esm/src/script/__tests/Spend.test.js.map +0 -1
- package/dist/esm/src/script/__tests/SpendComplex.test.js +0 -51
- package/dist/esm/src/script/__tests/SpendComplex.test.js.map +0 -1
- package/dist/esm/src/script/__tests/script.invalid.vectors.js +0 -2370
- package/dist/esm/src/script/__tests/script.invalid.vectors.js.map +0 -1
- package/dist/esm/src/script/__tests/script.valid.vectors.js +0 -1181
- package/dist/esm/src/script/__tests/script.valid.vectors.js.map +0 -1
- package/dist/esm/src/script/__tests/spend.valid.vectors.js +0 -2298
- package/dist/esm/src/script/__tests/spend.valid.vectors.js.map +0 -1
- package/dist/esm/src/script/templates/__tests/PushDrop.test.js +0 -161
- package/dist/esm/src/script/templates/__tests/PushDrop.test.js.map +0 -1
- package/dist/esm/src/totp/__tests/totp.test.js +0 -67
- package/dist/esm/src/totp/__tests/totp.test.js.map +0 -1
- package/dist/esm/src/transaction/__tests/Beef.test.js +0 -393
- package/dist/esm/src/transaction/__tests/Beef.test.js.map +0 -1
- package/dist/esm/src/transaction/__tests/MerklePath.test.js +0 -209
- package/dist/esm/src/transaction/__tests/MerklePath.test.js.map +0 -1
- package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js +0 -219
- package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js.map +0 -1
- package/dist/esm/src/transaction/__tests/Transaction.test.js +0 -1072
- package/dist/esm/src/transaction/__tests/Transaction.test.js.map +0 -1
- package/dist/esm/src/transaction/__tests/bigtx.vectors.js +0 -7
- package/dist/esm/src/transaction/__tests/bigtx.vectors.js.map +0 -1
- package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js +0 -11
- package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js.map +0 -1
- package/dist/esm/src/transaction/__tests/bump.valid.vectors.js +0 -7
- package/dist/esm/src/transaction/__tests/bump.valid.vectors.js.map +0 -1
- package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js +0 -230
- package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js.map +0 -1
- package/dist/esm/src/transaction/__tests/tx.valid.vectors.js +0 -296
- package/dist/esm/src/transaction/__tests/tx.valid.vectors.js.map +0 -1
- package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js +0 -246
- package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js.map +0 -1
- package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +0 -148
- package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +0 -1
- package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +0 -155
- package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +0 -1
- package/dist/esm/src/wallet/ScriptTemplateSABPPP.js +0 -37
- package/dist/esm/src/wallet/ScriptTemplateSABPPP.js.map +0 -1
- package/dist/esm/src/wallet/WalletSigner.js +0 -263
- package/dist/esm/src/wallet/WalletSigner.js.map +0 -1
- package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js +0 -269
- package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js.map +0 -1
- package/dist/esm/src/wallet/__tests/KeyDeriver.test.js +0 -113
- package/dist/esm/src/wallet/__tests/KeyDeriver.test.js.map +0 -1
- package/dist/esm/src/wallet/__tests/ProtoWallet.test.js +0 -475
- package/dist/esm/src/wallet/__tests/ProtoWallet.test.js.map +0 -1
- package/dist/esm/src/wallet/createActionSdk.js +0 -223
- package/dist/esm/src/wallet/createActionSdk.js.map +0 -1
- package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js +0 -174
- package/dist/esm/src/wallet/sdk/CachedKeyDeriver.js.map +0 -1
- package/dist/esm/src/wallet/sdk/CertOps.js +0 -181
- package/dist/esm/src/wallet/sdk/CertOps.js.map +0 -1
- package/dist/esm/src/wallet/sdk/Certificate.js +0 -186
- package/dist/esm/src/wallet/sdk/Certificate.js.map +0 -1
- package/dist/esm/src/wallet/sdk/KeyDeriver.js +0 -174
- package/dist/esm/src/wallet/sdk/KeyDeriver.js.map +0 -1
- package/dist/esm/src/wallet/sdk/ProtoWallet.js +0 -71
- package/dist/esm/src/wallet/sdk/ProtoWallet.js.map +0 -1
- package/dist/esm/src/wallet/sdk/StorageSyncReader.js +0 -2
- package/dist/esm/src/wallet/sdk/StorageSyncReader.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WERR_errors.js +0 -99
- package/dist/esm/src/wallet/sdk/WERR_errors.js.map +0 -1
- package/dist/esm/src/wallet/sdk/Wallet.interfaces.js +0 -2
- package/dist/esm/src/wallet/sdk/Wallet.interfaces.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WalletCrypto.js +0 -168
- package/dist/esm/src/wallet/sdk/WalletCrypto.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WalletError.js +0 -100
- package/dist/esm/src/wallet/sdk/WalletError.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js +0 -2
- package/dist/esm/src/wallet/sdk/WalletServices.interfaces.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js +0 -2
- package/dist/esm/src/wallet/sdk/WalletSigner.interfaces.js.map +0 -1
- package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js +0 -2
- package/dist/esm/src/wallet/sdk/WalletStorage.interfaces.js.map +0 -1
- package/dist/esm/src/wallet/sdk/index.js +0 -15
- package/dist/esm/src/wallet/sdk/index.js.map +0 -1
- package/dist/esm/src/wallet/sdk/types.js +0 -8
- package/dist/esm/src/wallet/sdk/types.js.map +0 -1
- package/dist/esm/src/wallet/sdk/validationHelpers.js +0 -566
- package/dist/esm/src/wallet/sdk/validationHelpers.js.map +0 -1
- package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js +0 -1962
- package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +0 -1
- package/dist/esm/src/wallet/substrates/__tests/XDM.test.js +0 -579
- package/dist/esm/src/wallet/substrates/__tests/XDM.test.js.map +0 -1
- package/dist/esm/src/wallet/utilityHelpers.js +0 -275
- package/dist/esm/src/wallet/utilityHelpers.js.map +0 -1
- package/dist/esm/src/wallet/validationHelpers.js +0 -566
- package/dist/esm/src/wallet/validationHelpers.js.map +0 -1
- package/dist/types/src/auth/__tests/Peer.test.d.ts +0 -2
- package/dist/types/src/auth/__tests/Peer.test.d.ts.map +0 -1
- package/dist/types/src/auth/__tests/SessionManager.test.d.ts +0 -2
- package/dist/types/src/auth/__tests/SessionManager.test.d.ts.map +0 -1
- package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts +0 -2
- package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts.map +0 -1
- package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts +0 -2
- package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts.map +0 -1
- package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts +0 -2
- package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts.map +0 -1
- package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts +0 -2
- package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts.map +0 -1
- package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts +0 -2
- package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts.map +0 -1
- package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts +0 -2
- package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts.map +0 -1
- package/dist/types/src/auth/utils/certificateHelpers.d.ts +0 -26
- package/dist/types/src/auth/utils/certificateHelpers.d.ts.map +0 -1
- package/dist/types/src/compat/__tests/BSM.test.d.ts +0 -2
- package/dist/types/src/compat/__tests/BSM.test.d.ts.map +0 -1
- package/dist/types/src/compat/__tests/ECIES.test.d.ts +0 -2
- package/dist/types/src/compat/__tests/ECIES.test.d.ts.map +0 -1
- package/dist/types/src/compat/__tests/HD.test.d.ts +0 -2
- package/dist/types/src/compat/__tests/HD.test.d.ts.map +0 -1
- package/dist/types/src/compat/__tests/Mnemonic.test.d.ts +0 -2
- package/dist/types/src/compat/__tests/Mnemonic.test.d.ts.map +0 -1
- package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts +0 -11
- package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts.map +0 -1
- package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts +0 -2
- package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts.map +0 -1
- package/dist/types/src/messages/__tests/SignedMessage.test.d.ts +0 -2
- package/dist/types/src/messages/__tests/SignedMessage.test.d.ts.map +0 -1
- package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts +0 -2
- package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts.map +0 -1
- package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts +0 -2
- package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts.map +0 -1
- package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts +0 -2
- package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/AESGCM.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/AESGCM.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts +0 -8
- package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts +0 -8
- package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts +0 -15
- package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/DRBG.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/DRBG.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts +0 -10
- package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/ECDH.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/ECDH.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/ECDSA.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/ECDSA.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/HMAC.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/HMAC.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Hash.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Hash.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts +0 -68
- package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/PublicKey.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/PublicKey.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Random.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Random.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Reader.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Reader.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Schnorr.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Schnorr.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts +0 -20
- package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/Writer.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/Writer.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/bug-31.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/bug-31.test.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/sighash.vectors.d.ts +0 -3
- package/dist/types/src/primitives/__tests/sighash.vectors.d.ts.map +0 -1
- package/dist/types/src/primitives/__tests/utils.test.d.ts +0 -2
- package/dist/types/src/primitives/__tests/utils.test.d.ts.map +0 -1
- package/dist/types/src/script/__tests/Script.test.d.ts +0 -2
- package/dist/types/src/script/__tests/Script.test.d.ts.map +0 -1
- package/dist/types/src/script/__tests/Spend.test.d.ts +0 -2
- package/dist/types/src/script/__tests/Spend.test.d.ts.map +0 -1
- package/dist/types/src/script/__tests/SpendComplex.test.d.ts +0 -2
- package/dist/types/src/script/__tests/SpendComplex.test.d.ts.map +0 -1
- package/dist/types/src/script/__tests/script.invalid.vectors.d.ts +0 -3
- package/dist/types/src/script/__tests/script.invalid.vectors.d.ts.map +0 -1
- package/dist/types/src/script/__tests/script.valid.vectors.d.ts +0 -3
- package/dist/types/src/script/__tests/script.valid.vectors.d.ts.map +0 -1
- package/dist/types/src/script/__tests/spend.valid.vectors.d.ts +0 -3
- package/dist/types/src/script/__tests/spend.valid.vectors.d.ts.map +0 -1
- package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts +0 -2
- package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts.map +0 -1
- package/dist/types/src/totp/__tests/totp.test.d.ts +0 -2
- package/dist/types/src/totp/__tests/totp.test.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/Beef.test.d.ts +0 -2
- package/dist/types/src/transaction/__tests/Beef.test.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/MerklePath.test.d.ts +0 -2
- package/dist/types/src/transaction/__tests/MerklePath.test.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts +0 -2
- package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/Transaction.test.d.ts +0 -2
- package/dist/types/src/transaction/__tests/Transaction.test.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts +0 -6
- package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts +0 -6
- package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts +0 -5
- package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts +0 -3
- package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts.map +0 -1
- package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts +0 -3
- package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts.map +0 -1
- package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts +0 -2
- package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts.map +0 -1
- package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts +0 -2
- package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts.map +0 -1
- package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts +0 -2
- package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts.map +0 -1
- package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts +0 -25
- package/dist/types/src/wallet/ScriptTemplateSABPPP.d.ts.map +0 -1
- package/dist/types/src/wallet/WalletSigner.d.ts +0 -110
- package/dist/types/src/wallet/WalletSigner.d.ts.map +0 -1
- package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts +0 -2
- package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts.map +0 -1
- package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts +0 -2
- package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts.map +0 -1
- package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts +0 -2
- package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts.map +0 -1
- package/dist/types/src/wallet/createActionSdk.d.ts +0 -8
- package/dist/types/src/wallet/createActionSdk.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts +0 -94
- package/dist/types/src/wallet/sdk/CachedKeyDeriver.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/CertOps.d.ts +0 -63
- package/dist/types/src/wallet/sdk/CertOps.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/Certificate.d.ts +0 -77
- package/dist/types/src/wallet/sdk/Certificate.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/KeyDeriver.d.ts +0 -128
- package/dist/types/src/wallet/sdk/KeyDeriver.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/ProtoWallet.d.ts +0 -30
- package/dist/types/src/wallet/sdk/ProtoWallet.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts +0 -102
- package/dist/types/src/wallet/sdk/StorageSyncReader.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WERR_errors.d.ts +0 -84
- package/dist/types/src/wallet/sdk/WERR_errors.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts +0 -1036
- package/dist/types/src/wallet/sdk/Wallet.interfaces.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WalletCrypto.d.ts +0 -31
- package/dist/types/src/wallet/sdk/WalletCrypto.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WalletError.d.ts +0 -46
- package/dist/types/src/wallet/sdk/WalletError.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts +0 -293
- package/dist/types/src/wallet/sdk/WalletServices.interfaces.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts +0 -48
- package/dist/types/src/wallet/sdk/WalletSigner.interfaces.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts +0 -296
- package/dist/types/src/wallet/sdk/WalletStorage.interfaces.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/index.d.ts +0 -15
- package/dist/types/src/wallet/sdk/index.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/types.d.ts +0 -56
- package/dist/types/src/wallet/sdk/types.d.ts.map +0 -1
- package/dist/types/src/wallet/sdk/validationHelpers.d.ts +0 -301
- package/dist/types/src/wallet/sdk/validationHelpers.d.ts.map +0 -1
- package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts +0 -2
- package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts.map +0 -1
- package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts +0 -5
- package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts.map +0 -1
- package/dist/types/src/wallet/utilityHelpers.d.ts +0 -142
- package/dist/types/src/wallet/utilityHelpers.d.ts.map +0 -1
- package/dist/types/src/wallet/validationHelpers.d.ts +0 -301
- package/dist/types/src/wallet/validationHelpers.d.ts.map +0 -1
- package/docs/README.md +0 -21
- /package/docs/{auth.md → reference/auth.md} +0 -0
- /package/docs/{compat.md → reference/compat.md} +0 -0
- /package/docs/{identity.md → reference/identity.md} +0 -0
- /package/docs/{kvstore.md → reference/kvstore.md} +0 -0
- /package/docs/{messages.md → reference/messages.md} +0 -0
- /package/docs/{overlay-tools.md → reference/overlay-tools.md} +0 -0
- /package/docs/{primitives.md → reference/primitives.md} +0 -0
- /package/docs/{registry.md → reference/registry.md} +0 -0
- /package/docs/{script.md → reference/script.md} +0 -0
- /package/docs/{storage.md → reference/storage.md} +0 -0
- /package/docs/{totp.md → reference/totp.md} +0 -0
- /package/docs/{transaction.md → reference/transaction.md} +0 -0
- /package/docs/{wallet.md → reference/wallet.md} +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# SDK Design Philosophy
|
|
2
|
+
|
|
3
|
+
This document details the core principles behind the BSV TypeScript SDK architecture and design decisions.
|
|
4
|
+
|
|
5
|
+
## Zero Dependencies
|
|
6
|
+
|
|
7
|
+
The SDK is built without external dependencies to:
|
|
8
|
+
- Minimize security attack surface
|
|
9
|
+
- Reduce bundle size and complexity
|
|
10
|
+
- Ensure long-term stability
|
|
11
|
+
- Provide predictable behavior
|
|
12
|
+
|
|
13
|
+
## SPV-First Approach
|
|
14
|
+
|
|
15
|
+
The SDK prioritizes Simplified Payment Verification:
|
|
16
|
+
- **Lightweight**: No need to download the full blockchain
|
|
17
|
+
- **Efficient**: Verify transactions using merkle proofs
|
|
18
|
+
- **Scalable**: Works with millions of transactions
|
|
19
|
+
- **Secure**: Cryptographically verifiable without full nodes
|
|
20
|
+
|
|
21
|
+
## Vendor Neutrality
|
|
22
|
+
|
|
23
|
+
The SDK works with any compliant Bitcoin infrastructure:
|
|
24
|
+
- **Wallet Agnostic**: Supports any BRC-100 compliant wallet
|
|
25
|
+
- **Network Flexible**: Works with different chain tracking services
|
|
26
|
+
- **Service Independent**: No lock-in to specific providers
|
|
27
|
+
|
|
28
|
+
## Modular Design
|
|
29
|
+
|
|
30
|
+
Components are designed to work independently:
|
|
31
|
+
- **Composable**: Mix and match functionality as needed
|
|
32
|
+
- **Extensible**: Easy to add custom implementations
|
|
33
|
+
- **Testable**: Each component can be tested in isolation
|
|
34
|
+
- **Maintainable**: Clear separation of concerns
|
|
35
|
+
|
|
36
|
+
## TypeScript-First
|
|
37
|
+
|
|
38
|
+
Built specifically for TypeScript to provide:
|
|
39
|
+
- **Type Safety**: Catch errors at compile time
|
|
40
|
+
- **Developer Experience**: Rich IDE support and autocomplete
|
|
41
|
+
- **Documentation**: Types serve as living documentation
|
|
42
|
+
- **Reliability**: Reduced runtime errors
|
|
43
|
+
|
|
44
|
+
## Security by Design
|
|
45
|
+
|
|
46
|
+
Security considerations are built into every component:
|
|
47
|
+
- **Cryptographic Primitives**: Secure implementations of Bitcoin cryptography
|
|
48
|
+
- **Input Validation**: All inputs are validated and sanitized
|
|
49
|
+
- **Error Handling**: Comprehensive error handling prevents information leakage
|
|
50
|
+
- **Best Practices**: Follows established security patterns
|
|
51
|
+
|
|
52
|
+
## Performance Focused
|
|
53
|
+
|
|
54
|
+
Optimized for real-world application needs:
|
|
55
|
+
- **Memory Efficient**: Minimal memory footprint
|
|
56
|
+
- **Fast Execution**: Optimized critical paths
|
|
57
|
+
- **Batch Processing**: Support for high-throughput scenarios
|
|
58
|
+
- **Caching**: Intelligent caching where appropriate
|
|
59
|
+
|
|
60
|
+
## Developer-Friendly
|
|
61
|
+
|
|
62
|
+
Designed to make Bitcoin development accessible:
|
|
63
|
+
- **Clear APIs**: Intuitive method names and parameters
|
|
64
|
+
- **Comprehensive Documentation**: Tutorials, guides, and references
|
|
65
|
+
- **Working Examples**: Real code that developers can use immediately
|
|
66
|
+
- **Progressive Complexity**: Start simple, add complexity as needed
|
|
67
|
+
|
|
68
|
+
## Next Steps
|
|
69
|
+
|
|
70
|
+
- Understand [Wallet Integration](./wallet-integration.md) patterns
|
|
71
|
+
- Learn about [SPV Verification](./spv-verification.md) concepts
|
|
72
|
+
- Explore [Key Management](./key-management.md) approaches
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
# Digital Signatures
|
|
2
|
+
|
|
3
|
+
How digital signatures work in Bitcoin and their implementation in the BSV TypeScript SDK.
|
|
4
|
+
|
|
5
|
+
## What are Digital Signatures?
|
|
6
|
+
|
|
7
|
+
Digital signatures prove ownership and authorize Bitcoin transactions:
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
import { PrivateKey, Transaction } from '@bsv/sdk'
|
|
11
|
+
|
|
12
|
+
// Create a signature
|
|
13
|
+
const privateKey = PrivateKey.fromRandom()
|
|
14
|
+
const message = 'transaction data'
|
|
15
|
+
const signature = privateKey.sign(message)
|
|
16
|
+
|
|
17
|
+
// Verify the signature
|
|
18
|
+
const publicKey = privateKey.toPublicKey()
|
|
19
|
+
const isValid = publicKey.verify(message, signature)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Bitcoin Signatures
|
|
23
|
+
|
|
24
|
+
Bitcoin uses ECDSA (Elliptic Curve Digital Signature Algorithm):
|
|
25
|
+
- **secp256k1**: The elliptic curve used by Bitcoin
|
|
26
|
+
- **SHA-256**: Hash function for message digests
|
|
27
|
+
- **DER Encoding**: Standard format for signature serialization
|
|
28
|
+
|
|
29
|
+
## SIGHASH Types
|
|
30
|
+
|
|
31
|
+
SIGHASH flags determine what parts of a transaction are signed:
|
|
32
|
+
|
|
33
|
+
### SIGHASH_ALL (Default)
|
|
34
|
+
Signs all inputs and outputs:
|
|
35
|
+
```typescript
|
|
36
|
+
const signature = privateKey.sign(txHash, 'all')
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### SIGHASH_NONE
|
|
40
|
+
Signs all inputs but no outputs:
|
|
41
|
+
```typescript
|
|
42
|
+
const signature = privateKey.sign(txHash, 'none')
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### SIGHASH_SINGLE
|
|
46
|
+
Signs all inputs and one corresponding output:
|
|
47
|
+
```typescript
|
|
48
|
+
const signature = privateKey.sign(txHash, 'single')
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### SIGHASH_ANYONECANPAY
|
|
52
|
+
Can be combined with other flags to sign only one input:
|
|
53
|
+
```typescript
|
|
54
|
+
const signature = privateKey.sign(txHash, 'all|anyonecanpay')
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Transaction Signing
|
|
58
|
+
|
|
59
|
+
The SDK handles transaction signing automatically:
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
// Manual signing (low-level)
|
|
63
|
+
const tx = new Transaction()
|
|
64
|
+
const signature = tx.sign(privateKey, inputIndex, sighashType)
|
|
65
|
+
|
|
66
|
+
// Wallet signing (recommended)
|
|
67
|
+
const wallet = new WalletClient()
|
|
68
|
+
const action = await wallet.createAction({
|
|
69
|
+
outputs: [/* outputs */]
|
|
70
|
+
})
|
|
71
|
+
// Wallet handles signing internally
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Signature Verification
|
|
75
|
+
|
|
76
|
+
Verify signatures to ensure transaction validity:
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
// Verify a specific signature
|
|
80
|
+
const isValid = publicKey.verify(messageHash, signature)
|
|
81
|
+
|
|
82
|
+
// Verify entire transaction
|
|
83
|
+
const txValid = await transaction.verify(chainTracker)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## DER Encoding
|
|
87
|
+
|
|
88
|
+
Signatures are encoded in DER format:
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
// Get DER-encoded signature
|
|
92
|
+
const derSignature = signature.toDER()
|
|
93
|
+
|
|
94
|
+
// Parse DER signature
|
|
95
|
+
const sig = Signature.fromDER(derBytes)
|
|
96
|
+
|
|
97
|
+
// Get r and s components
|
|
98
|
+
const r = signature.r
|
|
99
|
+
const s = signature.s
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Security Considerations
|
|
103
|
+
|
|
104
|
+
### Nonce Security
|
|
105
|
+
- Each signature must use a unique, random nonce
|
|
106
|
+
- Reusing nonces can leak private keys
|
|
107
|
+
- The SDK handles nonce generation securely
|
|
108
|
+
|
|
109
|
+
### Signature Malleability
|
|
110
|
+
- Bitcoin signatures can be modified without invalidating them
|
|
111
|
+
- Use canonical signatures to prevent malleability
|
|
112
|
+
- The SDK produces canonical signatures by default
|
|
113
|
+
|
|
114
|
+
### Hash Types
|
|
115
|
+
- Choose appropriate SIGHASH types for your use case
|
|
116
|
+
- SIGHASH_ALL is safest for most applications
|
|
117
|
+
- Other types enable advanced transaction patterns
|
|
118
|
+
|
|
119
|
+
## Common Patterns
|
|
120
|
+
|
|
121
|
+
### Multi-Input Signing
|
|
122
|
+
```typescript
|
|
123
|
+
// Sign multiple inputs in a transaction
|
|
124
|
+
for (let i = 0; i < transaction.inputs.length; i++) {
|
|
125
|
+
const signature = privateKey.sign(transaction.getSignatureHash(i))
|
|
126
|
+
transaction.inputs[i].unlockingScript = createUnlockingScript(signature)
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Conditional Signatures
|
|
131
|
+
```typescript
|
|
132
|
+
// Different signatures for different conditions
|
|
133
|
+
const signature1 = privateKey1.sign(txHash, 'all')
|
|
134
|
+
const signature2 = privateKey2.sign(txHash, 'single')
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Error Handling
|
|
138
|
+
|
|
139
|
+
Common signature issues:
|
|
140
|
+
- Invalid private key format
|
|
141
|
+
- Incorrect message hash
|
|
142
|
+
- Malformed signature data
|
|
143
|
+
- Verification failures
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
try {
|
|
147
|
+
const signature = privateKey.sign(message)
|
|
148
|
+
} catch (error) {
|
|
149
|
+
console.error('Signing failed:', error.message)
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Best Practices
|
|
154
|
+
|
|
155
|
+
- Always use secure random number generation
|
|
156
|
+
- Verify signatures before trusting them
|
|
157
|
+
- Use appropriate SIGHASH types for your use case
|
|
158
|
+
- Store signatures in DER format for interoperability
|
|
159
|
+
- Never reuse nonces across signatures
|
|
160
|
+
|
|
161
|
+
## Wallet Integration
|
|
162
|
+
|
|
163
|
+
Most applications use wallets for signing:
|
|
164
|
+
|
|
165
|
+
```typescript
|
|
166
|
+
// Wallet handles signature creation
|
|
167
|
+
const wallet = new WalletClient()
|
|
168
|
+
const result = await wallet.createAction({
|
|
169
|
+
description: 'Payment transaction',
|
|
170
|
+
outputs: [/* outputs */]
|
|
171
|
+
})
|
|
172
|
+
// Signatures created automatically
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
## Next Steps
|
|
176
|
+
|
|
177
|
+
- Understand [Key Management](./key-management.md) for signature security
|
|
178
|
+
- Learn about [Script Templates](./script-templates.md) for signature usage
|
|
179
|
+
- Explore [Transaction Structure](./transaction-structure.md) for signature placement
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# SPV Verification
|
|
2
|
+
|
|
3
|
+
Understanding Simplified Payment Verification and how it enables lightweight Bitcoin applications.
|
|
4
|
+
|
|
5
|
+
## What is SPV?
|
|
6
|
+
|
|
7
|
+
SPV allows verification of Bitcoin transactions without downloading the entire blockchain:
|
|
8
|
+
- **Lightweight**: Only requires block headers and merkle proofs
|
|
9
|
+
- **Secure**: Cryptographically verifiable using merkle trees
|
|
10
|
+
- **Efficient**: Scales to millions of transactions
|
|
11
|
+
- **Practical**: Enables mobile and web applications
|
|
12
|
+
|
|
13
|
+
## How SPV Works
|
|
14
|
+
|
|
15
|
+
### 1. Block Headers
|
|
16
|
+
Download only block headers (80 bytes each) instead of full blocks:
|
|
17
|
+
```typescript
|
|
18
|
+
// Block header contains merkle root
|
|
19
|
+
const header = await chainTracker.getBlockHeader(blockHash)
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### 2. Merkle Proofs
|
|
23
|
+
Verify transaction inclusion using merkle proofs:
|
|
24
|
+
```typescript
|
|
25
|
+
import { MerklePath } from '@bsv/sdk'
|
|
26
|
+
|
|
27
|
+
// Verify transaction is in block
|
|
28
|
+
const proof = MerklePath.fromHex(proofHex)
|
|
29
|
+
const isValid = proof.verify(txid, merkleRoot)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 3. Transaction Verification
|
|
33
|
+
Combine proofs with block headers for full verification:
|
|
34
|
+
```typescript
|
|
35
|
+
import { Transaction } from '@bsv/sdk'
|
|
36
|
+
|
|
37
|
+
// Verify transaction with SPV
|
|
38
|
+
const isValid = await Transaction.verify(
|
|
39
|
+
transaction,
|
|
40
|
+
chainTracker,
|
|
41
|
+
{ merkleProof: proof }
|
|
42
|
+
)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Merkle Trees
|
|
46
|
+
|
|
47
|
+
Bitcoin uses merkle trees to efficiently prove transaction inclusion:
|
|
48
|
+
- **Binary Tree**: Each leaf is a transaction ID
|
|
49
|
+
- **Hash Pairs**: Parent nodes are hashes of child pairs
|
|
50
|
+
- **Root Hash**: Single hash representing all transactions
|
|
51
|
+
- **Proof Path**: Minimal data needed to verify inclusion
|
|
52
|
+
|
|
53
|
+
## Security Model
|
|
54
|
+
|
|
55
|
+
SPV provides strong security guarantees:
|
|
56
|
+
- **Proof of Work**: Block headers contain proof of work
|
|
57
|
+
- **Cryptographic Hashes**: Merkle proofs use SHA-256
|
|
58
|
+
- **Chain Validation**: Verify header chain integrity
|
|
59
|
+
- **Fraud Detection**: Invalid proofs are cryptographically detectable
|
|
60
|
+
|
|
61
|
+
## Trade-offs
|
|
62
|
+
|
|
63
|
+
### Advantages
|
|
64
|
+
- **Low Resource Usage**: Minimal storage and bandwidth
|
|
65
|
+
- **Fast Synchronization**: Quick startup time
|
|
66
|
+
- **Scalability**: Works with any blockchain size
|
|
67
|
+
- **Privacy**: No need to reveal which transactions you care about
|
|
68
|
+
|
|
69
|
+
### Limitations
|
|
70
|
+
- **Trust Assumptions**: Relies on honest majority of miners
|
|
71
|
+
- **Network Dependency**: Requires connection to full nodes
|
|
72
|
+
- **Delayed Detection**: May not immediately detect invalid blocks
|
|
73
|
+
|
|
74
|
+
## SDK Implementation
|
|
75
|
+
|
|
76
|
+
The SDK provides comprehensive SPV support:
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
// Configure SPV verification
|
|
80
|
+
const config = {
|
|
81
|
+
spv: {
|
|
82
|
+
enabled: true,
|
|
83
|
+
maxMemoryLimit: 100000000, // 100MB
|
|
84
|
+
chainTracker: chainTracker
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Verify transaction with SPV
|
|
89
|
+
const result = await transaction.verify(chainTracker, {
|
|
90
|
+
merkleProof: proof,
|
|
91
|
+
blockHeader: header
|
|
92
|
+
})
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## BEEF Integration
|
|
96
|
+
|
|
97
|
+
SPV works seamlessly with BEEF format:
|
|
98
|
+
- **Efficient Encoding**: BEEF includes merkle proofs
|
|
99
|
+
- **Batch Verification**: Verify multiple transactions together
|
|
100
|
+
- **Standardized Format**: Consistent across applications
|
|
101
|
+
|
|
102
|
+
## Next Steps
|
|
103
|
+
|
|
104
|
+
- Learn about [BEEF Format](./beef.md) for efficient data exchange
|
|
105
|
+
- Understand [Transaction Encoding](./transaction-encoding.md) formats
|
|
106
|
+
- Explore [Trust Model](./trust-model.md) considerations
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# Transaction Encoding
|
|
2
|
+
|
|
3
|
+
How Bitcoin transactions are serialized and deserialized in different formats within the BSV TypeScript SDK.
|
|
4
|
+
|
|
5
|
+
## Encoding Formats
|
|
6
|
+
|
|
7
|
+
The SDK supports multiple transaction encoding formats:
|
|
8
|
+
|
|
9
|
+
### Raw Transaction Format
|
|
10
|
+
Standard Bitcoin transaction serialization:
|
|
11
|
+
```typescript
|
|
12
|
+
import { Transaction } from '@bsv/sdk'
|
|
13
|
+
|
|
14
|
+
// Serialize to hex
|
|
15
|
+
const txHex = transaction.toHex()
|
|
16
|
+
|
|
17
|
+
// Deserialize from hex
|
|
18
|
+
const tx = Transaction.fromHex(txHex)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### BEEF Format
|
|
22
|
+
Bitcoin Extras Extension Format for efficient data exchange:
|
|
23
|
+
```typescript
|
|
24
|
+
// Serialize to BEEF
|
|
25
|
+
const beefHex = transaction.toBEEF()
|
|
26
|
+
|
|
27
|
+
// Deserialize from BEEF
|
|
28
|
+
const tx = Transaction.fromHexBEEF(beefHex)
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Binary Format
|
|
32
|
+
Raw binary data for maximum efficiency:
|
|
33
|
+
```typescript
|
|
34
|
+
// Serialize to binary
|
|
35
|
+
const txBinary = transaction.toBinary()
|
|
36
|
+
|
|
37
|
+
// Deserialize from binary
|
|
38
|
+
const tx = Transaction.fromBinary(txBinary)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Serialization Structure
|
|
42
|
+
|
|
43
|
+
### Standard Transaction
|
|
44
|
+
```
|
|
45
|
+
Version (4 bytes)
|
|
46
|
+
Input Count (varint)
|
|
47
|
+
Inputs (variable)
|
|
48
|
+
Output Count (varint)
|
|
49
|
+
Outputs (variable)
|
|
50
|
+
Lock Time (4 bytes)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Input Structure
|
|
54
|
+
```
|
|
55
|
+
Previous TX Hash (32 bytes)
|
|
56
|
+
Output Index (4 bytes)
|
|
57
|
+
Script Length (varint)
|
|
58
|
+
Unlocking Script (variable)
|
|
59
|
+
Sequence (4 bytes)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Output Structure
|
|
63
|
+
```
|
|
64
|
+
Value (8 bytes)
|
|
65
|
+
Script Length (varint)
|
|
66
|
+
Locking Script (variable)
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## BEEF Enhancements
|
|
70
|
+
|
|
71
|
+
BEEF format adds:
|
|
72
|
+
- **Merkle Proofs**: SPV verification data
|
|
73
|
+
- **Block Headers**: Chain validation information
|
|
74
|
+
- **Metadata**: Additional transaction context
|
|
75
|
+
- **Compression**: Efficient encoding for large datasets
|
|
76
|
+
|
|
77
|
+
## Encoding Considerations
|
|
78
|
+
|
|
79
|
+
### Size Optimization
|
|
80
|
+
- Use BEEF for transactions with proofs
|
|
81
|
+
- Use raw format for minimal overhead
|
|
82
|
+
- Consider compression for large batches
|
|
83
|
+
|
|
84
|
+
### Compatibility
|
|
85
|
+
- Raw format works with all Bitcoin software
|
|
86
|
+
- BEEF requires compatible parsers
|
|
87
|
+
- Binary format is most efficient but less portable
|
|
88
|
+
|
|
89
|
+
### Performance
|
|
90
|
+
- Binary operations are fastest
|
|
91
|
+
- Hex encoding is human-readable
|
|
92
|
+
- BEEF provides best feature/size ratio
|
|
93
|
+
|
|
94
|
+
## Working with Encodings
|
|
95
|
+
|
|
96
|
+
### Conversion Between Formats
|
|
97
|
+
```typescript
|
|
98
|
+
// Start with a transaction
|
|
99
|
+
const tx = new Transaction()
|
|
100
|
+
|
|
101
|
+
// Convert between formats
|
|
102
|
+
const hex = tx.toHex()
|
|
103
|
+
const binary = tx.toBinary()
|
|
104
|
+
const beef = tx.toBEEF()
|
|
105
|
+
|
|
106
|
+
// All represent the same transaction
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Validation
|
|
110
|
+
```typescript
|
|
111
|
+
// Verify encoding integrity
|
|
112
|
+
const originalTx = Transaction.fromHex(hex)
|
|
113
|
+
const roundTripHex = originalTx.toHex()
|
|
114
|
+
console.log(hex === roundTripHex) // true
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Use Cases
|
|
118
|
+
|
|
119
|
+
### Network Transmission
|
|
120
|
+
- Use hex for JSON APIs
|
|
121
|
+
- Use binary for efficient protocols
|
|
122
|
+
- Use BEEF for SPV applications
|
|
123
|
+
|
|
124
|
+
### Storage
|
|
125
|
+
- Raw format for blockchain storage
|
|
126
|
+
- BEEF for application databases
|
|
127
|
+
- Binary for memory-constrained environments
|
|
128
|
+
|
|
129
|
+
### Interoperability
|
|
130
|
+
- Hex for debugging and logging
|
|
131
|
+
- Raw format for wallet compatibility
|
|
132
|
+
- BEEF for modern Bitcoin applications
|
|
133
|
+
|
|
134
|
+
## Error Handling
|
|
135
|
+
|
|
136
|
+
Common encoding issues:
|
|
137
|
+
- Invalid hex characters
|
|
138
|
+
- Truncated binary data
|
|
139
|
+
- Malformed BEEF structures
|
|
140
|
+
- Version compatibility problems
|
|
141
|
+
|
|
142
|
+
The SDK provides comprehensive validation and error reporting.
|
|
143
|
+
|
|
144
|
+
## Next Steps
|
|
145
|
+
|
|
146
|
+
- Understand [BEEF Format](./beef.md) in detail
|
|
147
|
+
- Learn about [SPV Verification](./spv-verification.md) with BEEF
|
|
148
|
+
- Explore [Transaction Structure](./transaction-structure.md) fundamentals
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# Transaction Structure
|
|
2
|
+
|
|
3
|
+
Understanding how Bitcoin transactions work and their representation in the BSV TypeScript SDK.
|
|
4
|
+
|
|
5
|
+
## Basic Transaction Components
|
|
6
|
+
|
|
7
|
+
A Bitcoin transaction consists of:
|
|
8
|
+
|
|
9
|
+
- **Inputs**: References to previous transaction outputs being spent
|
|
10
|
+
- **Outputs**: New transaction outputs being created
|
|
11
|
+
- **Metadata**: Version, lock time, and other transaction properties
|
|
12
|
+
|
|
13
|
+
## Transaction in the SDK
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import { Transaction } from '@bsv/sdk'
|
|
17
|
+
|
|
18
|
+
// Create a new transaction
|
|
19
|
+
const tx = new Transaction()
|
|
20
|
+
|
|
21
|
+
// Add inputs and outputs
|
|
22
|
+
tx.addInput({
|
|
23
|
+
sourceTransaction: previousTx,
|
|
24
|
+
sourceOutputIndex: 0,
|
|
25
|
+
unlockingScript: unlockingScript
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
tx.addOutput({
|
|
29
|
+
satoshis: 1000,
|
|
30
|
+
lockingScript: lockingScript
|
|
31
|
+
})
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Key Concepts
|
|
35
|
+
|
|
36
|
+
### Inputs
|
|
37
|
+
- Reference previous transaction outputs (UTXOs)
|
|
38
|
+
- Include unlocking scripts to prove ownership
|
|
39
|
+
- Must be fully consumed (no partial spending)
|
|
40
|
+
|
|
41
|
+
### Outputs
|
|
42
|
+
- Create new UTXOs with specific values
|
|
43
|
+
- Include locking scripts that define spending conditions
|
|
44
|
+
- Can be spent by future transactions
|
|
45
|
+
|
|
46
|
+
### Transaction ID
|
|
47
|
+
- Unique identifier calculated from transaction data
|
|
48
|
+
- Used to reference the transaction in inputs
|
|
49
|
+
|
|
50
|
+
## Working with Transactions
|
|
51
|
+
|
|
52
|
+
The SDK provides methods to:
|
|
53
|
+
- Serialize transactions to hex format
|
|
54
|
+
- Calculate transaction fees
|
|
55
|
+
- Verify transaction validity
|
|
56
|
+
- Sign transaction inputs
|
|
57
|
+
|
|
58
|
+
## Next Steps
|
|
59
|
+
|
|
60
|
+
- Learn about [BEEF Format](./beef.md) for efficient transaction representation with validation data
|
|
61
|
+
- Learn about [Script Templates](./script-templates.md) for locking/unlocking scripts
|
|
62
|
+
- Understand [Digital Signatures](./signatures.md) for transaction authorization
|
|
63
|
+
- Explore [Transaction Encoding](./transaction-encoding.md) for serialization formats
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Trust Model
|
|
2
|
+
|
|
3
|
+
Understanding the security assumptions and trust relationships in BSV TypeScript SDK applications.
|
|
4
|
+
|
|
5
|
+
## Core Trust Principles
|
|
6
|
+
|
|
7
|
+
The SDK is designed around minimizing trust requirements:
|
|
8
|
+
|
|
9
|
+
### Trustless Verification
|
|
10
|
+
- **Cryptographic Proofs**: Verify transactions mathematically
|
|
11
|
+
- **SPV Security**: Validate without trusting third parties
|
|
12
|
+
- **Self-Sovereign**: Users control their own keys and data
|
|
13
|
+
|
|
14
|
+
### Minimized Dependencies
|
|
15
|
+
- **Zero External Dependencies**: Reduces attack surface
|
|
16
|
+
- **Self-Contained**: All cryptographic operations built-in
|
|
17
|
+
- **Auditable**: Open source and transparent implementation
|
|
18
|
+
|
|
19
|
+
## Trust Relationships
|
|
20
|
+
|
|
21
|
+
### User Trust
|
|
22
|
+
Users must trust:
|
|
23
|
+
- **The SDK Code**: Open source and auditable
|
|
24
|
+
- **Their Wallet**: Manages private keys securely
|
|
25
|
+
- **Their Device**: Secure execution environment
|
|
26
|
+
|
|
27
|
+
### Network Trust
|
|
28
|
+
Applications rely on:
|
|
29
|
+
- **Bitcoin Network**: Honest majority of miners
|
|
30
|
+
- **Chain Trackers**: Provide accurate blockchain data
|
|
31
|
+
- **SPV Assumptions**: Valid merkle proofs and headers
|
|
32
|
+
|
|
33
|
+
### Service Trust
|
|
34
|
+
Optional trust relationships:
|
|
35
|
+
- **Wallet Providers**: If using hosted wallets
|
|
36
|
+
- **ARC Services**: For transaction broadcasting
|
|
37
|
+
- **Overlay Services**: For additional functionality
|
|
38
|
+
|
|
39
|
+
## Security Assumptions
|
|
40
|
+
|
|
41
|
+
### Cryptographic Security
|
|
42
|
+
- **secp256k1**: Elliptic curve is secure
|
|
43
|
+
- **SHA-256**: Hash function is collision-resistant
|
|
44
|
+
- **ECDSA**: Digital signature scheme is unforgeable
|
|
45
|
+
- **Random Number Generation**: Entropy source is secure
|
|
46
|
+
|
|
47
|
+
### Network Security
|
|
48
|
+
- **Proof of Work**: Mining provides security
|
|
49
|
+
- **Longest Chain**: Honest chain has most work
|
|
50
|
+
- **Block Finality**: Deep confirmations prevent reorganization
|
|
51
|
+
- **Network Connectivity**: Access to honest nodes
|
|
52
|
+
|
|
53
|
+
## Risk Mitigation
|
|
54
|
+
|
|
55
|
+
### Key Management
|
|
56
|
+
```typescript
|
|
57
|
+
// Minimize private key exposure
|
|
58
|
+
const wallet = new WalletClient() // Keys stay in wallet
|
|
59
|
+
|
|
60
|
+
// Avoid direct key handling
|
|
61
|
+
// const privateKey = PrivateKey.fromString() // Higher risk
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Transaction Verification
|
|
65
|
+
```typescript
|
|
66
|
+
// Always verify important transactions
|
|
67
|
+
const isValid = await transaction.verify(chainTracker, {
|
|
68
|
+
merkleProof: proof,
|
|
69
|
+
blockHeader: header
|
|
70
|
+
})
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Multiple Sources
|
|
74
|
+
```typescript
|
|
75
|
+
// Use multiple chain trackers
|
|
76
|
+
const config = {
|
|
77
|
+
chainTracker: {
|
|
78
|
+
primary: 'WhatsOnChain',
|
|
79
|
+
fallbacks: ['GorillaPool', 'TAAL']
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Threat Model
|
|
85
|
+
|
|
86
|
+
### Attacks to Consider
|
|
87
|
+
- **Private Key Compromise**: Secure key storage
|
|
88
|
+
- **Man-in-the-Middle**: Use HTTPS and verify certificates
|
|
89
|
+
- **Service Downtime**: Implement fallback mechanisms
|
|
90
|
+
- **Double Spending**: Wait for confirmations
|
|
91
|
+
- **Replay Attacks**: Use unique transaction IDs
|
|
92
|
+
|
|
93
|
+
## Application Design
|
|
94
|
+
|
|
95
|
+
### Security-First Design
|
|
96
|
+
```typescript
|
|
97
|
+
// Validate all inputs
|
|
98
|
+
function processTransaction(txHex: string) {
|
|
99
|
+
if (!isValidHex(txHex)) {
|
|
100
|
+
throw new Error('Invalid transaction hex')
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const tx = Transaction.fromHex(txHex)
|
|
104
|
+
// Process verified transaction
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### Error Handling
|
|
109
|
+
```typescript
|
|
110
|
+
// Handle trust failures gracefully
|
|
111
|
+
try {
|
|
112
|
+
const result = await chainTracker.getTransaction(txid)
|
|
113
|
+
} catch (error) {
|
|
114
|
+
// Fallback to alternative source
|
|
115
|
+
const backup = await fallbackTracker.getTransaction(txid)
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Next Steps
|
|
120
|
+
|
|
121
|
+
- Review [Key Management](./key-management.md) security practices
|
|
122
|
+
- Understand [SPV Verification](./spv-verification.md) assumptions
|
|
123
|
+
- Learn about [Wallet Integration](./wallet-integration.md) trust models
|