@bsv/sdk 2.0.16 → 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 +14 -13
- 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/docs/reference/kvstore.md +1 -2
- package/docs/reference/primitives.md +0 -1
- package/docs/reference/script.md +0 -7
- package/docs/reference/transaction.md +2 -2
- package/package.json +29 -28
- 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/docs/swagger/dist/LICENSE +0 -21
- package/docs/swagger/dist/favicon-16x16.png +0 -0
- package/docs/swagger/dist/favicon-32x32.png +0 -0
- package/docs/swagger/dist/index.css +0 -16
- package/docs/swagger/dist/oauth2-redirect.html +0 -79
- package/docs/swagger/dist/swagger-initializer.js +0 -20
- package/docs/swagger/dist/swagger-ui-bundle.js +0 -2
- package/docs/swagger/dist/swagger-ui-bundle.js.map +0 -1
- package/docs/swagger/dist/swagger-ui-es-bundle-core.js +0 -3
- package/docs/swagger/dist/swagger-ui-es-bundle-core.js.map +0 -1
- package/docs/swagger/dist/swagger-ui-es-bundle.js +0 -2
- package/docs/swagger/dist/swagger-ui-es-bundle.js.map +0 -1
- package/docs/swagger/dist/swagger-ui-standalone-preset.js +0 -2
- package/docs/swagger/dist/swagger-ui-standalone-preset.js.map +0 -1
- package/docs/swagger/dist/swagger-ui.css +0 -3
- package/docs/swagger/dist/swagger-ui.css.map +0 -1
- package/docs/swagger/dist/swagger-ui.js +0 -2
- package/docs/swagger/dist/swagger-ui.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const BufferCtor = typeof globalThis
|
|
3
|
+
const BufferCtor = typeof globalThis === 'undefined' ? undefined : globalThis.Buffer;
|
|
4
4
|
const CAN_USE_BUFFER = BufferCtor != null && typeof BufferCtor.from === 'function';
|
|
5
5
|
const HEX_CHAR_TO_VALUE = new Int8Array(256).fill(-1);
|
|
6
6
|
for (let i = 0; i < 10; i++) {
|
|
@@ -76,7 +76,7 @@ class BigNumber {
|
|
|
76
76
|
let newMagnitude = 0n;
|
|
77
77
|
const len = newWords.length > 0 ? newWords.length : 1;
|
|
78
78
|
for (let i = len - 1; i >= 0; i--) {
|
|
79
|
-
const wordVal = newWords[i]
|
|
79
|
+
const wordVal = newWords[i] ?? 0;
|
|
80
80
|
newMagnitude = (newMagnitude << BigNumber.WORD_SIZE_BIGINT) | BigInt(wordVal & Number(BigNumber.WORD_MASK));
|
|
81
81
|
}
|
|
82
82
|
this._magnitude = newMagnitude;
|
|
@@ -137,8 +137,7 @@ class BigNumber {
|
|
|
137
137
|
this._sign = 0;
|
|
138
138
|
this._nominalWordLength = 1;
|
|
139
139
|
this.red = null;
|
|
140
|
-
|
|
141
|
-
number = 0;
|
|
140
|
+
number ?? (number = 0);
|
|
142
141
|
if (number === null) {
|
|
143
142
|
this._initializeState(0n, 0);
|
|
144
143
|
return;
|
|
@@ -163,83 +162,93 @@ class BigNumber {
|
|
|
163
162
|
return;
|
|
164
163
|
}
|
|
165
164
|
if (typeof number === 'string') {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
165
|
+
this._initFromString(number, effectiveBase, effectiveEndian);
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (number !== 0) {
|
|
169
|
+
this.assert(false, 'Unsupported input type for BigNumber constructor');
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
this._initializeState(0n, 0);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
_initFromString(number, effectiveBase, effectiveEndian) {
|
|
176
|
+
if (effectiveBase === 'hex')
|
|
177
|
+
effectiveBase = 16;
|
|
178
|
+
// eslint-disable-next-line no-bitwise -- ToInt32 (ECMA-262); required for integer base validation.
|
|
179
|
+
this.assert(typeof effectiveBase === 'number' && effectiveBase === (effectiveBase | 0) && effectiveBase >= 2 && effectiveBase <= 36, 'Base must be an integer between 2 and 36');
|
|
180
|
+
const originalNumberStr = number.toString().replace(/\s+/g, '');
|
|
181
|
+
let start = 0;
|
|
182
|
+
let sign = 0;
|
|
183
|
+
if (originalNumberStr.startsWith('-')) {
|
|
184
|
+
start++;
|
|
185
|
+
sign = 1;
|
|
186
|
+
}
|
|
187
|
+
else if (originalNumberStr.startsWith('+')) {
|
|
188
|
+
start++;
|
|
189
|
+
}
|
|
190
|
+
const numStr = originalNumberStr.substring(start);
|
|
191
|
+
if (numStr.length === 0) {
|
|
192
|
+
this._initializeState(0n, (sign === 1 && originalNumberStr.startsWith('-')) ? 1 : 0);
|
|
193
|
+
this.normSign();
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
if (effectiveBase === 16) {
|
|
197
|
+
this._initFromHexString(numStr, sign, effectiveEndian);
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
this._initFromNonHexString(numStr, effectiveBase, sign, effectiveEndian);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
_initFromHexString(numStr, sign, effectiveEndian) {
|
|
204
|
+
if (effectiveEndian === 'le') {
|
|
205
|
+
const bytes = [];
|
|
206
|
+
let hexStr = numStr;
|
|
207
|
+
if (hexStr.length % 2 !== 0)
|
|
208
|
+
hexStr = '0' + hexStr;
|
|
209
|
+
for (let i = 0; i < hexStr.length; i += 2) {
|
|
210
|
+
const byteHex = hexStr.substring(i, i + 2);
|
|
211
|
+
const byteVal = Number.parseInt(byteHex, 16);
|
|
212
|
+
if (Number.isNaN(byteVal))
|
|
213
|
+
throw new Error('Invalid character in ' + hexStr);
|
|
214
|
+
bytes.push(byteVal);
|
|
175
215
|
}
|
|
176
|
-
|
|
177
|
-
|
|
216
|
+
this.initArray(bytes, 'le');
|
|
217
|
+
this._sign = sign;
|
|
218
|
+
this.normSign();
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
let tempMagnitude;
|
|
222
|
+
try {
|
|
223
|
+
tempMagnitude = BigInt('0x' + numStr);
|
|
178
224
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
this._initializeState(0n, (sign === 1 && originalNumberStr.startsWith('-')) ? 1 : 0);
|
|
182
|
-
this.normSign();
|
|
183
|
-
return;
|
|
225
|
+
catch (_bigIntParseError) {
|
|
226
|
+
throw new Error('Invalid character in ' + numStr);
|
|
184
227
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
this.initArray(bytes, 'le');
|
|
200
|
-
this._sign = sign;
|
|
201
|
-
this.normSign();
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
try {
|
|
206
|
-
tempMagnitude = BigInt('0x' + numStr);
|
|
207
|
-
}
|
|
208
|
-
catch (e) {
|
|
209
|
-
throw new Error('Invalid character in ' + numStr);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
this._initializeState(tempMagnitude, sign);
|
|
228
|
+
this._initializeState(tempMagnitude, sign);
|
|
229
|
+
this.normSign();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
_initFromNonHexString(numStr, base, sign, effectiveEndian) {
|
|
233
|
+
try {
|
|
234
|
+
this._parseBaseString(numStr, base);
|
|
235
|
+
this._sign = sign;
|
|
236
|
+
this.normSign();
|
|
237
|
+
if (effectiveEndian === 'le') {
|
|
238
|
+
const currentSign = this._sign;
|
|
239
|
+
this.initArray(this.toArray('be'), 'le');
|
|
240
|
+
this._sign = currentSign;
|
|
213
241
|
this.normSign();
|
|
214
242
|
}
|
|
215
|
-
else {
|
|
216
|
-
try {
|
|
217
|
-
this._parseBaseString(numStr, effectiveBase);
|
|
218
|
-
this._sign = sign;
|
|
219
|
-
this.normSign();
|
|
220
|
-
if (effectiveEndian === 'le') {
|
|
221
|
-
const currentSign = this._sign;
|
|
222
|
-
this.initArray(this.toArray('be'), 'le');
|
|
223
|
-
this._sign = currentSign;
|
|
224
|
-
this.normSign();
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
catch (err) {
|
|
228
|
-
const error = err;
|
|
229
|
-
if (error.message.includes('Invalid character in string') ||
|
|
230
|
-
error.message.includes('Invalid digit for base') ||
|
|
231
|
-
error.message.startsWith('Invalid character:')) {
|
|
232
|
-
throw new Error('Invalid character');
|
|
233
|
-
}
|
|
234
|
-
throw error;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
else if (number !== 0) {
|
|
239
|
-
this.assert(false, 'Unsupported input type for BigNumber constructor');
|
|
240
243
|
}
|
|
241
|
-
|
|
242
|
-
|
|
244
|
+
catch (err) {
|
|
245
|
+
const error = err;
|
|
246
|
+
if (error.message.includes('Invalid character in string') ||
|
|
247
|
+
error.message.includes('Invalid digit for base') ||
|
|
248
|
+
error.message.startsWith('Invalid character:')) {
|
|
249
|
+
throw new Error('Invalid character');
|
|
250
|
+
}
|
|
251
|
+
throw error;
|
|
243
252
|
}
|
|
244
253
|
}
|
|
245
254
|
_bigIntToStringInBase(num, base) {
|
|
@@ -294,7 +303,7 @@ class BigNumber {
|
|
|
294
303
|
_parseBaseWord(str, base) {
|
|
295
304
|
let r = 0;
|
|
296
305
|
for (let i = 0; i < str.length; i++) {
|
|
297
|
-
const charCode = str.
|
|
306
|
+
const charCode = str.codePointAt(i);
|
|
298
307
|
let digitVal;
|
|
299
308
|
if (charCode >= 48 && charCode <= 57)
|
|
300
309
|
digitVal = charCode - 48;
|
|
@@ -347,8 +356,8 @@ class BigNumber {
|
|
|
347
356
|
}
|
|
348
357
|
let magnitude = 0n;
|
|
349
358
|
if (endian === 'be') {
|
|
350
|
-
for (
|
|
351
|
-
magnitude = (magnitude << 8n) | BigInt(
|
|
359
|
+
for (const byte of bytes)
|
|
360
|
+
magnitude = (magnitude << 8n) | BigInt(byte & 0xff);
|
|
352
361
|
}
|
|
353
362
|
else {
|
|
354
363
|
for (let i = bytes.length - 1; i >= 0; i--)
|
|
@@ -366,9 +375,10 @@ class BigNumber {
|
|
|
366
375
|
return this;
|
|
367
376
|
}
|
|
368
377
|
strip() { this._finishInitialization(); return this.normSign(); }
|
|
369
|
-
normSign() { if (this._magnitude === 0n)
|
|
370
|
-
this._sign = 0;
|
|
371
|
-
|
|
378
|
+
normSign() { if (this._magnitude === 0n) {
|
|
379
|
+
this._sign = 0;
|
|
380
|
+
} return this; }
|
|
381
|
+
inspect() { return (this.red === null ? '<BN: ' : '<BN-R: ') + this.toString(16) + '>'; }
|
|
372
382
|
_getMinimalHex() {
|
|
373
383
|
if (this._magnitude === 0n)
|
|
374
384
|
return '0';
|
|
@@ -428,21 +438,7 @@ class BigNumber {
|
|
|
428
438
|
const remainder = tempMag % groupBaseBigInt;
|
|
429
439
|
tempMag /= groupBaseBigInt;
|
|
430
440
|
const chunkStr = this._bigIntToStringInBase(remainder, base);
|
|
431
|
-
|
|
432
|
-
const zerosToPrepend = groupSize - chunkStr.length;
|
|
433
|
-
if (zerosToPrepend > 0 && zerosToPrepend < BigNumber.zeros.length) {
|
|
434
|
-
out = BigNumber.zeros[zerosToPrepend] + chunkStr + out;
|
|
435
|
-
}
|
|
436
|
-
else if (zerosToPrepend > 0) {
|
|
437
|
-
out = '0'.repeat(zerosToPrepend) + chunkStr + out;
|
|
438
|
-
}
|
|
439
|
-
else {
|
|
440
|
-
out = chunkStr + out;
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
else {
|
|
444
|
-
out = chunkStr + out;
|
|
445
|
-
}
|
|
441
|
+
out = (tempMag > 0n ? this._zeroPaddedChunk(chunkStr, groupSize) : chunkStr) + out;
|
|
446
442
|
}
|
|
447
443
|
if (padding > 0) {
|
|
448
444
|
while (out.length < padding)
|
|
@@ -450,6 +446,15 @@ class BigNumber {
|
|
|
450
446
|
}
|
|
451
447
|
return (this._sign === 1 ? '-' : '') + out;
|
|
452
448
|
}
|
|
449
|
+
/** Returns a chunk string zero-padded to groupSize (used by toBaseString for interior chunks). */
|
|
450
|
+
_zeroPaddedChunk(chunkStr, groupSize) {
|
|
451
|
+
const zerosToPrepend = groupSize - chunkStr.length;
|
|
452
|
+
if (zerosToPrepend <= 0)
|
|
453
|
+
return chunkStr;
|
|
454
|
+
if (zerosToPrepend < BigNumber.zeros.length)
|
|
455
|
+
return BigNumber.zeros[zerosToPrepend] + chunkStr;
|
|
456
|
+
return '0'.repeat(zerosToPrepend) + chunkStr;
|
|
457
|
+
}
|
|
453
458
|
/**
|
|
454
459
|
* Converts the BigNumber instance to a JavaScript number.
|
|
455
460
|
* Please note that JavaScript numbers are only precise up to 53 bits.
|
|
@@ -529,8 +534,9 @@ class BigNumber {
|
|
|
529
534
|
* @method bitLength
|
|
530
535
|
* @returns The bit length of the BigNumber.
|
|
531
536
|
*/
|
|
532
|
-
bitLength() { if (this._magnitude === 0n)
|
|
533
|
-
return 0;
|
|
537
|
+
bitLength() { if (this._magnitude === 0n) {
|
|
538
|
+
return 0;
|
|
539
|
+
} return this._magnitude.toString(2).length; }
|
|
534
540
|
/**
|
|
535
541
|
* Converts a BigNumber to an array of bits.
|
|
536
542
|
*
|
|
@@ -545,7 +551,7 @@ class BigNumber {
|
|
|
545
551
|
const w = new Array(len);
|
|
546
552
|
const mag = num._magnitude;
|
|
547
553
|
for (let bit = 0; bit < len; bit++) {
|
|
548
|
-
w[bit] = ((mag >> BigInt(bit)) & 1n)
|
|
554
|
+
w[bit] = ((mag >> BigInt(bit)) & 1n) === 0n ? 0 : 1;
|
|
549
555
|
}
|
|
550
556
|
return w;
|
|
551
557
|
}
|
|
@@ -581,8 +587,9 @@ class BigNumber {
|
|
|
581
587
|
* @method byteLength
|
|
582
588
|
* @returns The byte length of the BigNumber.
|
|
583
589
|
*/
|
|
584
|
-
byteLength() { if (this._magnitude === 0n)
|
|
585
|
-
return 0;
|
|
590
|
+
byteLength() { if (this._magnitude === 0n) {
|
|
591
|
+
return 0;
|
|
592
|
+
} return Math.ceil(this.bitLength() / 8); }
|
|
586
593
|
_getSignedValue() { return this._sign === 1 ? -this._magnitude : this._magnitude; }
|
|
587
594
|
_setValueFromSigned(sVal) {
|
|
588
595
|
if (sVal < 0n) {
|
|
@@ -622,8 +629,9 @@ class BigNumber {
|
|
|
622
629
|
}
|
|
623
630
|
isNeg() { return this._sign === 1 && this._magnitude !== 0n; }
|
|
624
631
|
neg() { return this.clone().ineg(); }
|
|
625
|
-
ineg() { if (this._magnitude !== 0n)
|
|
626
|
-
this._sign = this._sign === 1 ? 0 : 1;
|
|
632
|
+
ineg() { if (this._magnitude !== 0n) {
|
|
633
|
+
this._sign = this._sign === 1 ? 0 : 1;
|
|
634
|
+
} return this; }
|
|
627
635
|
_iuop(num, op, isXor = false) {
|
|
628
636
|
const newMag = op(this._magnitude, num._magnitude);
|
|
629
637
|
let targetNominalLength = this._nominalWordLength;
|
|
@@ -642,8 +650,9 @@ class BigNumber {
|
|
|
642
650
|
ior(num) { return this._iop(num, (a, b) => a | b); }
|
|
643
651
|
iand(num) { return this._iop(num, (a, b) => a & b); }
|
|
644
652
|
ixor(num) { return this._iop(num, (a, b) => a ^ b, true); }
|
|
645
|
-
_uop_new(num, opName) { if (this.length >= num.length)
|
|
646
|
-
return this.clone()[opName](num);
|
|
653
|
+
_uop_new(num, opName) { if (this.length >= num.length) {
|
|
654
|
+
return this.clone()[opName](num);
|
|
655
|
+
} return num.clone()[opName](this); }
|
|
647
656
|
or(num) { this.assert(this._sign === 0 && num._sign === 0); return this._uop_new(num, 'iuor'); }
|
|
648
657
|
uor(num) { return this._uop_new(num, 'iuor'); }
|
|
649
658
|
and(num) { this.assert(this._sign === 0 && num._sign === 0); return this._uop_new(num, 'iuand'); }
|
|
@@ -799,26 +808,28 @@ class BigNumber {
|
|
|
799
808
|
this.assert(!num.isZero(), 'Division by zero');
|
|
800
809
|
if (this.isZero()) {
|
|
801
810
|
const z = new BigNumber(0n);
|
|
802
|
-
return { div: mode
|
|
811
|
+
return { div: mode === 'mod' ? null : z, mod: mode === 'div' ? null : z };
|
|
803
812
|
}
|
|
804
813
|
const tV = this._getSignedValue();
|
|
805
814
|
const nV = num._getSignedValue();
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
if (
|
|
820
|
-
|
|
821
|
-
|
|
815
|
+
const dV = mode !== 'mod' ? tV / nV : null;
|
|
816
|
+
const mV = this._computeMod(tV, nV, mode, positive);
|
|
817
|
+
return { div: this._bigNumberFromSigned(dV), mod: this._bigNumberFromSigned(mV) };
|
|
818
|
+
}
|
|
819
|
+
_computeMod(tV, nV, mode, positive) {
|
|
820
|
+
if (mode === 'div')
|
|
821
|
+
return null;
|
|
822
|
+
let mV = tV % nV;
|
|
823
|
+
if (positive === true && mV < 0n)
|
|
824
|
+
mV += nV < 0n ? -nV : nV;
|
|
825
|
+
return mV;
|
|
826
|
+
}
|
|
827
|
+
_bigNumberFromSigned(v) {
|
|
828
|
+
if (v === null)
|
|
829
|
+
return null;
|
|
830
|
+
const r = new BigNumber(0n);
|
|
831
|
+
r._setValueFromSigned(v);
|
|
832
|
+
return r;
|
|
822
833
|
}
|
|
823
834
|
div(num) {
|
|
824
835
|
return this.divmod(num, 'div', false).div;
|
|
@@ -933,15 +944,21 @@ class BigNumber {
|
|
|
933
944
|
andln(num) { this.assert(num >= 0); return Number(this._magnitude & BigInt(num)); }
|
|
934
945
|
bincn(bit) { this.assert(typeof bit === 'number' && bit >= 0); const BVal = 1n << BigInt(bit); this._setValueFromSigned(this._getSignedValue() + BVal); return this; }
|
|
935
946
|
isZero() { return this._magnitude === 0n; }
|
|
936
|
-
cmpn(num) { this.assert(Math.abs(num) <= BigNumber.MAX_IMULN_ARG, 'Number is too big'); const tV = this._getSignedValue(); const nV = BigInt(num); if (tV < nV)
|
|
937
|
-
return -1;
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
return 1;
|
|
947
|
+
cmpn(num) { this.assert(Math.abs(num) <= BigNumber.MAX_IMULN_ARG, 'Number is too big'); const tV = this._getSignedValue(); const nV = BigInt(num); if (tV < nV) {
|
|
948
|
+
return -1;
|
|
949
|
+
} if (tV > nV) {
|
|
950
|
+
return 1;
|
|
951
|
+
} return 0; }
|
|
952
|
+
cmp(num) { const tV = this._getSignedValue(); const nV = num._getSignedValue(); if (tV < nV) {
|
|
953
|
+
return -1;
|
|
954
|
+
} if (tV > nV) {
|
|
955
|
+
return 1;
|
|
956
|
+
} return 0; }
|
|
957
|
+
ucmp(num) { if (this._magnitude < num._magnitude) {
|
|
958
|
+
return -1;
|
|
959
|
+
} if (this._magnitude > num._magnitude) {
|
|
960
|
+
return 1;
|
|
961
|
+
} return 0; }
|
|
945
962
|
gtn(num) { return this.cmpn(num) === 1; }
|
|
946
963
|
gt(num) { return this.cmp(num) === 1; }
|
|
947
964
|
gten(num) { return this.cmpn(num) >= 0; }
|
|
@@ -1062,18 +1079,17 @@ class BigNumber {
|
|
|
1062
1079
|
sign = 1;
|
|
1063
1080
|
beBytes[0] &= 0x7f;
|
|
1064
1081
|
}
|
|
1065
|
-
let
|
|
1082
|
+
let hexStr;
|
|
1066
1083
|
if (CAN_USE_BUFFER) {
|
|
1067
|
-
|
|
1068
|
-
magnitude = hex.length === 0 ? 0n : BigInt('0x' + hex);
|
|
1084
|
+
hexStr = BufferCtor.from(beBytes).toString('hex');
|
|
1069
1085
|
}
|
|
1070
1086
|
else {
|
|
1071
|
-
|
|
1087
|
+
hexStr = '';
|
|
1072
1088
|
for (const byte of beBytes) {
|
|
1073
|
-
|
|
1089
|
+
hexStr += byte < 16 ? '0' + byte.toString(16) : byte.toString(16);
|
|
1074
1090
|
}
|
|
1075
|
-
magnitude = hex.length === 0 ? 0n : BigInt('0x' + hex);
|
|
1076
1091
|
}
|
|
1092
|
+
const magnitude = hexStr.length === 0 ? 0n : BigInt('0x' + hexStr);
|
|
1077
1093
|
const r = new BigNumber(0n);
|
|
1078
1094
|
r._initializeState(magnitude, sign);
|
|
1079
1095
|
return r;
|
|
@@ -1095,25 +1111,25 @@ class BigNumber {
|
|
|
1095
1111
|
const byteLen = hex.length / 2;
|
|
1096
1112
|
const bytes = new Array(byteLen);
|
|
1097
1113
|
for (let i = 0, j = 0; i < hex.length; i += 2) {
|
|
1098
|
-
const high = HEX_CHAR_TO_VALUE[hex.
|
|
1099
|
-
const low = HEX_CHAR_TO_VALUE[hex.
|
|
1114
|
+
const high = HEX_CHAR_TO_VALUE[hex.codePointAt(i)];
|
|
1115
|
+
const low = HEX_CHAR_TO_VALUE[hex.codePointAt(i + 1)];
|
|
1100
1116
|
bytes[j++] = ((high & 0xf) << 4) | (low & 0xf);
|
|
1101
1117
|
}
|
|
1102
1118
|
let result;
|
|
1103
1119
|
if (this._sign === 1) {
|
|
1104
|
-
if ((bytes[0] & 0x80)
|
|
1105
|
-
result = [0x80, ...bytes];
|
|
1106
|
-
}
|
|
1107
|
-
else {
|
|
1120
|
+
if ((bytes[0] & 0x80) === 0) {
|
|
1108
1121
|
result = bytes.slice();
|
|
1109
1122
|
result[0] |= 0x80;
|
|
1110
1123
|
}
|
|
1124
|
+
else {
|
|
1125
|
+
result = [0x80, ...bytes];
|
|
1126
|
+
}
|
|
1111
1127
|
}
|
|
1112
|
-
else if ((bytes[0] & 0x80)
|
|
1113
|
-
result =
|
|
1128
|
+
else if ((bytes[0] & 0x80) === 0) {
|
|
1129
|
+
result = bytes.slice();
|
|
1114
1130
|
}
|
|
1115
1131
|
else {
|
|
1116
|
-
result = bytes
|
|
1132
|
+
result = [0x00, ...bytes];
|
|
1117
1133
|
}
|
|
1118
1134
|
return endian === 'little' ? result.reverse() : result;
|
|
1119
1135
|
}
|
|
@@ -1219,8 +1235,8 @@ class BigNumber {
|
|
|
1219
1235
|
if (num.length === 0)
|
|
1220
1236
|
return new BigNumber(0n);
|
|
1221
1237
|
if (requireMinimal) {
|
|
1222
|
-
if ((num
|
|
1223
|
-
if (num.length <= 1 || (num
|
|
1238
|
+
if ((num.at(-1) & 0x7f) === 0) {
|
|
1239
|
+
if (num.length <= 1 || (num.at(-2) & 0x80) === 0) {
|
|
1224
1240
|
throw new Error('non-minimally encoded script number');
|
|
1225
1241
|
}
|
|
1226
1242
|
}
|