@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
|
@@ -1,933 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const SHIPBroadcaster_1 = __importDefault(require("../../overlay-tools/SHIPBroadcaster"));
|
|
7
|
-
const index_1 = require("../../primitives/index");
|
|
8
|
-
const index_2 = require("../../transaction/index");
|
|
9
|
-
const OverlayAdminTokenTemplate_1 = __importDefault(require("../../overlay-tools/OverlayAdminTokenTemplate"));
|
|
10
|
-
const CompletedProtoWallet_1 = require("../../auth/certificates/__tests/CompletedProtoWallet");
|
|
11
|
-
const mockFacilitator = {
|
|
12
|
-
send: jest.fn()
|
|
13
|
-
};
|
|
14
|
-
const mockResolver = {
|
|
15
|
-
query: jest.fn()
|
|
16
|
-
};
|
|
17
|
-
describe('SHIPCast', () => {
|
|
18
|
-
beforeEach(() => {
|
|
19
|
-
mockFacilitator.send.mockReset();
|
|
20
|
-
mockResolver.query.mockReset();
|
|
21
|
-
});
|
|
22
|
-
it('Handles constructor errors', () => {
|
|
23
|
-
expect(() => new SHIPBroadcaster_1.default([])).toThrow(new Error('At least one topic is required for broadcast.'));
|
|
24
|
-
expect(() => new SHIPBroadcaster_1.default(['badprefix_foo'])).toThrow(new Error('Every topic must start with "tm_".'));
|
|
25
|
-
});
|
|
26
|
-
it('should broadcast to a single SHIP host found via resolver', async () => {
|
|
27
|
-
const shipHostKey = new index_1.PrivateKey(42);
|
|
28
|
-
const shipWallet = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey);
|
|
29
|
-
const shipLib = new OverlayAdminTokenTemplate_1.default(shipWallet);
|
|
30
|
-
const shipScript = await shipLib.lock('SHIP', 'https://shiphost.com', 'tm_foo');
|
|
31
|
-
const shipTx = new index_2.Transaction(1, [], [
|
|
32
|
-
{
|
|
33
|
-
lockingScript: shipScript,
|
|
34
|
-
satoshis: 1
|
|
35
|
-
}
|
|
36
|
-
], 0);
|
|
37
|
-
// Resolver returns one host interested in 'tm_foo' topic
|
|
38
|
-
mockResolver.query.mockReturnValueOnce({
|
|
39
|
-
type: 'output-list',
|
|
40
|
-
outputs: [
|
|
41
|
-
{
|
|
42
|
-
beef: shipTx.toBEEF(),
|
|
43
|
-
outputIndex: 0
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
});
|
|
47
|
-
// Host responds successfully
|
|
48
|
-
mockFacilitator.send.mockReturnValueOnce({
|
|
49
|
-
tm_foo: {
|
|
50
|
-
outputsToAdmit: [0],
|
|
51
|
-
coinsToRetain: []
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo'], {
|
|
55
|
-
facilitator: mockFacilitator,
|
|
56
|
-
resolver: mockResolver
|
|
57
|
-
});
|
|
58
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
59
|
-
const response = await b.broadcast(testTx);
|
|
60
|
-
expect(response).toEqual({
|
|
61
|
-
status: 'success',
|
|
62
|
-
txid: testTx.id('hex'),
|
|
63
|
-
message: 'Sent to 1 Overlay Services host.'
|
|
64
|
-
});
|
|
65
|
-
expect(mockResolver.query).toHaveBeenCalledWith({
|
|
66
|
-
service: 'ls_ship',
|
|
67
|
-
query: {
|
|
68
|
-
topics: ['tm_foo']
|
|
69
|
-
}
|
|
70
|
-
}, 1000);
|
|
71
|
-
expect(mockFacilitator.send).toHaveBeenCalledWith('https://shiphost.com', {
|
|
72
|
-
beef: testTx.toBEEF(),
|
|
73
|
-
topics: ['tm_foo']
|
|
74
|
-
});
|
|
75
|
-
});
|
|
76
|
-
it('should be resilient to malformed or corrupted SHIP data, to the extent possible', async () => {
|
|
77
|
-
const shipHostKey = new index_1.PrivateKey(42);
|
|
78
|
-
const shipWallet = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey);
|
|
79
|
-
const shipLib = new OverlayAdminTokenTemplate_1.default(shipWallet);
|
|
80
|
-
// First SHIP is for wrong topic
|
|
81
|
-
const shipScript = await shipLib.lock('SHIP', 'https://shiphost.com', 'tm_wrong');
|
|
82
|
-
const shipTx = new index_2.Transaction(1, [], [
|
|
83
|
-
{
|
|
84
|
-
lockingScript: shipScript,
|
|
85
|
-
satoshis: 1
|
|
86
|
-
}
|
|
87
|
-
], 0);
|
|
88
|
-
const shipHostKey2 = new index_1.PrivateKey(43);
|
|
89
|
-
const shipWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey2);
|
|
90
|
-
const shipLib2 = new OverlayAdminTokenTemplate_1.default(shipWallet2);
|
|
91
|
-
// Second SHIP is for correct topic
|
|
92
|
-
const shipScript2 = await shipLib2.lock('SHIP', 'https://shiphost2.com', 'tm_foo');
|
|
93
|
-
const shipTx2 = new index_2.Transaction(1, [], [
|
|
94
|
-
{
|
|
95
|
-
lockingScript: shipScript2,
|
|
96
|
-
satoshis: 1
|
|
97
|
-
}
|
|
98
|
-
], 0);
|
|
99
|
-
// Resolver returns two hosts, both the correct and the corrupted ones.
|
|
100
|
-
mockResolver.query.mockReturnValueOnce({
|
|
101
|
-
type: 'output-list',
|
|
102
|
-
outputs: [
|
|
103
|
-
{
|
|
104
|
-
beef: shipTx.toBEEF(),
|
|
105
|
-
outputIndex: 0
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
beef: shipTx2.toBEEF(),
|
|
109
|
-
outputIndex: 0
|
|
110
|
-
}
|
|
111
|
-
]
|
|
112
|
-
});
|
|
113
|
-
// Host responds successfully
|
|
114
|
-
mockFacilitator.send.mockReturnValue({
|
|
115
|
-
tm_foo: {
|
|
116
|
-
outputsToAdmit: [0],
|
|
117
|
-
coinsToRetain: []
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo'], {
|
|
121
|
-
facilitator: mockFacilitator,
|
|
122
|
-
resolver: mockResolver
|
|
123
|
-
});
|
|
124
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
125
|
-
let response = await b.broadcast(testTx);
|
|
126
|
-
expect(response).toEqual({
|
|
127
|
-
status: 'success',
|
|
128
|
-
txid: testTx.id('hex'),
|
|
129
|
-
// One SHIP advertisement should be used, but the second one was invalid
|
|
130
|
-
message: 'Sent to 1 Overlay Services host.'
|
|
131
|
-
});
|
|
132
|
-
// Transaction should have been sent to the second host, but the first one was invalid
|
|
133
|
-
expect(mockFacilitator.send).toHaveBeenCalledWith('https://shiphost2.com', {
|
|
134
|
-
beef: testTx.toBEEF(),
|
|
135
|
-
topics: ['tm_foo']
|
|
136
|
-
});
|
|
137
|
-
mockFacilitator.send.mockClear();
|
|
138
|
-
// Resolver returns the wrong type of data
|
|
139
|
-
mockResolver.query.mockReturnValueOnce({
|
|
140
|
-
type: 'invalid',
|
|
141
|
-
bogus: true,
|
|
142
|
-
outputs: {
|
|
143
|
-
different: 'structure'
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
await expect(async () => await b.broadcast(testTx)).rejects.toThrow('SHIP answer is not an output list.');
|
|
147
|
-
expect(mockFacilitator.send).not.toHaveBeenCalled();
|
|
148
|
-
// Resolver returns the wrong output structure
|
|
149
|
-
mockResolver.query.mockReturnValueOnce({
|
|
150
|
-
type: 'output-list',
|
|
151
|
-
outputs: {
|
|
152
|
-
different: 'structure'
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
await expect(async () => await b.broadcast(testTx)).rejects.toThrow('answer.outputs is not iterable');
|
|
156
|
-
expect(mockFacilitator.send).not.toHaveBeenCalled();
|
|
157
|
-
// Resolver returns corrupted BEEF alongside good data
|
|
158
|
-
mockResolver.query.mockReturnValueOnce({
|
|
159
|
-
type: 'output-list',
|
|
160
|
-
outputs: [
|
|
161
|
-
{
|
|
162
|
-
beef: shipTx.toBEEF(), // Wrong topic
|
|
163
|
-
outputIndex: 0
|
|
164
|
-
},
|
|
165
|
-
{
|
|
166
|
-
beef: [0], // corrupted "rotten" BEEF
|
|
167
|
-
outputIndex: 4
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
beef: shipTx2.toBEEF(),
|
|
171
|
-
outputIndex: 1 // Wrong output index
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
beef: shipTx2.toBEEF(),
|
|
175
|
-
outputIndex: 0 // correct
|
|
176
|
-
}
|
|
177
|
-
]
|
|
178
|
-
});
|
|
179
|
-
response = await b.broadcast(testTx);
|
|
180
|
-
expect(response).toEqual({
|
|
181
|
-
status: 'success',
|
|
182
|
-
txid: testTx.id('hex'),
|
|
183
|
-
// One SHIP advertisement should be used, but the second one was invalid
|
|
184
|
-
message: 'Sent to 1 Overlay Services host.'
|
|
185
|
-
});
|
|
186
|
-
// Transaction should have been sent to the second host, but the first one was invalid
|
|
187
|
-
expect(mockFacilitator.send).toHaveBeenCalledWith('https://shiphost2.com', {
|
|
188
|
-
beef: testTx.toBEEF(),
|
|
189
|
-
topics: ['tm_foo']
|
|
190
|
-
});
|
|
191
|
-
});
|
|
192
|
-
it('should fail when transaction cannot be serialized to BEEF', async () => {
|
|
193
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo'], {
|
|
194
|
-
facilitator: mockFacilitator,
|
|
195
|
-
resolver: mockResolver
|
|
196
|
-
});
|
|
197
|
-
const testTx = {
|
|
198
|
-
toBEEF: () => {
|
|
199
|
-
throw new Error('Cannot serialize to BEEF');
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
await expect(b.broadcast(testTx)).rejects.toThrow('Transactions sent via SHIP to Overlay Services must be serializable to BEEF format.');
|
|
203
|
-
});
|
|
204
|
-
it('should fail when no hosts are interested in the topics', async () => {
|
|
205
|
-
// Resolver returns empty output list
|
|
206
|
-
mockResolver.query.mockReturnValueOnce({
|
|
207
|
-
type: 'output-list',
|
|
208
|
-
outputs: []
|
|
209
|
-
});
|
|
210
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo'], {
|
|
211
|
-
facilitator: mockFacilitator,
|
|
212
|
-
resolver: mockResolver
|
|
213
|
-
});
|
|
214
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
215
|
-
const result = await b.broadcast(testTx);
|
|
216
|
-
expect(result).toEqual({
|
|
217
|
-
status: 'error',
|
|
218
|
-
code: 'ERR_NO_HOSTS_INTERESTED',
|
|
219
|
-
description: 'No hosts are interested in receiving this transaction.'
|
|
220
|
-
});
|
|
221
|
-
expect(mockResolver.query).toHaveBeenCalledWith({
|
|
222
|
-
service: 'ls_ship',
|
|
223
|
-
query: {
|
|
224
|
-
topics: ['tm_foo']
|
|
225
|
-
}
|
|
226
|
-
}, 1000);
|
|
227
|
-
expect(mockFacilitator.send).not.toHaveBeenCalled();
|
|
228
|
-
});
|
|
229
|
-
it('should fail when all hosts reject the transaction', async () => {
|
|
230
|
-
const shipHostKey = new index_1.PrivateKey(42);
|
|
231
|
-
const shipWallet = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey);
|
|
232
|
-
const shipLib = new OverlayAdminTokenTemplate_1.default(shipWallet);
|
|
233
|
-
const shipScript = await shipLib.lock('SHIP', 'https://shiphost.com', 'tm_foo');
|
|
234
|
-
const shipTx = new index_2.Transaction(1, [], [
|
|
235
|
-
{
|
|
236
|
-
lockingScript: shipScript,
|
|
237
|
-
satoshis: 1
|
|
238
|
-
}
|
|
239
|
-
], 0);
|
|
240
|
-
// Resolver returns one host
|
|
241
|
-
mockResolver.query.mockReturnValueOnce({
|
|
242
|
-
type: 'output-list',
|
|
243
|
-
outputs: [
|
|
244
|
-
{
|
|
245
|
-
beef: shipTx.toBEEF(),
|
|
246
|
-
outputIndex: 0
|
|
247
|
-
}
|
|
248
|
-
]
|
|
249
|
-
});
|
|
250
|
-
// Host fails
|
|
251
|
-
mockFacilitator.send.mockImplementationOnce(() => {
|
|
252
|
-
throw new Error('Host failed');
|
|
253
|
-
});
|
|
254
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo'], {
|
|
255
|
-
facilitator: mockFacilitator,
|
|
256
|
-
resolver: mockResolver
|
|
257
|
-
});
|
|
258
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
259
|
-
const result = await b.broadcast(testTx);
|
|
260
|
-
expect(result).toEqual({
|
|
261
|
-
status: 'error',
|
|
262
|
-
code: 'ERR_ALL_HOSTS_REJECTED',
|
|
263
|
-
description: 'All SHIP hosts have rejected the transaction.'
|
|
264
|
-
});
|
|
265
|
-
expect(mockFacilitator.send).toHaveBeenCalled();
|
|
266
|
-
});
|
|
267
|
-
it('should fail when required specific hosts are not among interested hosts', async () => {
|
|
268
|
-
const shipHostKey = new index_1.PrivateKey(42);
|
|
269
|
-
const shipWallet = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey);
|
|
270
|
-
const shipLib = new OverlayAdminTokenTemplate_1.default(shipWallet);
|
|
271
|
-
const shipScript = await shipLib.lock('SHIP', 'https://shiphost.com', 'tm_foo');
|
|
272
|
-
const shipTx = new index_2.Transaction(1, [], [
|
|
273
|
-
{
|
|
274
|
-
lockingScript: shipScript,
|
|
275
|
-
satoshis: 1
|
|
276
|
-
}
|
|
277
|
-
], 0);
|
|
278
|
-
// Resolver returns one host
|
|
279
|
-
mockResolver.query.mockReturnValueOnce({
|
|
280
|
-
type: 'output-list',
|
|
281
|
-
outputs: [
|
|
282
|
-
{
|
|
283
|
-
beef: shipTx.toBEEF(),
|
|
284
|
-
outputIndex: 0
|
|
285
|
-
}
|
|
286
|
-
]
|
|
287
|
-
});
|
|
288
|
-
// First host acknowledges 'tm_foo', but it's not the right host.
|
|
289
|
-
mockFacilitator.send.mockImplementationOnce(async (host, { beef, topics }) => {
|
|
290
|
-
const steak = {};
|
|
291
|
-
for (const topic of topics) {
|
|
292
|
-
steak[topic] = {
|
|
293
|
-
outputsToAdmit: topic === 'tm_foo' ? [0] : [],
|
|
294
|
-
coinsToRetain: []
|
|
295
|
-
};
|
|
296
|
-
}
|
|
297
|
-
return steak;
|
|
298
|
-
});
|
|
299
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo'], {
|
|
300
|
-
facilitator: mockFacilitator,
|
|
301
|
-
resolver: mockResolver,
|
|
302
|
-
requireAcknowledgmentFromSpecificHostsForTopics: {
|
|
303
|
-
'https://anotherhost.com': ['tm_foo']
|
|
304
|
-
},
|
|
305
|
-
requireAcknowledgmentFromAllHostsForTopics: [],
|
|
306
|
-
requireAcknowledgmentFromAnyHostForTopics: []
|
|
307
|
-
});
|
|
308
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
309
|
-
const response = await b.broadcast(testTx);
|
|
310
|
-
expect(response).toEqual({
|
|
311
|
-
status: 'error',
|
|
312
|
-
code: 'ERR_REQUIRE_ACK_FROM_SPECIFIC_HOSTS_FAILED',
|
|
313
|
-
description: 'Specific hosts did not acknowledge the required topics.'
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
it('should succeed when all hosts acknowledge all topics (default behavior)', async () => {
|
|
317
|
-
const shipHostKey1 = new index_1.PrivateKey(42);
|
|
318
|
-
const shipWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey1);
|
|
319
|
-
const shipLib1 = new OverlayAdminTokenTemplate_1.default(shipWallet1);
|
|
320
|
-
const shipScript1 = await shipLib1.lock('SHIP', 'https://shiphost1.com', 'tm_foo');
|
|
321
|
-
const shipScript1b = await shipLib1.lock('SHIP', 'https://shiphost1.com', 'tm_bar');
|
|
322
|
-
const shipTx1 = new index_2.Transaction(1, [], [
|
|
323
|
-
{
|
|
324
|
-
lockingScript: shipScript1,
|
|
325
|
-
satoshis: 1
|
|
326
|
-
},
|
|
327
|
-
{
|
|
328
|
-
lockingScript: shipScript1b,
|
|
329
|
-
satoshis: 1
|
|
330
|
-
}
|
|
331
|
-
], 0);
|
|
332
|
-
const shipHostKey2 = new index_1.PrivateKey(43);
|
|
333
|
-
const shipWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey2);
|
|
334
|
-
const shipLib2 = new OverlayAdminTokenTemplate_1.default(shipWallet2);
|
|
335
|
-
const shipScript2 = await shipLib2.lock('SHIP', 'https://shiphost2.com', 'tm_bar');
|
|
336
|
-
const shipScript2b = await shipLib2.lock('SHIP', 'https://shiphost2.com', 'tm_foo');
|
|
337
|
-
const shipTx2 = new index_2.Transaction(1, [], [
|
|
338
|
-
{
|
|
339
|
-
lockingScript: shipScript2,
|
|
340
|
-
satoshis: 1
|
|
341
|
-
},
|
|
342
|
-
{
|
|
343
|
-
lockingScript: shipScript2b,
|
|
344
|
-
satoshis: 1
|
|
345
|
-
}
|
|
346
|
-
], 0);
|
|
347
|
-
// Resolver returns two hosts
|
|
348
|
-
mockResolver.query.mockReturnValueOnce({
|
|
349
|
-
type: 'output-list',
|
|
350
|
-
outputs: [
|
|
351
|
-
{ beef: shipTx1.toBEEF(), outputIndex: 0 },
|
|
352
|
-
{ beef: shipTx1.toBEEF(), outputIndex: 1 },
|
|
353
|
-
{ beef: shipTx2.toBEEF(), outputIndex: 0 },
|
|
354
|
-
{ beef: shipTx2.toBEEF(), outputIndex: 1 }
|
|
355
|
-
]
|
|
356
|
-
});
|
|
357
|
-
// Both hosts acknowledge all topics
|
|
358
|
-
mockFacilitator.send.mockImplementation(async (host, { topics }) => {
|
|
359
|
-
const steak = {};
|
|
360
|
-
for (const topic of topics) {
|
|
361
|
-
steak[topic] = {
|
|
362
|
-
outputsToAdmit: [0],
|
|
363
|
-
coinsToRetain: []
|
|
364
|
-
};
|
|
365
|
-
}
|
|
366
|
-
return steak;
|
|
367
|
-
});
|
|
368
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo', 'tm_bar'], {
|
|
369
|
-
facilitator: mockFacilitator,
|
|
370
|
-
resolver: mockResolver
|
|
371
|
-
});
|
|
372
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
373
|
-
const response = await b.broadcast(testTx);
|
|
374
|
-
expect(response).toEqual({
|
|
375
|
-
status: 'success',
|
|
376
|
-
txid: testTx.id('hex'),
|
|
377
|
-
message: 'Sent to 2 Overlay Services hosts.'
|
|
378
|
-
});
|
|
379
|
-
expect(mockResolver.query).toHaveBeenCalledWith({
|
|
380
|
-
service: 'ls_ship',
|
|
381
|
-
query: {
|
|
382
|
-
topics: ['tm_foo', 'tm_bar']
|
|
383
|
-
}
|
|
384
|
-
}, 1000);
|
|
385
|
-
expect(mockFacilitator.send).toHaveBeenCalledTimes(2);
|
|
386
|
-
});
|
|
387
|
-
it('should fail if at least one host does not acknowledge every topic (default behavior)', async () => {
|
|
388
|
-
const shipHostKey1 = new index_1.PrivateKey(42);
|
|
389
|
-
const shipWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey1);
|
|
390
|
-
const shipLib1 = new OverlayAdminTokenTemplate_1.default(shipWallet1);
|
|
391
|
-
const shipScript1 = await shipLib1.lock('SHIP', 'https://shiphost1.com', 'tm_foo');
|
|
392
|
-
const shipTx1 = new index_2.Transaction(1, [], [
|
|
393
|
-
{
|
|
394
|
-
lockingScript: shipScript1,
|
|
395
|
-
satoshis: 1
|
|
396
|
-
}
|
|
397
|
-
], 0);
|
|
398
|
-
const shipHostKey2 = new index_1.PrivateKey(43);
|
|
399
|
-
const shipWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey2);
|
|
400
|
-
const shipLib2 = new OverlayAdminTokenTemplate_1.default(shipWallet2);
|
|
401
|
-
const shipScript2 = await shipLib2.lock('SHIP', 'https://shiphost2.com', 'tm_bar');
|
|
402
|
-
const shipTx2 = new index_2.Transaction(1, [], [
|
|
403
|
-
{
|
|
404
|
-
lockingScript: shipScript2,
|
|
405
|
-
satoshis: 1
|
|
406
|
-
}
|
|
407
|
-
], 0);
|
|
408
|
-
// Resolver returns two hosts
|
|
409
|
-
mockResolver.query.mockReturnValueOnce({
|
|
410
|
-
type: 'output-list',
|
|
411
|
-
outputs: [
|
|
412
|
-
{ beef: shipTx1.toBEEF(), outputIndex: 0 },
|
|
413
|
-
{ beef: shipTx2.toBEEF(), outputIndex: 0 }
|
|
414
|
-
]
|
|
415
|
-
});
|
|
416
|
-
// First host acknowledges 'tm_foo'
|
|
417
|
-
mockFacilitator.send.mockImplementationOnce(async (host, { beef, topics }) => {
|
|
418
|
-
const steak = {};
|
|
419
|
-
for (const topic of topics) {
|
|
420
|
-
steak[topic] = {
|
|
421
|
-
outputsToAdmit: [],
|
|
422
|
-
coinsToRetain: []
|
|
423
|
-
};
|
|
424
|
-
}
|
|
425
|
-
return steak;
|
|
426
|
-
});
|
|
427
|
-
// Second host does not acknowledge any topics
|
|
428
|
-
mockFacilitator.send.mockImplementationOnce(async (host, { beef, topics }) => {
|
|
429
|
-
const steak = {};
|
|
430
|
-
for (const topic of topics) {
|
|
431
|
-
steak[topic] = {
|
|
432
|
-
outputsToAdmit: [],
|
|
433
|
-
coinsToRetain: []
|
|
434
|
-
};
|
|
435
|
-
}
|
|
436
|
-
return steak;
|
|
437
|
-
});
|
|
438
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo', 'tm_bar'], {
|
|
439
|
-
facilitator: mockFacilitator,
|
|
440
|
-
resolver: mockResolver
|
|
441
|
-
});
|
|
442
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
443
|
-
const response = await b.broadcast(testTx);
|
|
444
|
-
expect(response).toEqual({
|
|
445
|
-
status: 'error',
|
|
446
|
-
code: 'ERR_REQUIRE_ACK_FROM_ANY_HOST_FAILED',
|
|
447
|
-
description: 'No host acknowledged the required topics.'
|
|
448
|
-
});
|
|
449
|
-
});
|
|
450
|
-
it('should succeed when at least one host acknowledges required topics with requireAcknowledgmentFromAnyHostForTopics set to "any"', async () => {
|
|
451
|
-
const shipHostKey1 = new index_1.PrivateKey(42);
|
|
452
|
-
const shipWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey1);
|
|
453
|
-
const shipLib1 = new OverlayAdminTokenTemplate_1.default(shipWallet1);
|
|
454
|
-
const shipScript1 = await shipLib1.lock('SHIP', 'https://shiphost1.com', 'tm_foo');
|
|
455
|
-
const shipTx1 = new index_2.Transaction(1, [], [
|
|
456
|
-
{
|
|
457
|
-
lockingScript: shipScript1,
|
|
458
|
-
satoshis: 1
|
|
459
|
-
}
|
|
460
|
-
], 0);
|
|
461
|
-
const shipHostKey2 = new index_1.PrivateKey(43);
|
|
462
|
-
const shipWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey2);
|
|
463
|
-
const shipLib2 = new OverlayAdminTokenTemplate_1.default(shipWallet2);
|
|
464
|
-
const shipScript2 = await shipLib2.lock('SHIP', 'https://shiphost2.com', 'tm_bar');
|
|
465
|
-
const shipTx2 = new index_2.Transaction(1, [], [
|
|
466
|
-
{
|
|
467
|
-
lockingScript: shipScript2,
|
|
468
|
-
satoshis: 1
|
|
469
|
-
}
|
|
470
|
-
], 0);
|
|
471
|
-
// Resolver returns two hosts
|
|
472
|
-
mockResolver.query.mockReturnValueOnce({
|
|
473
|
-
type: 'output-list',
|
|
474
|
-
outputs: [
|
|
475
|
-
{ beef: shipTx1.toBEEF(), outputIndex: 0 },
|
|
476
|
-
{ beef: shipTx2.toBEEF(), outputIndex: 0 }
|
|
477
|
-
]
|
|
478
|
-
});
|
|
479
|
-
// First host acknowledges no topics
|
|
480
|
-
mockFacilitator.send.mockImplementationOnce(async (host, { beef, topics }) => {
|
|
481
|
-
const steak = {};
|
|
482
|
-
for (const topic of topics) {
|
|
483
|
-
steak[topic] = {
|
|
484
|
-
outputsToAdmit: [],
|
|
485
|
-
coinsToRetain: []
|
|
486
|
-
};
|
|
487
|
-
}
|
|
488
|
-
return steak;
|
|
489
|
-
});
|
|
490
|
-
// Second host acknowledges 'tm_bar'
|
|
491
|
-
mockFacilitator.send.mockImplementationOnce(async (host, { beef, topics }) => {
|
|
492
|
-
const steak = {};
|
|
493
|
-
for (const topic of topics) {
|
|
494
|
-
steak[topic] = {
|
|
495
|
-
outputsToAdmit: topic === 'tm_bar' ? [0] : [],
|
|
496
|
-
coinsToRetain: []
|
|
497
|
-
};
|
|
498
|
-
}
|
|
499
|
-
return steak;
|
|
500
|
-
});
|
|
501
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo', 'tm_bar'], {
|
|
502
|
-
facilitator: mockFacilitator,
|
|
503
|
-
resolver: mockResolver,
|
|
504
|
-
requireAcknowledgmentFromAnyHostForTopics: 'any',
|
|
505
|
-
requireAcknowledgmentFromAllHostsForTopics: []
|
|
506
|
-
});
|
|
507
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
508
|
-
const response = await b.broadcast(testTx);
|
|
509
|
-
expect(response).toEqual({
|
|
510
|
-
status: 'success',
|
|
511
|
-
txid: testTx.id('hex'),
|
|
512
|
-
message: 'Sent to 2 Overlay Services hosts.'
|
|
513
|
-
});
|
|
514
|
-
});
|
|
515
|
-
it('should fail when no hosts acknowledge required topics with requireAcknowledgmentFromAnyHostForTopics set to "any"', async () => {
|
|
516
|
-
const shipHostKey1 = new index_1.PrivateKey(42);
|
|
517
|
-
const shipWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey1);
|
|
518
|
-
const shipLib1 = new OverlayAdminTokenTemplate_1.default(shipWallet1);
|
|
519
|
-
const shipScript1 = await shipLib1.lock('SHIP', 'https://shiphost1.com', 'tm_foo');
|
|
520
|
-
const shipTx1 = new index_2.Transaction(1, [], [
|
|
521
|
-
{
|
|
522
|
-
lockingScript: shipScript1,
|
|
523
|
-
satoshis: 1
|
|
524
|
-
}
|
|
525
|
-
], 0);
|
|
526
|
-
// Resolver returns one host
|
|
527
|
-
mockResolver.query.mockReturnValueOnce({
|
|
528
|
-
type: 'output-list',
|
|
529
|
-
outputs: [{ beef: shipTx1.toBEEF(), outputIndex: 0 }]
|
|
530
|
-
});
|
|
531
|
-
// Host acknowledges no topics
|
|
532
|
-
mockFacilitator.send.mockImplementationOnce(async (host, { beef, topics }) => {
|
|
533
|
-
const steak = {};
|
|
534
|
-
for (const topic of topics) {
|
|
535
|
-
steak[topic] = {
|
|
536
|
-
outputsToAdmit: [],
|
|
537
|
-
coinsToRetain: []
|
|
538
|
-
};
|
|
539
|
-
}
|
|
540
|
-
return steak;
|
|
541
|
-
});
|
|
542
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo'], {
|
|
543
|
-
facilitator: mockFacilitator,
|
|
544
|
-
resolver: mockResolver,
|
|
545
|
-
requireAcknowledgmentFromAnyHostForTopics: 'any',
|
|
546
|
-
requireAcknowledgmentFromAllHostsForTopics: []
|
|
547
|
-
});
|
|
548
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
549
|
-
const response = await b.broadcast(testTx);
|
|
550
|
-
expect(response).toEqual({
|
|
551
|
-
status: 'error',
|
|
552
|
-
code: 'ERR_REQUIRE_ACK_FROM_ANY_HOST_FAILED',
|
|
553
|
-
description: 'No host acknowledged the required topics.'
|
|
554
|
-
});
|
|
555
|
-
});
|
|
556
|
-
it('should succeed when specific hosts acknowledge required topics', async () => {
|
|
557
|
-
const shipHostKey1 = new index_1.PrivateKey(42);
|
|
558
|
-
const shipWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey1);
|
|
559
|
-
const shipLib1 = new OverlayAdminTokenTemplate_1.default(shipWallet1);
|
|
560
|
-
const shipScript1 = await shipLib1.lock('SHIP', 'https://shiphost1.com', 'tm_foo');
|
|
561
|
-
const shipTx1 = new index_2.Transaction(1, [], [
|
|
562
|
-
{
|
|
563
|
-
lockingScript: shipScript1,
|
|
564
|
-
satoshis: 1
|
|
565
|
-
}
|
|
566
|
-
], 0);
|
|
567
|
-
const shipHostKey2 = new index_1.PrivateKey(43);
|
|
568
|
-
const shipWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey2);
|
|
569
|
-
const shipLib2 = new OverlayAdminTokenTemplate_1.default(shipWallet2);
|
|
570
|
-
const shipScript2 = await shipLib2.lock('SHIP', 'https://shiphost2.com', 'tm_bar');
|
|
571
|
-
const shipTx2 = new index_2.Transaction(1, [], [
|
|
572
|
-
{
|
|
573
|
-
lockingScript: shipScript2,
|
|
574
|
-
satoshis: 1
|
|
575
|
-
}
|
|
576
|
-
], 0);
|
|
577
|
-
// Resolver returns two hosts
|
|
578
|
-
mockResolver.query.mockReturnValueOnce({
|
|
579
|
-
type: 'output-list',
|
|
580
|
-
outputs: [
|
|
581
|
-
{ beef: shipTx1.toBEEF(), outputIndex: 0 },
|
|
582
|
-
{ beef: shipTx2.toBEEF(), outputIndex: 0 }
|
|
583
|
-
]
|
|
584
|
-
});
|
|
585
|
-
// First host acknowledges 'tm_foo'
|
|
586
|
-
mockFacilitator.send.mockImplementationOnce(async (host, { beef, topics }) => {
|
|
587
|
-
const steak = {};
|
|
588
|
-
for (const topic of topics) {
|
|
589
|
-
steak[topic] = {
|
|
590
|
-
outputsToAdmit: topic === 'tm_foo' ? [0] : [],
|
|
591
|
-
coinsToRetain: []
|
|
592
|
-
};
|
|
593
|
-
}
|
|
594
|
-
return steak;
|
|
595
|
-
});
|
|
596
|
-
// Second host does not acknowledge 'tm_bar'
|
|
597
|
-
mockFacilitator.send.mockImplementationOnce(async (host, { beef, topics }) => {
|
|
598
|
-
const steak = {};
|
|
599
|
-
for (const topic of topics) {
|
|
600
|
-
steak[topic] = {
|
|
601
|
-
outputsToAdmit: [],
|
|
602
|
-
coinsToRetain: []
|
|
603
|
-
};
|
|
604
|
-
}
|
|
605
|
-
return steak;
|
|
606
|
-
});
|
|
607
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo', 'tm_bar'], {
|
|
608
|
-
facilitator: mockFacilitator,
|
|
609
|
-
resolver: mockResolver,
|
|
610
|
-
requireAcknowledgmentFromSpecificHostsForTopics: {
|
|
611
|
-
'https://shiphost1.com': ['tm_foo']
|
|
612
|
-
},
|
|
613
|
-
requireAcknowledgmentFromAllHostsForTopics: [],
|
|
614
|
-
requireAcknowledgmentFromAnyHostForTopics: []
|
|
615
|
-
});
|
|
616
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
617
|
-
const response = await b.broadcast(testTx);
|
|
618
|
-
expect(response).toEqual({
|
|
619
|
-
status: 'success',
|
|
620
|
-
txid: testTx.id('hex'),
|
|
621
|
-
message: 'Sent to 2 Overlay Services hosts.'
|
|
622
|
-
});
|
|
623
|
-
});
|
|
624
|
-
it('should succeed when interested hosts only remove coins in a transaction broadcast', async () => {
|
|
625
|
-
const shipHostKey1 = new index_1.PrivateKey(42);
|
|
626
|
-
const shipWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey1);
|
|
627
|
-
const shipLib1 = new OverlayAdminTokenTemplate_1.default(shipWallet1);
|
|
628
|
-
const shipScript1 = await shipLib1.lock('SHIP', 'https://shiphost1.com', 'tm_foo');
|
|
629
|
-
const shipTx1 = new index_2.Transaction(1, [], [
|
|
630
|
-
{
|
|
631
|
-
lockingScript: shipScript1,
|
|
632
|
-
satoshis: 1
|
|
633
|
-
}
|
|
634
|
-
], 0);
|
|
635
|
-
const shipHostKey2 = new index_1.PrivateKey(43);
|
|
636
|
-
const shipWallet2 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey2);
|
|
637
|
-
const shipLib2 = new OverlayAdminTokenTemplate_1.default(shipWallet2);
|
|
638
|
-
const shipScript2 = await shipLib2.lock('SHIP', 'https://shiphost2.com', 'tm_bar');
|
|
639
|
-
const shipTx2 = new index_2.Transaction(1, [], [
|
|
640
|
-
{
|
|
641
|
-
lockingScript: shipScript2,
|
|
642
|
-
satoshis: 1
|
|
643
|
-
}
|
|
644
|
-
], 0);
|
|
645
|
-
// Resolver returns two hosts
|
|
646
|
-
mockResolver.query.mockReturnValueOnce({
|
|
647
|
-
type: 'output-list',
|
|
648
|
-
outputs: [
|
|
649
|
-
{ beef: shipTx1.toBEEF(), outputIndex: 0 },
|
|
650
|
-
{ beef: shipTx2.toBEEF(), outputIndex: 0 }
|
|
651
|
-
]
|
|
652
|
-
});
|
|
653
|
-
// First host acknowledges 'tm_foo' with coinsRemoved
|
|
654
|
-
mockFacilitator.send.mockImplementationOnce(async (host, { beef, topics }) => {
|
|
655
|
-
const steak = {};
|
|
656
|
-
for (const topic of topics) {
|
|
657
|
-
steak[topic] = {
|
|
658
|
-
outputsToAdmit: [],
|
|
659
|
-
coinsToRetain: [],
|
|
660
|
-
coinsRemoved: topic === 'tm_foo' ? [0] : []
|
|
661
|
-
};
|
|
662
|
-
}
|
|
663
|
-
return steak;
|
|
664
|
-
});
|
|
665
|
-
// Second host does not acknowledge 'tm_bar'
|
|
666
|
-
mockFacilitator.send.mockImplementationOnce(async (host, { beef, topics }) => {
|
|
667
|
-
const steak = {};
|
|
668
|
-
for (const topic of topics) {
|
|
669
|
-
steak[topic] = {
|
|
670
|
-
outputsToAdmit: [],
|
|
671
|
-
coinsToRetain: [],
|
|
672
|
-
coinsRemoved: []
|
|
673
|
-
};
|
|
674
|
-
}
|
|
675
|
-
return steak;
|
|
676
|
-
});
|
|
677
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo', 'tm_bar'], {
|
|
678
|
-
facilitator: mockFacilitator,
|
|
679
|
-
resolver: mockResolver,
|
|
680
|
-
requireAcknowledgmentFromSpecificHostsForTopics: {
|
|
681
|
-
'https://shiphost1.com': ['tm_foo']
|
|
682
|
-
},
|
|
683
|
-
requireAcknowledgmentFromAllHostsForTopics: [],
|
|
684
|
-
requireAcknowledgmentFromAnyHostForTopics: []
|
|
685
|
-
});
|
|
686
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
687
|
-
const response = await b.broadcast(testTx);
|
|
688
|
-
expect(response).toEqual({
|
|
689
|
-
status: 'success',
|
|
690
|
-
txid: testTx.id('hex'),
|
|
691
|
-
message: 'Sent to 2 Overlay Services hosts.'
|
|
692
|
-
});
|
|
693
|
-
// Verify the resolver was queried correctly
|
|
694
|
-
expect(mockResolver.query).toHaveBeenCalledWith({
|
|
695
|
-
service: 'ls_ship',
|
|
696
|
-
query: {
|
|
697
|
-
topics: ['tm_foo', 'tm_bar']
|
|
698
|
-
}
|
|
699
|
-
}, 1000);
|
|
700
|
-
});
|
|
701
|
-
it('should fail when specific hosts do not acknowledge required topics', async () => {
|
|
702
|
-
const shipHostKey1 = new index_1.PrivateKey(42);
|
|
703
|
-
const shipWallet1 = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey1);
|
|
704
|
-
const shipLib1 = new OverlayAdminTokenTemplate_1.default(shipWallet1);
|
|
705
|
-
const shipScript1 = await shipLib1.lock('SHIP', 'https://shiphost1.com', 'tm_foo');
|
|
706
|
-
const shipTx1 = new index_2.Transaction(1, [], [
|
|
707
|
-
{
|
|
708
|
-
lockingScript: shipScript1,
|
|
709
|
-
satoshis: 1
|
|
710
|
-
}
|
|
711
|
-
], 0);
|
|
712
|
-
// Resolver returns one host
|
|
713
|
-
mockResolver.query.mockReturnValueOnce({
|
|
714
|
-
type: 'output-list',
|
|
715
|
-
outputs: [{ beef: shipTx1.toBEEF(), outputIndex: 0 }]
|
|
716
|
-
});
|
|
717
|
-
// Host does not acknowledge 'tm_foo'
|
|
718
|
-
mockFacilitator.send.mockImplementationOnce(async (host, { beef, topics }) => {
|
|
719
|
-
const steak = {};
|
|
720
|
-
for (const topic of topics) {
|
|
721
|
-
steak[topic] = {
|
|
722
|
-
outputsToAdmit: [],
|
|
723
|
-
coinsToRetain: []
|
|
724
|
-
};
|
|
725
|
-
}
|
|
726
|
-
return steak;
|
|
727
|
-
});
|
|
728
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo'], {
|
|
729
|
-
facilitator: mockFacilitator,
|
|
730
|
-
resolver: mockResolver,
|
|
731
|
-
requireAcknowledgmentFromSpecificHostsForTopics: {
|
|
732
|
-
'https://shiphost1.com': ['tm_foo']
|
|
733
|
-
},
|
|
734
|
-
requireAcknowledgmentFromAllHostsForTopics: [],
|
|
735
|
-
requireAcknowledgmentFromAnyHostForTopics: []
|
|
736
|
-
});
|
|
737
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
738
|
-
const response = await b.broadcast(testTx);
|
|
739
|
-
expect(response).toEqual({
|
|
740
|
-
status: 'error',
|
|
741
|
-
code: 'ERR_REQUIRE_ACK_FROM_SPECIFIC_HOSTS_FAILED',
|
|
742
|
-
description: 'Specific hosts did not acknowledge the required topics.'
|
|
743
|
-
});
|
|
744
|
-
});
|
|
745
|
-
it('should handle invalid acknowledgments from hosts gracefully', async () => {
|
|
746
|
-
const shipHostKey = new index_1.PrivateKey(42);
|
|
747
|
-
const shipWallet = new CompletedProtoWallet_1.CompletedProtoWallet(shipHostKey);
|
|
748
|
-
const shipLib = new OverlayAdminTokenTemplate_1.default(shipWallet);
|
|
749
|
-
const shipScript = await shipLib.lock('SHIP', 'https://shiphost.com', 'tm_foo');
|
|
750
|
-
const shipTx = new index_2.Transaction(1, [], [
|
|
751
|
-
{
|
|
752
|
-
lockingScript: shipScript,
|
|
753
|
-
satoshis: 1
|
|
754
|
-
}
|
|
755
|
-
], 0);
|
|
756
|
-
// Resolver returns one host
|
|
757
|
-
mockResolver.query.mockReturnValueOnce({
|
|
758
|
-
type: 'output-list',
|
|
759
|
-
outputs: [
|
|
760
|
-
{
|
|
761
|
-
beef: shipTx.toBEEF(),
|
|
762
|
-
outputIndex: 0
|
|
763
|
-
}
|
|
764
|
-
]
|
|
765
|
-
});
|
|
766
|
-
// Host returns invalid acknowledgment
|
|
767
|
-
mockFacilitator.send.mockReturnValueOnce(null);
|
|
768
|
-
const b = new SHIPBroadcaster_1.default(['tm_foo'], {
|
|
769
|
-
facilitator: mockFacilitator,
|
|
770
|
-
resolver: mockResolver
|
|
771
|
-
});
|
|
772
|
-
const testTx = new index_2.Transaction(1, [], [], 0);
|
|
773
|
-
const response = await b.broadcast(testTx);
|
|
774
|
-
// Since the host responded (successfully in terms of HTTP), but with invalid data, we should consider it a failure
|
|
775
|
-
expect(response).toEqual({
|
|
776
|
-
status: 'error',
|
|
777
|
-
code: 'ERR_ALL_HOSTS_REJECTED',
|
|
778
|
-
description: 'All SHIP hosts have rejected the transaction.'
|
|
779
|
-
});
|
|
780
|
-
});
|
|
781
|
-
describe('SHIPCast private methods', () => {
|
|
782
|
-
let shipCast;
|
|
783
|
-
beforeEach(() => {
|
|
784
|
-
shipCast = new SHIPBroadcaster_1.default(['tm_foo', 'tm_bar'], {
|
|
785
|
-
facilitator: mockFacilitator,
|
|
786
|
-
resolver: mockResolver
|
|
787
|
-
});
|
|
788
|
-
});
|
|
789
|
-
describe('checkAcknowledgmentFromAllHosts', () => {
|
|
790
|
-
it('should return true when all hosts acknowledge all required topics', () => {
|
|
791
|
-
const hostAcknowledgments = {
|
|
792
|
-
'https://host1.com': new Set(['tm_foo', 'tm_bar']),
|
|
793
|
-
'https://host2.com': new Set(['tm_foo', 'tm_bar'])
|
|
794
|
-
};
|
|
795
|
-
const result = shipCast.checkAcknowledgmentFromAllHosts(hostAcknowledgments, ['tm_foo', 'tm_bar'], 'all');
|
|
796
|
-
expect(result).toBe(true);
|
|
797
|
-
});
|
|
798
|
-
it('should return false when any host does not acknowledge all required topics', () => {
|
|
799
|
-
const hostAcknowledgments = {
|
|
800
|
-
'https://host1.com': new Set(['tm_foo']),
|
|
801
|
-
'https://host2.com': new Set(['tm_foo', 'tm_bar'])
|
|
802
|
-
};
|
|
803
|
-
const result = shipCast.checkAcknowledgmentFromAllHosts(hostAcknowledgments, ['tm_foo', 'tm_bar'], 'all');
|
|
804
|
-
expect(result).toBe(false);
|
|
805
|
-
});
|
|
806
|
-
it('should return true when all hosts acknowledge any of the required topics', () => {
|
|
807
|
-
const hostAcknowledgments = {
|
|
808
|
-
'https://host1.com': new Set(['tm_foo']),
|
|
809
|
-
'https://host2.com': new Set(['tm_bar'])
|
|
810
|
-
};
|
|
811
|
-
const result = shipCast.checkAcknowledgmentFromAllHosts(hostAcknowledgments, ['tm_foo', 'tm_bar'], 'any');
|
|
812
|
-
expect(result).toBe(true);
|
|
813
|
-
});
|
|
814
|
-
it('should return false when any host does not acknowledge any of the required topics', () => {
|
|
815
|
-
const hostAcknowledgments = {
|
|
816
|
-
'https://host1.com': new Set(),
|
|
817
|
-
'https://host2.com': new Set(['tm_bar'])
|
|
818
|
-
};
|
|
819
|
-
const result = shipCast.checkAcknowledgmentFromAllHosts(hostAcknowledgments, ['tm_foo', 'tm_bar'], 'any');
|
|
820
|
-
expect(result).toBe(false);
|
|
821
|
-
});
|
|
822
|
-
});
|
|
823
|
-
describe('checkAcknowledgmentFromAnyHost', () => {
|
|
824
|
-
it('should return true when at least one host acknowledges all required topics', () => {
|
|
825
|
-
const hostAcknowledgments = {
|
|
826
|
-
'https://host1.com': new Set(['tm_foo', 'tm_bar']),
|
|
827
|
-
'https://host2.com': new Set(['tm_foo'])
|
|
828
|
-
};
|
|
829
|
-
const result = shipCast.checkAcknowledgmentFromAnyHost(hostAcknowledgments, ['tm_foo', 'tm_bar'], 'all');
|
|
830
|
-
expect(result).toBe(true);
|
|
831
|
-
});
|
|
832
|
-
it('should return false when no host acknowledges all required topics', () => {
|
|
833
|
-
const hostAcknowledgments = {
|
|
834
|
-
'https://host1.com': new Set(['tm_foo']),
|
|
835
|
-
'https://host2.com': new Set(['tm_bar'])
|
|
836
|
-
};
|
|
837
|
-
const result = shipCast.checkAcknowledgmentFromAnyHost(hostAcknowledgments, ['tm_foo', 'tm_bar'], 'all');
|
|
838
|
-
expect(result).toBe(false);
|
|
839
|
-
});
|
|
840
|
-
it('should return true when at least one host acknowledges any of the required topics', () => {
|
|
841
|
-
const hostAcknowledgments = {
|
|
842
|
-
'https://host1.com': new Set(['tm_foo']),
|
|
843
|
-
'https://host2.com': new Set()
|
|
844
|
-
};
|
|
845
|
-
const result = shipCast.checkAcknowledgmentFromAnyHost(hostAcknowledgments, ['tm_foo', 'tm_bar'], 'any');
|
|
846
|
-
expect(result).toBe(true);
|
|
847
|
-
});
|
|
848
|
-
it('should return false when no host acknowledges any of the required topics', () => {
|
|
849
|
-
const hostAcknowledgments = {
|
|
850
|
-
'https://host1.com': new Set(),
|
|
851
|
-
'https://host2.com': new Set()
|
|
852
|
-
};
|
|
853
|
-
const result = shipCast.checkAcknowledgmentFromAnyHost(hostAcknowledgments, ['tm_foo', 'tm_bar'], 'any');
|
|
854
|
-
expect(result).toBe(false);
|
|
855
|
-
});
|
|
856
|
-
});
|
|
857
|
-
describe('checkAcknowledgmentFromSpecificHosts', () => {
|
|
858
|
-
it('should return true when specific hosts acknowledge all required topics', () => {
|
|
859
|
-
const hostAcknowledgments = {
|
|
860
|
-
'https://host1.com': new Set(['tm_foo', 'tm_bar']),
|
|
861
|
-
'https://host2.com': new Set(['tm_foo'])
|
|
862
|
-
};
|
|
863
|
-
const requirements = {
|
|
864
|
-
'https://host1.com': ['tm_foo', 'tm_bar']
|
|
865
|
-
};
|
|
866
|
-
const result = shipCast.checkAcknowledgmentFromSpecificHosts(hostAcknowledgments, requirements);
|
|
867
|
-
expect(result).toBe(true);
|
|
868
|
-
});
|
|
869
|
-
it('should return false when specific hosts do not acknowledge all required topics', () => {
|
|
870
|
-
const hostAcknowledgments = {
|
|
871
|
-
'https://host1.com': new Set(['tm_foo']),
|
|
872
|
-
'https://host2.com': new Set(['tm_bar'])
|
|
873
|
-
};
|
|
874
|
-
const requirements = {
|
|
875
|
-
'https://host1.com': ['tm_foo', 'tm_bar']
|
|
876
|
-
};
|
|
877
|
-
const result = shipCast.checkAcknowledgmentFromSpecificHosts(hostAcknowledgments, requirements);
|
|
878
|
-
expect(result).toBe(false);
|
|
879
|
-
});
|
|
880
|
-
it('should return true when specific hosts acknowledge any of the required topics', () => {
|
|
881
|
-
const hostAcknowledgments = {
|
|
882
|
-
'https://host1.com': new Set(['tm_foo']),
|
|
883
|
-
'https://host2.com': new Set(['tm_bar'])
|
|
884
|
-
};
|
|
885
|
-
const requirements = {
|
|
886
|
-
'https://host1.com': 'any'
|
|
887
|
-
};
|
|
888
|
-
const result = shipCast.checkAcknowledgmentFromSpecificHosts(hostAcknowledgments, requirements);
|
|
889
|
-
expect(result).toBe(true);
|
|
890
|
-
});
|
|
891
|
-
it('should return false when specific hosts do not acknowledge any of the required topics', () => {
|
|
892
|
-
const hostAcknowledgments = {
|
|
893
|
-
'https://host1.com': new Set(),
|
|
894
|
-
'https://host2.com': new Set(['tm_bar'])
|
|
895
|
-
};
|
|
896
|
-
const requirements = {
|
|
897
|
-
'https://host1.com': 'any'
|
|
898
|
-
};
|
|
899
|
-
const result = shipCast.checkAcknowledgmentFromSpecificHosts(hostAcknowledgments, requirements);
|
|
900
|
-
expect(result).toBe(false);
|
|
901
|
-
});
|
|
902
|
-
it('should handle multiple hosts with different requirements', () => {
|
|
903
|
-
const hostAcknowledgments = {
|
|
904
|
-
'https://host1.com': new Set(['tm_foo']),
|
|
905
|
-
'https://host2.com': new Set(['tm_bar']),
|
|
906
|
-
'https://host3.com': new Set(['tm_foo', 'tm_bar'])
|
|
907
|
-
};
|
|
908
|
-
const requirements = {
|
|
909
|
-
'https://host1.com': ['tm_foo'],
|
|
910
|
-
'https://host2.com': 'any',
|
|
911
|
-
'https://host3.com': 'all'
|
|
912
|
-
};
|
|
913
|
-
const result = shipCast.checkAcknowledgmentFromSpecificHosts(hostAcknowledgments, requirements);
|
|
914
|
-
expect(result).toBe(true);
|
|
915
|
-
});
|
|
916
|
-
it('should return false if any specific host fails to meet its requirement', () => {
|
|
917
|
-
const hostAcknowledgments = {
|
|
918
|
-
'https://host1.com': new Set(['tm_foo']),
|
|
919
|
-
'https://host2.com': new Set(),
|
|
920
|
-
'https://host3.com': new Set(['tm_foo'])
|
|
921
|
-
};
|
|
922
|
-
const requirements = {
|
|
923
|
-
'https://host1.com': ['tm_foo'],
|
|
924
|
-
'https://host2.com': 'any',
|
|
925
|
-
'https://host3.com': ['tm_foo', 'tm_bar']
|
|
926
|
-
};
|
|
927
|
-
const result = shipCast.checkAcknowledgmentFromSpecificHosts(hostAcknowledgments, requirements);
|
|
928
|
-
expect(result).toBe(false);
|
|
929
|
-
});
|
|
930
|
-
});
|
|
931
|
-
});
|
|
932
|
-
});
|
|
933
|
-
//# sourceMappingURL=SHIPBroadcaster.test.js.map
|