@bsv/sdk 2.0.0-beta.0 → 2.0.1
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/dist/cjs/mod.js +1 -0
- package/dist/cjs/mod.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/auth/Peer.js +149 -74
- package/dist/cjs/src/auth/Peer.js.map +1 -1
- package/dist/cjs/src/auth/SessionManager.js.map +1 -1
- package/dist/cjs/src/auth/certificates/Certificate.js +18 -8
- package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/MasterCertificate.js +19 -9
- package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +17 -7
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/cjs/src/auth/clients/AuthFetch.js +30 -10
- package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/cjs/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -1
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +17 -7
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js +17 -7
- package/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -1
- package/dist/cjs/src/auth/utils/createNonce.js +18 -9
- package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
- package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
- package/dist/cjs/src/auth/utils/verifyNonce.js +18 -9
- package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
- package/dist/cjs/src/compat/BSM.js +17 -7
- package/dist/cjs/src/compat/BSM.js.map +1 -1
- package/dist/cjs/src/compat/ECIES.js +17 -7
- package/dist/cjs/src/compat/ECIES.js.map +1 -1
- package/dist/cjs/src/compat/HD.js +17 -7
- package/dist/cjs/src/compat/HD.js.map +1 -1
- package/dist/cjs/src/compat/Mnemonic.js +17 -7
- package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
- package/dist/cjs/src/compat/Utxo.js +1 -1
- package/dist/cjs/src/compat/Utxo.js.map +1 -1
- package/dist/cjs/src/compat/index.js +17 -7
- package/dist/cjs/src/compat/index.js.map +1 -1
- package/dist/cjs/src/identity/ContactsManager.js +1 -1
- package/dist/cjs/src/identity/ContactsManager.js.map +1 -1
- package/dist/cjs/src/identity/IdentityClient.js.map +1 -1
- package/dist/cjs/src/kvstore/GlobalKVStore.js +20 -10
- package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
- package/dist/cjs/src/kvstore/LocalKVStore.js +17 -7
- package/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -1
- package/dist/cjs/src/kvstore/kvStoreInterpreter.js +17 -7
- package/dist/cjs/src/kvstore/kvStoreInterpreter.js.map +1 -1
- package/dist/cjs/src/messages/EncryptedMessage.js +19 -0
- package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
- package/dist/cjs/src/messages/index.js +17 -7
- package/dist/cjs/src/messages/index.js.map +1 -1
- package/dist/cjs/src/overlay-tools/Historian.js.map +1 -1
- package/dist/cjs/src/overlay-tools/HostReputationTracker.js.map +1 -1
- package/dist/cjs/src/overlay-tools/LookupResolver.js +17 -7
- package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +17 -7
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js +1 -2
- package/dist/cjs/src/overlay-tools/withDoubleSpendRetry.js.map +1 -1
- package/dist/cjs/src/primitives/AESGCM.js +77 -32
- package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
- package/dist/cjs/src/primitives/BigNumber.js +28 -54
- package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
- package/dist/cjs/src/primitives/Curve.js.map +1 -1
- package/dist/cjs/src/primitives/DRBG.js.map +1 -1
- package/dist/cjs/src/primitives/ECDSA.js +58 -24
- package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
- package/dist/cjs/src/primitives/Hash.js +6 -6
- package/dist/cjs/src/primitives/Hash.js.map +1 -1
- package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/cjs/src/primitives/K256.js.map +1 -1
- package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
- package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
- package/dist/cjs/src/primitives/Point.js +63 -6
- package/dist/cjs/src/primitives/Point.js.map +1 -1
- package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
- package/dist/cjs/src/primitives/PrivateKey.js +46 -9
- package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
- package/dist/cjs/src/primitives/PublicKey.js +1 -1
- package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
- package/dist/cjs/src/primitives/Random.js.map +1 -1
- package/dist/cjs/src/primitives/ReaderUint8Array.js +180 -0
- package/dist/cjs/src/primitives/ReaderUint8Array.js.map +1 -0
- package/dist/cjs/src/primitives/ReductionContext.js +35 -46
- package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
- package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
- package/dist/cjs/src/primitives/Secp256r1.js.map +1 -1
- package/dist/cjs/src/primitives/Signature.js.map +1 -1
- package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/cjs/src/primitives/TransactionSignature.js +132 -17
- package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/cjs/src/primitives/WriterUint8Array.js +173 -0
- package/dist/cjs/src/primitives/WriterUint8Array.js.map +1 -0
- package/dist/cjs/src/primitives/hex.js +2 -3
- package/dist/cjs/src/primitives/hex.js.map +1 -1
- package/dist/cjs/src/primitives/index.js +17 -7
- package/dist/cjs/src/primitives/index.js.map +1 -1
- package/dist/cjs/src/primitives/utils.js +43 -16
- package/dist/cjs/src/primitives/utils.js.map +1 -1
- package/dist/cjs/src/registry/RegistryClient.js +2 -2
- package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
- package/dist/cjs/src/remittance/CommsLayer.js +3 -0
- package/dist/cjs/src/remittance/CommsLayer.js.map +1 -0
- package/dist/cjs/src/remittance/IdentityLayer.js +3 -0
- package/dist/cjs/src/remittance/IdentityLayer.js.map +1 -0
- package/dist/cjs/src/remittance/RemittanceManager.js +1245 -0
- package/dist/cjs/src/remittance/RemittanceManager.js.map +1 -0
- package/dist/cjs/src/remittance/RemittanceModule.js +3 -0
- package/dist/cjs/src/remittance/RemittanceModule.js.map +1 -0
- package/dist/cjs/src/remittance/index.js +23 -0
- package/dist/cjs/src/remittance/index.js.map +1 -0
- package/dist/cjs/src/remittance/modules/BasicBRC29.js +225 -0
- package/dist/cjs/src/remittance/modules/BasicBRC29.js.map +1 -0
- package/dist/cjs/src/remittance/modules/index.js +18 -0
- package/dist/cjs/src/remittance/modules/index.js.map +1 -0
- package/dist/cjs/src/remittance/types.js +22 -0
- package/dist/cjs/src/remittance/types.js.map +1 -0
- package/dist/cjs/src/script/OP.js +15 -13
- package/dist/cjs/src/script/OP.js.map +1 -1
- package/dist/cjs/src/script/Script.js +80 -5
- package/dist/cjs/src/script/Script.js.map +1 -1
- package/dist/cjs/src/script/Spend.js +145 -53
- package/dist/cjs/src/script/Spend.js.map +1 -1
- package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
- package/dist/cjs/src/script/templates/PushDrop.js +21 -7
- package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
- package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/cjs/src/storage/StorageDownloader.js.map +1 -1
- package/dist/cjs/src/storage/StorageUploader.js +17 -7
- package/dist/cjs/src/storage/StorageUploader.js.map +1 -1
- package/dist/cjs/src/storage/StorageUtils.js.map +1 -1
- package/dist/cjs/src/storage/index.js +17 -7
- package/dist/cjs/src/storage/index.js.map +1 -1
- package/dist/cjs/src/totp/totp.js.map +1 -1
- package/dist/cjs/src/transaction/Beef.js +85 -27
- package/dist/cjs/src/transaction/Beef.js.map +1 -1
- package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
- package/dist/cjs/src/transaction/BeefTx.js +32 -14
- package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
- package/dist/cjs/src/transaction/Broadcaster.js +2 -3
- package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/MerklePath.js +25 -6
- package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
- package/dist/cjs/src/transaction/Transaction.js +238 -27
- package/dist/cjs/src/transaction/Transaction.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/ARC.js +23 -0
- package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +1 -2
- package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/Teranode.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/BlockHeadersService.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +1 -2
- package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/cjs/src/transaction/fee-models/LivePolicy.js.map +1 -1
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/cjs/src/transaction/http/BinaryFetchClient.js +2 -2
- package/dist/cjs/src/transaction/http/BinaryFetchClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js +1 -2
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
- package/dist/cjs/src/wallet/ProtoWallet.js +1 -1
- package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
- package/dist/cjs/src/wallet/WalletError.js.map +1 -1
- package/dist/cjs/src/wallet/index.js +17 -7
- package/dist/cjs/src/wallet/index.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +17 -7
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js +17 -7
- package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +17 -7
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +17 -7
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/XDM.js +17 -7
- package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js +1 -2
- package/dist/cjs/src/wallet/substrates/utils/toOriginHeader.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/cjs/src/wallet/validationHelpers.js +51 -41
- package/dist/cjs/src/wallet/validationHelpers.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/mod.js +1 -0
- package/dist/esm/mod.js.map +1 -1
- package/dist/esm/src/auth/Peer.js +132 -67
- package/dist/esm/src/auth/Peer.js.map +1 -1
- package/dist/esm/src/auth/SessionManager.js.map +1 -1
- package/dist/esm/src/auth/certificates/Certificate.js +1 -1
- package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/MasterCertificate.js +2 -2
- package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/esm/src/auth/clients/AuthFetch.js +13 -3
- package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/esm/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -1
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/esm/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -1
- package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
- package/dist/esm/src/compat/BSM.js.map +1 -1
- package/dist/esm/src/compat/ECIES.js.map +1 -1
- package/dist/esm/src/compat/HD.js.map +1 -1
- package/dist/esm/src/compat/Mnemonic.js.map +1 -1
- package/dist/esm/src/identity/ContactsManager.js +1 -1
- package/dist/esm/src/identity/ContactsManager.js.map +1 -1
- package/dist/esm/src/identity/IdentityClient.js.map +1 -1
- package/dist/esm/src/kvstore/GlobalKVStore.js +3 -3
- package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
- package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
- package/dist/esm/src/kvstore/kvStoreInterpreter.js.map +1 -1
- package/dist/esm/src/messages/EncryptedMessage.js +19 -0
- package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/esm/src/messages/SignedMessage.js.map +1 -1
- package/dist/esm/src/overlay-tools/Historian.js.map +1 -1
- package/dist/esm/src/overlay-tools/HostReputationTracker.js.map +1 -1
- package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/esm/src/overlay-tools/withDoubleSpendRetry.js.map +1 -1
- package/dist/esm/src/primitives/AESGCM.js +71 -26
- package/dist/esm/src/primitives/AESGCM.js.map +1 -1
- package/dist/esm/src/primitives/BigNumber.js +28 -54
- package/dist/esm/src/primitives/BigNumber.js.map +1 -1
- package/dist/esm/src/primitives/Curve.js.map +1 -1
- package/dist/esm/src/primitives/DRBG.js.map +1 -1
- package/dist/esm/src/primitives/ECDSA.js +58 -24
- package/dist/esm/src/primitives/ECDSA.js.map +1 -1
- package/dist/esm/src/primitives/Hash.js.map +1 -1
- package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/esm/src/primitives/K256.js.map +1 -1
- package/dist/esm/src/primitives/Mersenne.js.map +1 -1
- package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
- package/dist/esm/src/primitives/Point.js +61 -4
- package/dist/esm/src/primitives/Point.js.map +1 -1
- package/dist/esm/src/primitives/Polynomial.js.map +1 -1
- package/dist/esm/src/primitives/PrivateKey.js +29 -2
- package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
- package/dist/esm/src/primitives/PublicKey.js +1 -1
- package/dist/esm/src/primitives/PublicKey.js.map +1 -1
- package/dist/esm/src/primitives/Random.js.map +1 -1
- package/dist/esm/src/primitives/ReaderUint8Array.js +176 -0
- package/dist/esm/src/primitives/ReaderUint8Array.js.map +1 -0
- package/dist/esm/src/primitives/ReductionContext.js +35 -46
- package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
- package/dist/esm/src/primitives/Schnorr.js.map +1 -1
- package/dist/esm/src/primitives/Secp256r1.js.map +1 -1
- package/dist/esm/src/primitives/Signature.js.map +1 -1
- package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/esm/src/primitives/TransactionSignature.js +115 -10
- package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/esm/src/primitives/WriterUint8Array.js +169 -0
- package/dist/esm/src/primitives/WriterUint8Array.js.map +1 -0
- package/dist/esm/src/primitives/hex.js.map +1 -1
- package/dist/esm/src/primitives/utils.js +37 -11
- package/dist/esm/src/primitives/utils.js.map +1 -1
- package/dist/esm/src/registry/RegistryClient.js.map +1 -1
- package/dist/esm/src/remittance/CommsLayer.js +2 -0
- package/dist/esm/src/remittance/CommsLayer.js.map +1 -0
- package/dist/esm/src/remittance/IdentityLayer.js +2 -0
- package/dist/esm/src/remittance/IdentityLayer.js.map +1 -0
- package/dist/esm/src/remittance/RemittanceManager.js +1254 -0
- package/dist/esm/src/remittance/RemittanceManager.js.map +1 -0
- package/dist/esm/src/remittance/RemittanceModule.js +2 -0
- package/dist/esm/src/remittance/RemittanceModule.js.map +1 -0
- package/dist/esm/src/remittance/index.js +7 -0
- package/dist/esm/src/remittance/index.js.map +1 -0
- package/dist/esm/src/remittance/modules/BasicBRC29.js +227 -0
- package/dist/esm/src/remittance/modules/BasicBRC29.js.map +1 -0
- package/dist/esm/src/remittance/modules/index.js +2 -0
- package/dist/esm/src/remittance/modules/index.js.map +1 -0
- package/dist/esm/src/remittance/types.js +19 -0
- package/dist/esm/src/remittance/types.js.map +1 -0
- package/dist/esm/src/script/OP.js +15 -13
- package/dist/esm/src/script/OP.js.map +1 -1
- package/dist/esm/src/script/Script.js +80 -5
- package/dist/esm/src/script/Script.js.map +1 -1
- package/dist/esm/src/script/Spend.js +129 -46
- package/dist/esm/src/script/Spend.js.map +1 -1
- package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
- package/dist/esm/src/script/templates/PushDrop.js +21 -7
- package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
- package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/esm/src/storage/StorageDownloader.js.map +1 -1
- package/dist/esm/src/storage/StorageUploader.js.map +1 -1
- package/dist/esm/src/storage/StorageUtils.js.map +1 -1
- package/dist/esm/src/totp/totp.js.map +1 -1
- package/dist/esm/src/transaction/Beef.js +86 -28
- package/dist/esm/src/transaction/Beef.js.map +1 -1
- package/dist/esm/src/transaction/BeefParty.js.map +1 -1
- package/dist/esm/src/transaction/BeefTx.js +32 -14
- package/dist/esm/src/transaction/BeefTx.js.map +1 -1
- package/dist/esm/src/transaction/MerklePath.js +26 -7
- package/dist/esm/src/transaction/MerklePath.js.map +1 -1
- package/dist/esm/src/transaction/Transaction.js +239 -28
- package/dist/esm/src/transaction/Transaction.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/ARC.js +23 -0
- package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/Teranode.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/BlockHeadersService.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/esm/src/transaction/fee-models/LivePolicy.js.map +1 -1
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/esm/src/transaction/http/BinaryFetchClient.js.map +1 -1
- package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
- package/dist/esm/src/wallet/ProtoWallet.js +1 -1
- package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/esm/src/wallet/WalletClient.js.map +1 -1
- package/dist/esm/src/wallet/WalletError.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
- package/dist/esm/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/esm/src/wallet/substrates/utils/toOriginHeader.js.map +1 -1
- package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/esm/src/wallet/validationHelpers.js +1 -1
- package/dist/esm/src/wallet/validationHelpers.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/mod.d.ts +1 -0
- package/dist/types/mod.d.ts.map +1 -1
- package/dist/types/src/auth/Peer.d.ts +12 -7
- package/dist/types/src/auth/Peer.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
- package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
- package/dist/types/src/auth/types.d.ts +2 -0
- package/dist/types/src/auth/types.d.ts.map +1 -1
- package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
- package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
- package/dist/types/src/compat/BSM.d.ts +1 -1
- package/dist/types/src/compat/BSM.d.ts.map +1 -1
- package/dist/types/src/messages/EncryptedMessage.d.ts +19 -0
- package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
- package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
- package/dist/types/src/primitives/AESGCM.d.ts +18 -0
- package/dist/types/src/primitives/AESGCM.d.ts.map +1 -1
- package/dist/types/src/primitives/BigNumber.d.ts +8 -0
- package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
- package/dist/types/src/primitives/ECDSA.d.ts +24 -0
- package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
- package/dist/types/src/primitives/Hash.d.ts +8 -8
- package/dist/types/src/primitives/Hash.d.ts.map +1 -1
- package/dist/types/src/primitives/Point.d.ts +1 -0
- package/dist/types/src/primitives/Point.d.ts.map +1 -1
- package/dist/types/src/primitives/PrivateKey.d.ts +27 -0
- package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
- package/dist/types/src/primitives/Random.d.ts.map +1 -1
- package/dist/types/src/primitives/ReaderUint8Array.d.ts +32 -0
- package/dist/types/src/primitives/ReaderUint8Array.d.ts.map +1 -0
- package/dist/types/src/primitives/ReductionContext.d.ts +9 -0
- package/dist/types/src/primitives/ReductionContext.d.ts.map +1 -1
- package/dist/types/src/primitives/Secp256r1.d.ts.map +1 -1
- package/dist/types/src/primitives/TransactionSignature.d.ts +16 -4
- package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
- package/dist/types/src/primitives/WriterUint8Array.d.ts +54 -0
- package/dist/types/src/primitives/WriterUint8Array.d.ts.map +1 -0
- package/dist/types/src/primitives/utils.d.ts +19 -6
- package/dist/types/src/primitives/utils.d.ts.map +1 -1
- package/dist/types/src/remittance/CommsLayer.d.ts +50 -0
- package/dist/types/src/remittance/CommsLayer.d.ts.map +1 -0
- package/dist/types/src/remittance/IdentityLayer.d.ts +35 -0
- package/dist/types/src/remittance/IdentityLayer.d.ts.map +1 -0
- package/dist/types/src/remittance/RemittanceManager.d.ts +452 -0
- package/dist/types/src/remittance/RemittanceManager.d.ts.map +1 -0
- package/dist/types/src/remittance/RemittanceModule.d.ts +106 -0
- package/dist/types/src/remittance/RemittanceModule.d.ts.map +1 -0
- package/dist/types/src/remittance/index.d.ts +7 -0
- package/dist/types/src/remittance/index.d.ts.map +1 -0
- package/dist/types/src/remittance/modules/BasicBRC29.d.ts +133 -0
- package/dist/types/src/remittance/modules/BasicBRC29.d.ts.map +1 -0
- package/dist/types/src/remittance/modules/index.d.ts +2 -0
- package/dist/types/src/remittance/modules/index.d.ts.map +1 -0
- package/dist/types/src/remittance/types.d.ts +238 -0
- package/dist/types/src/remittance/types.d.ts.map +1 -0
- package/dist/types/src/script/OP.d.ts +5 -3
- package/dist/types/src/script/OP.d.ts.map +1 -1
- package/dist/types/src/script/Script.d.ts.map +1 -1
- package/dist/types/src/script/Spend.d.ts +7 -0
- package/dist/types/src/script/Spend.d.ts.map +1 -1
- package/dist/types/src/script/templates/PushDrop.d.ts +3 -4
- package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
- package/dist/types/src/storage/StorageUtils.d.ts.map +1 -1
- package/dist/types/src/transaction/Beef.d.ts +26 -9
- package/dist/types/src/transaction/Beef.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefTx.d.ts +13 -6
- package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
- package/dist/types/src/transaction/MerklePath.d.ts +16 -3
- package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
- package/dist/types/src/transaction/Transaction.d.ts +58 -7
- package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
- package/dist/types/src/transaction/http/BinaryFetchClient.d.ts +0 -2
- package/dist/types/src/transaction/http/BinaryFetchClient.d.ts.map +1 -1
- package/dist/types/src/wallet/Wallet.interfaces.d.ts +5 -5
- package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +13 -13
- package/dist/umd/bundle.js.map +1 -1
- package/docs/index.md +3 -1
- package/docs/reference/auth.md +8 -12
- package/docs/reference/primitives.md +260 -55
- package/docs/reference/remittance.md +2166 -0
- package/docs/reference/script.md +12 -4
- package/docs/reference/transaction.md +203 -34
- package/docs/reference/wallet.md +6 -5
- package/docs/remittance-getting-started.md +138 -0
- package/mod.ts +1 -0
- package/package.json +11 -1
- package/src/auth/Peer.ts +196 -85
- package/src/auth/__tests/Peer.test.ts +424 -257
- package/src/auth/clients/AuthFetch.ts +18 -3
- package/src/auth/types.ts +2 -0
- package/src/messages/EncryptedMessage.ts +19 -0
- package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +7 -0
- package/src/primitives/AESGCM.ts +75 -34
- package/src/primitives/BigNumber.ts +27 -31
- package/src/primitives/ECDSA.ts +41 -2
- package/src/primitives/PrivateKey.ts +27 -0
- package/src/primitives/ReaderUint8Array.ts +196 -0
- package/src/primitives/ReductionContext.ts +44 -48
- package/src/primitives/TransactionSignature.ts +129 -10
- package/src/primitives/WriterUint8Array.ts +195 -0
- package/src/primitives/__tests/AESGCM.test.ts +31 -0
- package/src/primitives/__tests/ECDSA.test.ts +16 -0
- package/src/primitives/__tests/ReaderUint8Array.test.ts +317 -0
- package/src/primitives/__tests/WriterUint8Array.test.ts +208 -0
- package/src/primitives/utils.ts +31 -4
- package/src/remittance/CommsLayer.ts +41 -0
- package/src/remittance/IdentityLayer.ts +32 -0
- package/src/remittance/RemittanceManager.ts +1672 -0
- package/src/remittance/RemittanceModule.ts +92 -0
- package/src/remittance/__tests/BasicBRC29.test.ts +188 -0
- package/src/remittance/__tests/RemittanceManager.test.ts +493 -0
- package/src/remittance/__tests/examples.ts +130 -0
- package/src/remittance/index.ts +6 -0
- package/src/remittance/modules/BasicBRC29.ts +361 -0
- package/src/remittance/modules/index.ts +1 -0
- package/src/remittance/types.ts +284 -0
- package/src/script/OP.ts +15 -13
- package/src/script/Script.ts +70 -5
- package/src/script/Spend.ts +128 -52
- package/src/script/__tests/Chronicle.test.ts +186 -0
- package/src/script/__tests/Script.test.ts +39 -6
- package/src/script/__tests/Spend.test.ts +1 -1
- package/src/script/__tests/SpendValildVectors.test.ts +63 -0
- package/src/script/__tests/lrshiftnum.test.ts +185 -0
- package/src/script/__tests/sighashTestData.ts +1031 -0
- package/src/script/__tests/spend.valid.vectors.ts +9 -16
- package/src/script/templates/PushDrop.ts +32 -17
- package/src/script/templates/__tests/PushDrop.test.ts +28 -0
- package/src/storage/__tests/StorageUploader.test.ts +1 -1
- package/src/transaction/Beef.ts +103 -40
- package/src/transaction/BeefTx.ts +38 -19
- package/src/transaction/MerklePath.ts +30 -9
- package/src/transaction/Transaction.ts +277 -38
- package/src/transaction/__tests/Beef.test.ts +77 -0
- package/src/transaction/__tests/Transaction.test.ts +641 -3
- package/src/transaction/broadcasters/ARC.ts +34 -7
- package/src/transaction/broadcasters/__tests/ARC.test.ts +98 -0
- package/src/wallet/Wallet.interfaces.ts +5 -5
- package/dist/cjs/src/storage/__test/StorageDownloader.test.js +0 -171
- package/dist/cjs/src/storage/__test/StorageDownloader.test.js.map +0 -1
- package/dist/cjs/src/storage/__test/StorageUploader.test.js +0 -163
- package/dist/cjs/src/storage/__test/StorageUploader.test.js.map +0 -1
- package/dist/cjs/src/storage/__test/StorageUtils.test.js +0 -97
- package/dist/cjs/src/storage/__test/StorageUtils.test.js.map +0 -1
- package/dist/esm/src/storage/__test/StorageDownloader.test.js +0 -166
- package/dist/esm/src/storage/__test/StorageDownloader.test.js.map +0 -1
- package/dist/esm/src/storage/__test/StorageUploader.test.js +0 -135
- package/dist/esm/src/storage/__test/StorageUploader.test.js.map +0 -1
- package/dist/esm/src/storage/__test/StorageUtils.test.js +0 -72
- package/dist/esm/src/storage/__test/StorageUtils.test.js.map +0 -1
- package/dist/types/src/storage/__test/StorageDownloader.test.d.ts +0 -2
- package/dist/types/src/storage/__test/StorageDownloader.test.d.ts.map +0 -1
- package/dist/types/src/storage/__test/StorageUploader.test.d.ts +0 -2
- package/dist/types/src/storage/__test/StorageUploader.test.d.ts.map +0 -1
- package/dist/types/src/storage/__test/StorageUtils.test.d.ts +0 -2
- package/dist/types/src/storage/__test/StorageUtils.test.d.ts.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import BigNumber from '../../primitives/BigNumber'
|
|
3
3
|
import TransactionSignature from '../../primitives/TransactionSignature'
|
|
4
|
-
import { toHex, toArray, Writer } from '../../primitives/utils'
|
|
4
|
+
import { toHex, toArray, Writer, Reader } from '../../primitives/utils'
|
|
5
5
|
import Script from '../../script/Script'
|
|
6
6
|
import UnlockingScript from '../../script/UnlockingScript'
|
|
7
7
|
import LockingScript from '../../script/LockingScript'
|
|
@@ -20,6 +20,9 @@ import invalidTransactions from './tx.invalid.vectors'
|
|
|
20
20
|
import validTransactions from './tx.valid.vectors'
|
|
21
21
|
import bigTX from './bigtx.vectors'
|
|
22
22
|
import { BroadcastResponse } from '../../transaction/Broadcaster'
|
|
23
|
+
import { WalletInterface, CreateActionArgs, CreateActionResult } from '../../wallet/Wallet.interfaces'
|
|
24
|
+
import ScriptChunk from '../../script/ScriptChunk'
|
|
25
|
+
import OP from '../../script/OP'
|
|
23
26
|
|
|
24
27
|
const BRC62Hex =
|
|
25
28
|
'0100beef01fe636d0c0007021400fe507c0c7aa754cef1f7889d5fd395cf1f785dd7de98eed895dbedfe4e5bc70d1502ac4e164f5bc16746bb0868404292ac8318bbac3800e4aad13a014da427adce3e010b00bc4ff395efd11719b277694cface5aa50d085a0bb81f613f70313acd28cf4557010400574b2d9142b8d28b61d88e3b2c3f44d858411356b49a28a4643b6d1a6a092a5201030051a05fc84d531b5d250c23f4f886f6812f9fe3f402d61607f977b4ecd2701c19010000fd781529d58fc2523cf396a7f25440b409857e7e221766c57214b1d38c7b481f01010062f542f45ea3660f86c013ced80534cb5fd4c19d66c56e7e8c5d4bf2d40acc5e010100b121e91836fd7cd5102b654e9f72f3cf6fdbfd0b161c53a9c54b12c841126331020100000001cd4e4cac3c7b56920d1e7655e7e260d31f29d9a388d04910f1bbd72304a79029010000006b483045022100e75279a205a547c445719420aa3138bf14743e3f42618e5f86a19bde14bb95f7022064777d34776b05d816daf1699493fcdf2ef5a5ab1ad710d9c97bfb5b8f7cef3641210263e2dee22b1ddc5e11f6fab8bcd2378bdd19580d640501ea956ec0e786f93e76ffffffff013e660000000000001976a9146bfd5c7fbe21529d45803dbcf0c87dd3c71efbc288ac0000000001000100000001ac4e164f5bc16746bb0868404292ac8318bbac3800e4aad13a014da427adce3e000000006a47304402203a61a2e931612b4bda08d541cfb980885173b8dcf64a3471238ae7abcd368d6402204cbf24f04b9aa2256d8901f0ed97866603d2be8324c2bfb7a37bf8fc90edd5b441210263e2dee22b1ddc5e11f6fab8bcd2378bdd19580d640501ea956ec0e786f93e76ffffffff013c660000000000001976a9146bfd5c7fbe21529d45803dbcf0c87dd3c71efbc288ac0000000000'
|
|
@@ -904,6 +907,83 @@ describe('Transaction', () => {
|
|
|
904
907
|
})
|
|
905
908
|
})
|
|
906
909
|
|
|
910
|
+
function scriptFromLegacyData(bin: number[]): Script {
|
|
911
|
+
bin = [...bin]
|
|
912
|
+
const chunks: ScriptChunk[] = []
|
|
913
|
+
|
|
914
|
+
let inConditionalBlock: number = 0
|
|
915
|
+
|
|
916
|
+
const br = new Reader(bin)
|
|
917
|
+
while (!br.eof()) {
|
|
918
|
+
const op = br.readUInt8()
|
|
919
|
+
|
|
920
|
+
// if OP_RETURN and not in a conditional block, do not parse the rest of the data,
|
|
921
|
+
// rather just return the last chunk as data without prefixing with data length.
|
|
922
|
+
if (op === OP.OP_RETURN && inConditionalBlock === 0) {
|
|
923
|
+
chunks.push({
|
|
924
|
+
op,
|
|
925
|
+
data: br.read()
|
|
926
|
+
})
|
|
927
|
+
break
|
|
928
|
+
}
|
|
929
|
+
|
|
930
|
+
if (op === OP.OP_IF || op === OP.OP_NOTIF || op === OP.OP_VERIF || op === OP.OP_VERNOTIF) {
|
|
931
|
+
inConditionalBlock++
|
|
932
|
+
} else if (op === OP.OP_ENDIF) {
|
|
933
|
+
inConditionalBlock--
|
|
934
|
+
}
|
|
935
|
+
|
|
936
|
+
let len = 0
|
|
937
|
+
// eslint-disable-next-line @typescript-eslint/no-shadow
|
|
938
|
+
let data: number[] = []
|
|
939
|
+
if (op > 0 && op < OP.OP_PUSHDATA1) {
|
|
940
|
+
len = op
|
|
941
|
+
chunks.push({
|
|
942
|
+
data: br.read(len),
|
|
943
|
+
op
|
|
944
|
+
})
|
|
945
|
+
} else if (op === OP.OP_PUSHDATA1) {
|
|
946
|
+
try {
|
|
947
|
+
len = br.readUInt8()
|
|
948
|
+
data = br.read(len)
|
|
949
|
+
} catch {
|
|
950
|
+
br.read()
|
|
951
|
+
}
|
|
952
|
+
chunks.push({
|
|
953
|
+
data,
|
|
954
|
+
op
|
|
955
|
+
})
|
|
956
|
+
} else if (op === OP.OP_PUSHDATA2) {
|
|
957
|
+
try {
|
|
958
|
+
len = br.readUInt16LE()
|
|
959
|
+
data = br.read(len)
|
|
960
|
+
} catch {
|
|
961
|
+
br.read()
|
|
962
|
+
}
|
|
963
|
+
chunks.push({
|
|
964
|
+
data,
|
|
965
|
+
op
|
|
966
|
+
})
|
|
967
|
+
} else if (op === OP.OP_PUSHDATA4) {
|
|
968
|
+
try {
|
|
969
|
+
len = br.readUInt32LE()
|
|
970
|
+
data = br.read(len)
|
|
971
|
+
} catch {
|
|
972
|
+
br.read()
|
|
973
|
+
}
|
|
974
|
+
chunks.push({
|
|
975
|
+
data,
|
|
976
|
+
op
|
|
977
|
+
})
|
|
978
|
+
} else {
|
|
979
|
+
chunks.push({
|
|
980
|
+
op
|
|
981
|
+
})
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
return new Script(chunks)
|
|
985
|
+
}
|
|
986
|
+
|
|
907
987
|
describe('vectors: sighash and serialization', () => {
|
|
908
988
|
sighashVectors.forEach((vector, i) => {
|
|
909
989
|
if (i === 0) {
|
|
@@ -912,7 +992,7 @@ describe('Transaction', () => {
|
|
|
912
992
|
it(`should pass bitcoin-abc sighash test vector ${i}`, () => {
|
|
913
993
|
const txbuf = toArray(vector[0], 'hex')
|
|
914
994
|
const scriptbuf = toArray(vector[1], 'hex')
|
|
915
|
-
const subScript =
|
|
995
|
+
const subScript = scriptFromLegacyData(scriptbuf)
|
|
916
996
|
const nIn = vector[2] as number
|
|
917
997
|
const nHashType = vector[3] as number
|
|
918
998
|
const sighashBuf = toArray(vector[4], 'hex')
|
|
@@ -936,7 +1016,8 @@ describe('Transaction', () => {
|
|
|
936
1016
|
subscript: subScript,
|
|
937
1017
|
inputSequence: input.sequence ?? 0xffffffff,
|
|
938
1018
|
lockTime: tx.lockTime,
|
|
939
|
-
scope: nHashType
|
|
1019
|
+
scope: nHashType,
|
|
1020
|
+
ignoreChronicle: true
|
|
940
1021
|
})
|
|
941
1022
|
const hash = hash256(preimage)
|
|
942
1023
|
hash.reverse()
|
|
@@ -1379,6 +1460,563 @@ describe('Transaction', () => {
|
|
|
1379
1460
|
})
|
|
1380
1461
|
})
|
|
1381
1462
|
|
|
1463
|
+
describe('completeWithWallet', () => {
|
|
1464
|
+
// Mock implementation of WalletInterface for testing
|
|
1465
|
+
class MockWallet implements Partial<WalletInterface> {
|
|
1466
|
+
public lastCreateActionArgs: CreateActionArgs | null = null
|
|
1467
|
+
public lastSignActionArgs: any = null
|
|
1468
|
+
public signActionCalled: boolean = false
|
|
1469
|
+
|
|
1470
|
+
async createAction(args: CreateActionArgs, originator?: string): Promise<CreateActionResult> {
|
|
1471
|
+
// Store the args for verification
|
|
1472
|
+
this.lastCreateActionArgs = args
|
|
1473
|
+
|
|
1474
|
+
// Create a simple transaction from the action args
|
|
1475
|
+
const tx = new Transaction(args.version || 1)
|
|
1476
|
+
|
|
1477
|
+
// Add inputs if provided
|
|
1478
|
+
if (args.inputs) {
|
|
1479
|
+
for (const input of args.inputs) {
|
|
1480
|
+
// Parse outpoint string format "txid.vout"
|
|
1481
|
+
const [txid, voutStr] = input.outpoint.split('.')
|
|
1482
|
+
|
|
1483
|
+
// Check if this is using the signAction flow (has unlockingScriptLength)
|
|
1484
|
+
const hasTemplate = input.unlockingScriptLength != null
|
|
1485
|
+
|
|
1486
|
+
// For signAction flow, we need placeholder scripts to serialize the transaction
|
|
1487
|
+
// These will be replaced by the actual scripts in signAction
|
|
1488
|
+
const unlockingScript = hasTemplate
|
|
1489
|
+
? Script.fromASM('OP_0') // Placeholder for template inputs
|
|
1490
|
+
: (input.unlockingScript ? Script.fromHex(input.unlockingScript) : Script.fromASM('OP_1'))
|
|
1491
|
+
|
|
1492
|
+
tx.addInput({
|
|
1493
|
+
sourceTXID: txid,
|
|
1494
|
+
sourceOutputIndex: parseInt(voutStr),
|
|
1495
|
+
unlockingScript
|
|
1496
|
+
})
|
|
1497
|
+
}
|
|
1498
|
+
}
|
|
1499
|
+
|
|
1500
|
+
// Add outputs if provided
|
|
1501
|
+
if (args.outputs) {
|
|
1502
|
+
for (const output of args.outputs) {
|
|
1503
|
+
tx.addOutput({
|
|
1504
|
+
satoshis: output.satoshis,
|
|
1505
|
+
lockingScript: Script.fromHex(output.lockingScript)
|
|
1506
|
+
})
|
|
1507
|
+
}
|
|
1508
|
+
}
|
|
1509
|
+
|
|
1510
|
+
// Check if this should return signableTransaction
|
|
1511
|
+
if (args.options?.signAndProcess === false) {
|
|
1512
|
+
return {
|
|
1513
|
+
signableTransaction: {
|
|
1514
|
+
tx: tx.toBEEF(),
|
|
1515
|
+
reference: 'test-reference-123'
|
|
1516
|
+
}
|
|
1517
|
+
}
|
|
1518
|
+
}
|
|
1519
|
+
|
|
1520
|
+
// Return the transaction as Atomic BEEF in CreateActionResult format
|
|
1521
|
+
return {
|
|
1522
|
+
tx: tx.toAtomicBEEF(),
|
|
1523
|
+
txid: tx.id('hex')
|
|
1524
|
+
}
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1527
|
+
async signAction(args: any, originator?: string): Promise<CreateActionResult> {
|
|
1528
|
+
this.signActionCalled = true
|
|
1529
|
+
this.lastSignActionArgs = args
|
|
1530
|
+
|
|
1531
|
+
// Get the reference to find the original transaction
|
|
1532
|
+
// For testing, we'll create a new transaction with the provided unlocking scripts
|
|
1533
|
+
const tx = new Transaction(1)
|
|
1534
|
+
|
|
1535
|
+
// Add inputs with the provided unlocking scripts from spends
|
|
1536
|
+
for (const [index, spend] of Object.entries(args.spends)) {
|
|
1537
|
+
tx.addInput({
|
|
1538
|
+
sourceTXID: '00'.repeat(32),
|
|
1539
|
+
sourceOutputIndex: parseInt(index),
|
|
1540
|
+
unlockingScript: Script.fromHex((spend as any).unlockingScript)
|
|
1541
|
+
})
|
|
1542
|
+
}
|
|
1543
|
+
|
|
1544
|
+
// Return atomic BEEF
|
|
1545
|
+
return {
|
|
1546
|
+
tx: tx.toAtomicBEEF(),
|
|
1547
|
+
txid: tx.id('hex')
|
|
1548
|
+
}
|
|
1549
|
+
}
|
|
1550
|
+
}
|
|
1551
|
+
|
|
1552
|
+
it('should properly complete a transaction using a wallet', async () => {
|
|
1553
|
+
// Create a private key and address for testing
|
|
1554
|
+
const privateKey = new PrivateKey(1)
|
|
1555
|
+
const publicKey = new Curve().g.mul(privateKey)
|
|
1556
|
+
const publicKeyHash = hash160(publicKey.encode(true)) as number[]
|
|
1557
|
+
const p2pkh = new P2PKH()
|
|
1558
|
+
|
|
1559
|
+
// Create a source transaction with a merkle path
|
|
1560
|
+
const sourceTx = new Transaction(
|
|
1561
|
+
1,
|
|
1562
|
+
[],
|
|
1563
|
+
[{
|
|
1564
|
+
lockingScript: p2pkh.lock(publicKeyHash),
|
|
1565
|
+
satoshis: 10000
|
|
1566
|
+
}],
|
|
1567
|
+
0
|
|
1568
|
+
)
|
|
1569
|
+
|
|
1570
|
+
// Assign a merkle path to simulate a confirmed transaction
|
|
1571
|
+
const sourceTxID = sourceTx.id('hex')
|
|
1572
|
+
sourceTx.merklePath = new MerklePath(1000, [
|
|
1573
|
+
[
|
|
1574
|
+
{ offset: 0, hash: sourceTxID, txid: true },
|
|
1575
|
+
{ offset: 1, duplicate: true }
|
|
1576
|
+
]
|
|
1577
|
+
])
|
|
1578
|
+
|
|
1579
|
+
// Create another source transaction without merkle path
|
|
1580
|
+
const sourceTx2 = new Transaction(
|
|
1581
|
+
1,
|
|
1582
|
+
[],
|
|
1583
|
+
[{
|
|
1584
|
+
lockingScript: p2pkh.lock(publicKeyHash),
|
|
1585
|
+
satoshis: 5000
|
|
1586
|
+
}],
|
|
1587
|
+
0
|
|
1588
|
+
)
|
|
1589
|
+
|
|
1590
|
+
// Create unlocking scripts for the inputs
|
|
1591
|
+
const unlockingScript1 = Script.fromASM('OP_0 OP_0') // Placeholder unlocking script
|
|
1592
|
+
const unlockingScript2 = Script.fromASM('OP_0 OP_0') // Placeholder unlocking script
|
|
1593
|
+
|
|
1594
|
+
// Create the transaction to complete
|
|
1595
|
+
const tx = new Transaction(
|
|
1596
|
+
1,
|
|
1597
|
+
[
|
|
1598
|
+
{
|
|
1599
|
+
sourceTransaction: sourceTx,
|
|
1600
|
+
sourceOutputIndex: 0,
|
|
1601
|
+
sequence: 0xffffffff,
|
|
1602
|
+
unlockingScript: unlockingScript1
|
|
1603
|
+
},
|
|
1604
|
+
{
|
|
1605
|
+
sourceTransaction: sourceTx2,
|
|
1606
|
+
sourceOutputIndex: 0,
|
|
1607
|
+
sequence: 0xffffffff,
|
|
1608
|
+
unlockingScript: unlockingScript2
|
|
1609
|
+
}
|
|
1610
|
+
],
|
|
1611
|
+
[{
|
|
1612
|
+
satoshis: 14000,
|
|
1613
|
+
lockingScript: p2pkh.lock(publicKeyHash)
|
|
1614
|
+
}],
|
|
1615
|
+
0
|
|
1616
|
+
)
|
|
1617
|
+
|
|
1618
|
+
// Add metadata with labels
|
|
1619
|
+
tx.updateMetadata({
|
|
1620
|
+
labels: ['test-label-1', 'test-label-2']
|
|
1621
|
+
})
|
|
1622
|
+
|
|
1623
|
+
// Create a mock wallet
|
|
1624
|
+
const mockWallet = new MockWallet()
|
|
1625
|
+
|
|
1626
|
+
// Complete the transaction with the wallet
|
|
1627
|
+
await tx.completeWithWallet(mockWallet, 'Test transaction completion')
|
|
1628
|
+
|
|
1629
|
+
// Verify that the wallet's createAction was called with correct arguments
|
|
1630
|
+
expect(mockWallet.lastCreateActionArgs).not.toBeNull()
|
|
1631
|
+
expect(mockWallet.lastCreateActionArgs!.description).toBe('Test transaction completion')
|
|
1632
|
+
expect(mockWallet.lastCreateActionArgs!.inputs).toHaveLength(2)
|
|
1633
|
+
expect(mockWallet.lastCreateActionArgs!.outputs).toHaveLength(1)
|
|
1634
|
+
expect(mockWallet.lastCreateActionArgs!.labels).toEqual(['test-label-1', 'test-label-2'])
|
|
1635
|
+
|
|
1636
|
+
// Verify that the transaction structure was updated
|
|
1637
|
+
expect(tx.inputs).toHaveLength(2)
|
|
1638
|
+
expect(tx.outputs).toHaveLength(1)
|
|
1639
|
+
|
|
1640
|
+
// Verify that original metadata labels are preserved
|
|
1641
|
+
expect(tx.metadata).toHaveProperty('labels')
|
|
1642
|
+
expect(tx.metadata.labels).toContain('test-label-1')
|
|
1643
|
+
expect(tx.metadata.labels).toContain('test-label-2')
|
|
1644
|
+
})
|
|
1645
|
+
|
|
1646
|
+
it('should throw an error when inputs do not have source transactions', async () => {
|
|
1647
|
+
// Create a transaction with only TXID references (no source transactions)
|
|
1648
|
+
const tx = new Transaction(
|
|
1649
|
+
1,
|
|
1650
|
+
[
|
|
1651
|
+
{
|
|
1652
|
+
sourceTXID: '00'.repeat(32),
|
|
1653
|
+
sourceOutputIndex: 0,
|
|
1654
|
+
sequence: 0xffffffff
|
|
1655
|
+
}
|
|
1656
|
+
],
|
|
1657
|
+
[{
|
|
1658
|
+
satoshis: 5000,
|
|
1659
|
+
lockingScript: Script.fromASM('OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG')
|
|
1660
|
+
}],
|
|
1661
|
+
0
|
|
1662
|
+
)
|
|
1663
|
+
|
|
1664
|
+
// Create a mock wallet
|
|
1665
|
+
const mockWallet = new MockWallet()
|
|
1666
|
+
|
|
1667
|
+
// Expect completeWithWallet to throw an error
|
|
1668
|
+
await expect(tx.completeWithWallet(mockWallet))
|
|
1669
|
+
.rejects
|
|
1670
|
+
.toThrow('All inputs must have a sourceTransaction when using completeWithWallet')
|
|
1671
|
+
})
|
|
1672
|
+
|
|
1673
|
+
it('should throw an error when inputs do not have unlocking scripts', async () => {
|
|
1674
|
+
// Create a private key and address for testing
|
|
1675
|
+
const privateKey = new PrivateKey(1)
|
|
1676
|
+
const publicKey = new Curve().g.mul(privateKey)
|
|
1677
|
+
const publicKeyHash = hash160(publicKey.encode(true)) as number[]
|
|
1678
|
+
const p2pkh = new P2PKH()
|
|
1679
|
+
|
|
1680
|
+
// Create a source transaction
|
|
1681
|
+
const sourceTx = new Transaction(
|
|
1682
|
+
1,
|
|
1683
|
+
[],
|
|
1684
|
+
[{
|
|
1685
|
+
lockingScript: p2pkh.lock(publicKeyHash),
|
|
1686
|
+
satoshis: 10000
|
|
1687
|
+
}],
|
|
1688
|
+
0
|
|
1689
|
+
)
|
|
1690
|
+
|
|
1691
|
+
// Create a transaction with source transaction but no unlocking script
|
|
1692
|
+
const tx = new Transaction(
|
|
1693
|
+
1,
|
|
1694
|
+
[
|
|
1695
|
+
{
|
|
1696
|
+
sourceTransaction: sourceTx,
|
|
1697
|
+
sourceOutputIndex: 0,
|
|
1698
|
+
sequence: 0xffffffff
|
|
1699
|
+
// Note: no unlockingScript property
|
|
1700
|
+
}
|
|
1701
|
+
],
|
|
1702
|
+
[{
|
|
1703
|
+
satoshis: 5000,
|
|
1704
|
+
lockingScript: Script.fromASM('OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG')
|
|
1705
|
+
}],
|
|
1706
|
+
0
|
|
1707
|
+
)
|
|
1708
|
+
|
|
1709
|
+
// Create a mock wallet
|
|
1710
|
+
const mockWallet = new MockWallet()
|
|
1711
|
+
|
|
1712
|
+
// Expect completeWithWallet to throw an error
|
|
1713
|
+
await expect(tx.completeWithWallet(mockWallet))
|
|
1714
|
+
.rejects
|
|
1715
|
+
.toThrow('All inputs must have an unlockingScript when using completeWithWallet')
|
|
1716
|
+
})
|
|
1717
|
+
|
|
1718
|
+
it('should use signAction flow when inputs have unlockingScriptTemplate', async () => {
|
|
1719
|
+
// Create a private key and address for testing
|
|
1720
|
+
const privateKey = new PrivateKey(1)
|
|
1721
|
+
const publicKey = new Curve().g.mul(privateKey)
|
|
1722
|
+
const publicKeyHash = hash160(publicKey.encode(true)) as number[]
|
|
1723
|
+
const p2pkh = new P2PKH()
|
|
1724
|
+
|
|
1725
|
+
// Create a source transaction
|
|
1726
|
+
const sourceTx = new Transaction(
|
|
1727
|
+
1,
|
|
1728
|
+
[],
|
|
1729
|
+
[{
|
|
1730
|
+
lockingScript: p2pkh.lock(publicKeyHash),
|
|
1731
|
+
satoshis: 10000
|
|
1732
|
+
}],
|
|
1733
|
+
0
|
|
1734
|
+
)
|
|
1735
|
+
|
|
1736
|
+
// Create a mock unlocking script template
|
|
1737
|
+
const mockTemplate = {
|
|
1738
|
+
sign: async (tx: Transaction, inputIndex: number): Promise<UnlockingScript> => {
|
|
1739
|
+
// Return a simple unlocking script
|
|
1740
|
+
return Script.fromASM('OP_1 OP_2')
|
|
1741
|
+
},
|
|
1742
|
+
estimateLength: async (tx: Transaction, inputIndex: number): Promise<number> => {
|
|
1743
|
+
return 73 // Standard P2PKH unlocking script length estimate
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
|
|
1747
|
+
// Create a transaction with a template
|
|
1748
|
+
const tx = new Transaction(
|
|
1749
|
+
1,
|
|
1750
|
+
[
|
|
1751
|
+
{
|
|
1752
|
+
sourceTransaction: sourceTx,
|
|
1753
|
+
sourceOutputIndex: 0,
|
|
1754
|
+
sequence: 0xffffffff,
|
|
1755
|
+
unlockingScriptTemplate: mockTemplate
|
|
1756
|
+
}
|
|
1757
|
+
],
|
|
1758
|
+
[{
|
|
1759
|
+
satoshis: 9000,
|
|
1760
|
+
lockingScript: p2pkh.lock(publicKeyHash)
|
|
1761
|
+
}],
|
|
1762
|
+
0
|
|
1763
|
+
)
|
|
1764
|
+
|
|
1765
|
+
// Create a mock wallet
|
|
1766
|
+
const mockWallet = new MockWallet()
|
|
1767
|
+
|
|
1768
|
+
// Complete the transaction with the wallet
|
|
1769
|
+
await tx.completeWithWallet(mockWallet, 'Test with template')
|
|
1770
|
+
|
|
1771
|
+
// Verify that signAction was called
|
|
1772
|
+
expect(mockWallet.signActionCalled).toBe(true)
|
|
1773
|
+
expect(mockWallet.lastSignActionArgs).not.toBeNull()
|
|
1774
|
+
expect(mockWallet.lastSignActionArgs.reference).toBe('test-reference-123')
|
|
1775
|
+
expect(mockWallet.lastSignActionArgs.spends).toHaveProperty('0')
|
|
1776
|
+
expect(mockWallet.lastSignActionArgs.spends[0].unlockingScript).toBe(Script.fromASM('OP_1 OP_2').toHex())
|
|
1777
|
+
|
|
1778
|
+
// Verify that createAction was called with signAndProcess: false
|
|
1779
|
+
expect(mockWallet.lastCreateActionArgs).not.toBeNull()
|
|
1780
|
+
expect(mockWallet.lastCreateActionArgs!.options?.signAndProcess).toBe(false)
|
|
1781
|
+
expect(mockWallet.lastCreateActionArgs!.inputs).toHaveLength(1)
|
|
1782
|
+
const firstInput = mockWallet.lastCreateActionArgs!.inputs![0]
|
|
1783
|
+
expect(firstInput).toBeDefined()
|
|
1784
|
+
expect(firstInput.unlockingScriptLength).toBe(73)
|
|
1785
|
+
})
|
|
1786
|
+
|
|
1787
|
+
it('should handle mixed inputs with both templates and scripts', async () => {
|
|
1788
|
+
// Create a private key and address for testing
|
|
1789
|
+
const privateKey = new PrivateKey(1)
|
|
1790
|
+
const publicKey = new Curve().g.mul(privateKey)
|
|
1791
|
+
const publicKeyHash = hash160(publicKey.encode(true)) as number[]
|
|
1792
|
+
const p2pkh = new P2PKH()
|
|
1793
|
+
|
|
1794
|
+
// Create source transactions
|
|
1795
|
+
const sourceTx1 = new Transaction(
|
|
1796
|
+
1,
|
|
1797
|
+
[],
|
|
1798
|
+
[{
|
|
1799
|
+
lockingScript: p2pkh.lock(publicKeyHash),
|
|
1800
|
+
satoshis: 10000
|
|
1801
|
+
}],
|
|
1802
|
+
0
|
|
1803
|
+
)
|
|
1804
|
+
|
|
1805
|
+
const sourceTx2 = new Transaction(
|
|
1806
|
+
1,
|
|
1807
|
+
[],
|
|
1808
|
+
[{
|
|
1809
|
+
lockingScript: p2pkh.lock(publicKeyHash),
|
|
1810
|
+
satoshis: 5000
|
|
1811
|
+
}],
|
|
1812
|
+
0
|
|
1813
|
+
)
|
|
1814
|
+
|
|
1815
|
+
// Create a mock template
|
|
1816
|
+
const mockTemplate = {
|
|
1817
|
+
sign: async (tx: Transaction, inputIndex: number): Promise<UnlockingScript> => {
|
|
1818
|
+
return Script.fromASM('OP_1 OP_2')
|
|
1819
|
+
},
|
|
1820
|
+
estimateLength: async (tx: Transaction, inputIndex: number): Promise<number> => {
|
|
1821
|
+
return 73
|
|
1822
|
+
}
|
|
1823
|
+
}
|
|
1824
|
+
|
|
1825
|
+
// Create a transaction with mixed inputs
|
|
1826
|
+
const tx = new Transaction(
|
|
1827
|
+
1,
|
|
1828
|
+
[
|
|
1829
|
+
{
|
|
1830
|
+
sourceTransaction: sourceTx1,
|
|
1831
|
+
sourceOutputIndex: 0,
|
|
1832
|
+
sequence: 0xffffffff,
|
|
1833
|
+
unlockingScriptTemplate: mockTemplate // First input uses template
|
|
1834
|
+
},
|
|
1835
|
+
{
|
|
1836
|
+
sourceTransaction: sourceTx2,
|
|
1837
|
+
sourceOutputIndex: 0,
|
|
1838
|
+
sequence: 0xffffffff,
|
|
1839
|
+
unlockingScript: Script.fromASM('OP_3 OP_4') // Second input has script already
|
|
1840
|
+
}
|
|
1841
|
+
],
|
|
1842
|
+
[{
|
|
1843
|
+
satoshis: 14000,
|
|
1844
|
+
lockingScript: p2pkh.lock(publicKeyHash)
|
|
1845
|
+
}],
|
|
1846
|
+
0
|
|
1847
|
+
)
|
|
1848
|
+
|
|
1849
|
+
// Create a mock wallet
|
|
1850
|
+
const mockWallet = new MockWallet()
|
|
1851
|
+
|
|
1852
|
+
// Complete the transaction with the wallet
|
|
1853
|
+
await tx.completeWithWallet(mockWallet, 'Test with mixed inputs')
|
|
1854
|
+
|
|
1855
|
+
// Verify that signAction was called (because at least one template exists)
|
|
1856
|
+
expect(mockWallet.signActionCalled).toBe(true)
|
|
1857
|
+
|
|
1858
|
+
// Verify spends includes both inputs
|
|
1859
|
+
expect(mockWallet.lastSignActionArgs.spends).toHaveProperty('0')
|
|
1860
|
+
expect(mockWallet.lastSignActionArgs.spends).toHaveProperty('1')
|
|
1861
|
+
|
|
1862
|
+
// First input should have template-generated script
|
|
1863
|
+
expect(mockWallet.lastSignActionArgs.spends[0].unlockingScript).toBe(Script.fromASM('OP_1 OP_2').toHex())
|
|
1864
|
+
|
|
1865
|
+
// Second input should have pre-existing script
|
|
1866
|
+
expect(mockWallet.lastSignActionArgs.spends[1].unlockingScript).toBe(Script.fromASM('OP_3 OP_4').toHex())
|
|
1867
|
+
|
|
1868
|
+
// Verify createAction args
|
|
1869
|
+
const firstInputArg = mockWallet.lastCreateActionArgs!.inputs![0]
|
|
1870
|
+
const secondInputArg = mockWallet.lastCreateActionArgs!.inputs![1]
|
|
1871
|
+
expect(firstInputArg).toBeDefined()
|
|
1872
|
+
expect(secondInputArg).toBeDefined()
|
|
1873
|
+
expect(firstInputArg.unlockingScriptLength).toBe(73)
|
|
1874
|
+
expect(secondInputArg.unlockingScript).toBe(Script.fromASM('OP_3 OP_4').toHex())
|
|
1875
|
+
})
|
|
1876
|
+
|
|
1877
|
+
it('should throw error when template input has neither script nor template', async () => {
|
|
1878
|
+
const privateKey = new PrivateKey(1)
|
|
1879
|
+
const publicKey = new Curve().g.mul(privateKey)
|
|
1880
|
+
const publicKeyHash = hash160(publicKey.encode(true)) as number[]
|
|
1881
|
+
const p2pkh = new P2PKH()
|
|
1882
|
+
|
|
1883
|
+
const sourceTx1 = new Transaction(
|
|
1884
|
+
1,
|
|
1885
|
+
[],
|
|
1886
|
+
[{
|
|
1887
|
+
lockingScript: p2pkh.lock(publicKeyHash),
|
|
1888
|
+
satoshis: 10000
|
|
1889
|
+
}],
|
|
1890
|
+
0
|
|
1891
|
+
)
|
|
1892
|
+
|
|
1893
|
+
const sourceTx2 = new Transaction(
|
|
1894
|
+
1,
|
|
1895
|
+
[],
|
|
1896
|
+
[{
|
|
1897
|
+
lockingScript: p2pkh.lock(publicKeyHash),
|
|
1898
|
+
satoshis: 5000
|
|
1899
|
+
}],
|
|
1900
|
+
0
|
|
1901
|
+
)
|
|
1902
|
+
|
|
1903
|
+
// Mock template for first input
|
|
1904
|
+
const mockTemplate = {
|
|
1905
|
+
sign: async (tx: Transaction, inputIndex: number): Promise<UnlockingScript> => {
|
|
1906
|
+
return Script.fromASM('OP_1 OP_2')
|
|
1907
|
+
},
|
|
1908
|
+
estimateLength: async (tx: Transaction, inputIndex: number): Promise<number> => {
|
|
1909
|
+
return 73
|
|
1910
|
+
}
|
|
1911
|
+
}
|
|
1912
|
+
|
|
1913
|
+
// Create transaction where second input has neither script nor template
|
|
1914
|
+
const tx = new Transaction(
|
|
1915
|
+
1,
|
|
1916
|
+
[
|
|
1917
|
+
{
|
|
1918
|
+
sourceTransaction: sourceTx1,
|
|
1919
|
+
sourceOutputIndex: 0,
|
|
1920
|
+
sequence: 0xffffffff,
|
|
1921
|
+
unlockingScriptTemplate: mockTemplate
|
|
1922
|
+
},
|
|
1923
|
+
{
|
|
1924
|
+
sourceTransaction: sourceTx2,
|
|
1925
|
+
sourceOutputIndex: 0,
|
|
1926
|
+
sequence: 0xffffffff
|
|
1927
|
+
// No unlockingScript or unlockingScriptTemplate
|
|
1928
|
+
}
|
|
1929
|
+
],
|
|
1930
|
+
[{
|
|
1931
|
+
satoshis: 14000,
|
|
1932
|
+
lockingScript: p2pkh.lock(publicKeyHash)
|
|
1933
|
+
}],
|
|
1934
|
+
0
|
|
1935
|
+
)
|
|
1936
|
+
|
|
1937
|
+
const mockWallet = new MockWallet()
|
|
1938
|
+
|
|
1939
|
+
// Should throw error about missing script/template on input 1
|
|
1940
|
+
await expect(tx.completeWithWallet(mockWallet))
|
|
1941
|
+
.rejects
|
|
1942
|
+
.toThrow('Input 1 must have either an unlockingScript or unlockingScriptTemplate')
|
|
1943
|
+
})
|
|
1944
|
+
|
|
1945
|
+
it('should pass options to createAction for standard flow', async () => {
|
|
1946
|
+
// Create a simple transaction
|
|
1947
|
+
const sourceTx = new Transaction(1, [], [{ lockingScript: testP2PKHScript, satoshis: 10000 }], 0)
|
|
1948
|
+
const tx = new Transaction(
|
|
1949
|
+
1,
|
|
1950
|
+
[{
|
|
1951
|
+
sourceTransaction: sourceTx,
|
|
1952
|
+
sourceOutputIndex: 0,
|
|
1953
|
+
sequence: 0xffffffff,
|
|
1954
|
+
unlockingScript: Script.fromASM('OP_0 OP_0')
|
|
1955
|
+
}],
|
|
1956
|
+
[{ satoshis: 9000, lockingScript: testP2PKHScript }],
|
|
1957
|
+
0
|
|
1958
|
+
)
|
|
1959
|
+
|
|
1960
|
+
const mockWallet = new MockWallet()
|
|
1961
|
+
const options = {
|
|
1962
|
+
noSend: true,
|
|
1963
|
+
acceptDelayedBroadcast: false,
|
|
1964
|
+
returnTXIDOnly: true
|
|
1965
|
+
}
|
|
1966
|
+
|
|
1967
|
+
await tx.completeWithWallet(mockWallet, 'Test with options', undefined, options)
|
|
1968
|
+
|
|
1969
|
+
// Verify options were passed to createAction
|
|
1970
|
+
expect(mockWallet.lastCreateActionArgs?.options).toEqual(options)
|
|
1971
|
+
})
|
|
1972
|
+
|
|
1973
|
+
it('should pass options to both createAction and signAction for template flow', async () => {
|
|
1974
|
+
// Create transaction with template
|
|
1975
|
+
const sourceTx = new Transaction(1, [], [{ lockingScript: testP2PKHScript, satoshis: 10000 }], 0)
|
|
1976
|
+
const tx = new Transaction(
|
|
1977
|
+
1,
|
|
1978
|
+
[{
|
|
1979
|
+
sourceTransaction: sourceTx,
|
|
1980
|
+
sourceOutputIndex: 0,
|
|
1981
|
+
sequence: 0xffffffff,
|
|
1982
|
+
unlockingScriptTemplate: {
|
|
1983
|
+
sign: async (tx, inputIndex) => Script.fromASM('OP_0 OP_0'),
|
|
1984
|
+
estimateLength: async (tx, inputIndex) => 100
|
|
1985
|
+
}
|
|
1986
|
+
}],
|
|
1987
|
+
[{ satoshis: 9000, lockingScript: testP2PKHScript }],
|
|
1988
|
+
0
|
|
1989
|
+
)
|
|
1990
|
+
|
|
1991
|
+
const mockWallet = new MockWallet()
|
|
1992
|
+
const options = {
|
|
1993
|
+
noSend: true,
|
|
1994
|
+
acceptDelayedBroadcast: false,
|
|
1995
|
+
returnTXIDOnly: true,
|
|
1996
|
+
trustSelf: 'known' as any,
|
|
1997
|
+
randomizeOutputs: false
|
|
1998
|
+
}
|
|
1999
|
+
|
|
2000
|
+
await tx.completeWithWallet(mockWallet, 'Test template with options', undefined, options)
|
|
2001
|
+
|
|
2002
|
+
// Verify signAndProcess: false was set for createAction (required for template flow)
|
|
2003
|
+
expect(mockWallet.lastCreateActionArgs?.options?.signAndProcess).toBe(false)
|
|
2004
|
+
|
|
2005
|
+
// Verify other options were passed to createAction
|
|
2006
|
+
expect(mockWallet.lastCreateActionArgs?.options?.trustSelf).toBe('known')
|
|
2007
|
+
expect(mockWallet.lastCreateActionArgs?.options?.randomizeOutputs).toBe(false)
|
|
2008
|
+
|
|
2009
|
+
// Verify signAction was called and received the applicable options
|
|
2010
|
+
expect(mockWallet.signActionCalled).toBe(true)
|
|
2011
|
+
expect(mockWallet.lastSignActionArgs?.options).toEqual({
|
|
2012
|
+
acceptDelayedBroadcast: false,
|
|
2013
|
+
returnTXIDOnly: true,
|
|
2014
|
+
noSend: true,
|
|
2015
|
+
sendWith: undefined
|
|
2016
|
+
})
|
|
2017
|
+
})
|
|
2018
|
+
})
|
|
2019
|
+
|
|
1382
2020
|
describe('preventResourceExhaustionSmall', () => {
|
|
1383
2021
|
it('should run script evaluation and pass so long as we stay within the limit', async () => {
|
|
1384
2022
|
const sourceTransaction = new Transaction()
|