@bsv/sdk 2.1.0 → 2.1.2
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 +212 -234
- package/dist/cjs/src/identity/ContactsManager.js.map +1 -1
- package/dist/cjs/src/identity/IdentityClient.js +199 -63
- 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 +213 -93
- 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 +312 -105
- 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/SymmetricKey.js +123 -1
- package/dist/cjs/src/primitives/SymmetricKey.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 +212 -234
- package/dist/esm/src/identity/ContactsManager.js.map +1 -1
- package/dist/esm/src/identity/IdentityClient.js +199 -63
- 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 +213 -93
- 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 +316 -105
- 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/SymmetricKey.js +123 -1
- package/dist/esm/src/primitives/SymmetricKey.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 +31 -2
- package/dist/types/src/identity/ContactsManager.d.ts.map +1 -1
- package/dist/types/src/identity/IdentityClient.d.ts +75 -10
- 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 +73 -2
- 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 +22 -17
- 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/SymmetricKey.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 +18 -3
- package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
- package/dist/types/src/wallet/WalletClient.d.ts +8 -8
- 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 +9 -9
- 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 +236 -258
- package/src/identity/IdentityClient.ts +244 -71
- package/src/identity/__tests/IdentityClient.additional.test.ts +150 -1
- package/src/identity/__tests/IdentityClient.test.ts +27 -3
- 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 +264 -90
- 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 +381 -146
- 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/SymmetricKey.ts +145 -1
- package/src/primitives/TransactionSignature.ts +16 -16
- package/src/primitives/__tests/Hash.additional.test.ts +65 -0
- package/src/primitives/__tests/Hash.test.ts +6 -1
- 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 +18 -5
- package/src/wallet/WalletClient.ts +9 -9
- 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 +11 -11
- package/src/wallet/validationHelpers.ts +9 -9
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const BufferCtor = typeof globalThis
|
|
1
|
+
const BufferCtor = typeof globalThis === 'undefined' ? undefined : globalThis.Buffer;
|
|
2
2
|
const CAN_USE_BUFFER = BufferCtor != null && typeof BufferCtor.from === 'function';
|
|
3
3
|
const HEX_CHAR_TO_VALUE = new Int8Array(256).fill(-1);
|
|
4
4
|
for (let i = 0; i < 10; i++) {
|
|
@@ -59,9 +59,9 @@ export default class BigNumber {
|
|
|
59
59
|
static MIN_SAFE_INTEGER_BIGINT = BigInt(Number.MIN_SAFE_INTEGER);
|
|
60
60
|
static MAX_IMULN_ARG = 0x4000000 - 1;
|
|
61
61
|
static MAX_NUMBER_CONSTRUCTOR_MAG_BIGINT = (1n << 53n) - 1n;
|
|
62
|
-
_magnitude;
|
|
63
|
-
_sign;
|
|
64
|
-
_nominalWordLength;
|
|
62
|
+
_magnitude = 0n;
|
|
63
|
+
_sign = 0;
|
|
64
|
+
_nominalWordLength = 1;
|
|
65
65
|
/**
|
|
66
66
|
* Reduction context of the big number.
|
|
67
67
|
*
|
|
@@ -126,7 +126,7 @@ export default class BigNumber {
|
|
|
126
126
|
let newMagnitude = 0n;
|
|
127
127
|
const len = newWords.length > 0 ? newWords.length : 1;
|
|
128
128
|
for (let i = len - 1; i >= 0; i--) {
|
|
129
|
-
const wordVal = newWords[i]
|
|
129
|
+
const wordVal = newWords[i] ?? 0;
|
|
130
130
|
newMagnitude = (newMagnitude << BigNumber.WORD_SIZE_BIGINT) | BigInt(wordVal & Number(BigNumber.WORD_MASK));
|
|
131
131
|
}
|
|
132
132
|
this._magnitude = newMagnitude;
|
|
@@ -183,12 +183,8 @@ export default class BigNumber {
|
|
|
183
183
|
* @param endian - The endianness provided. By default is 'big endian'.
|
|
184
184
|
*/
|
|
185
185
|
constructor(number = 0, base = 10, endian = 'be') {
|
|
186
|
-
this._magnitude = 0n;
|
|
187
|
-
this._sign = 0;
|
|
188
|
-
this._nominalWordLength = 1;
|
|
189
186
|
this.red = null;
|
|
190
|
-
|
|
191
|
-
number = 0;
|
|
187
|
+
number ??= 0;
|
|
192
188
|
if (number === null) {
|
|
193
189
|
this._initializeState(0n, 0);
|
|
194
190
|
return;
|
|
@@ -213,83 +209,93 @@ export default class BigNumber {
|
|
|
213
209
|
return;
|
|
214
210
|
}
|
|
215
211
|
if (typeof number === 'string') {
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
212
|
+
this._initFromString(number, effectiveBase, effectiveEndian);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
if (number !== 0) {
|
|
216
|
+
this.assert(false, 'Unsupported input type for BigNumber constructor');
|
|
217
|
+
}
|
|
218
|
+
else {
|
|
219
|
+
this._initializeState(0n, 0);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
_initFromString(number, effectiveBase, effectiveEndian) {
|
|
223
|
+
if (effectiveBase === 'hex')
|
|
224
|
+
effectiveBase = 16;
|
|
225
|
+
// eslint-disable-next-line no-bitwise -- ToInt32 (ECMA-262); required for integer base validation.
|
|
226
|
+
this.assert(typeof effectiveBase === 'number' && effectiveBase === (effectiveBase | 0) && effectiveBase >= 2 && effectiveBase <= 36, 'Base must be an integer between 2 and 36');
|
|
227
|
+
const originalNumberStr = number.toString().replace(/\s+/g, '');
|
|
228
|
+
let start = 0;
|
|
229
|
+
let sign = 0;
|
|
230
|
+
if (originalNumberStr.startsWith('-')) {
|
|
231
|
+
start++;
|
|
232
|
+
sign = 1;
|
|
233
|
+
}
|
|
234
|
+
else if (originalNumberStr.startsWith('+')) {
|
|
235
|
+
start++;
|
|
236
|
+
}
|
|
237
|
+
const numStr = originalNumberStr.substring(start);
|
|
238
|
+
if (numStr.length === 0) {
|
|
239
|
+
this._initializeState(0n, (sign === 1 && originalNumberStr.startsWith('-')) ? 1 : 0);
|
|
240
|
+
this.normSign();
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (effectiveBase === 16) {
|
|
244
|
+
this._initFromHexString(numStr, sign, effectiveEndian);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
this._initFromNonHexString(numStr, effectiveBase, sign, effectiveEndian);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
_initFromHexString(numStr, sign, effectiveEndian) {
|
|
251
|
+
if (effectiveEndian === 'le') {
|
|
252
|
+
const bytes = [];
|
|
253
|
+
let hexStr = numStr;
|
|
254
|
+
if (hexStr.length % 2 !== 0)
|
|
255
|
+
hexStr = '0' + hexStr;
|
|
256
|
+
for (let i = 0; i < hexStr.length; i += 2) {
|
|
257
|
+
const byteHex = hexStr.substring(i, i + 2);
|
|
258
|
+
const byteVal = Number.parseInt(byteHex, 16);
|
|
259
|
+
if (Number.isNaN(byteVal))
|
|
260
|
+
throw new Error('Invalid character in ' + hexStr);
|
|
261
|
+
bytes.push(byteVal);
|
|
225
262
|
}
|
|
226
|
-
|
|
227
|
-
|
|
263
|
+
this.initArray(bytes, 'le');
|
|
264
|
+
this._sign = sign;
|
|
265
|
+
this.normSign();
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
let tempMagnitude;
|
|
269
|
+
try {
|
|
270
|
+
tempMagnitude = BigInt('0x' + numStr);
|
|
228
271
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
this._initializeState(0n, (sign === 1 && originalNumberStr.startsWith('-')) ? 1 : 0);
|
|
232
|
-
this.normSign();
|
|
233
|
-
return;
|
|
272
|
+
catch (_bigIntParseError) {
|
|
273
|
+
throw new Error('Invalid character in ' + numStr);
|
|
234
274
|
}
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
}
|
|
249
|
-
this.initArray(bytes, 'le');
|
|
250
|
-
this._sign = sign;
|
|
251
|
-
this.normSign();
|
|
252
|
-
return;
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
try {
|
|
256
|
-
tempMagnitude = BigInt('0x' + numStr);
|
|
257
|
-
}
|
|
258
|
-
catch (e) {
|
|
259
|
-
throw new Error('Invalid character in ' + numStr);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
this._initializeState(tempMagnitude, sign);
|
|
275
|
+
this._initializeState(tempMagnitude, sign);
|
|
276
|
+
this.normSign();
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
_initFromNonHexString(numStr, base, sign, effectiveEndian) {
|
|
280
|
+
try {
|
|
281
|
+
this._parseBaseString(numStr, base);
|
|
282
|
+
this._sign = sign;
|
|
283
|
+
this.normSign();
|
|
284
|
+
if (effectiveEndian === 'le') {
|
|
285
|
+
const currentSign = this._sign;
|
|
286
|
+
this.initArray(this.toArray('be'), 'le');
|
|
287
|
+
this._sign = currentSign;
|
|
263
288
|
this.normSign();
|
|
264
289
|
}
|
|
265
|
-
else {
|
|
266
|
-
try {
|
|
267
|
-
this._parseBaseString(numStr, effectiveBase);
|
|
268
|
-
this._sign = sign;
|
|
269
|
-
this.normSign();
|
|
270
|
-
if (effectiveEndian === 'le') {
|
|
271
|
-
const currentSign = this._sign;
|
|
272
|
-
this.initArray(this.toArray('be'), 'le');
|
|
273
|
-
this._sign = currentSign;
|
|
274
|
-
this.normSign();
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
catch (err) {
|
|
278
|
-
const error = err;
|
|
279
|
-
if (error.message.includes('Invalid character in string') ||
|
|
280
|
-
error.message.includes('Invalid digit for base') ||
|
|
281
|
-
error.message.startsWith('Invalid character:')) {
|
|
282
|
-
throw new Error('Invalid character');
|
|
283
|
-
}
|
|
284
|
-
throw error;
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
else if (number !== 0) {
|
|
289
|
-
this.assert(false, 'Unsupported input type for BigNumber constructor');
|
|
290
290
|
}
|
|
291
|
-
|
|
292
|
-
|
|
291
|
+
catch (err) {
|
|
292
|
+
const error = err;
|
|
293
|
+
if (error.message.includes('Invalid character in string') ||
|
|
294
|
+
error.message.includes('Invalid digit for base') ||
|
|
295
|
+
error.message.startsWith('Invalid character:')) {
|
|
296
|
+
throw new Error('Invalid character');
|
|
297
|
+
}
|
|
298
|
+
throw error;
|
|
293
299
|
}
|
|
294
300
|
}
|
|
295
301
|
_bigIntToStringInBase(num, base) {
|
|
@@ -344,7 +350,7 @@ export default class BigNumber {
|
|
|
344
350
|
_parseBaseWord(str, base) {
|
|
345
351
|
let r = 0;
|
|
346
352
|
for (let i = 0; i < str.length; i++) {
|
|
347
|
-
const charCode = str.
|
|
353
|
+
const charCode = str.codePointAt(i);
|
|
348
354
|
let digitVal;
|
|
349
355
|
if (charCode >= 48 && charCode <= 57)
|
|
350
356
|
digitVal = charCode - 48;
|
|
@@ -397,8 +403,8 @@ export default class BigNumber {
|
|
|
397
403
|
}
|
|
398
404
|
let magnitude = 0n;
|
|
399
405
|
if (endian === 'be') {
|
|
400
|
-
for (
|
|
401
|
-
magnitude = (magnitude << 8n) | BigInt(
|
|
406
|
+
for (const byte of bytes)
|
|
407
|
+
magnitude = (magnitude << 8n) | BigInt(byte & 0xff);
|
|
402
408
|
}
|
|
403
409
|
else {
|
|
404
410
|
for (let i = bytes.length - 1; i >= 0; i--)
|
|
@@ -416,9 +422,10 @@ export default class BigNumber {
|
|
|
416
422
|
return this;
|
|
417
423
|
}
|
|
418
424
|
strip() { this._finishInitialization(); return this.normSign(); }
|
|
419
|
-
normSign() { if (this._magnitude === 0n)
|
|
420
|
-
this._sign = 0;
|
|
421
|
-
|
|
425
|
+
normSign() { if (this._magnitude === 0n) {
|
|
426
|
+
this._sign = 0;
|
|
427
|
+
} return this; }
|
|
428
|
+
inspect() { return (this.red === null ? '<BN: ' : '<BN-R: ') + this.toString(16) + '>'; }
|
|
422
429
|
_getMinimalHex() {
|
|
423
430
|
if (this._magnitude === 0n)
|
|
424
431
|
return '0';
|
|
@@ -478,21 +485,7 @@ export default class BigNumber {
|
|
|
478
485
|
const remainder = tempMag % groupBaseBigInt;
|
|
479
486
|
tempMag /= groupBaseBigInt;
|
|
480
487
|
const chunkStr = this._bigIntToStringInBase(remainder, base);
|
|
481
|
-
|
|
482
|
-
const zerosToPrepend = groupSize - chunkStr.length;
|
|
483
|
-
if (zerosToPrepend > 0 && zerosToPrepend < BigNumber.zeros.length) {
|
|
484
|
-
out = BigNumber.zeros[zerosToPrepend] + chunkStr + out;
|
|
485
|
-
}
|
|
486
|
-
else if (zerosToPrepend > 0) {
|
|
487
|
-
out = '0'.repeat(zerosToPrepend) + chunkStr + out;
|
|
488
|
-
}
|
|
489
|
-
else {
|
|
490
|
-
out = chunkStr + out;
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
else {
|
|
494
|
-
out = chunkStr + out;
|
|
495
|
-
}
|
|
488
|
+
out = (tempMag > 0n ? this._zeroPaddedChunk(chunkStr, groupSize) : chunkStr) + out;
|
|
496
489
|
}
|
|
497
490
|
if (padding > 0) {
|
|
498
491
|
while (out.length < padding)
|
|
@@ -500,6 +493,15 @@ export default class BigNumber {
|
|
|
500
493
|
}
|
|
501
494
|
return (this._sign === 1 ? '-' : '') + out;
|
|
502
495
|
}
|
|
496
|
+
/** Returns a chunk string zero-padded to groupSize (used by toBaseString for interior chunks). */
|
|
497
|
+
_zeroPaddedChunk(chunkStr, groupSize) {
|
|
498
|
+
const zerosToPrepend = groupSize - chunkStr.length;
|
|
499
|
+
if (zerosToPrepend <= 0)
|
|
500
|
+
return chunkStr;
|
|
501
|
+
if (zerosToPrepend < BigNumber.zeros.length)
|
|
502
|
+
return BigNumber.zeros[zerosToPrepend] + chunkStr;
|
|
503
|
+
return '0'.repeat(zerosToPrepend) + chunkStr;
|
|
504
|
+
}
|
|
503
505
|
/**
|
|
504
506
|
* Converts the BigNumber instance to a JavaScript number.
|
|
505
507
|
* Please note that JavaScript numbers are only precise up to 53 bits.
|
|
@@ -579,8 +581,9 @@ export default class BigNumber {
|
|
|
579
581
|
* @method bitLength
|
|
580
582
|
* @returns The bit length of the BigNumber.
|
|
581
583
|
*/
|
|
582
|
-
bitLength() { if (this._magnitude === 0n)
|
|
583
|
-
return 0;
|
|
584
|
+
bitLength() { if (this._magnitude === 0n) {
|
|
585
|
+
return 0;
|
|
586
|
+
} return this._magnitude.toString(2).length; }
|
|
584
587
|
/**
|
|
585
588
|
* Converts a BigNumber to an array of bits.
|
|
586
589
|
*
|
|
@@ -595,7 +598,7 @@ export default class BigNumber {
|
|
|
595
598
|
const w = new Array(len);
|
|
596
599
|
const mag = num._magnitude;
|
|
597
600
|
for (let bit = 0; bit < len; bit++) {
|
|
598
|
-
w[bit] = ((mag >> BigInt(bit)) & 1n)
|
|
601
|
+
w[bit] = ((mag >> BigInt(bit)) & 1n) === 0n ? 0 : 1;
|
|
599
602
|
}
|
|
600
603
|
return w;
|
|
601
604
|
}
|
|
@@ -631,8 +634,9 @@ export default class BigNumber {
|
|
|
631
634
|
* @method byteLength
|
|
632
635
|
* @returns The byte length of the BigNumber.
|
|
633
636
|
*/
|
|
634
|
-
byteLength() { if (this._magnitude === 0n)
|
|
635
|
-
return 0;
|
|
637
|
+
byteLength() { if (this._magnitude === 0n) {
|
|
638
|
+
return 0;
|
|
639
|
+
} return Math.ceil(this.bitLength() / 8); }
|
|
636
640
|
_getSignedValue() { return this._sign === 1 ? -this._magnitude : this._magnitude; }
|
|
637
641
|
_setValueFromSigned(sVal) {
|
|
638
642
|
if (sVal < 0n) {
|
|
@@ -672,8 +676,9 @@ export default class BigNumber {
|
|
|
672
676
|
}
|
|
673
677
|
isNeg() { return this._sign === 1 && this._magnitude !== 0n; }
|
|
674
678
|
neg() { return this.clone().ineg(); }
|
|
675
|
-
ineg() { if (this._magnitude !== 0n)
|
|
676
|
-
this._sign = this._sign === 1 ? 0 : 1;
|
|
679
|
+
ineg() { if (this._magnitude !== 0n) {
|
|
680
|
+
this._sign = this._sign === 1 ? 0 : 1;
|
|
681
|
+
} return this; }
|
|
677
682
|
_iuop(num, op, isXor = false) {
|
|
678
683
|
const newMag = op(this._magnitude, num._magnitude);
|
|
679
684
|
let targetNominalLength = this._nominalWordLength;
|
|
@@ -692,8 +697,9 @@ export default class BigNumber {
|
|
|
692
697
|
ior(num) { return this._iop(num, (a, b) => a | b); }
|
|
693
698
|
iand(num) { return this._iop(num, (a, b) => a & b); }
|
|
694
699
|
ixor(num) { return this._iop(num, (a, b) => a ^ b, true); }
|
|
695
|
-
_uop_new(num, opName) { if (this.length >= num.length)
|
|
696
|
-
return this.clone()[opName](num);
|
|
700
|
+
_uop_new(num, opName) { if (this.length >= num.length) {
|
|
701
|
+
return this.clone()[opName](num);
|
|
702
|
+
} return num.clone()[opName](this); }
|
|
697
703
|
or(num) { this.assert(this._sign === 0 && num._sign === 0); return this._uop_new(num, 'iuor'); }
|
|
698
704
|
uor(num) { return this._uop_new(num, 'iuor'); }
|
|
699
705
|
and(num) { this.assert(this._sign === 0 && num._sign === 0); return this._uop_new(num, 'iuand'); }
|
|
@@ -849,26 +855,28 @@ export default class BigNumber {
|
|
|
849
855
|
this.assert(!num.isZero(), 'Division by zero');
|
|
850
856
|
if (this.isZero()) {
|
|
851
857
|
const z = new BigNumber(0n);
|
|
852
|
-
return { div: mode
|
|
858
|
+
return { div: mode === 'mod' ? null : z, mod: mode === 'div' ? null : z };
|
|
853
859
|
}
|
|
854
860
|
const tV = this._getSignedValue();
|
|
855
861
|
const nV = num._getSignedValue();
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
if (
|
|
870
|
-
|
|
871
|
-
|
|
862
|
+
const dV = mode !== 'mod' ? tV / nV : null;
|
|
863
|
+
const mV = this._computeMod(tV, nV, mode, positive);
|
|
864
|
+
return { div: this._bigNumberFromSigned(dV), mod: this._bigNumberFromSigned(mV) };
|
|
865
|
+
}
|
|
866
|
+
_computeMod(tV, nV, mode, positive) {
|
|
867
|
+
if (mode === 'div')
|
|
868
|
+
return null;
|
|
869
|
+
let mV = tV % nV;
|
|
870
|
+
if (positive === true && mV < 0n)
|
|
871
|
+
mV += nV < 0n ? -nV : nV;
|
|
872
|
+
return mV;
|
|
873
|
+
}
|
|
874
|
+
_bigNumberFromSigned(v) {
|
|
875
|
+
if (v === null)
|
|
876
|
+
return null;
|
|
877
|
+
const r = new BigNumber(0n);
|
|
878
|
+
r._setValueFromSigned(v);
|
|
879
|
+
return r;
|
|
872
880
|
}
|
|
873
881
|
div(num) {
|
|
874
882
|
return this.divmod(num, 'div', false).div;
|
|
@@ -983,15 +991,21 @@ export default class BigNumber {
|
|
|
983
991
|
andln(num) { this.assert(num >= 0); return Number(this._magnitude & BigInt(num)); }
|
|
984
992
|
bincn(bit) { this.assert(typeof bit === 'number' && bit >= 0); const BVal = 1n << BigInt(bit); this._setValueFromSigned(this._getSignedValue() + BVal); return this; }
|
|
985
993
|
isZero() { return this._magnitude === 0n; }
|
|
986
|
-
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)
|
|
987
|
-
return -1;
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
return 1;
|
|
994
|
+
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) {
|
|
995
|
+
return -1;
|
|
996
|
+
} if (tV > nV) {
|
|
997
|
+
return 1;
|
|
998
|
+
} return 0; }
|
|
999
|
+
cmp(num) { const tV = this._getSignedValue(); const nV = num._getSignedValue(); if (tV < nV) {
|
|
1000
|
+
return -1;
|
|
1001
|
+
} if (tV > nV) {
|
|
1002
|
+
return 1;
|
|
1003
|
+
} return 0; }
|
|
1004
|
+
ucmp(num) { if (this._magnitude < num._magnitude) {
|
|
1005
|
+
return -1;
|
|
1006
|
+
} if (this._magnitude > num._magnitude) {
|
|
1007
|
+
return 1;
|
|
1008
|
+
} return 0; }
|
|
995
1009
|
gtn(num) { return this.cmpn(num) === 1; }
|
|
996
1010
|
gt(num) { return this.cmp(num) === 1; }
|
|
997
1011
|
gten(num) { return this.cmpn(num) >= 0; }
|
|
@@ -1112,18 +1126,17 @@ export default class BigNumber {
|
|
|
1112
1126
|
sign = 1;
|
|
1113
1127
|
beBytes[0] &= 0x7f;
|
|
1114
1128
|
}
|
|
1115
|
-
let
|
|
1129
|
+
let hexStr;
|
|
1116
1130
|
if (CAN_USE_BUFFER) {
|
|
1117
|
-
|
|
1118
|
-
magnitude = hex.length === 0 ? 0n : BigInt('0x' + hex);
|
|
1131
|
+
hexStr = BufferCtor.from(beBytes).toString('hex');
|
|
1119
1132
|
}
|
|
1120
1133
|
else {
|
|
1121
|
-
|
|
1134
|
+
hexStr = '';
|
|
1122
1135
|
for (const byte of beBytes) {
|
|
1123
|
-
|
|
1136
|
+
hexStr += byte < 16 ? '0' + byte.toString(16) : byte.toString(16);
|
|
1124
1137
|
}
|
|
1125
|
-
magnitude = hex.length === 0 ? 0n : BigInt('0x' + hex);
|
|
1126
1138
|
}
|
|
1139
|
+
const magnitude = hexStr.length === 0 ? 0n : BigInt('0x' + hexStr);
|
|
1127
1140
|
const r = new BigNumber(0n);
|
|
1128
1141
|
r._initializeState(magnitude, sign);
|
|
1129
1142
|
return r;
|
|
@@ -1145,25 +1158,25 @@ export default class BigNumber {
|
|
|
1145
1158
|
const byteLen = hex.length / 2;
|
|
1146
1159
|
const bytes = new Array(byteLen);
|
|
1147
1160
|
for (let i = 0, j = 0; i < hex.length; i += 2) {
|
|
1148
|
-
const high = HEX_CHAR_TO_VALUE[hex.
|
|
1149
|
-
const low = HEX_CHAR_TO_VALUE[hex.
|
|
1161
|
+
const high = HEX_CHAR_TO_VALUE[hex.codePointAt(i)];
|
|
1162
|
+
const low = HEX_CHAR_TO_VALUE[hex.codePointAt(i + 1)];
|
|
1150
1163
|
bytes[j++] = ((high & 0xf) << 4) | (low & 0xf);
|
|
1151
1164
|
}
|
|
1152
1165
|
let result;
|
|
1153
1166
|
if (this._sign === 1) {
|
|
1154
|
-
if ((bytes[0] & 0x80)
|
|
1155
|
-
result = [0x80, ...bytes];
|
|
1156
|
-
}
|
|
1157
|
-
else {
|
|
1167
|
+
if ((bytes[0] & 0x80) === 0) {
|
|
1158
1168
|
result = bytes.slice();
|
|
1159
1169
|
result[0] |= 0x80;
|
|
1160
1170
|
}
|
|
1171
|
+
else {
|
|
1172
|
+
result = [0x80, ...bytes];
|
|
1173
|
+
}
|
|
1161
1174
|
}
|
|
1162
|
-
else if ((bytes[0] & 0x80)
|
|
1163
|
-
result =
|
|
1175
|
+
else if ((bytes[0] & 0x80) === 0) {
|
|
1176
|
+
result = bytes.slice();
|
|
1164
1177
|
}
|
|
1165
1178
|
else {
|
|
1166
|
-
result = bytes
|
|
1179
|
+
result = [0x00, ...bytes];
|
|
1167
1180
|
}
|
|
1168
1181
|
return endian === 'little' ? result.reverse() : result;
|
|
1169
1182
|
}
|
|
@@ -1269,8 +1282,8 @@ export default class BigNumber {
|
|
|
1269
1282
|
if (num.length === 0)
|
|
1270
1283
|
return new BigNumber(0n);
|
|
1271
1284
|
if (requireMinimal) {
|
|
1272
|
-
if ((num
|
|
1273
|
-
if (num.length <= 1 || (num
|
|
1285
|
+
if ((num.at(-1) & 0x7f) === 0) {
|
|
1286
|
+
if (num.length <= 1 || (num.at(-2) & 0x80) === 0) {
|
|
1274
1287
|
throw new Error('non-minimally encoded script number');
|
|
1275
1288
|
}
|
|
1276
1289
|
}
|