@bsv/sdk 2.1.0 → 2.1.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/README.md +7 -7
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/auth/Peer.js +8 -13
- package/dist/cjs/src/auth/Peer.js.map +1 -1
- package/dist/cjs/src/auth/SessionManager.js +4 -7
- package/dist/cjs/src/auth/SessionManager.js.map +1 -1
- package/dist/cjs/src/auth/certificates/MasterCertificate.js +1 -1
- package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +1 -1
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/cjs/src/auth/clients/AuthFetch.js +32 -32
- package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +4 -4
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/cjs/src/compat/ECIES.js +29 -34
- package/dist/cjs/src/compat/ECIES.js.map +1 -1
- package/dist/cjs/src/compat/HD.js +9 -4
- package/dist/cjs/src/compat/HD.js.map +1 -1
- package/dist/cjs/src/compat/Mnemonic.js +12 -12
- package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
- package/dist/cjs/src/identity/ContactsManager.js +172 -232
- package/dist/cjs/src/identity/ContactsManager.js.map +1 -1
- package/dist/cjs/src/identity/IdentityClient.js +122 -55
- package/dist/cjs/src/identity/IdentityClient.js.map +1 -1
- package/dist/cjs/src/kvstore/GlobalKVStore.js +30 -31
- package/dist/cjs/src/kvstore/GlobalKVStore.js.map +1 -1
- package/dist/cjs/src/kvstore/LocalKVStore.js +9 -9
- package/dist/cjs/src/kvstore/LocalKVStore.js.map +1 -1
- package/dist/cjs/src/kvstore/kvStoreInterpreter.js +2 -2
- package/dist/cjs/src/kvstore/kvStoreInterpreter.js.map +1 -1
- package/dist/cjs/src/messages/SignedMessage.js +1 -1
- package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
- package/dist/cjs/src/overlay-tools/Historian.js +1 -1
- package/dist/cjs/src/overlay-tools/Historian.js.map +1 -1
- package/dist/cjs/src/overlay-tools/LookupResolver.js +139 -46
- package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +75 -146
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/cjs/src/primitives/AESGCM.js +2 -2
- package/dist/cjs/src/primitives/AESGCM.js.map +1 -1
- package/dist/cjs/src/primitives/BigNumber.js +164 -148
- package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
- package/dist/cjs/src/primitives/Curve.js +17 -15
- package/dist/cjs/src/primitives/Curve.js.map +1 -1
- package/dist/cjs/src/primitives/ECDSA.js +12 -7
- package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
- package/dist/cjs/src/primitives/Hash.js +140 -56
- package/dist/cjs/src/primitives/Hash.js.map +1 -1
- package/dist/cjs/src/primitives/JacobianPoint.js +8 -8
- package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/cjs/src/primitives/K256.js +3 -3
- package/dist/cjs/src/primitives/K256.js.map +1 -1
- package/dist/cjs/src/primitives/Point.js +36 -40
- package/dist/cjs/src/primitives/Point.js.map +1 -1
- package/dist/cjs/src/primitives/PrivateKey.js +4 -4
- package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
- package/dist/cjs/src/primitives/PublicKey.js +4 -4
- package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
- package/dist/cjs/src/primitives/Random.js +10 -14
- package/dist/cjs/src/primitives/Random.js.map +1 -1
- package/dist/cjs/src/primitives/ReaderUint8Array.js +6 -6
- package/dist/cjs/src/primitives/ReaderUint8Array.js.map +1 -1
- package/dist/cjs/src/primitives/Schnorr.js +2 -2
- package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
- package/dist/cjs/src/primitives/Secp256r1.js +2 -1
- package/dist/cjs/src/primitives/Secp256r1.js.map +1 -1
- package/dist/cjs/src/primitives/Signature.js +8 -8
- package/dist/cjs/src/primitives/Signature.js.map +1 -1
- package/dist/cjs/src/primitives/TransactionSignature.js +20 -21
- package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/cjs/src/primitives/utils.js +39 -46
- package/dist/cjs/src/primitives/utils.js.map +1 -1
- package/dist/cjs/src/registry/RegistryClient.js +31 -23
- package/dist/cjs/src/registry/RegistryClient.js.map +1 -1
- package/dist/cjs/src/remittance/RemittanceManager.js +19 -18
- package/dist/cjs/src/remittance/RemittanceManager.js.map +1 -1
- package/dist/cjs/src/remittance/modules/BasicBRC29.js.map +1 -1
- package/dist/cjs/src/script/Script.js +93 -170
- package/dist/cjs/src/script/Script.js.map +1 -1
- package/dist/cjs/src/script/ScriptEvaluationError.js +2 -2
- package/dist/cjs/src/script/ScriptEvaluationError.js.map +1 -1
- package/dist/cjs/src/script/Spend.js +14 -12
- package/dist/cjs/src/script/Spend.js.map +1 -1
- package/dist/cjs/src/script/templates/PushDrop.js +22 -18
- package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
- package/dist/cjs/src/script/templates/RPuzzle.js +2 -4
- package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/cjs/src/storage/StorageDownloader.js +42 -9
- package/dist/cjs/src/storage/StorageDownloader.js.map +1 -1
- package/dist/cjs/src/totp/totp.js +1 -1
- package/dist/cjs/src/totp/totp.js.map +1 -1
- package/dist/cjs/src/transaction/Beef.js +239 -192
- package/dist/cjs/src/transaction/Beef.js.map +1 -1
- package/dist/cjs/src/transaction/BeefConstants.js +19 -0
- package/dist/cjs/src/transaction/BeefConstants.js.map +1 -0
- package/dist/cjs/src/transaction/BeefTx.js +12 -12
- package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
- package/dist/cjs/src/transaction/MerklePath.js +4 -4
- package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
- package/dist/cjs/src/transaction/Transaction.js +49 -52
- package/dist/cjs/src/transaction/Transaction.js.map +1 -1
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/cjs/src/transaction/http/BinaryFetchClient.js +9 -9
- package/dist/cjs/src/transaction/http/BinaryFetchClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js +9 -9
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/cjs/src/wallet/CachedKeyDeriver.js +1 -1
- package/dist/cjs/src/wallet/CachedKeyDeriver.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/substrates/HTTPWalletJSON.js +5 -4
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js +9 -9
- package/dist/cjs/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +92 -92
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +387 -711
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/XDM.js +4 -4
- package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/window.CWI.js +2 -2
- package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/cjs/src/wallet/validationHelpers.js +9 -9
- package/dist/cjs/src/wallet/validationHelpers.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/src/auth/Peer.js +25 -13
- package/dist/esm/src/auth/Peer.js.map +1 -1
- package/dist/esm/src/auth/SessionManager.js +4 -7
- package/dist/esm/src/auth/SessionManager.js.map +1 -1
- package/dist/esm/src/auth/certificates/MasterCertificate.js +1 -1
- package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +1 -1
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/esm/src/auth/clients/AuthFetch.js +32 -32
- package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +4 -4
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/esm/src/compat/ECIES.js +29 -34
- package/dist/esm/src/compat/ECIES.js.map +1 -1
- package/dist/esm/src/compat/HD.js +9 -4
- package/dist/esm/src/compat/HD.js.map +1 -1
- package/dist/esm/src/compat/Mnemonic.js +12 -12
- package/dist/esm/src/compat/Mnemonic.js.map +1 -1
- package/dist/esm/src/identity/ContactsManager.js +172 -232
- package/dist/esm/src/identity/ContactsManager.js.map +1 -1
- package/dist/esm/src/identity/IdentityClient.js +122 -55
- package/dist/esm/src/identity/IdentityClient.js.map +1 -1
- package/dist/esm/src/kvstore/GlobalKVStore.js +30 -31
- package/dist/esm/src/kvstore/GlobalKVStore.js.map +1 -1
- package/dist/esm/src/kvstore/LocalKVStore.js +9 -9
- package/dist/esm/src/kvstore/LocalKVStore.js.map +1 -1
- package/dist/esm/src/kvstore/kvStoreInterpreter.js +2 -2
- package/dist/esm/src/kvstore/kvStoreInterpreter.js.map +1 -1
- package/dist/esm/src/messages/SignedMessage.js +1 -1
- package/dist/esm/src/messages/SignedMessage.js.map +1 -1
- package/dist/esm/src/overlay-tools/Historian.js +1 -1
- package/dist/esm/src/overlay-tools/Historian.js.map +1 -1
- package/dist/esm/src/overlay-tools/LookupResolver.js +139 -46
- package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +74 -146
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/esm/src/primitives/AESGCM.js +2 -2
- package/dist/esm/src/primitives/AESGCM.js.map +1 -1
- package/dist/esm/src/primitives/BigNumber.js +167 -154
- package/dist/esm/src/primitives/BigNumber.js.map +1 -1
- package/dist/esm/src/primitives/Curve.js +17 -15
- package/dist/esm/src/primitives/Curve.js.map +1 -1
- package/dist/esm/src/primitives/ECDSA.js +12 -7
- package/dist/esm/src/primitives/ECDSA.js.map +1 -1
- package/dist/esm/src/primitives/Hash.js +140 -56
- package/dist/esm/src/primitives/Hash.js.map +1 -1
- package/dist/esm/src/primitives/JacobianPoint.js +8 -8
- package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/esm/src/primitives/K256.js +3 -3
- package/dist/esm/src/primitives/K256.js.map +1 -1
- package/dist/esm/src/primitives/Point.js +36 -40
- package/dist/esm/src/primitives/Point.js.map +1 -1
- package/dist/esm/src/primitives/PrivateKey.js +4 -4
- package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
- package/dist/esm/src/primitives/PublicKey.js +4 -4
- package/dist/esm/src/primitives/PublicKey.js.map +1 -1
- package/dist/esm/src/primitives/Random.js +10 -14
- package/dist/esm/src/primitives/Random.js.map +1 -1
- package/dist/esm/src/primitives/ReaderUint8Array.js +6 -6
- package/dist/esm/src/primitives/ReaderUint8Array.js.map +1 -1
- package/dist/esm/src/primitives/Schnorr.js +1 -1
- package/dist/esm/src/primitives/Schnorr.js.map +1 -1
- package/dist/esm/src/primitives/Secp256r1.js +2 -1
- package/dist/esm/src/primitives/Secp256r1.js.map +1 -1
- package/dist/esm/src/primitives/Signature.js +8 -8
- package/dist/esm/src/primitives/Signature.js.map +1 -1
- package/dist/esm/src/primitives/TransactionSignature.js +20 -21
- package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/esm/src/primitives/utils.js +39 -48
- package/dist/esm/src/primitives/utils.js.map +1 -1
- package/dist/esm/src/registry/RegistryClient.js +31 -23
- package/dist/esm/src/registry/RegistryClient.js.map +1 -1
- package/dist/esm/src/remittance/RemittanceManager.js +19 -18
- package/dist/esm/src/remittance/RemittanceManager.js.map +1 -1
- package/dist/esm/src/remittance/modules/BasicBRC29.js.map +1 -1
- package/dist/esm/src/script/Script.js +93 -170
- package/dist/esm/src/script/Script.js.map +1 -1
- package/dist/esm/src/script/ScriptEvaluationError.js +2 -2
- package/dist/esm/src/script/ScriptEvaluationError.js.map +1 -1
- package/dist/esm/src/script/Spend.js +14 -12
- package/dist/esm/src/script/Spend.js.map +1 -1
- package/dist/esm/src/script/templates/PushDrop.js +4 -3
- package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
- package/dist/esm/src/script/templates/RPuzzle.js +2 -4
- package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/esm/src/storage/StorageDownloader.js +1 -1
- package/dist/esm/src/storage/StorageDownloader.js.map +1 -1
- package/dist/esm/src/totp/totp.js +1 -1
- package/dist/esm/src/totp/totp.js.map +1 -1
- package/dist/esm/src/transaction/Beef.js +229 -186
- package/dist/esm/src/transaction/Beef.js.map +1 -1
- package/dist/esm/src/transaction/BeefConstants.js +16 -0
- package/dist/esm/src/transaction/BeefConstants.js.map +1 -0
- package/dist/esm/src/transaction/BeefTx.js +3 -3
- package/dist/esm/src/transaction/BeefTx.js.map +1 -1
- package/dist/esm/src/transaction/MerklePath.js +4 -4
- package/dist/esm/src/transaction/MerklePath.js.map +1 -1
- package/dist/esm/src/transaction/Transaction.js +49 -52
- package/dist/esm/src/transaction/Transaction.js.map +1 -1
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +1 -1
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/esm/src/transaction/http/BinaryFetchClient.js +9 -9
- package/dist/esm/src/transaction/http/BinaryFetchClient.js.map +1 -1
- package/dist/esm/src/transaction/http/DefaultHttpClient.js +9 -9
- package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/esm/src/wallet/CachedKeyDeriver.js +1 -1
- package/dist/esm/src/wallet/CachedKeyDeriver.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 +5 -4
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/esm/src/wallet/substrates/ReactNativeWebView.js +9 -9
- package/dist/esm/src/wallet/substrates/ReactNativeWebView.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +92 -92
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +387 -711
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/esm/src/wallet/substrates/XDM.js +4 -4
- package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/esm/src/wallet/substrates/window.CWI.js +2 -2
- package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/esm/src/wallet/validationHelpers.js +9 -9
- package/dist/esm/src/wallet/validationHelpers.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/src/auth/Peer.d.ts +13 -0
- package/dist/types/src/auth/Peer.d.ts.map +1 -1
- package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
- package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
- package/dist/types/src/compat/ECIES.d.ts.map +1 -1
- package/dist/types/src/compat/HD.d.ts.map +1 -1
- package/dist/types/src/identity/ContactsManager.d.ts +18 -0
- package/dist/types/src/identity/ContactsManager.d.ts.map +1 -1
- package/dist/types/src/identity/IdentityClient.d.ts +47 -8
- package/dist/types/src/identity/IdentityClient.d.ts.map +1 -1
- package/dist/types/src/kvstore/GlobalKVStore.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/LookupResolver.d.ts +59 -1
- package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +18 -3
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
- package/dist/types/src/primitives/BigNumber.d.ts +13 -3
- package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
- package/dist/types/src/primitives/Curve.d.ts.map +1 -1
- package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
- package/dist/types/src/primitives/Hash.d.ts +3 -3
- package/dist/types/src/primitives/Hash.d.ts.map +1 -1
- package/dist/types/src/primitives/JacobianPoint.d.ts +3 -1
- package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
- package/dist/types/src/primitives/Point.d.ts.map +1 -1
- package/dist/types/src/primitives/Random.d.ts +2 -2
- package/dist/types/src/primitives/Random.d.ts.map +1 -1
- package/dist/types/src/primitives/ReaderUint8Array.d.ts.map +1 -1
- package/dist/types/src/primitives/Schnorr.d.ts +2 -1
- package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
- package/dist/types/src/primitives/Secp256r1.d.ts.map +1 -1
- package/dist/types/src/primitives/utils.d.ts +2 -4
- package/dist/types/src/primitives/utils.d.ts.map +1 -1
- package/dist/types/src/registry/RegistryClient.d.ts.map +1 -1
- package/dist/types/src/remittance/RemittanceManager.d.ts.map +1 -1
- package/dist/types/src/remittance/modules/BasicBRC29.d.ts.map +1 -1
- package/dist/types/src/script/Script.d.ts +15 -8
- package/dist/types/src/script/Script.d.ts.map +1 -1
- package/dist/types/src/script/Spend.d.ts.map +1 -1
- package/dist/types/src/script/templates/PushDrop.d.ts +3 -1
- package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
- package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
- package/dist/types/src/transaction/Beef.d.ts +46 -8
- package/dist/types/src/transaction/Beef.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefConstants.d.ts +15 -0
- package/dist/types/src/transaction/BeefConstants.d.ts.map +1 -0
- package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
- package/dist/types/src/wallet/KeyDeriver.d.ts +1 -1
- package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
- package/dist/types/src/wallet/Wallet.interfaces.d.ts +2 -2
- package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
- package/dist/types/src/wallet/WalletClient.d.ts +7 -7
- package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +7 -7
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +36 -7
- package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/window.CWI.d.ts +8 -8
- package/dist/types/src/wallet/substrates/window.CWI.d.ts.map +1 -1
- package/dist/types/tsconfig.types.tsbuildinfo +1 -1
- package/dist/umd/bundle.js +3 -3
- package/package.json +1 -1
- package/src/auth/Peer.ts +26 -13
- package/src/auth/SessionManager.ts +4 -7
- package/src/auth/certificates/MasterCertificate.ts +1 -1
- package/src/auth/certificates/__tests/CompletedProtoWallet.ts +1 -1
- package/src/auth/clients/AuthFetch.ts +41 -41
- package/src/auth/transports/SimplifiedFetchTransport.ts +4 -4
- package/src/compat/ECIES.ts +29 -34
- package/src/compat/HD.ts +10 -5
- package/src/compat/Mnemonic.ts +11 -11
- package/src/compat/__tests/HD.test.ts +19 -0
- package/src/identity/ContactsManager.ts +194 -257
- package/src/identity/IdentityClient.ts +155 -66
- package/src/identity/__tests/IdentityClient.test.ts +25 -1
- package/src/kvstore/GlobalKVStore.ts +31 -32
- package/src/kvstore/LocalKVStore.ts +8 -8
- package/src/kvstore/kvStoreInterpreter.ts +2 -2
- package/src/messages/SignedMessage.ts +1 -1
- package/src/overlay-tools/Historian.ts +1 -1
- package/src/overlay-tools/LookupResolver.ts +182 -45
- package/src/overlay-tools/SHIPBroadcaster.ts +92 -168
- package/src/primitives/AESGCM.ts +2 -2
- package/src/primitives/BigNumber.ts +122 -113
- package/src/primitives/Curve.ts +16 -15
- package/src/primitives/ECDSA.ts +10 -8
- package/src/primitives/Hash.ts +152 -53
- package/src/primitives/JacobianPoint.ts +13 -11
- package/src/primitives/K256.ts +3 -3
- package/src/primitives/Point.ts +35 -38
- package/src/primitives/PrivateKey.ts +3 -3
- package/src/primitives/PublicKey.ts +3 -3
- package/src/primitives/Random.ts +11 -14
- package/src/primitives/ReaderUint8Array.ts +7 -7
- package/src/primitives/Schnorr.ts +2 -1
- package/src/primitives/Secp256r1.ts +2 -1
- package/src/primitives/Signature.ts +8 -8
- package/src/primitives/TransactionSignature.ts +16 -16
- package/src/primitives/utils.ts +37 -47
- package/src/registry/RegistryClient.ts +25 -25
- package/src/remittance/RemittanceManager.ts +17 -18
- package/src/remittance/modules/BasicBRC29.ts +2 -5
- package/src/script/Script.ts +114 -170
- package/src/script/ScriptEvaluationError.ts +2 -2
- package/src/script/Spend.ts +14 -15
- package/src/script/templates/PushDrop.ts +5 -3
- package/src/script/templates/RPuzzle.ts +2 -4
- package/src/storage/StorageDownloader.ts +1 -1
- package/src/totp/totp.ts +1 -1
- package/src/transaction/Beef.ts +241 -203
- package/src/transaction/BeefConstants.ts +16 -0
- package/src/transaction/BeefTx.ts +3 -3
- package/src/transaction/MerklePath.ts +4 -4
- package/src/transaction/Transaction.ts +48 -51
- package/src/transaction/fee-models/SatoshisPerKilobyte.ts +1 -1
- package/src/transaction/http/BinaryFetchClient.ts +8 -8
- package/src/transaction/http/DefaultHttpClient.ts +8 -8
- package/src/wallet/CachedKeyDeriver.ts +8 -6
- package/src/wallet/KeyDeriver.ts +1 -1
- package/src/wallet/Wallet.interfaces.ts +2 -4
- package/src/wallet/WalletClient.ts +8 -8
- package/src/wallet/WalletError.ts +1 -1
- package/src/wallet/__tests/WalletClient.substrate.test.ts +10 -6
- package/src/wallet/substrates/HTTPWalletJSON.ts +22 -21
- package/src/wallet/substrates/ReactNativeWebView.ts +9 -9
- package/src/wallet/substrates/WalletWireProcessor.ts +83 -83
- package/src/wallet/substrates/WalletWireTransceiver.ts +528 -938
- package/src/wallet/substrates/XDM.ts +4 -4
- package/src/wallet/substrates/__tests/HTTPWalletJSON.test.ts +38 -25
- package/src/wallet/substrates/__tests/ReactNativeWebView.test.ts +174 -0
- package/src/wallet/substrates/__tests/window.CWI.test.ts +256 -0
- package/src/wallet/substrates/window.CWI.ts +10 -10
- package/src/wallet/validationHelpers.ts +9 -9
package/src/primitives/Point.ts
CHANGED
|
@@ -163,20 +163,17 @@ export const scalarMultiplyWNAF = (
|
|
|
163
163
|
): JacobianPointBI => {
|
|
164
164
|
const key = `${window}:${P0.x.toString(16)}:${P0.y.toString(16)}`
|
|
165
165
|
let tbl = WNAF_TABLE_CACHE.get(key)
|
|
166
|
-
let P: JacobianPointBI
|
|
167
166
|
if (tbl === undefined) {
|
|
168
167
|
// Convert affine to Jacobian and pre-compute odd multiples
|
|
169
168
|
const tblSize = 1 << (window - 1) // e.g. w=5 → 16 entries
|
|
170
169
|
tbl = new Array(tblSize)
|
|
171
|
-
P = { X: P0.x, Y: P0.y, Z: BI_ONE }
|
|
170
|
+
const P: JacobianPointBI = { X: P0.x, Y: P0.y, Z: BI_ONE }
|
|
172
171
|
tbl[0] = P
|
|
173
172
|
const twoP = jpDouble(P)
|
|
174
173
|
for (let i = 1; i < tblSize; i++) {
|
|
175
174
|
tbl[i] = jpAdd(tbl[i - 1], twoP)
|
|
176
175
|
}
|
|
177
176
|
WNAF_TABLE_CACHE.set(key, tbl)
|
|
178
|
-
} else {
|
|
179
|
-
P = tbl[0]
|
|
180
177
|
}
|
|
181
178
|
|
|
182
179
|
// Build wNAF representation of k
|
|
@@ -277,11 +274,11 @@ export default class Point extends BasePoint {
|
|
|
277
274
|
bytes.length - 1 === 2 * len
|
|
278
275
|
) {
|
|
279
276
|
if (bytes[0] === 0x06) {
|
|
280
|
-
if (bytes
|
|
277
|
+
if (bytes.at(-1) % 2 !== 0) {
|
|
281
278
|
throw new Error('Point string value is wrong length')
|
|
282
279
|
}
|
|
283
280
|
} else if (bytes[0] === 0x07) {
|
|
284
|
-
if (bytes
|
|
281
|
+
if (bytes.at(-1) % 2 !== 1) {
|
|
285
282
|
throw new Error('Point string value is wrong length')
|
|
286
283
|
}
|
|
287
284
|
}
|
|
@@ -523,10 +520,10 @@ export default class Point extends BasePoint {
|
|
|
523
520
|
} else {
|
|
524
521
|
res = [0x04].concat(x, this.getY().toArray('be', len))
|
|
525
522
|
}
|
|
526
|
-
if (enc
|
|
527
|
-
return res
|
|
528
|
-
} else {
|
|
523
|
+
if (enc === 'hex') {
|
|
529
524
|
return toHex(res)
|
|
525
|
+
} else {
|
|
526
|
+
return res
|
|
530
527
|
}
|
|
531
528
|
}
|
|
532
529
|
|
|
@@ -573,19 +570,19 @@ export default class Point extends BasePoint {
|
|
|
573
570
|
typeof this.precomputed === 'object' && this.precomputed !== null
|
|
574
571
|
? {
|
|
575
572
|
doubles:
|
|
576
|
-
this.precomputed.doubles
|
|
577
|
-
?
|
|
573
|
+
this.precomputed.doubles == null
|
|
574
|
+
? undefined
|
|
575
|
+
: {
|
|
578
576
|
step: this.precomputed.doubles.step,
|
|
579
577
|
points: this.precomputed.doubles.points.slice(1)
|
|
580
|
-
}
|
|
581
|
-
: undefined,
|
|
578
|
+
},
|
|
582
579
|
naf:
|
|
583
|
-
this.precomputed.naf
|
|
584
|
-
?
|
|
580
|
+
this.precomputed.naf == null
|
|
581
|
+
? undefined
|
|
582
|
+
: {
|
|
585
583
|
wnd: this.precomputed.naf.wnd,
|
|
586
584
|
points: this.precomputed.naf.points.slice(1)
|
|
587
585
|
}
|
|
588
|
-
: undefined
|
|
589
586
|
}
|
|
590
587
|
: undefined
|
|
591
588
|
]
|
|
@@ -827,8 +824,8 @@ export default class Point extends BasePoint {
|
|
|
827
824
|
let R1: JacobianPointBI = { X: Px, Y: Py, Z: 1n }
|
|
828
825
|
|
|
829
826
|
const bits = kBig.toString(2)
|
|
830
|
-
for (
|
|
831
|
-
const bit =
|
|
827
|
+
for (const bitChar of bits) {
|
|
828
|
+
const bit = bitChar === '1' ? 1n : 0n
|
|
832
829
|
ctSwap(bit, R0, R1)
|
|
833
830
|
R1 = jpAdd(R0, R1)
|
|
834
831
|
R0 = jpDouble(R0)
|
|
@@ -927,18 +924,18 @@ export default class Point extends BasePoint {
|
|
|
927
924
|
const pre = this.precomputed
|
|
928
925
|
const negate = (p: Point): Point => p.neg()
|
|
929
926
|
res.precomputed = {
|
|
930
|
-
naf: pre.naf
|
|
931
|
-
?
|
|
927
|
+
naf: pre.naf == null
|
|
928
|
+
? undefined
|
|
929
|
+
: {
|
|
932
930
|
wnd: pre.naf.wnd,
|
|
933
931
|
points: pre.naf.points.map(negate) as BasePoint[]
|
|
934
|
-
}
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
932
|
+
},
|
|
933
|
+
doubles: pre.doubles == null
|
|
934
|
+
? undefined
|
|
935
|
+
: {
|
|
938
936
|
step: pre.doubles.step,
|
|
939
937
|
points: pre.doubles.points.map((p) => (p as Point).neg())
|
|
940
|
-
}
|
|
941
|
-
: undefined,
|
|
938
|
+
},
|
|
942
939
|
beta: undefined
|
|
943
940
|
}
|
|
944
941
|
}
|
|
@@ -1019,19 +1016,19 @@ export default class Point extends BasePoint {
|
|
|
1019
1016
|
beta.precomputed = {
|
|
1020
1017
|
beta: null,
|
|
1021
1018
|
naf:
|
|
1022
|
-
pre.naf
|
|
1023
|
-
?
|
|
1019
|
+
pre.naf == null
|
|
1020
|
+
? undefined
|
|
1021
|
+
: {
|
|
1024
1022
|
wnd: pre.naf.wnd,
|
|
1025
1023
|
points: pre.naf.points.map(endoMul)
|
|
1026
|
-
}
|
|
1027
|
-
: undefined,
|
|
1024
|
+
},
|
|
1028
1025
|
doubles:
|
|
1029
|
-
pre.doubles
|
|
1030
|
-
?
|
|
1026
|
+
pre.doubles == null
|
|
1027
|
+
? undefined
|
|
1028
|
+
: {
|
|
1031
1029
|
step: pre.doubles.step,
|
|
1032
1030
|
points: pre.doubles.points.map(endoMul)
|
|
1033
1031
|
}
|
|
1034
|
-
: undefined
|
|
1035
1032
|
}
|
|
1036
1033
|
}
|
|
1037
1034
|
return beta
|
|
@@ -1142,8 +1139,8 @@ export default class Point extends BasePoint {
|
|
|
1142
1139
|
naf[a] = new Array(max)
|
|
1143
1140
|
naf[b] = new Array(max)
|
|
1144
1141
|
for (let j = 0; j < max; j++) {
|
|
1145
|
-
const ja = jsf[0][j]
|
|
1146
|
-
const jb = jsf[1][j]
|
|
1142
|
+
const ja = Math.trunc(jsf[0][j])
|
|
1143
|
+
const jb = Math.trunc(jsf[1][j])
|
|
1147
1144
|
|
|
1148
1145
|
naf[a][j] = index[(ja + 1) * 3 + (jb + 1)]
|
|
1149
1146
|
naf[b][j] = 0
|
|
@@ -1187,10 +1184,10 @@ export default class Point extends BasePoint {
|
|
|
1187
1184
|
|
|
1188
1185
|
if (z.cmpn(0) === 0) { // Check if z is 0
|
|
1189
1186
|
continue
|
|
1190
|
-
} else if (
|
|
1191
|
-
p = wnd[j][z.sub(one).div(two).toNumber()]
|
|
1192
|
-
} else { // If z is negative
|
|
1187
|
+
} else if (z.isNeg()) { // If z is negative
|
|
1193
1188
|
p = wnd[j][z.neg().sub(one).div(two).toNumber()].neg()
|
|
1189
|
+
} else { // If z is positive
|
|
1190
|
+
p = wnd[j][z.sub(one).div(two).toNumber()]
|
|
1194
1191
|
}
|
|
1195
1192
|
|
|
1196
1193
|
if (p.type === 'affine') {
|
|
@@ -399,13 +399,13 @@ export default class PrivateKey extends BigNumber {
|
|
|
399
399
|
let sharedSecret: Point
|
|
400
400
|
if (typeof retrieveCachedSharedSecret === 'function') {
|
|
401
401
|
const retrieved = retrieveCachedSharedSecret(this, publicKey)
|
|
402
|
-
if (retrieved
|
|
403
|
-
sharedSecret = retrieved
|
|
404
|
-
} else {
|
|
402
|
+
if (retrieved === undefined) {
|
|
405
403
|
sharedSecret = this.deriveSharedSecret(publicKey)
|
|
406
404
|
if (typeof cacheSharedSecret === 'function') {
|
|
407
405
|
cacheSharedSecret(this, publicKey, sharedSecret)
|
|
408
406
|
}
|
|
407
|
+
} else {
|
|
408
|
+
sharedSecret = retrieved
|
|
409
409
|
}
|
|
410
410
|
} else {
|
|
411
411
|
sharedSecret = this.deriveSharedSecret(publicKey)
|
|
@@ -215,13 +215,13 @@ export default class PublicKey extends Point {
|
|
|
215
215
|
let sharedSecret: Point
|
|
216
216
|
if (typeof retrieveCachedSharedSecret === 'function') {
|
|
217
217
|
const retrieved = retrieveCachedSharedSecret(privateKey, this)
|
|
218
|
-
if (
|
|
219
|
-
sharedSecret = retrieved
|
|
220
|
-
} else {
|
|
218
|
+
if (retrieved === undefined) {
|
|
221
219
|
sharedSecret = this.deriveSharedSecret(privateKey)
|
|
222
220
|
if (typeof cacheSharedSecret === 'function') {
|
|
223
221
|
cacheSharedSecret(privateKey, this, sharedSecret)
|
|
224
222
|
}
|
|
223
|
+
} else {
|
|
224
|
+
sharedSecret = retrieved
|
|
225
225
|
}
|
|
226
226
|
} else {
|
|
227
227
|
sharedSecret = this.deriveSharedSecret(privateKey)
|
package/src/primitives/Random.ts
CHANGED
|
@@ -31,7 +31,6 @@ class Rand {
|
|
|
31
31
|
// Try globalThis.crypto (works in Node.js 18+, modern browsers, and Deno)
|
|
32
32
|
if (typeof globalThis !== 'undefined' && typeof (globalThis as any).crypto?.getRandomValues === 'function') {
|
|
33
33
|
this._rand = (n) => {
|
|
34
|
-
/* eslint-disable-next-line */
|
|
35
34
|
return this.getRandomValues(globalThis as any, n)
|
|
36
35
|
}
|
|
37
36
|
return
|
|
@@ -41,32 +40,30 @@ class Rand {
|
|
|
41
40
|
if (typeof process !== 'undefined' && process.release?.name === 'node') {
|
|
42
41
|
try {
|
|
43
42
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
44
|
-
const crypto = require('crypto')
|
|
43
|
+
const crypto = require('node:crypto')
|
|
45
44
|
if (typeof crypto.randomBytes === 'function') {
|
|
46
45
|
this._rand = (n) => {
|
|
47
46
|
return Array.from(crypto.randomBytes(n))
|
|
48
47
|
}
|
|
49
48
|
return
|
|
50
49
|
}
|
|
51
|
-
} catch (
|
|
52
|
-
// crypto
|
|
50
|
+
} catch (_cryptoModuleUnavailable) {
|
|
51
|
+
// node:crypto not available in this runtime; continue to other crypto API checks
|
|
53
52
|
}
|
|
54
53
|
}
|
|
55
54
|
|
|
56
55
|
// Try self.crypto (Web Workers and Service Workers)
|
|
57
|
-
if (typeof self !== 'undefined' && typeof self.crypto?.getRandomValues === 'function') {
|
|
56
|
+
if (typeof globalThis.self !== 'undefined' && typeof globalThis.self.crypto?.getRandomValues === 'function') {
|
|
58
57
|
this._rand = (n) => {
|
|
59
|
-
|
|
60
|
-
return this.getRandomValues(self as any, n)
|
|
58
|
+
return this.getRandomValues(globalThis.self, n)
|
|
61
59
|
}
|
|
62
60
|
return
|
|
63
61
|
}
|
|
64
62
|
|
|
65
63
|
// Try window.crypto (browsers)
|
|
66
|
-
if (typeof window !== 'undefined' && typeof (window as any).crypto?.getRandomValues === 'function') {
|
|
64
|
+
if (typeof globalThis.window !== 'undefined' && typeof (globalThis.window as any).crypto?.getRandomValues === 'function') {
|
|
67
65
|
this._rand = (n) => {
|
|
68
|
-
|
|
69
|
-
return this.getRandomValues(window as any, n)
|
|
66
|
+
return this.getRandomValues(globalThis.window, n)
|
|
70
67
|
}
|
|
71
68
|
return
|
|
72
69
|
}
|
|
@@ -93,9 +90,9 @@ let ayn: Rand | null = null
|
|
|
93
90
|
* import Random from '@bsv/sdk/primitives/Random'
|
|
94
91
|
* const bytes = Random(32) // Produces 32 random bytes
|
|
95
92
|
*/
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
ayn = new Rand()
|
|
99
|
-
}
|
|
93
|
+
const Random = (len: number): number[] => {
|
|
94
|
+
ayn ??= new Rand()
|
|
100
95
|
return ayn.generate(len)
|
|
101
96
|
}
|
|
97
|
+
|
|
98
|
+
export default Random
|
|
@@ -25,7 +25,7 @@ export class ReaderUint8Array {
|
|
|
25
25
|
} else if (Array.isArray(bin)) {
|
|
26
26
|
this.bin = new Uint8Array(bin)
|
|
27
27
|
} else {
|
|
28
|
-
throw new
|
|
28
|
+
throw new TypeError('ReaderUint8Array constructor: bin must be Uint8Array or number[]')
|
|
29
29
|
}
|
|
30
30
|
this.pos = pos
|
|
31
31
|
this.length = this.bin.length
|
|
@@ -61,7 +61,7 @@ export class ReaderUint8Array {
|
|
|
61
61
|
const val = this.bin[this.pos]
|
|
62
62
|
this.pos += 1
|
|
63
63
|
// If the sign bit is set, convert to negative value
|
|
64
|
-
return (val & 0x80)
|
|
64
|
+
return (val & 0x80) === 0 ? val : val - 0x100
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
public readUInt16BE (): number {
|
|
@@ -73,10 +73,10 @@ export class ReaderUint8Array {
|
|
|
73
73
|
public readInt16BE (): number {
|
|
74
74
|
const val = this.readUInt16BE()
|
|
75
75
|
// If the sign bit is set, convert to negative value
|
|
76
|
-
return (val & 0x8000)
|
|
76
|
+
return (val & 0x8000) === 0 ? val : val - 0x10000
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
public readUInt16LE
|
|
79
|
+
public readUInt16LE(): number {
|
|
80
80
|
const val = this.bin[this.pos] | (this.bin[this.pos + 1] << 8)
|
|
81
81
|
this.pos += 2
|
|
82
82
|
return val
|
|
@@ -85,7 +85,7 @@ export class ReaderUint8Array {
|
|
|
85
85
|
public readInt16LE (): number {
|
|
86
86
|
const val = this.readUInt16LE()
|
|
87
87
|
// If the sign bit is set, convert to negative value
|
|
88
|
-
const x = (val & 0x8000)
|
|
88
|
+
const x = (val & 0x8000) === 0 ? val : val - 0x10000
|
|
89
89
|
return x
|
|
90
90
|
}
|
|
91
91
|
|
|
@@ -102,7 +102,7 @@ export class ReaderUint8Array {
|
|
|
102
102
|
public readInt32BE (): number {
|
|
103
103
|
const val = this.readUInt32BE()
|
|
104
104
|
// If the sign bit is set, convert to negative value
|
|
105
|
-
return (val & 0x80000000)
|
|
105
|
+
return (val & 0x80000000) === 0 ? val : val - 0x100000000
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
public readUInt32LE (): number {
|
|
@@ -119,7 +119,7 @@ export class ReaderUint8Array {
|
|
|
119
119
|
public readInt32LE (): number {
|
|
120
120
|
const val = this.readUInt32LE()
|
|
121
121
|
// Explicitly check if the sign bit is set and then convert to a negative value
|
|
122
|
-
return (val & 0x80000000)
|
|
122
|
+
return (val & 0x80000000) === 0 ? val : val - 0x100000000
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
public readUInt64BEBn (): BigNumber {
|
|
@@ -2,7 +2,8 @@ import BigNumber from './BigNumber.js'
|
|
|
2
2
|
import Curve from './Curve.js'
|
|
3
3
|
import Point from './Point.js'
|
|
4
4
|
import { sha256 } from './Hash.js'
|
|
5
|
-
import
|
|
5
|
+
import PrivateKey from './PrivateKey.js'
|
|
6
|
+
import PublicKey from './PublicKey.js'
|
|
6
7
|
|
|
7
8
|
/**
|
|
8
9
|
* Class representing the Schnorr Zero-Knowledge Proof (ZKP) protocol.
|
|
@@ -82,17 +82,17 @@ export default class Signature {
|
|
|
82
82
|
}
|
|
83
83
|
let s = data.slice(p.place, slen + p.place)
|
|
84
84
|
if (r[0] === 0) {
|
|
85
|
-
if ((r[1] & 0x80)
|
|
86
|
-
r = r.slice(1)
|
|
87
|
-
} else {
|
|
85
|
+
if ((r[1] & 0x80) === 0) {
|
|
88
86
|
throw new Error('Invalid R-value in signature DER')
|
|
87
|
+
} else {
|
|
88
|
+
r = r.slice(1)
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
if (s[0] === 0) {
|
|
92
|
-
if ((s[1] & 0x80)
|
|
93
|
-
s = s.slice(1)
|
|
94
|
-
} else {
|
|
92
|
+
if ((s[1] & 0x80) === 0) {
|
|
95
93
|
throw new Error('Invalid S-value in signature DER')
|
|
94
|
+
} else {
|
|
95
|
+
s = s.slice(1)
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
|
|
@@ -285,7 +285,7 @@ export default class Signature {
|
|
|
285
285
|
): number[] | string {
|
|
286
286
|
if (recovery < 0 || recovery > 3) throw new Error('Invalid recovery param')
|
|
287
287
|
if (typeof compressed !== 'boolean') {
|
|
288
|
-
throw new
|
|
288
|
+
throw new TypeError('Invalid compressed param')
|
|
289
289
|
}
|
|
290
290
|
let compactByte = 27 + recovery
|
|
291
291
|
if (compressed) {
|
|
@@ -332,7 +332,7 @@ export default class Signature {
|
|
|
332
332
|
const G = curve.g
|
|
333
333
|
|
|
334
334
|
// 1.1 LEt x = r + jn
|
|
335
|
-
const x = isSecondKey
|
|
335
|
+
const x = isSecondKey === 0 ? r : r.add(n)
|
|
336
336
|
const R = Point.fromX(x, isYOdd)
|
|
337
337
|
|
|
338
338
|
// 1.4 Check that nR is at infinity
|
|
@@ -153,7 +153,7 @@ export default class TransactionSignature extends Signature {
|
|
|
153
153
|
const writer = new Writer()
|
|
154
154
|
|
|
155
155
|
for (const input of inputs) {
|
|
156
|
-
if (
|
|
156
|
+
if (input.sourceTXID === undefined) {
|
|
157
157
|
if (input.sourceTransaction == null) {
|
|
158
158
|
throw new Error('Missing sourceTransaction for input')
|
|
159
159
|
}
|
|
@@ -185,7 +185,7 @@ export default class TransactionSignature extends Signature {
|
|
|
185
185
|
function getOutputsHash (outputIndex?: number): number[] {
|
|
186
186
|
const writer = new Writer()
|
|
187
187
|
|
|
188
|
-
if (
|
|
188
|
+
if (outputIndex === undefined) {
|
|
189
189
|
for (const output of params.outputs) {
|
|
190
190
|
const satoshis = output.satoshis ?? 0 // Default to 0 if undefined
|
|
191
191
|
writer.writeUInt64LE(satoshis)
|
|
@@ -219,11 +219,11 @@ export default class TransactionSignature extends Signature {
|
|
|
219
219
|
let hashOutputs = new Array(32).fill(0)
|
|
220
220
|
|
|
221
221
|
if ((params.scope & TransactionSignature.SIGHASH_ANYONECANPAY) === 0) {
|
|
222
|
-
if (cache?.hashPrevouts
|
|
223
|
-
hashPrevouts = cache.hashPrevouts
|
|
224
|
-
} else {
|
|
222
|
+
if (cache?.hashPrevouts == null) {
|
|
225
223
|
hashPrevouts = getPrevoutHash()
|
|
226
224
|
if (cache != null) cache.hashPrevouts = hashPrevouts
|
|
225
|
+
} else {
|
|
226
|
+
hashPrevouts = cache.hashPrevouts
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
229
|
|
|
@@ -232,11 +232,11 @@ export default class TransactionSignature extends Signature {
|
|
|
232
232
|
(params.scope & 31) !== TransactionSignature.SIGHASH_SINGLE &&
|
|
233
233
|
(params.scope & 31) !== TransactionSignature.SIGHASH_NONE
|
|
234
234
|
) {
|
|
235
|
-
if (cache?.hashSequence
|
|
236
|
-
hashSequence = cache.hashSequence
|
|
237
|
-
} else {
|
|
235
|
+
if (cache?.hashSequence == null) {
|
|
238
236
|
hashSequence = getSequenceHash()
|
|
239
237
|
if (cache != null) cache.hashSequence = hashSequence
|
|
238
|
+
} else {
|
|
239
|
+
hashSequence = cache.hashSequence
|
|
240
240
|
}
|
|
241
241
|
}
|
|
242
242
|
|
|
@@ -244,11 +244,11 @@ export default class TransactionSignature extends Signature {
|
|
|
244
244
|
(params.scope & 31) !== TransactionSignature.SIGHASH_SINGLE &&
|
|
245
245
|
(params.scope & 31) !== TransactionSignature.SIGHASH_NONE
|
|
246
246
|
) {
|
|
247
|
-
if (cache?.hashOutputsAll
|
|
248
|
-
hashOutputs = cache.hashOutputsAll
|
|
249
|
-
} else {
|
|
247
|
+
if (cache?.hashOutputsAll == null) {
|
|
250
248
|
hashOutputs = getOutputsHash()
|
|
251
249
|
if (cache != null) cache.hashOutputsAll = hashOutputs
|
|
250
|
+
} else {
|
|
251
|
+
hashOutputs = cache.hashOutputsAll
|
|
252
252
|
}
|
|
253
253
|
} else if (
|
|
254
254
|
(params.scope & 31) === TransactionSignature.SIGHASH_SINGLE &&
|
|
@@ -256,14 +256,14 @@ export default class TransactionSignature extends Signature {
|
|
|
256
256
|
) {
|
|
257
257
|
const key = params.inputIndex
|
|
258
258
|
const cachedSingle = cache?.hashOutputsSingle?.get(key)
|
|
259
|
-
if (cachedSingle
|
|
260
|
-
hashOutputs = cachedSingle
|
|
261
|
-
} else {
|
|
259
|
+
if (cachedSingle == null) {
|
|
262
260
|
hashOutputs = getOutputsHash(key)
|
|
263
261
|
if (cache != null) {
|
|
264
|
-
|
|
262
|
+
cache.hashOutputsSingle ??= new Map()
|
|
265
263
|
cache.hashOutputsSingle.set(key, hashOutputs)
|
|
266
264
|
}
|
|
265
|
+
} else {
|
|
266
|
+
hashOutputs = cachedSingle
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
269
|
|
|
@@ -349,7 +349,7 @@ export default class TransactionSignature extends Signature {
|
|
|
349
349
|
const scope = 1
|
|
350
350
|
return new TransactionSignature(r, s, scope)
|
|
351
351
|
}
|
|
352
|
-
const scope = buf
|
|
352
|
+
const scope = buf.at(-1)
|
|
353
353
|
const derbuf = buf.slice(0, buf.length - 1)
|
|
354
354
|
const tempSig = Signature.fromDER(derbuf)
|
|
355
355
|
return new TransactionSignature(tempSig.r, tempSig.s, scope)
|