@bsv/sdk 1.3.12 → 1.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/mod.js +15 -15
- package/dist/cjs/mod.js.map +1 -1
- package/dist/cjs/package.json +10 -2
- package/dist/cjs/src/auth/Peer.js +62 -46
- package/dist/cjs/src/auth/Peer.js.map +1 -1
- package/dist/cjs/src/auth/SessionManager.js +4 -4
- package/dist/cjs/src/auth/SessionManager.js.map +1 -1
- package/dist/cjs/src/auth/__tests/Peer.test.js +446 -0
- package/dist/cjs/src/auth/__tests/Peer.test.js.map +1 -0
- package/dist/cjs/src/auth/__tests/SessionManager.test.js +69 -0
- package/dist/cjs/src/auth/__tests/SessionManager.test.js.map +1 -0
- package/dist/cjs/src/auth/certificates/Certificate.js +26 -23
- package/dist/cjs/src/auth/certificates/Certificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/MasterCertificate.js +18 -16
- package/dist/cjs/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js +7 -7
- package/dist/cjs/src/auth/certificates/VerifiableCertificate.js.map +1 -1
- package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js +182 -0
- package/dist/cjs/src/auth/certificates/__tests/Certificate.test.js.map +1 -0
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js +22 -22
- package/dist/cjs/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js +184 -0
- package/dist/cjs/src/auth/certificates/__tests/MasterCertificate.test.js.map +1 -0
- package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js +75 -0
- package/dist/cjs/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +1 -0
- package/dist/cjs/src/auth/certificates/index.js +5 -5
- package/dist/cjs/src/auth/certificates/index.js.map +1 -1
- package/dist/cjs/src/auth/clients/AuthFetch.js +74 -64
- package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/cjs/src/auth/clients/index.js +1 -1
- package/dist/cjs/src/auth/clients/index.js.map +1 -1
- package/dist/cjs/src/auth/index.js +7 -7
- package/dist/cjs/src/auth/index.js.map +1 -1
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +62 -54
- package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/cjs/src/auth/transports/index.js +1 -1
- package/dist/cjs/src/auth/transports/index.js.map +1 -1
- package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js +101 -0
- package/dist/cjs/src/auth/utils/__tests/cryptononce.test.js.map +1 -0
- package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js +106 -0
- package/dist/cjs/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +1 -0
- package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js +111 -0
- package/dist/cjs/src/auth/utils/__tests/validateCertificates.test.js.map +1 -0
- package/dist/cjs/src/auth/utils/createNonce.js +4 -4
- package/dist/cjs/src/auth/utils/createNonce.js.map +1 -1
- package/dist/cjs/src/auth/utils/getVerifiableCertificates.js +2 -2
- package/dist/cjs/src/auth/utils/getVerifiableCertificates.js.map +1 -1
- package/dist/cjs/src/auth/utils/index.js +4 -4
- package/dist/cjs/src/auth/utils/index.js.map +1 -1
- package/dist/cjs/src/auth/utils/validateCertificates.js +2 -2
- package/dist/cjs/src/auth/utils/validateCertificates.js.map +1 -1
- package/dist/cjs/src/auth/utils/verifyNonce.js +3 -3
- package/dist/cjs/src/auth/utils/verifyNonce.js.map +1 -1
- package/dist/cjs/src/compat/BSM.js +9 -9
- package/dist/cjs/src/compat/BSM.js.map +1 -1
- package/dist/cjs/src/compat/ECIES.js +157 -116
- package/dist/cjs/src/compat/ECIES.js.map +1 -1
- package/dist/cjs/src/compat/HD.js +75 -75
- package/dist/cjs/src/compat/HD.js.map +1 -1
- package/dist/cjs/src/compat/Mnemonic.js +98 -93
- package/dist/cjs/src/compat/Mnemonic.js.map +1 -1
- package/dist/cjs/src/compat/Utxo.js +5 -5
- package/dist/cjs/src/compat/Utxo.js.map +1 -1
- package/dist/cjs/src/compat/__tests/BSM.test.js +69 -0
- package/dist/cjs/src/compat/__tests/BSM.test.js.map +1 -0
- package/dist/cjs/src/compat/__tests/ECIES.test.js +115 -0
- package/dist/cjs/src/compat/__tests/ECIES.test.js.map +1 -0
- package/dist/cjs/src/compat/__tests/HD.test.js +336 -0
- package/dist/cjs/src/compat/__tests/HD.test.js.map +1 -0
- package/dist/cjs/src/compat/__tests/Mnemonic.test.js +150 -0
- package/dist/cjs/src/compat/__tests/Mnemonic.test.js.map +1 -0
- package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js +175 -0
- package/dist/cjs/src/compat/__tests/Mnemonic.vectors.js.map +1 -0
- package/dist/cjs/src/compat/index.js +9 -9
- package/dist/cjs/src/compat/index.js.map +1 -1
- package/dist/cjs/src/messages/EncryptedMessage.js +17 -15
- package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/cjs/src/messages/SignedMessage.js +20 -20
- package/dist/cjs/src/messages/SignedMessage.js.map +1 -1
- package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js +57 -0
- package/dist/cjs/src/messages/__tests/EncryptedMessage.test.js.map +1 -0
- package/dist/cjs/src/messages/__tests/SignedMessage.test.js +52 -0
- package/dist/cjs/src/messages/__tests/SignedMessage.test.js.map +1 -0
- package/dist/cjs/src/messages/index.js +2 -2
- package/dist/cjs/src/messages/index.js.map +1 -1
- package/dist/cjs/src/overlay-tools/LookupResolver.js +20 -13
- package/dist/cjs/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js +44 -32
- package/dist/cjs/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js +41 -30
- package/dist/cjs/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js +1471 -0
- package/dist/cjs/src/overlay-tools/__tests/LookupResolver.test.js.map +1 -0
- package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +78 -0
- package/dist/cjs/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +1 -0
- package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js +933 -0
- package/dist/cjs/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +1 -0
- package/dist/cjs/src/overlay-tools/index.js +8 -8
- package/dist/cjs/src/overlay-tools/index.js.map +1 -1
- package/dist/cjs/src/primitives/BasePoint.js +2 -2
- package/dist/cjs/src/primitives/BasePoint.js.map +1 -1
- package/dist/cjs/src/primitives/BigNumber.js +46 -59
- package/dist/cjs/src/primitives/BigNumber.js.map +1 -1
- package/dist/cjs/src/primitives/Curve.js +29 -39
- package/dist/cjs/src/primitives/Curve.js.map +1 -1
- package/dist/cjs/src/primitives/DRBG.js +8 -14
- package/dist/cjs/src/primitives/DRBG.js.map +1 -1
- package/dist/cjs/src/primitives/ECDSA.js +24 -24
- package/dist/cjs/src/primitives/ECDSA.js.map +1 -1
- package/dist/cjs/src/primitives/Hash.js +76 -111
- package/dist/cjs/src/primitives/Hash.js.map +1 -1
- package/dist/cjs/src/primitives/JacobianPoint.js +20 -16
- package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/cjs/src/primitives/K256.js +2 -2
- package/dist/cjs/src/primitives/K256.js.map +1 -1
- package/dist/cjs/src/primitives/Mersenne.js +4 -4
- package/dist/cjs/src/primitives/Mersenne.js.map +1 -1
- package/dist/cjs/src/primitives/MontgomoryMethod.js +5 -5
- package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -1
- package/dist/cjs/src/primitives/Point.js +74 -72
- package/dist/cjs/src/primitives/Point.js.map +1 -1
- package/dist/cjs/src/primitives/Polynomial.js +15 -13
- package/dist/cjs/src/primitives/Polynomial.js.map +1 -1
- package/dist/cjs/src/primitives/PrivateKey.js +48 -39
- package/dist/cjs/src/primitives/PrivateKey.js.map +1 -1
- package/dist/cjs/src/primitives/PublicKey.js +23 -23
- package/dist/cjs/src/primitives/PublicKey.js.map +1 -1
- package/dist/cjs/src/primitives/Random.js +4 -4
- package/dist/cjs/src/primitives/Random.js.map +1 -1
- package/dist/cjs/src/primitives/ReductionContext.js +11 -11
- package/dist/cjs/src/primitives/ReductionContext.js.map +1 -1
- package/dist/cjs/src/primitives/Schnorr.js +29 -23
- package/dist/cjs/src/primitives/Schnorr.js.map +1 -1
- package/dist/cjs/src/primitives/Signature.js +25 -24
- package/dist/cjs/src/primitives/Signature.js.map +1 -1
- package/dist/cjs/src/primitives/SymmetricKey.js +26 -26
- package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/cjs/src/primitives/TransactionSignature.js +23 -21
- package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/cjs/src/primitives/__tests/AESGCM.test.js +248 -0
- package/dist/cjs/src/primitives/__tests/AESGCM.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js +36 -0
- package/dist/cjs/src/primitives/__tests/BRC42.private.vectors.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js +36 -0
- package/dist/cjs/src/primitives/__tests/BRC42.public.vectors.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js +501 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.arithmatic.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js +185 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.binary.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js +149 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.constructor.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js +23 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.dhGroup.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js +268 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.fixtures.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js +147 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.serializers.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js +322 -0
- package/dist/cjs/src/primitives/__tests/BigNumber.utils.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/Curve.unit.test.js +145 -0
- package/dist/cjs/src/primitives/__tests/Curve.unit.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/DRBG.test.js +22 -0
- package/dist/cjs/src/primitives/__tests/DRBG.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/DRBG.vectors.js +170 -0
- package/dist/cjs/src/primitives/__tests/DRBG.vectors.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/ECDH.test.js +34 -0
- package/dist/cjs/src/primitives/__tests/ECDH.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/ECDSA.test.js +89 -0
- package/dist/cjs/src/primitives/__tests/ECDSA.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/HMAC.test.js +60 -0
- package/dist/cjs/src/primitives/__tests/HMAC.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/Hash.test.js +159 -0
- package/dist/cjs/src/primitives/__tests/Hash.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js +122 -0
- package/dist/cjs/src/primitives/__tests/PBKDF2.vectors.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js +105 -0
- package/dist/cjs/src/primitives/__tests/PrivateKey.split.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/PrivateKey.test.js +90 -0
- package/dist/cjs/src/primitives/__tests/PrivateKey.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/PublicKey.test.js +83 -0
- package/dist/cjs/src/primitives/__tests/PublicKey.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/Random.test.js +19 -0
- package/dist/cjs/src/primitives/__tests/Random.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/Reader.test.js +282 -0
- package/dist/cjs/src/primitives/__tests/Reader.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/ReductionContext.test.js +224 -0
- package/dist/cjs/src/primitives/__tests/ReductionContext.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/Schnorr.test.js +213 -0
- package/dist/cjs/src/primitives/__tests/Schnorr.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js +51 -0
- package/dist/cjs/src/primitives/__tests/SymmetricKey.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js +43 -0
- package/dist/cjs/src/primitives/__tests/SymmetricKey.vectors.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/Writer.test.js +176 -0
- package/dist/cjs/src/primitives/__tests/Writer.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/bug-31.test.js +32 -0
- package/dist/cjs/src/primitives/__tests/bug-31.test.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/sighash.vectors.js +3506 -0
- package/dist/cjs/src/primitives/__tests/sighash.vectors.js.map +1 -0
- package/dist/cjs/src/primitives/__tests/utils.test.js +110 -0
- package/dist/cjs/src/primitives/__tests/utils.test.js.map +1 -0
- package/dist/cjs/src/primitives/index.js +27 -27
- package/dist/cjs/src/primitives/index.js.map +1 -1
- package/dist/cjs/src/primitives/utils.js +70 -60
- package/dist/cjs/src/primitives/utils.js.map +1 -1
- package/dist/cjs/src/script/LockingScript.js +2 -2
- package/dist/cjs/src/script/LockingScript.js.map +1 -1
- package/dist/cjs/src/script/Script.js +49 -47
- package/dist/cjs/src/script/Script.js.map +1 -1
- package/dist/cjs/src/script/Spend.js +305 -300
- package/dist/cjs/src/script/Spend.js.map +1 -1
- package/dist/cjs/src/script/UnlockingScript.js +2 -2
- package/dist/cjs/src/script/UnlockingScript.js.map +1 -1
- package/dist/cjs/src/script/__tests/Script.test.js +347 -0
- package/dist/cjs/src/script/__tests/Script.test.js.map +1 -0
- package/dist/cjs/src/script/__tests/Spend.test.js +282 -0
- package/dist/cjs/src/script/__tests/Spend.test.js.map +1 -0
- package/dist/cjs/src/script/__tests/SpendComplex.test.js +52 -0
- package/dist/cjs/src/script/__tests/SpendComplex.test.js.map +1 -0
- package/dist/cjs/src/script/__tests/script.invalid.vectors.js +2370 -0
- package/dist/cjs/src/script/__tests/script.invalid.vectors.js.map +1 -0
- package/dist/cjs/src/script/__tests/script.valid.vectors.js +1181 -0
- package/dist/cjs/src/script/__tests/script.valid.vectors.js.map +1 -0
- package/dist/cjs/src/script/__tests/spend.valid.vectors.js +2298 -0
- package/dist/cjs/src/script/__tests/spend.valid.vectors.js.map +1 -0
- package/dist/cjs/src/script/index.js +11 -11
- package/dist/cjs/src/script/index.js.map +1 -1
- package/dist/cjs/src/script/templates/P2PKH.js +40 -36
- package/dist/cjs/src/script/templates/P2PKH.js.map +1 -1
- package/dist/cjs/src/script/templates/PushDrop.js +42 -43
- package/dist/cjs/src/script/templates/PushDrop.js.map +1 -1
- package/dist/cjs/src/script/templates/RPuzzle.js +48 -45
- package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/cjs/src/script/templates/__tests/PushDrop.test.js +161 -0
- package/dist/cjs/src/script/templates/__tests/PushDrop.test.js.map +1 -0
- package/dist/cjs/src/script/templates/index.js +6 -6
- package/dist/cjs/src/script/templates/index.js.map +1 -1
- package/dist/cjs/src/totp/__tests/totp.test.js +67 -0
- package/dist/cjs/src/totp/__tests/totp.test.js.map +1 -0
- package/dist/cjs/src/totp/index.js +1 -1
- package/dist/cjs/src/totp/index.js.map +1 -1
- package/dist/cjs/src/totp/totp.js +7 -7
- package/dist/cjs/src/totp/totp.js.map +1 -1
- package/dist/cjs/src/transaction/Beef.js +141 -129
- package/dist/cjs/src/transaction/Beef.js.map +1 -1
- package/dist/cjs/src/transaction/BeefParty.js +25 -25
- package/dist/cjs/src/transaction/BeefParty.js.map +1 -1
- package/dist/cjs/src/transaction/BeefTx.js +25 -23
- package/dist/cjs/src/transaction/BeefTx.js.map +1 -1
- package/dist/cjs/src/transaction/Broadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/MerklePath.js +27 -22
- package/dist/cjs/src/transaction/MerklePath.js.map +1 -1
- package/dist/cjs/src/transaction/Transaction.js +89 -157
- package/dist/cjs/src/transaction/Transaction.js.map +1 -1
- package/dist/cjs/src/transaction/__tests/Beef.test.js +393 -0
- package/dist/cjs/src/transaction/__tests/Beef.test.js.map +1 -0
- package/dist/cjs/src/transaction/__tests/MerklePath.test.js +209 -0
- package/dist/cjs/src/transaction/__tests/MerklePath.test.js.map +1 -0
- package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js +219 -0
- package/dist/cjs/src/transaction/__tests/Transaction.benchmarks.test.js.map +1 -0
- package/dist/cjs/src/transaction/__tests/Transaction.test.js +1073 -0
- package/dist/cjs/src/transaction/__tests/Transaction.test.js.map +1 -0
- package/dist/cjs/src/transaction/__tests/bigtx.vectors.js +7 -0
- package/dist/cjs/src/transaction/__tests/bigtx.vectors.js.map +1 -0
- package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js +11 -0
- package/dist/cjs/src/transaction/__tests/bump.invalid.vectors.js.map +1 -0
- package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js +7 -0
- package/dist/cjs/src/transaction/__tests/bump.valid.vectors.js.map +1 -0
- package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js +230 -0
- package/dist/cjs/src/transaction/__tests/tx.invalid.vectors.js.map +1 -0
- package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js +296 -0
- package/dist/cjs/src/transaction/__tests/tx.valid.vectors.js.map +1 -0
- package/dist/cjs/src/transaction/broadcasters/ARC.js +39 -35
- package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js +2 -2
- package/dist/cjs/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +15 -15
- package/dist/cjs/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js +246 -0
- package/dist/cjs/src/transaction/broadcasters/__tests/ARC.test.js.map +1 -0
- package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +148 -0
- package/dist/cjs/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +1 -0
- package/dist/cjs/src/transaction/broadcasters/index.js +6 -6
- package/dist/cjs/src/transaction/broadcasters/index.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js +2 -2
- package/dist/cjs/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js +8 -8
- package/dist/cjs/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +155 -0
- package/dist/cjs/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +1 -0
- package/dist/cjs/src/transaction/chaintrackers/index.js +4 -4
- package/dist/cjs/src/transaction/chaintrackers/index.js.map +1 -1
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +3 -3
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/cjs/src/transaction/fee-models/index.js +2 -2
- package/dist/cjs/src/transaction/fee-models/index.js.map +1 -1
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js +11 -11
- package/dist/cjs/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/FetchHttpClient.js +4 -2
- package/dist/cjs/src/transaction/http/FetchHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/NodejsHttpClient.js +10 -8
- package/dist/cjs/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/cjs/src/transaction/http/index.js +6 -6
- package/dist/cjs/src/transaction/http/index.js.map +1 -1
- package/dist/cjs/src/transaction/index.js +12 -12
- package/dist/cjs/src/transaction/index.js.map +1 -1
- package/dist/cjs/src/wallet/CachedKeyDeriver.js +65 -63
- package/dist/cjs/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/cjs/src/wallet/KeyDeriver.js +66 -58
- package/dist/cjs/src/wallet/KeyDeriver.js.map +1 -1
- package/dist/cjs/src/wallet/ProtoWallet.js +27 -14
- package/dist/cjs/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/cjs/src/wallet/WalletClient.js +15 -14
- package/dist/cjs/src/wallet/WalletClient.js.map +1 -1
- package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js +269 -0
- package/dist/cjs/src/wallet/__tests/CachedKeyDeriver.test.js.map +1 -0
- package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js +114 -0
- package/dist/cjs/src/wallet/__tests/KeyDeriver.test.js.map +1 -0
- package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js +475 -0
- package/dist/cjs/src/wallet/__tests/ProtoWallet.test.js.map +1 -0
- package/dist/cjs/src/wallet/index.js +12 -12
- package/dist/cjs/src/wallet/index.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js +3 -3
- package/dist/cjs/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js +10 -10
- package/dist/cjs/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireCalls.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js +1293 -1316
- package/dist/cjs/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js +320 -272
- package/dist/cjs/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/XDM.js +8 -5
- package/dist/cjs/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js +1962 -0
- package/dist/cjs/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +1 -0
- package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js +579 -0
- package/dist/cjs/src/wallet/substrates/__tests/XDM.test.js.map +1 -0
- package/dist/cjs/src/wallet/substrates/index.js +12 -12
- package/dist/cjs/src/wallet/substrates/index.js.map +1 -1
- package/dist/cjs/src/wallet/substrates/window.CWI.js +4 -4
- package/dist/cjs/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/mod.js +31 -15
- package/dist/esm/mod.js.map +1 -1
- package/dist/esm/src/auth/Peer.js +67 -47
- package/dist/esm/src/auth/Peer.js.map +1 -1
- package/dist/esm/src/auth/SessionManager.js +9 -5
- package/dist/esm/src/auth/SessionManager.js.map +1 -1
- package/dist/esm/src/auth/__tests/Peer.test.js +448 -0
- package/dist/esm/src/auth/__tests/Peer.test.js.map +1 -0
- package/dist/esm/src/auth/__tests/SessionManager.test.js +69 -0
- package/dist/esm/src/auth/__tests/SessionManager.test.js.map +1 -0
- package/dist/esm/src/auth/certificates/Certificate.js +31 -25
- package/dist/esm/src/auth/certificates/Certificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/MasterCertificate.js +25 -16
- package/dist/esm/src/auth/certificates/MasterCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/VerifiableCertificate.js +14 -7
- package/dist/esm/src/auth/certificates/VerifiableCertificate.js.map +1 -1
- package/dist/esm/src/auth/certificates/__tests/Certificate.test.js +182 -0
- package/dist/esm/src/auth/certificates/__tests/Certificate.test.js.map +1 -0
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js +26 -22
- package/dist/esm/src/auth/certificates/__tests/CompletedProtoWallet.js.map +1 -1
- package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js +184 -0
- package/dist/esm/src/auth/certificates/__tests/MasterCertificate.test.js.map +1 -0
- package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js +75 -0
- package/dist/esm/src/auth/certificates/__tests/VerifiableCertificate.test.js.map +1 -0
- package/dist/esm/src/auth/certificates/index.js +25 -4
- package/dist/esm/src/auth/certificates/index.js.map +1 -1
- package/dist/esm/src/auth/clients/AuthFetch.js +79 -65
- package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
- package/dist/esm/src/auth/clients/index.js +17 -1
- package/dist/esm/src/auth/clients/index.js.map +1 -1
- package/dist/esm/src/auth/index.js +23 -7
- package/dist/esm/src/auth/index.js.map +1 -1
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +67 -55
- package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
- package/dist/esm/src/auth/transports/index.js +17 -1
- package/dist/esm/src/auth/transports/index.js.map +1 -1
- package/dist/esm/src/auth/types.js +2 -1
- package/dist/esm/src/auth/utils/__tests/cryptononce.test.js +101 -0
- package/dist/esm/src/auth/utils/__tests/cryptononce.test.js.map +1 -0
- package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js +106 -0
- package/dist/esm/src/auth/utils/__tests/getVerifiableCertificates.test.js.map +1 -0
- package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js +111 -0
- package/dist/esm/src/auth/utils/__tests/validateCertificates.test.js.map +1 -0
- package/dist/esm/src/auth/utils/createNonce.js +8 -5
- package/dist/esm/src/auth/utils/createNonce.js.map +1 -1
- package/dist/esm/src/auth/utils/getVerifiableCertificates.js +7 -3
- package/dist/esm/src/auth/utils/getVerifiableCertificates.js.map +1 -1
- package/dist/esm/src/auth/utils/index.js +20 -4
- package/dist/esm/src/auth/utils/index.js.map +1 -1
- package/dist/esm/src/auth/utils/validateCertificates.js +7 -3
- package/dist/esm/src/auth/utils/validateCertificates.js.map +1 -1
- package/dist/esm/src/auth/utils/verifyNonce.js +7 -4
- package/dist/esm/src/auth/utils/verifyNonce.js.map +1 -1
- package/dist/esm/src/compat/BSM.js +56 -14
- package/dist/esm/src/compat/BSM.js.map +1 -1
- package/dist/esm/src/compat/ECIES.js +197 -117
- package/dist/esm/src/compat/ECIES.js.map +1 -1
- package/dist/esm/src/compat/HD.js +115 -76
- package/dist/esm/src/compat/HD.js.map +1 -1
- package/dist/esm/src/compat/Mnemonic.js +138 -94
- package/dist/esm/src/compat/Mnemonic.js.map +1 -1
- package/dist/esm/src/compat/Utxo.js +12 -6
- package/dist/esm/src/compat/Utxo.js.map +1 -1
- package/dist/esm/src/compat/__tests/BSM.test.js +69 -0
- package/dist/esm/src/compat/__tests/BSM.test.js.map +1 -0
- package/dist/esm/src/compat/__tests/ECIES.test.js +115 -0
- package/dist/esm/src/compat/__tests/ECIES.test.js.map +1 -0
- package/dist/esm/src/compat/__tests/HD.test.js +336 -0
- package/dist/esm/src/compat/__tests/HD.test.js.map +1 -0
- package/dist/esm/src/compat/__tests/Mnemonic.test.js +150 -0
- package/dist/esm/src/compat/__tests/Mnemonic.test.js.map +1 -0
- package/dist/esm/src/compat/__tests/Mnemonic.vectors.js +175 -0
- package/dist/esm/src/compat/__tests/Mnemonic.vectors.js.map +1 -0
- package/dist/esm/src/compat/bip-39-wordlist-en.js +4 -1
- package/dist/esm/src/compat/bip-39-wordlist-en.js.map +1 -1
- package/dist/esm/src/compat/index.js +48 -5
- package/dist/esm/src/compat/index.js.map +1 -1
- package/dist/esm/src/messages/EncryptedMessage.js +27 -17
- package/dist/esm/src/messages/EncryptedMessage.js.map +1 -1
- package/dist/esm/src/messages/SignedMessage.js +30 -22
- package/dist/esm/src/messages/SignedMessage.js.map +1 -1
- package/dist/esm/src/messages/__tests/EncryptedMessage.test.js +57 -0
- package/dist/esm/src/messages/__tests/EncryptedMessage.test.js.map +1 -0
- package/dist/esm/src/messages/__tests/SignedMessage.test.js +52 -0
- package/dist/esm/src/messages/__tests/SignedMessage.test.js.map +1 -0
- package/dist/esm/src/messages/index.js +38 -2
- package/dist/esm/src/messages/index.js.map +1 -1
- package/dist/esm/src/overlay-tools/LookupResolver.js +32 -17
- package/dist/esm/src/overlay-tools/LookupResolver.js.map +1 -1
- package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js +51 -33
- package/dist/esm/src/overlay-tools/OverlayAdminTokenTemplate.js.map +1 -1
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js +51 -32
- package/dist/esm/src/overlay-tools/SHIPBroadcaster.js.map +1 -1
- package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js +1471 -0
- package/dist/esm/src/overlay-tools/__tests/LookupResolver.test.js.map +1 -0
- package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js +78 -0
- package/dist/esm/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.js.map +1 -0
- package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js +933 -0
- package/dist/esm/src/overlay-tools/__tests/SHIPBroadcaster.test.js.map +1 -0
- package/dist/esm/src/overlay-tools/index.js +28 -5
- package/dist/esm/src/overlay-tools/index.js.map +1 -1
- package/dist/esm/src/primitives/AESGCM.js +39 -26
- package/dist/esm/src/primitives/AESGCM.js.map +1 -1
- package/dist/esm/src/primitives/BasePoint.js +9 -3
- package/dist/esm/src/primitives/BasePoint.js.map +1 -1
- package/dist/esm/src/primitives/BigNumber.js +50 -60
- package/dist/esm/src/primitives/BigNumber.js.map +1 -1
- package/dist/esm/src/primitives/Curve.js +36 -40
- package/dist/esm/src/primitives/Curve.js.map +1 -1
- package/dist/esm/src/primitives/DRBG.js +12 -15
- package/dist/esm/src/primitives/DRBG.js.map +1 -1
- package/dist/esm/src/primitives/ECDSA.js +34 -26
- package/dist/esm/src/primitives/ECDSA.js.map +1 -1
- package/dist/esm/src/primitives/Hash.js +115 -130
- package/dist/esm/src/primitives/Hash.js.map +1 -1
- package/dist/esm/src/primitives/JacobianPoint.js +26 -16
- package/dist/esm/src/primitives/JacobianPoint.js.map +1 -1
- package/dist/esm/src/primitives/K256.js +8 -2
- package/dist/esm/src/primitives/K256.js.map +1 -1
- package/dist/esm/src/primitives/Mersenne.js +11 -5
- package/dist/esm/src/primitives/Mersenne.js.map +1 -1
- package/dist/esm/src/primitives/MontgomoryMethod.js +11 -5
- package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -1
- package/dist/esm/src/primitives/Point.js +80 -72
- package/dist/esm/src/primitives/Point.js.map +1 -1
- package/dist/esm/src/primitives/Polynomial.js +25 -15
- package/dist/esm/src/primitives/Polynomial.js.map +1 -1
- package/dist/esm/src/primitives/PrivateKey.js +90 -40
- package/dist/esm/src/primitives/PrivateKey.js.map +1 -1
- package/dist/esm/src/primitives/PublicKey.js +29 -23
- package/dist/esm/src/primitives/PublicKey.js.map +1 -1
- package/dist/esm/src/primitives/Random.js +7 -5
- package/dist/esm/src/primitives/Random.js.map +1 -1
- package/dist/esm/src/primitives/ReductionContext.js +18 -12
- package/dist/esm/src/primitives/ReductionContext.js.map +1 -1
- package/dist/esm/src/primitives/Schnorr.js +36 -24
- package/dist/esm/src/primitives/Schnorr.js.map +1 -1
- package/dist/esm/src/primitives/Signature.js +32 -25
- package/dist/esm/src/primitives/Signature.js.map +1 -1
- package/dist/esm/src/primitives/SymmetricKey.js +32 -26
- package/dist/esm/src/primitives/SymmetricKey.js.map +1 -1
- package/dist/esm/src/primitives/TransactionSignature.js +62 -21
- package/dist/esm/src/primitives/TransactionSignature.js.map +1 -1
- package/dist/esm/src/primitives/__tests/AESGCM.test.js +248 -0
- package/dist/esm/src/primitives/__tests/AESGCM.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js +36 -0
- package/dist/esm/src/primitives/__tests/BRC42.private.vectors.js.map +1 -0
- package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js +36 -0
- package/dist/esm/src/primitives/__tests/BRC42.public.vectors.js.map +1 -0
- package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js +501 -0
- package/dist/esm/src/primitives/__tests/BigNumber.arithmatic.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js +185 -0
- package/dist/esm/src/primitives/__tests/BigNumber.binary.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js +149 -0
- package/dist/esm/src/primitives/__tests/BigNumber.constructor.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js +23 -0
- package/dist/esm/src/primitives/__tests/BigNumber.dhGroup.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js +268 -0
- package/dist/esm/src/primitives/__tests/BigNumber.fixtures.js.map +1 -0
- package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js +147 -0
- package/dist/esm/src/primitives/__tests/BigNumber.serializers.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js +322 -0
- package/dist/esm/src/primitives/__tests/BigNumber.utils.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/Curve.unit.test.js +145 -0
- package/dist/esm/src/primitives/__tests/Curve.unit.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/DRBG.test.js +22 -0
- package/dist/esm/src/primitives/__tests/DRBG.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/DRBG.vectors.js +170 -0
- package/dist/esm/src/primitives/__tests/DRBG.vectors.js.map +1 -0
- package/dist/esm/src/primitives/__tests/ECDH.test.js +34 -0
- package/dist/esm/src/primitives/__tests/ECDH.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/ECDSA.test.js +89 -0
- package/dist/esm/src/primitives/__tests/ECDSA.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/HMAC.test.js +60 -0
- package/dist/esm/src/primitives/__tests/HMAC.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/Hash.test.js +159 -0
- package/dist/esm/src/primitives/__tests/Hash.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js +122 -0
- package/dist/esm/src/primitives/__tests/PBKDF2.vectors.js.map +1 -0
- package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js +105 -0
- package/dist/esm/src/primitives/__tests/PrivateKey.split.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/PrivateKey.test.js +90 -0
- package/dist/esm/src/primitives/__tests/PrivateKey.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/PublicKey.test.js +83 -0
- package/dist/esm/src/primitives/__tests/PublicKey.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/Random.test.js +19 -0
- package/dist/esm/src/primitives/__tests/Random.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/Reader.test.js +282 -0
- package/dist/esm/src/primitives/__tests/Reader.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/ReductionContext.test.js +223 -0
- package/dist/esm/src/primitives/__tests/ReductionContext.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/Schnorr.test.js +213 -0
- package/dist/esm/src/primitives/__tests/Schnorr.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/SymmetricKey.test.js +51 -0
- package/dist/esm/src/primitives/__tests/SymmetricKey.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js +43 -0
- package/dist/esm/src/primitives/__tests/SymmetricKey.vectors.js.map +1 -0
- package/dist/esm/src/primitives/__tests/Writer.test.js +176 -0
- package/dist/esm/src/primitives/__tests/Writer.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/bug-31.test.js +32 -0
- package/dist/esm/src/primitives/__tests/bug-31.test.js.map +1 -0
- package/dist/esm/src/primitives/__tests/sighash.vectors.js +3506 -0
- package/dist/esm/src/primitives/__tests/sighash.vectors.js.map +1 -0
- package/dist/esm/src/primitives/__tests/utils.test.js +110 -0
- package/dist/esm/src/primitives/__tests/utils.test.js.map +1 -0
- package/dist/esm/src/primitives/index.js +66 -14
- package/dist/esm/src/primitives/index.js.map +1 -1
- package/dist/esm/src/primitives/utils.js +109 -80
- package/dist/esm/src/primitives/utils.js.map +1 -1
- package/dist/esm/src/script/LockingScript.js +8 -2
- package/dist/esm/src/script/LockingScript.js.map +1 -1
- package/dist/esm/src/script/OP.js +3 -1
- package/dist/esm/src/script/OP.js.map +1 -1
- package/dist/esm/src/script/Script.js +56 -48
- package/dist/esm/src/script/Script.js.map +1 -1
- package/dist/esm/src/script/ScriptChunk.js +2 -1
- package/dist/esm/src/script/ScriptTemplate.js +2 -1
- package/dist/esm/src/script/Spend.js +345 -301
- package/dist/esm/src/script/Spend.js.map +1 -1
- package/dist/esm/src/script/UnlockingScript.js +8 -2
- package/dist/esm/src/script/UnlockingScript.js.map +1 -1
- package/dist/esm/src/script/__tests/Script.test.js +347 -0
- package/dist/esm/src/script/__tests/Script.test.js.map +1 -0
- package/dist/esm/src/script/__tests/Spend.test.js +282 -0
- package/dist/esm/src/script/__tests/Spend.test.js.map +1 -0
- package/dist/esm/src/script/__tests/SpendComplex.test.js +51 -0
- package/dist/esm/src/script/__tests/SpendComplex.test.js.map +1 -0
- package/dist/esm/src/script/__tests/script.invalid.vectors.js +2370 -0
- package/dist/esm/src/script/__tests/script.invalid.vectors.js.map +1 -0
- package/dist/esm/src/script/__tests/script.valid.vectors.js +1181 -0
- package/dist/esm/src/script/__tests/script.valid.vectors.js.map +1 -0
- package/dist/esm/src/script/__tests/spend.valid.vectors.js +2298 -0
- package/dist/esm/src/script/__tests/spend.valid.vectors.js.map +1 -0
- package/dist/esm/src/script/index.js +31 -6
- package/dist/esm/src/script/index.js.map +1 -1
- package/dist/esm/src/script/templates/P2PKH.js +52 -39
- package/dist/esm/src/script/templates/P2PKH.js.map +1 -1
- package/dist/esm/src/script/templates/PushDrop.js +51 -46
- package/dist/esm/src/script/templates/PushDrop.js.map +1 -1
- package/dist/esm/src/script/templates/RPuzzle.js +55 -46
- package/dist/esm/src/script/templates/RPuzzle.js.map +1 -1
- package/dist/esm/src/script/templates/__tests/PushDrop.test.js +161 -0
- package/dist/esm/src/script/templates/__tests/PushDrop.test.js.map +1 -0
- package/dist/esm/src/script/templates/index.js +12 -3
- package/dist/esm/src/script/templates/index.js.map +1 -1
- package/dist/esm/src/totp/__tests/totp.test.js +67 -0
- package/dist/esm/src/totp/__tests/totp.test.js.map +1 -0
- package/dist/esm/src/totp/index.js +17 -1
- package/dist/esm/src/totp/index.js.map +1 -1
- package/dist/esm/src/totp/totp.js +15 -8
- package/dist/esm/src/totp/totp.js.map +1 -1
- package/dist/esm/src/transaction/Beef.js +160 -141
- package/dist/esm/src/transaction/Beef.js.map +1 -1
- package/dist/esm/src/transaction/BeefParty.js +30 -26
- package/dist/esm/src/transaction/BeefParty.js.map +1 -1
- package/dist/esm/src/transaction/BeefTx.js +32 -24
- package/dist/esm/src/transaction/BeefTx.js.map +1 -1
- package/dist/esm/src/transaction/Broadcaster.js +6 -2
- package/dist/esm/src/transaction/Broadcaster.js.map +1 -1
- package/dist/esm/src/transaction/ChainTracker.js +2 -1
- package/dist/esm/src/transaction/FeeModel.js +2 -1
- package/dist/esm/src/transaction/MerklePath.js +31 -23
- package/dist/esm/src/transaction/MerklePath.js.map +1 -1
- package/dist/esm/src/transaction/Transaction.js +96 -158
- package/dist/esm/src/transaction/Transaction.js.map +1 -1
- package/dist/esm/src/transaction/TransactionInput.js +2 -1
- package/dist/esm/src/transaction/TransactionOutput.js +2 -1
- package/dist/esm/src/transaction/__tests/Beef.test.js +393 -0
- package/dist/esm/src/transaction/__tests/Beef.test.js.map +1 -0
- package/dist/esm/src/transaction/__tests/MerklePath.test.js +209 -0
- package/dist/esm/src/transaction/__tests/MerklePath.test.js.map +1 -0
- package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js +219 -0
- package/dist/esm/src/transaction/__tests/Transaction.benchmarks.test.js.map +1 -0
- package/dist/esm/src/transaction/__tests/Transaction.test.js +1072 -0
- package/dist/esm/src/transaction/__tests/Transaction.test.js.map +1 -0
- package/dist/esm/src/transaction/__tests/bigtx.vectors.js +7 -0
- package/dist/esm/src/transaction/__tests/bigtx.vectors.js.map +1 -0
- package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js +11 -0
- package/dist/esm/src/transaction/__tests/bump.invalid.vectors.js.map +1 -0
- package/dist/esm/src/transaction/__tests/bump.valid.vectors.js +7 -0
- package/dist/esm/src/transaction/__tests/bump.valid.vectors.js.map +1 -0
- package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js +230 -0
- package/dist/esm/src/transaction/__tests/tx.invalid.vectors.js.map +1 -0
- package/dist/esm/src/transaction/__tests/tx.valid.vectors.js +296 -0
- package/dist/esm/src/transaction/__tests/tx.valid.vectors.js.map +1 -0
- package/dist/esm/src/transaction/broadcasters/ARC.js +46 -36
- package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js +9 -3
- package/dist/esm/src/transaction/broadcasters/DefaultBroadcaster.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js +19 -16
- package/dist/esm/src/transaction/broadcasters/WhatsOnChainBroadcaster.js.map +1 -1
- package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js +246 -0
- package/dist/esm/src/transaction/broadcasters/__tests/ARC.test.js.map +1 -0
- package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js +148 -0
- package/dist/esm/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.js.map +1 -0
- package/dist/esm/src/transaction/broadcasters/index.js +12 -3
- package/dist/esm/src/transaction/broadcasters/index.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js +9 -3
- package/dist/esm/src/transaction/chaintrackers/DefaultChainTracker.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js +12 -9
- package/dist/esm/src/transaction/chaintrackers/WhatsOnChain.js.map +1 -1
- package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js +155 -0
- package/dist/esm/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.js.map +1 -0
- package/dist/esm/src/transaction/chaintrackers/index.js +10 -2
- package/dist/esm/src/transaction/chaintrackers/index.js.map +1 -1
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +7 -4
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -1
- package/dist/esm/src/transaction/fee-models/index.js +8 -1
- package/dist/esm/src/transaction/fee-models/index.js.map +1 -1
- package/dist/esm/src/transaction/http/DefaultHttpClient.js +15 -12
- package/dist/esm/src/transaction/http/DefaultHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/FetchHttpClient.js +9 -3
- package/dist/esm/src/transaction/http/FetchHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/HttpClient.js +2 -1
- package/dist/esm/src/transaction/http/NodejsHttpClient.js +15 -9
- package/dist/esm/src/transaction/http/NodejsHttpClient.js.map +1 -1
- package/dist/esm/src/transaction/http/index.js +9 -3
- package/dist/esm/src/transaction/http/index.js.map +1 -1
- package/dist/esm/src/transaction/index.js +32 -6
- package/dist/esm/src/transaction/index.js.map +1 -1
- package/dist/esm/src/wallet/CachedKeyDeriver.js +69 -64
- package/dist/esm/src/wallet/CachedKeyDeriver.js.map +1 -1
- package/dist/esm/src/wallet/KeyDeriver.js +72 -60
- package/dist/esm/src/wallet/KeyDeriver.js.map +1 -1
- package/dist/esm/src/wallet/ProtoWallet.js +33 -16
- package/dist/esm/src/wallet/ProtoWallet.js.map +1 -1
- package/dist/esm/src/wallet/Wallet.interfaces.js +5 -2
- package/dist/esm/src/wallet/Wallet.interfaces.js.map +1 -1
- package/dist/esm/src/wallet/WalletClient.js +22 -15
- package/dist/esm/src/wallet/WalletClient.js.map +1 -1
- package/dist/esm/src/wallet/WalletError.js +6 -2
- package/dist/esm/src/wallet/WalletError.js.map +1 -1
- package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js +269 -0
- package/dist/esm/src/wallet/__tests/CachedKeyDeriver.test.js.map +1 -0
- package/dist/esm/src/wallet/__tests/KeyDeriver.test.js +113 -0
- package/dist/esm/src/wallet/__tests/KeyDeriver.test.js.map +1 -0
- package/dist/esm/src/wallet/__tests/ProtoWallet.test.js +475 -0
- package/dist/esm/src/wallet/__tests/ProtoWallet.test.js.map +1 -0
- package/dist/esm/src/wallet/index.js +32 -8
- package/dist/esm/src/wallet/index.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js +7 -4
- package/dist/esm/src/wallet/substrates/HTTPWalletJSON.js.map +1 -1
- package/dist/esm/src/wallet/substrates/HTTPWalletWire.js +17 -11
- package/dist/esm/src/wallet/substrates/HTTPWalletWire.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWire.js +2 -1
- package/dist/esm/src/wallet/substrates/WalletWireCalls.js +3 -1
- package/dist/esm/src/wallet/substrates/WalletWireCalls.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js +1300 -1317
- package/dist/esm/src/wallet/substrates/WalletWireProcessor.js.map +1 -1
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js +327 -273
- package/dist/esm/src/wallet/substrates/WalletWireTransceiver.js.map +1 -1
- package/dist/esm/src/wallet/substrates/XDM.js +12 -6
- package/dist/esm/src/wallet/substrates/XDM.js.map +1 -1
- package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js +1962 -0
- package/dist/esm/src/wallet/substrates/__tests/WalletWire.integration.test.js.map +1 -0
- package/dist/esm/src/wallet/substrates/__tests/XDM.test.js +579 -0
- package/dist/esm/src/wallet/substrates/__tests/XDM.test.js.map +1 -0
- package/dist/esm/src/wallet/substrates/index.js +32 -7
- package/dist/esm/src/wallet/substrates/index.js.map +1 -1
- package/dist/esm/src/wallet/substrates/window.CWI.js +8 -5
- package/dist/esm/src/wallet/substrates/window.CWI.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/types/mod.d.ts +15 -15
- package/dist/types/mod.d.ts.map +1 -1
- package/dist/types/src/auth/Peer.d.ts +14 -14
- package/dist/types/src/auth/Peer.d.ts.map +1 -1
- package/dist/types/src/auth/SessionManager.d.ts +5 -5
- package/dist/types/src/auth/SessionManager.d.ts.map +1 -1
- package/dist/types/src/auth/__tests/Peer.test.d.ts +2 -0
- package/dist/types/src/auth/__tests/Peer.test.d.ts.map +1 -0
- package/dist/types/src/auth/__tests/SessionManager.test.d.ts +2 -0
- package/dist/types/src/auth/__tests/SessionManager.test.d.ts.map +1 -0
- package/dist/types/src/auth/certificates/Certificate.d.ts +2 -2
- package/dist/types/src/auth/certificates/Certificate.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/MasterCertificate.d.ts +2 -2
- package/dist/types/src/auth/certificates/MasterCertificate.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts +2 -2
- package/dist/types/src/auth/certificates/VerifiableCertificate.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts +2 -0
- package/dist/types/src/auth/certificates/__tests/Certificate.test.d.ts.map +1 -0
- package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts +2 -2
- package/dist/types/src/auth/certificates/__tests/CompletedProtoWallet.d.ts.map +1 -1
- package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts +2 -0
- package/dist/types/src/auth/certificates/__tests/MasterCertificate.test.d.ts.map +1 -0
- package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts +2 -0
- package/dist/types/src/auth/certificates/__tests/VerifiableCertificate.test.d.ts.map +1 -0
- package/dist/types/src/auth/certificates/index.d.ts +4 -4
- package/dist/types/src/auth/certificates/index.d.ts.map +1 -1
- package/dist/types/src/auth/clients/AuthFetch.d.ts +9 -9
- package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
- package/dist/types/src/auth/clients/index.d.ts +1 -1
- package/dist/types/src/auth/clients/index.d.ts.map +1 -1
- package/dist/types/src/auth/index.d.ts +7 -7
- package/dist/types/src/auth/index.d.ts.map +1 -1
- package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +1 -1
- package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
- package/dist/types/src/auth/transports/index.d.ts +1 -1
- package/dist/types/src/auth/transports/index.d.ts.map +1 -1
- package/dist/types/src/auth/types.d.ts +1 -1
- package/dist/types/src/auth/types.d.ts.map +1 -1
- package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts +2 -0
- package/dist/types/src/auth/utils/__tests/cryptononce.test.d.ts.map +1 -0
- package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts +2 -0
- package/dist/types/src/auth/utils/__tests/getVerifiableCertificates.test.d.ts.map +1 -0
- package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts +2 -0
- package/dist/types/src/auth/utils/__tests/validateCertificates.test.d.ts.map +1 -0
- package/dist/types/src/auth/utils/createNonce.d.ts +1 -1
- package/dist/types/src/auth/utils/createNonce.d.ts.map +1 -1
- package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts +3 -3
- package/dist/types/src/auth/utils/getVerifiableCertificates.d.ts.map +1 -1
- package/dist/types/src/auth/utils/index.d.ts +4 -4
- package/dist/types/src/auth/utils/index.d.ts.map +1 -1
- package/dist/types/src/auth/utils/validateCertificates.d.ts +2 -2
- package/dist/types/src/auth/utils/validateCertificates.d.ts.map +1 -1
- package/dist/types/src/auth/utils/verifyNonce.d.ts +1 -1
- package/dist/types/src/auth/utils/verifyNonce.d.ts.map +1 -1
- package/dist/types/src/compat/BSM.d.ts +3 -3
- package/dist/types/src/compat/BSM.d.ts.map +1 -1
- package/dist/types/src/compat/ECIES.d.ts +38 -38
- package/dist/types/src/compat/ECIES.d.ts.map +1 -1
- package/dist/types/src/compat/HD.d.ts +53 -53
- package/dist/types/src/compat/HD.d.ts.map +1 -1
- package/dist/types/src/compat/Mnemonic.d.ts +79 -79
- package/dist/types/src/compat/Mnemonic.d.ts.map +1 -1
- package/dist/types/src/compat/Utxo.d.ts +3 -3
- package/dist/types/src/compat/Utxo.d.ts.map +1 -1
- package/dist/types/src/compat/__tests/BSM.test.d.ts +2 -0
- package/dist/types/src/compat/__tests/BSM.test.d.ts.map +1 -0
- package/dist/types/src/compat/__tests/ECIES.test.d.ts +2 -0
- package/dist/types/src/compat/__tests/ECIES.test.d.ts.map +1 -0
- package/dist/types/src/compat/__tests/HD.test.d.ts +2 -0
- package/dist/types/src/compat/__tests/HD.test.d.ts.map +1 -0
- package/dist/types/src/compat/__tests/Mnemonic.test.d.ts +2 -0
- package/dist/types/src/compat/__tests/Mnemonic.test.d.ts.map +1 -0
- package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts +11 -0
- package/dist/types/src/compat/__tests/Mnemonic.vectors.d.ts.map +1 -0
- package/dist/types/src/compat/index.d.ts +5 -5
- package/dist/types/src/compat/index.d.ts.map +1 -1
- package/dist/types/src/messages/EncryptedMessage.d.ts +2 -2
- package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -1
- package/dist/types/src/messages/SignedMessage.d.ts +2 -2
- package/dist/types/src/messages/SignedMessage.d.ts.map +1 -1
- package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts +2 -0
- package/dist/types/src/messages/__tests/EncryptedMessage.test.d.ts.map +1 -0
- package/dist/types/src/messages/__tests/SignedMessage.test.d.ts +2 -0
- package/dist/types/src/messages/__tests/SignedMessage.test.d.ts.map +1 -0
- package/dist/types/src/messages/index.d.ts +2 -2
- package/dist/types/src/messages/index.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/LookupResolver.d.ts +9 -9
- package/dist/types/src/overlay-tools/LookupResolver.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts +21 -21
- package/dist/types/src/overlay-tools/OverlayAdminTokenTemplate.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts +16 -16
- package/dist/types/src/overlay-tools/SHIPBroadcaster.d.ts.map +1 -1
- package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts +2 -0
- package/dist/types/src/overlay-tools/__tests/LookupResolver.test.d.ts.map +1 -0
- package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts +2 -0
- package/dist/types/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.d.ts.map +1 -0
- package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts +2 -0
- package/dist/types/src/overlay-tools/__tests/SHIPBroadcaster.test.d.ts.map +1 -0
- package/dist/types/src/overlay-tools/index.d.ts +5 -5
- package/dist/types/src/overlay-tools/index.d.ts.map +1 -1
- package/dist/types/src/primitives/BasePoint.d.ts +1 -1
- package/dist/types/src/primitives/BasePoint.d.ts.map +1 -1
- package/dist/types/src/primitives/BigNumber.d.ts +1 -1
- package/dist/types/src/primitives/BigNumber.d.ts.map +1 -1
- package/dist/types/src/primitives/Curve.d.ts +3 -3
- package/dist/types/src/primitives/Curve.d.ts.map +1 -1
- package/dist/types/src/primitives/DRBG.d.ts +1 -1
- package/dist/types/src/primitives/DRBG.d.ts.map +1 -1
- package/dist/types/src/primitives/ECDSA.d.ts +3 -3
- package/dist/types/src/primitives/ECDSA.d.ts.map +1 -1
- package/dist/types/src/primitives/Hash.d.ts.map +1 -1
- package/dist/types/src/primitives/JacobianPoint.d.ts +3 -3
- package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -1
- package/dist/types/src/primitives/K256.d.ts +2 -2
- package/dist/types/src/primitives/K256.d.ts.map +1 -1
- package/dist/types/src/primitives/Mersenne.d.ts +1 -1
- package/dist/types/src/primitives/Mersenne.d.ts.map +1 -1
- package/dist/types/src/primitives/MontgomoryMethod.d.ts +2 -2
- package/dist/types/src/primitives/MontgomoryMethod.d.ts.map +1 -1
- package/dist/types/src/primitives/Point.d.ts +17 -13
- package/dist/types/src/primitives/Point.d.ts.map +1 -1
- package/dist/types/src/primitives/Polynomial.d.ts +2 -2
- package/dist/types/src/primitives/Polynomial.d.ts.map +1 -1
- package/dist/types/src/primitives/PrivateKey.d.ts +5 -5
- package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -1
- package/dist/types/src/primitives/PublicKey.d.ts +4 -4
- package/dist/types/src/primitives/PublicKey.d.ts.map +1 -1
- package/dist/types/src/primitives/Random.d.ts.map +1 -1
- package/dist/types/src/primitives/ReductionContext.d.ts +2 -2
- package/dist/types/src/primitives/ReductionContext.d.ts.map +1 -1
- package/dist/types/src/primitives/Schnorr.d.ts +17 -17
- package/dist/types/src/primitives/Schnorr.d.ts.map +1 -1
- package/dist/types/src/primitives/Signature.d.ts +2 -2
- package/dist/types/src/primitives/Signature.d.ts.map +1 -1
- package/dist/types/src/primitives/SymmetricKey.d.ts +14 -14
- package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -1
- package/dist/types/src/primitives/TransactionSignature.d.ts +9 -9
- package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -1
- package/dist/types/src/primitives/__tests/AESGCM.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/AESGCM.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts +8 -0
- package/dist/types/src/primitives/__tests/BRC42.private.vectors.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts +8 -0
- package/dist/types/src/primitives/__tests/BRC42.public.vectors.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/BigNumber.arithmatic.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/BigNumber.binary.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/BigNumber.constructor.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/BigNumber.dhGroup.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts +15 -0
- package/dist/types/src/primitives/__tests/BigNumber.fixtures.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/BigNumber.serializers.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/BigNumber.utils.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/Curve.unit.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/DRBG.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/DRBG.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts +10 -0
- package/dist/types/src/primitives/__tests/DRBG.vectors.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/ECDH.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/ECDH.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/ECDSA.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/ECDSA.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/HMAC.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/HMAC.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/Hash.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/Hash.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts +68 -0
- package/dist/types/src/primitives/__tests/PBKDF2.vectors.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/PrivateKey.split.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/PrivateKey.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/PublicKey.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/PublicKey.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/Random.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/Random.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/Reader.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/Reader.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/ReductionContext.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/Schnorr.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/Schnorr.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/SymmetricKey.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts +20 -0
- package/dist/types/src/primitives/__tests/SymmetricKey.vectors.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/Writer.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/Writer.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/bug-31.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/bug-31.test.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/sighash.vectors.d.ts +3 -0
- package/dist/types/src/primitives/__tests/sighash.vectors.d.ts.map +1 -0
- package/dist/types/src/primitives/__tests/utils.test.d.ts +2 -0
- package/dist/types/src/primitives/__tests/utils.test.d.ts.map +1 -0
- package/dist/types/src/primitives/index.d.ts +14 -14
- package/dist/types/src/primitives/index.d.ts.map +1 -1
- package/dist/types/src/primitives/utils.d.ts +1 -1
- package/dist/types/src/primitives/utils.d.ts.map +1 -1
- package/dist/types/src/script/LockingScript.d.ts +1 -1
- package/dist/types/src/script/LockingScript.d.ts.map +1 -1
- package/dist/types/src/script/Script.d.ts +5 -5
- package/dist/types/src/script/Script.d.ts.map +1 -1
- package/dist/types/src/script/ScriptTemplate.d.ts +3 -3
- package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -1
- package/dist/types/src/script/Spend.d.ts +4 -4
- package/dist/types/src/script/Spend.d.ts.map +1 -1
- package/dist/types/src/script/UnlockingScript.d.ts +1 -1
- package/dist/types/src/script/UnlockingScript.d.ts.map +1 -1
- package/dist/types/src/script/__tests/Script.test.d.ts +2 -0
- package/dist/types/src/script/__tests/Script.test.d.ts.map +1 -0
- package/dist/types/src/script/__tests/Spend.test.d.ts +2 -0
- package/dist/types/src/script/__tests/Spend.test.d.ts.map +1 -0
- package/dist/types/src/script/__tests/SpendComplex.test.d.ts +2 -0
- package/dist/types/src/script/__tests/SpendComplex.test.d.ts.map +1 -0
- package/dist/types/src/script/__tests/script.invalid.vectors.d.ts +3 -0
- package/dist/types/src/script/__tests/script.invalid.vectors.d.ts.map +1 -0
- package/dist/types/src/script/__tests/script.valid.vectors.d.ts +3 -0
- package/dist/types/src/script/__tests/script.valid.vectors.d.ts.map +1 -0
- package/dist/types/src/script/__tests/spend.valid.vectors.d.ts +3 -0
- package/dist/types/src/script/__tests/spend.valid.vectors.d.ts.map +1 -0
- package/dist/types/src/script/index.d.ts +7 -7
- package/dist/types/src/script/index.d.ts.map +1 -1
- package/dist/types/src/script/templates/P2PKH.d.ts +7 -7
- package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -1
- package/dist/types/src/script/templates/PushDrop.d.ts +7 -7
- package/dist/types/src/script/templates/PushDrop.d.ts.map +1 -1
- package/dist/types/src/script/templates/RPuzzle.d.ts +9 -9
- package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -1
- package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts +2 -0
- package/dist/types/src/script/templates/__tests/PushDrop.test.d.ts.map +1 -0
- package/dist/types/src/script/templates/index.d.ts +3 -3
- package/dist/types/src/script/templates/index.d.ts.map +1 -1
- package/dist/types/src/totp/__tests/totp.test.d.ts +2 -0
- package/dist/types/src/totp/__tests/totp.test.d.ts.map +1 -0
- package/dist/types/src/totp/index.d.ts +1 -1
- package/dist/types/src/totp/index.d.ts.map +1 -1
- package/dist/types/src/transaction/Beef.d.ts +96 -96
- package/dist/types/src/transaction/Beef.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefParty.d.ts +23 -23
- package/dist/types/src/transaction/BeefParty.d.ts.map +1 -1
- package/dist/types/src/transaction/BeefTx.d.ts +5 -5
- package/dist/types/src/transaction/BeefTx.d.ts.map +1 -1
- package/dist/types/src/transaction/Broadcaster.d.ts +1 -1
- package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -1
- package/dist/types/src/transaction/ChainTracker.d.ts +2 -2
- package/dist/types/src/transaction/FeeModel.d.ts +1 -1
- package/dist/types/src/transaction/FeeModel.d.ts.map +1 -1
- package/dist/types/src/transaction/MerklePath.d.ts +2 -2
- package/dist/types/src/transaction/MerklePath.d.ts.map +1 -1
- package/dist/types/src/transaction/Transaction.d.ts +11 -19
- package/dist/types/src/transaction/Transaction.d.ts.map +1 -1
- package/dist/types/src/transaction/TransactionInput.d.ts +2 -2
- package/dist/types/src/transaction/TransactionInput.d.ts.map +1 -1
- package/dist/types/src/transaction/TransactionOutput.d.ts +1 -1
- package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -1
- package/dist/types/src/transaction/__tests/Beef.test.d.ts +2 -0
- package/dist/types/src/transaction/__tests/Beef.test.d.ts.map +1 -0
- package/dist/types/src/transaction/__tests/MerklePath.test.d.ts +2 -0
- package/dist/types/src/transaction/__tests/MerklePath.test.d.ts.map +1 -0
- package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts +2 -0
- package/dist/types/src/transaction/__tests/Transaction.benchmarks.test.d.ts.map +1 -0
- package/dist/types/src/transaction/__tests/Transaction.test.d.ts +2 -0
- package/dist/types/src/transaction/__tests/Transaction.test.d.ts.map +1 -0
- package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts +6 -0
- package/dist/types/src/transaction/__tests/bigtx.vectors.d.ts.map +1 -0
- package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts +6 -0
- package/dist/types/src/transaction/__tests/bump.invalid.vectors.d.ts.map +1 -0
- package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts +5 -0
- package/dist/types/src/transaction/__tests/bump.valid.vectors.d.ts.map +1 -0
- package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts +3 -0
- package/dist/types/src/transaction/__tests/tx.invalid.vectors.d.ts.map +1 -0
- package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts +3 -0
- package/dist/types/src/transaction/__tests/tx.valid.vectors.d.ts.map +1 -0
- package/dist/types/src/transaction/broadcasters/ARC.d.ts +3 -3
- package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts +2 -2
- package/dist/types/src/transaction/broadcasters/DefaultBroadcaster.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts +4 -4
- package/dist/types/src/transaction/broadcasters/WhatsOnChainBroadcaster.d.ts.map +1 -1
- package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts +2 -0
- package/dist/types/src/transaction/broadcasters/__tests/ARC.test.d.ts.map +1 -0
- package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts +2 -0
- package/dist/types/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.d.ts.map +1 -0
- package/dist/types/src/transaction/broadcasters/index.d.ts +4 -4
- package/dist/types/src/transaction/broadcasters/index.d.ts.map +1 -1
- package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts +1 -1
- package/dist/types/src/transaction/chaintrackers/DefaultChainTracker.d.ts.map +1 -1
- package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts +3 -3
- package/dist/types/src/transaction/chaintrackers/WhatsOnChain.d.ts.map +1 -1
- package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts +2 -0
- package/dist/types/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.d.ts.map +1 -0
- package/dist/types/src/transaction/chaintrackers/index.d.ts +3 -3
- package/dist/types/src/transaction/chaintrackers/index.d.ts.map +1 -1
- package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts +2 -2
- package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -1
- package/dist/types/src/transaction/fee-models/index.d.ts +1 -1
- package/dist/types/src/transaction/fee-models/index.d.ts.map +1 -1
- package/dist/types/src/transaction/http/DefaultHttpClient.d.ts +2 -2
- package/dist/types/src/transaction/http/DefaultHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/FetchHttpClient.d.ts +6 -6
- package/dist/types/src/transaction/http/FetchHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/HttpClient.d.ts +4 -4
- package/dist/types/src/transaction/http/HttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/NodejsHttpClient.d.ts +4 -4
- package/dist/types/src/transaction/http/NodejsHttpClient.d.ts.map +1 -1
- package/dist/types/src/transaction/http/index.d.ts +6 -6
- package/dist/types/src/transaction/http/index.d.ts.map +1 -1
- package/dist/types/src/transaction/index.d.ts +10 -10
- package/dist/types/src/transaction/index.d.ts.map +1 -1
- package/dist/types/src/wallet/CachedKeyDeriver.d.ts +61 -61
- package/dist/types/src/wallet/CachedKeyDeriver.d.ts.map +1 -1
- package/dist/types/src/wallet/KeyDeriver.d.ts +80 -80
- package/dist/types/src/wallet/KeyDeriver.d.ts.map +1 -1
- package/dist/types/src/wallet/ProtoWallet.d.ts +3 -3
- package/dist/types/src/wallet/ProtoWallet.d.ts.map +1 -1
- package/dist/types/src/wallet/Wallet.interfaces.d.ts +144 -144
- package/dist/types/src/wallet/Wallet.interfaces.d.ts.map +1 -1
- package/dist/types/src/wallet/WalletClient.d.ts +1 -1
- package/dist/types/src/wallet/WalletClient.d.ts.map +1 -1
- package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts +2 -0
- package/dist/types/src/wallet/__tests/CachedKeyDeriver.test.d.ts.map +1 -0
- package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts +2 -0
- package/dist/types/src/wallet/__tests/KeyDeriver.test.d.ts.map +1 -0
- package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts +2 -0
- package/dist/types/src/wallet/__tests/ProtoWallet.test.d.ts.map +1 -0
- package/dist/types/src/wallet/index.d.ts +8 -8
- package/dist/types/src/wallet/index.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletJSON.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts +1 -1
- package/dist/types/src/wallet/substrates/HTTPWalletWire.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/WalletWire.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/WalletWireCalls.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts +2 -2
- package/dist/types/src/wallet/substrates/WalletWireProcessor.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts +10 -10
- package/dist/types/src/wallet/substrates/WalletWireTransceiver.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/XDM.d.ts +2 -2
- package/dist/types/src/wallet/substrates/XDM.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts +2 -0
- package/dist/types/src/wallet/substrates/__tests/WalletWire.integration.test.d.ts.map +1 -0
- package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts +5 -0
- package/dist/types/src/wallet/substrates/__tests/XDM.test.d.ts.map +1 -0
- package/dist/types/src/wallet/substrates/index.d.ts +7 -7
- package/dist/types/src/wallet/substrates/index.d.ts.map +1 -1
- package/dist/types/src/wallet/substrates/window.CWI.d.ts +19 -19
- 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 +1 -1
- package/docs/auth.md +55 -51
- package/docs/compat.md +24 -24
- package/docs/messages.md +7 -5
- package/docs/overlay-tools.md +21 -21
- package/docs/primitives.md +239 -242
- package/docs/script.md +31 -31
- package/docs/totp.md +5 -5
- package/docs/transaction.md +76 -78
- package/docs/wallet-substrates.md +6 -6
- package/docs/wallet.md +129 -129
- package/mod.ts +15 -15
- package/package.json +10 -2
- package/src/auth/Peer.ts +217 -72
- package/src/auth/SessionManager.ts +8 -6
- package/src/auth/__tests/Peer.test.ts +314 -159
- package/src/auth/certificates/Certificate.ts +16 -6
- package/src/auth/certificates/MasterCertificate.ts +96 -43
- package/src/auth/certificates/VerifiableCertificate.ts +29 -9
- package/src/auth/certificates/__tests/Certificate.test.ts +160 -146
- package/src/auth/certificates/__tests/CompletedProtoWallet.ts +148 -59
- package/src/auth/certificates/__tests/MasterCertificate.test.ts +65 -41
- package/src/auth/certificates/__tests/VerifiableCertificate.test.ts +47 -31
- package/src/auth/certificates/index.ts +4 -4
- package/src/auth/clients/AuthFetch.ts +316 -231
- package/src/auth/clients/index.ts +1 -1
- package/src/auth/index.ts +7 -7
- package/src/auth/transports/SimplifiedFetchTransport.ts +166 -124
- package/src/auth/transports/index.ts +1 -1
- package/src/auth/types.ts +1 -1
- package/src/auth/utils/__tests/cryptononce.test.ts +52 -25
- package/src/auth/utils/__tests/getVerifiableCertificates.test.ts +64 -38
- package/src/auth/utils/__tests/validateCertificates.test.ts +101 -89
- package/src/auth/utils/createNonce.ts +11 -3
- package/src/auth/utils/getVerifiableCertificates.ts +11 -6
- package/src/auth/utils/index.ts +4 -4
- package/src/auth/utils/validateCertificates.ts +53 -39
- package/src/auth/utils/verifyNonce.ts +6 -2
- package/src/compat/BSM.ts +17 -9
- package/src/compat/ECIES.ts +239 -123
- package/src/compat/HD.ts +82 -63
- package/src/compat/Mnemonic.ts +98 -87
- package/src/compat/Utxo.ts +12 -9
- package/src/compat/__tests/BSM.test.ts +43 -16
- package/src/compat/__tests/ECIES.test.ts +117 -52
- package/src/compat/__tests/HD.test.ts +49 -38
- package/src/compat/__tests/Mnemonic.test.ts +145 -145
- package/src/compat/index.ts +5 -5
- package/src/messages/EncryptedMessage.ts +11 -7
- package/src/messages/SignedMessage.ts +19 -14
- package/src/messages/__tests/EncryptedMessage.test.ts +55 -56
- package/src/messages/__tests/SignedMessage.test.ts +58 -52
- package/src/messages/index.ts +2 -2
- package/src/overlay-tools/LookupResolver.ts +65 -33
- package/src/overlay-tools/OverlayAdminTokenTemplate.ts +52 -27
- package/src/overlay-tools/SHIPBroadcaster.ts +134 -59
- package/src/overlay-tools/__tests/LookupResolver.test.ts +723 -323
- package/src/overlay-tools/__tests/OverlayAdminTokenTemplate.test.ts +50 -22
- package/src/overlay-tools/__tests/SHIPBroadcaster.test.ts +607 -290
- package/src/overlay-tools/index.ts +5 -5
- package/src/primitives/BasePoint.ts +1 -1
- package/src/primitives/BigNumber.ts +94 -87
- package/src/primitives/Curve.ts +49 -30
- package/src/primitives/DRBG.ts +10 -12
- package/src/primitives/ECDSA.ts +59 -33
- package/src/primitives/Hash.ts +298 -179
- package/src/primitives/JacobianPoint.ts +55 -21
- package/src/primitives/K256.ts +2 -2
- package/src/primitives/Mersenne.ts +1 -1
- package/src/primitives/MontgomoryMethod.ts +2 -2
- package/src/primitives/Point.ts +193 -113
- package/src/primitives/Polynomial.ts +12 -7
- package/src/primitives/PrivateKey.ts +44 -20
- package/src/primitives/PublicKey.ts +21 -11
- package/src/primitives/Random.ts +7 -5
- package/src/primitives/ReductionContext.ts +4 -4
- package/src/primitives/Schnorr.ts +45 -23
- package/src/primitives/Signature.ts +27 -19
- package/src/primitives/SymmetricKey.ts +17 -17
- package/src/primitives/TransactionSignature.ts +29 -18
- package/src/primitives/__tests/AESGCM.test.ts +635 -329
- package/src/primitives/__tests/BigNumber.arithmatic.test.ts +721 -502
- package/src/primitives/__tests/BigNumber.binary.test.ts +271 -190
- package/src/primitives/__tests/BigNumber.constructor.test.ts +60 -24
- package/src/primitives/__tests/BigNumber.dhGroup.test.ts +19 -15
- package/src/primitives/__tests/BigNumber.serializers.test.ts +183 -157
- package/src/primitives/__tests/BigNumber.utils.test.ts +394 -304
- package/src/primitives/__tests/Curve.unit.test.ts +158 -143
- package/src/primitives/__tests/DRBG.test.ts +13 -13
- package/src/primitives/__tests/ECDH.test.ts +15 -8
- package/src/primitives/__tests/ECDSA.test.ts +63 -57
- package/src/primitives/__tests/HMAC.test.ts +55 -49
- package/src/primitives/__tests/Hash.test.ts +96 -85
- package/src/primitives/__tests/PrivateKey.split.test.ts +29 -9
- package/src/primitives/__tests/PrivateKey.test.ts +53 -50
- package/src/primitives/__tests/PublicKey.test.ts +15 -6
- package/src/primitives/__tests/Random.test.ts +10 -10
- package/src/primitives/__tests/Reader.test.ts +240 -219
- package/src/primitives/__tests/ReductionContext.test.ts +271 -234
- package/src/primitives/__tests/Schnorr.test.ts +252 -242
- package/src/primitives/__tests/SymmetricKey.test.ts +53 -50
- package/src/primitives/__tests/Writer.test.ts +23 -13
- package/src/primitives/__tests/bug-31.test.ts +25 -23
- package/src/primitives/__tests/utils.test.ts +70 -19
- package/src/primitives/index.ts +14 -14
- package/src/primitives/utils.ts +88 -63
- package/src/script/LockingScript.ts +1 -1
- package/src/script/Script.ts +14 -10
- package/src/script/ScriptTemplate.ts +5 -7
- package/src/script/Spend.ts +314 -118
- package/src/script/UnlockingScript.ts +1 -1
- package/src/script/__tests/Script.test.ts +68 -54
- package/src/script/__tests/Spend.test.ts +188 -68
- package/src/script/__tests/SpendComplex.test.ts +36 -26
- package/src/script/__tests/script.valid.vectors.ts +1064 -3100
- package/src/script/index.ts +7 -7
- package/src/script/templates/P2PKH.ts +63 -52
- package/src/script/templates/PushDrop.ts +117 -89
- package/src/script/templates/RPuzzle.ts +72 -54
- package/src/script/templates/__tests/PushDrop.test.ts +146 -40
- package/src/script/templates/index.ts +3 -3
- package/src/totp/__tests/totp.test.ts +39 -39
- package/src/totp/index.ts +1 -1
- package/src/totp/totp.ts +2 -2
- package/src/transaction/Beef.ts +211 -141
- package/src/transaction/BeefParty.ts +35 -27
- package/src/transaction/BeefTx.ts +13 -9
- package/src/transaction/Broadcaster.ts +11 -7
- package/src/transaction/ChainTracker.ts +2 -2
- package/src/transaction/FeeModel.ts +2 -2
- package/src/transaction/MerklePath.ts +81 -37
- package/src/transaction/Transaction.ts +185 -208
- package/src/transaction/TransactionInput.ts +2 -2
- package/src/transaction/TransactionOutput.ts +2 -2
- package/src/transaction/__tests/Beef.test.ts +359 -297
- package/src/transaction/__tests/MerklePath.test.ts +163 -131
- package/src/transaction/__tests/Transaction.benchmarks.test.ts +235 -202
- package/src/transaction/__tests/Transaction.test.ts +746 -459
- package/src/transaction/broadcasters/ARC.ts +120 -94
- package/src/transaction/broadcasters/DefaultBroadcaster.ts +11 -5
- package/src/transaction/broadcasters/WhatsOnChainBroadcaster.ts +46 -33
- package/src/transaction/broadcasters/__tests/ARC.test.ts +77 -45
- package/src/transaction/broadcasters/__tests/WhatsOnChainBroadcaster.test.ts +25 -17
- package/src/transaction/broadcasters/index.ts +4 -4
- package/src/transaction/chaintrackers/DefaultChainTracker.ts +4 -4
- package/src/transaction/chaintrackers/WhatsOnChain.ts +53 -38
- package/src/transaction/chaintrackers/__tests/WhatsOnChainChainTracker.test.ts +138 -102
- package/src/transaction/chaintrackers/index.ts +3 -3
- package/src/transaction/fee-models/SatoshisPerKilobyte.ts +37 -32
- package/src/transaction/fee-models/index.ts +1 -1
- package/src/transaction/http/DefaultHttpClient.ts +17 -17
- package/src/transaction/http/FetchHttpClient.ts +18 -9
- package/src/transaction/http/HttpClient.ts +30 -25
- package/src/transaction/http/NodejsHttpClient.ts +42 -28
- package/src/transaction/http/index.ts +10 -6
- package/src/transaction/index.ts +14 -10
- package/src/wallet/CachedKeyDeriver.ts +118 -72
- package/src/wallet/KeyDeriver.ts +186 -105
- package/src/wallet/ProtoWallet.ts +53 -17
- package/src/wallet/Wallet.interfaces.ts +158 -149
- package/src/wallet/WalletClient.ts +316 -58
- package/src/wallet/__tests/CachedKeyDeriver.test.ts +83 -27
- package/src/wallet/__tests/KeyDeriver.test.ts +219 -116
- package/src/wallet/__tests/ProtoWallet.test.ts +420 -339
- package/src/wallet/index.ts +8 -8
- package/src/wallet/substrates/HTTPWalletJSON.ts +201 -32
- package/src/wallet/substrates/HTTPWalletWire.ts +30 -26
- package/src/wallet/substrates/WalletWire.ts +1 -1
- package/src/wallet/substrates/WalletWireCalls.ts +3 -3
- package/src/wallet/substrates/WalletWireProcessor.ts +1651 -1515
- package/src/wallet/substrates/WalletWireTransceiver.ts +1424 -854
- package/src/wallet/substrates/XDM.ts +427 -37
- package/src/wallet/substrates/__tests/WalletWire.integration.test.ts +484 -223
- package/src/wallet/substrates/__tests/XDM.test.ts +191 -195
- package/src/wallet/substrates/index.ts +7 -7
- package/src/wallet/substrates/window.CWI.ts +524 -65
package/src/script/Spend.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import LockingScript from './LockingScript
|
|
2
|
-
import UnlockingScript from './UnlockingScript
|
|
3
|
-
import Script from './Script
|
|
4
|
-
import BigNumber from '../primitives/BigNumber
|
|
5
|
-
import OP from './OP
|
|
6
|
-
import ScriptChunk from './ScriptChunk
|
|
7
|
-
import { toHex, minimallyEncode } from '../primitives/utils
|
|
8
|
-
import * as Hash from '../primitives/Hash
|
|
9
|
-
import TransactionSignature from '../primitives/TransactionSignature
|
|
10
|
-
import PublicKey from '../primitives/PublicKey
|
|
11
|
-
import { verify } from '../primitives/ECDSA
|
|
12
|
-
import TransactionInput from '../transaction/TransactionInput
|
|
13
|
-
import TransactionOutput from '../transaction/TransactionOutput
|
|
1
|
+
import LockingScript from './LockingScript'
|
|
2
|
+
import UnlockingScript from './UnlockingScript'
|
|
3
|
+
import Script from './Script'
|
|
4
|
+
import BigNumber from '../primitives/BigNumber'
|
|
5
|
+
import OP from './OP'
|
|
6
|
+
import ScriptChunk from './ScriptChunk'
|
|
7
|
+
import { toHex, minimallyEncode } from '../primitives/utils'
|
|
8
|
+
import * as Hash from '../primitives/Hash'
|
|
9
|
+
import TransactionSignature from '../primitives/TransactionSignature'
|
|
10
|
+
import PublicKey from '../primitives/PublicKey'
|
|
11
|
+
import { verify } from '../primitives/ECDSA'
|
|
12
|
+
import TransactionInput from '../transaction/TransactionInput'
|
|
13
|
+
import TransactionOutput from '../transaction/TransactionOutput'
|
|
14
14
|
|
|
15
15
|
// These constants control the current behavior of the interpreter.
|
|
16
16
|
// In the future, all of them will go away.
|
|
@@ -144,11 +144,13 @@ export default class Spend {
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
const isOpcodeDisabled = (op: number): boolean => {
|
|
147
|
-
return
|
|
147
|
+
return (
|
|
148
|
+
op === OP.OP_2MUL ||
|
|
148
149
|
op === OP.OP_2DIV ||
|
|
149
150
|
op === OP.OP_VERIF ||
|
|
150
151
|
op === OP.OP_VERNOTIF ||
|
|
151
152
|
op === OP.OP_VER
|
|
153
|
+
)
|
|
152
154
|
}
|
|
153
155
|
|
|
154
156
|
const isChunkMinimal = (chunk: ScriptChunk): boolean => {
|
|
@@ -179,8 +181,11 @@ export default class Spend {
|
|
|
179
181
|
return true
|
|
180
182
|
}
|
|
181
183
|
|
|
182
|
-
// Following example from sCrypt now using Number.MAX_SAFE_INTEGER (bsv/lib/transaction/input/input
|
|
183
|
-
const isMinimallyEncoded = (
|
|
184
|
+
// Following example from sCrypt now using Number.MAX_SAFE_INTEGER (bsv/lib/transaction/input/input).
|
|
185
|
+
const isMinimallyEncoded = (
|
|
186
|
+
buf: number[],
|
|
187
|
+
maxNumSize: number = Number.MAX_SAFE_INTEGER
|
|
188
|
+
): boolean => {
|
|
184
189
|
if (buf.length > maxNumSize) {
|
|
185
190
|
return false
|
|
186
191
|
}
|
|
@@ -316,15 +321,21 @@ export default class Spend {
|
|
|
316
321
|
|
|
317
322
|
const checkPublicKeyEncoding = (buf: number[]): boolean => {
|
|
318
323
|
if (buf.length < 33) {
|
|
319
|
-
this.scriptEvaluationError(
|
|
324
|
+
this.scriptEvaluationError(
|
|
325
|
+
'The public key is too short, it must be at least 33 bytes.'
|
|
326
|
+
)
|
|
320
327
|
}
|
|
321
328
|
if (buf[0] === 0x04) {
|
|
322
329
|
if (buf.length !== 65) {
|
|
323
|
-
this.scriptEvaluationError(
|
|
330
|
+
this.scriptEvaluationError(
|
|
331
|
+
'The non-compressed public key must be 65 bytes.'
|
|
332
|
+
)
|
|
324
333
|
}
|
|
325
|
-
} else if (
|
|
334
|
+
} else if (buf[0] === 0x02 || buf[0] === 0x03) {
|
|
326
335
|
if (buf.length !== 33) {
|
|
327
|
-
this.scriptEvaluationError(
|
|
336
|
+
this.scriptEvaluationError(
|
|
337
|
+
'The compressed public key must be 33 bytes.'
|
|
338
|
+
)
|
|
328
339
|
}
|
|
329
340
|
} else {
|
|
330
341
|
this.scriptEvaluationError('The public key is in an unknown format.')
|
|
@@ -355,20 +366,52 @@ export default class Spend {
|
|
|
355
366
|
}
|
|
356
367
|
|
|
357
368
|
const isScriptExecuting = !this.ifStack.includes(false)
|
|
358
|
-
let buf: number[],
|
|
359
|
-
|
|
369
|
+
let buf: number[],
|
|
370
|
+
buf1: number[],
|
|
371
|
+
buf2: number[],
|
|
372
|
+
buf3: number[],
|
|
373
|
+
spliced: number[][],
|
|
374
|
+
n: number,
|
|
375
|
+
size: number,
|
|
376
|
+
rawnum: number[],
|
|
377
|
+
num: number[],
|
|
378
|
+
signbit: number,
|
|
379
|
+
x1: number[],
|
|
380
|
+
x2: number[],
|
|
381
|
+
x3: number[],
|
|
382
|
+
bn: BigNumber,
|
|
383
|
+
bn1: BigNumber,
|
|
384
|
+
bn2: BigNumber,
|
|
385
|
+
bn3: BigNumber,
|
|
386
|
+
bufSig: number[],
|
|
387
|
+
bufPubkey: number[],
|
|
388
|
+
subscript,
|
|
389
|
+
bufHash: number[]
|
|
390
|
+
let sig,
|
|
391
|
+
pubkey,
|
|
392
|
+
i: number,
|
|
393
|
+
fOk: boolean,
|
|
394
|
+
nKeysCount: number,
|
|
395
|
+
ikey: number,
|
|
396
|
+
ikey2: number,
|
|
397
|
+
nSigsCount: number,
|
|
398
|
+
isig: number
|
|
360
399
|
let fValue: boolean, fEqual: boolean, fSuccess: boolean
|
|
361
400
|
|
|
362
401
|
// Read instruction
|
|
363
402
|
const currentOpcode = operation.op
|
|
364
403
|
if (typeof currentOpcode === 'undefined') {
|
|
365
|
-
this.scriptEvaluationError(
|
|
404
|
+
this.scriptEvaluationError(
|
|
405
|
+
`An opcode is missing in this chunk of the ${this.context}!`
|
|
406
|
+
)
|
|
366
407
|
}
|
|
367
408
|
if (
|
|
368
409
|
Array.isArray(operation.data) &&
|
|
369
410
|
operation.data.length > maxScriptElementSize
|
|
370
411
|
) {
|
|
371
|
-
this.scriptEvaluationError(
|
|
412
|
+
this.scriptEvaluationError(
|
|
413
|
+
`It's not currently possible to push data larger than ${maxScriptElementSize} bytes.`
|
|
414
|
+
)
|
|
372
415
|
}
|
|
373
416
|
|
|
374
417
|
if (isScriptExecuting && isOpcodeDisabled(currentOpcode)) {
|
|
@@ -376,7 +419,8 @@ export default class Spend {
|
|
|
376
419
|
}
|
|
377
420
|
|
|
378
421
|
if (
|
|
379
|
-
isScriptExecuting &&
|
|
422
|
+
isScriptExecuting &&
|
|
423
|
+
currentOpcode >= 0 &&
|
|
380
424
|
currentOpcode <= OP.OP_PUSHDATA4
|
|
381
425
|
) {
|
|
382
426
|
if (requireMinimalPush && !isChunkMinimal(operation)) {
|
|
@@ -388,7 +432,10 @@ export default class Spend {
|
|
|
388
432
|
} else {
|
|
389
433
|
this.stack.push(operation.data)
|
|
390
434
|
}
|
|
391
|
-
} else if (
|
|
435
|
+
} else if (
|
|
436
|
+
isScriptExecuting ||
|
|
437
|
+
(OP.OP_IF <= currentOpcode && currentOpcode <= OP.OP_ENDIF)
|
|
438
|
+
) {
|
|
392
439
|
switch (currentOpcode) {
|
|
393
440
|
case OP.OP_1NEGATE:
|
|
394
441
|
case OP.OP_1:
|
|
@@ -494,7 +541,9 @@ export default class Spend {
|
|
|
494
541
|
fValue = false
|
|
495
542
|
if (isScriptExecuting) {
|
|
496
543
|
if (this.stack.length < 1) {
|
|
497
|
-
this.scriptEvaluationError(
|
|
544
|
+
this.scriptEvaluationError(
|
|
545
|
+
'OP_IF and OP_NOTIF require at least one item on the stack when they are used!'
|
|
546
|
+
)
|
|
498
547
|
}
|
|
499
548
|
buf = this.stacktop(-1)
|
|
500
549
|
|
|
@@ -511,7 +560,8 @@ export default class Spend {
|
|
|
511
560
|
if (this.ifStack.length === 0) {
|
|
512
561
|
this.scriptEvaluationError('OP_ELSE requires a preceeding OP_IF.')
|
|
513
562
|
}
|
|
514
|
-
this.ifStack[this.ifStack.length - 1] =
|
|
563
|
+
this.ifStack[this.ifStack.length - 1] =
|
|
564
|
+
!this.ifStack[this.ifStack.length - 1]
|
|
515
565
|
break
|
|
516
566
|
|
|
517
567
|
case OP.OP_ENDIF:
|
|
@@ -523,14 +573,18 @@ export default class Spend {
|
|
|
523
573
|
|
|
524
574
|
case OP.OP_VERIFY:
|
|
525
575
|
if (this.stack.length < 1) {
|
|
526
|
-
this.scriptEvaluationError(
|
|
576
|
+
this.scriptEvaluationError(
|
|
577
|
+
'OP_VERIFY requires at least one item to be on the stack.'
|
|
578
|
+
)
|
|
527
579
|
}
|
|
528
580
|
buf = this.stacktop(-1)
|
|
529
581
|
fValue = this.castToBool(buf)
|
|
530
582
|
if (fValue) {
|
|
531
583
|
this.stack.pop()
|
|
532
584
|
} else {
|
|
533
|
-
this.scriptEvaluationError(
|
|
585
|
+
this.scriptEvaluationError(
|
|
586
|
+
'OP_VERIFY requires the top stack value to be truthy.'
|
|
587
|
+
)
|
|
534
588
|
}
|
|
535
589
|
break
|
|
536
590
|
|
|
@@ -545,21 +599,27 @@ export default class Spend {
|
|
|
545
599
|
|
|
546
600
|
case OP.OP_TOALTSTACK:
|
|
547
601
|
if (this.stack.length < 1) {
|
|
548
|
-
this.scriptEvaluationError(
|
|
602
|
+
this.scriptEvaluationError(
|
|
603
|
+
'OP_TOALTSTACK requires at oeast one item to be on the stack.'
|
|
604
|
+
)
|
|
549
605
|
}
|
|
550
606
|
this.altStack.push(this.stack.pop())
|
|
551
607
|
break
|
|
552
608
|
|
|
553
609
|
case OP.OP_FROMALTSTACK:
|
|
554
610
|
if (this.altStack.length < 1) {
|
|
555
|
-
this.scriptEvaluationError(
|
|
611
|
+
this.scriptEvaluationError(
|
|
612
|
+
'OP_FROMALTSTACK requires at least one item to be on the stack.'
|
|
613
|
+
)
|
|
556
614
|
}
|
|
557
615
|
this.stack.push(this.altStack.pop())
|
|
558
616
|
break
|
|
559
617
|
|
|
560
618
|
case OP.OP_2DROP:
|
|
561
619
|
if (this.stack.length < 2) {
|
|
562
|
-
this.scriptEvaluationError(
|
|
620
|
+
this.scriptEvaluationError(
|
|
621
|
+
'OP_2DROP requires at least two items to be on the stack.'
|
|
622
|
+
)
|
|
563
623
|
}
|
|
564
624
|
this.stack.pop()
|
|
565
625
|
this.stack.pop()
|
|
@@ -567,7 +627,9 @@ export default class Spend {
|
|
|
567
627
|
|
|
568
628
|
case OP.OP_2DUP:
|
|
569
629
|
if (this.stack.length < 2) {
|
|
570
|
-
this.scriptEvaluationError(
|
|
630
|
+
this.scriptEvaluationError(
|
|
631
|
+
'OP_2DUP requires at least two items to be on the stack.'
|
|
632
|
+
)
|
|
571
633
|
}
|
|
572
634
|
buf1 = this.stacktop(-2)
|
|
573
635
|
buf2 = this.stacktop(-1)
|
|
@@ -577,7 +639,9 @@ export default class Spend {
|
|
|
577
639
|
|
|
578
640
|
case OP.OP_3DUP:
|
|
579
641
|
if (this.stack.length < 3) {
|
|
580
|
-
this.scriptEvaluationError(
|
|
642
|
+
this.scriptEvaluationError(
|
|
643
|
+
'OP_3DUP requires at least three items to be on the stack.'
|
|
644
|
+
)
|
|
581
645
|
}
|
|
582
646
|
buf1 = this.stacktop(-3)
|
|
583
647
|
buf2 = this.stacktop(-2)
|
|
@@ -589,7 +653,9 @@ export default class Spend {
|
|
|
589
653
|
|
|
590
654
|
case OP.OP_2OVER:
|
|
591
655
|
if (this.stack.length < 4) {
|
|
592
|
-
this.scriptEvaluationError(
|
|
656
|
+
this.scriptEvaluationError(
|
|
657
|
+
'OP_2OVER requires at least four items to be on the stack.'
|
|
658
|
+
)
|
|
593
659
|
}
|
|
594
660
|
buf1 = this.stacktop(-4)
|
|
595
661
|
buf2 = this.stacktop(-3)
|
|
@@ -599,7 +665,9 @@ export default class Spend {
|
|
|
599
665
|
|
|
600
666
|
case OP.OP_2ROT:
|
|
601
667
|
if (this.stack.length < 6) {
|
|
602
|
-
this.scriptEvaluationError(
|
|
668
|
+
this.scriptEvaluationError(
|
|
669
|
+
'OP_2ROT requires at least six items to be on the stack.'
|
|
670
|
+
)
|
|
603
671
|
}
|
|
604
672
|
spliced = this.stack.splice(this.stack.length - 6, 2)
|
|
605
673
|
this.stack.push(spliced[0])
|
|
@@ -608,7 +676,9 @@ export default class Spend {
|
|
|
608
676
|
|
|
609
677
|
case OP.OP_2SWAP:
|
|
610
678
|
if (this.stack.length < 4) {
|
|
611
|
-
this.scriptEvaluationError(
|
|
679
|
+
this.scriptEvaluationError(
|
|
680
|
+
'OP_2SWAP requires at least four items to be on the stack.'
|
|
681
|
+
)
|
|
612
682
|
}
|
|
613
683
|
spliced = this.stack.splice(this.stack.length - 4, 2)
|
|
614
684
|
this.stack.push(spliced[0])
|
|
@@ -617,7 +687,9 @@ export default class Spend {
|
|
|
617
687
|
|
|
618
688
|
case OP.OP_IFDUP:
|
|
619
689
|
if (this.stack.length < 1) {
|
|
620
|
-
this.scriptEvaluationError(
|
|
690
|
+
this.scriptEvaluationError(
|
|
691
|
+
'OP_IFDUP requires at least one item to be on the stack.'
|
|
692
|
+
)
|
|
621
693
|
}
|
|
622
694
|
buf = this.stacktop(-1)
|
|
623
695
|
fValue = this.castToBool(buf)
|
|
@@ -633,28 +705,36 @@ export default class Spend {
|
|
|
633
705
|
|
|
634
706
|
case OP.OP_DROP:
|
|
635
707
|
if (this.stack.length < 1) {
|
|
636
|
-
this.scriptEvaluationError(
|
|
708
|
+
this.scriptEvaluationError(
|
|
709
|
+
'OP_DROP requires at least one item to be on the stack.'
|
|
710
|
+
)
|
|
637
711
|
}
|
|
638
712
|
this.stack.pop()
|
|
639
713
|
break
|
|
640
714
|
|
|
641
715
|
case OP.OP_DUP:
|
|
642
716
|
if (this.stack.length < 1) {
|
|
643
|
-
this.scriptEvaluationError(
|
|
717
|
+
this.scriptEvaluationError(
|
|
718
|
+
'OP_DUP requires at least one item to be on the stack.'
|
|
719
|
+
)
|
|
644
720
|
}
|
|
645
721
|
this.stack.push([...this.stacktop(-1)])
|
|
646
722
|
break
|
|
647
723
|
|
|
648
724
|
case OP.OP_NIP:
|
|
649
725
|
if (this.stack.length < 2) {
|
|
650
|
-
this.scriptEvaluationError(
|
|
726
|
+
this.scriptEvaluationError(
|
|
727
|
+
'OP_NIP requires at least two items to be on the stack.'
|
|
728
|
+
)
|
|
651
729
|
}
|
|
652
730
|
this.stack.splice(this.stack.length - 2, 1)
|
|
653
731
|
break
|
|
654
732
|
|
|
655
733
|
case OP.OP_OVER:
|
|
656
734
|
if (this.stack.length < 2) {
|
|
657
|
-
this.scriptEvaluationError(
|
|
735
|
+
this.scriptEvaluationError(
|
|
736
|
+
'OP_OVER requires at least two items to be on the stack.'
|
|
737
|
+
)
|
|
658
738
|
}
|
|
659
739
|
this.stack.push([...this.stacktop(-2)])
|
|
660
740
|
break
|
|
@@ -662,14 +742,18 @@ export default class Spend {
|
|
|
662
742
|
case OP.OP_PICK:
|
|
663
743
|
case OP.OP_ROLL:
|
|
664
744
|
if (this.stack.length < 2) {
|
|
665
|
-
this.scriptEvaluationError(
|
|
745
|
+
this.scriptEvaluationError(
|
|
746
|
+
`${OP[currentOpcode] as string} requires at least two items to be on the stack.`
|
|
747
|
+
)
|
|
666
748
|
}
|
|
667
749
|
buf = this.stacktop(-1)
|
|
668
750
|
bn = BigNumber.fromScriptNum(buf, requireMinimalPush)
|
|
669
751
|
n = bn.toNumber()
|
|
670
752
|
this.stack.pop()
|
|
671
753
|
if (n < 0 || n >= this.stack.length) {
|
|
672
|
-
this.scriptEvaluationError(
|
|
754
|
+
this.scriptEvaluationError(
|
|
755
|
+
`${OP[currentOpcode] as string} requires the top stack element to be 0 or a positive number less than the current size of the stack.`
|
|
756
|
+
)
|
|
673
757
|
}
|
|
674
758
|
buf = this.stacktop(-n - 1)
|
|
675
759
|
if (currentOpcode === OP.OP_ROLL) {
|
|
@@ -680,7 +764,9 @@ export default class Spend {
|
|
|
680
764
|
|
|
681
765
|
case OP.OP_ROT:
|
|
682
766
|
if (this.stack.length < 3) {
|
|
683
|
-
this.scriptEvaluationError(
|
|
767
|
+
this.scriptEvaluationError(
|
|
768
|
+
'OP_ROT requires at least three items to be on the stack.'
|
|
769
|
+
)
|
|
684
770
|
}
|
|
685
771
|
x1 = this.stacktop(-3)
|
|
686
772
|
x2 = this.stacktop(-2)
|
|
@@ -692,7 +778,9 @@ export default class Spend {
|
|
|
692
778
|
|
|
693
779
|
case OP.OP_SWAP:
|
|
694
780
|
if (this.stack.length < 2) {
|
|
695
|
-
this.scriptEvaluationError(
|
|
781
|
+
this.scriptEvaluationError(
|
|
782
|
+
'OP_SWAP requires at least two items to be on the stack.'
|
|
783
|
+
)
|
|
696
784
|
}
|
|
697
785
|
x1 = this.stacktop(-2)
|
|
698
786
|
x2 = this.stacktop(-1)
|
|
@@ -702,14 +790,18 @@ export default class Spend {
|
|
|
702
790
|
|
|
703
791
|
case OP.OP_TUCK:
|
|
704
792
|
if (this.stack.length < 2) {
|
|
705
|
-
this.scriptEvaluationError(
|
|
793
|
+
this.scriptEvaluationError(
|
|
794
|
+
'OP_TUCK requires at least two items to be on the stack.'
|
|
795
|
+
)
|
|
706
796
|
}
|
|
707
797
|
this.stack.splice(this.stack.length - 2, 0, [...this.stacktop(-1)])
|
|
708
798
|
break
|
|
709
799
|
|
|
710
800
|
case OP.OP_SIZE:
|
|
711
801
|
if (this.stack.length < 1) {
|
|
712
|
-
this.scriptEvaluationError(
|
|
802
|
+
this.scriptEvaluationError(
|
|
803
|
+
'OP_SIZE requires at least one item to be on the stack.'
|
|
804
|
+
)
|
|
713
805
|
}
|
|
714
806
|
bn = new BigNumber(this.stacktop(-1).length)
|
|
715
807
|
this.stack.push(bn.toScriptNum())
|
|
@@ -719,13 +811,17 @@ export default class Spend {
|
|
|
719
811
|
case OP.OP_OR:
|
|
720
812
|
case OP.OP_XOR:
|
|
721
813
|
if (this.stack.length < 2) {
|
|
722
|
-
this.scriptEvaluationError(
|
|
814
|
+
this.scriptEvaluationError(
|
|
815
|
+
`${OP[currentOpcode] as string} requires at least one item to be on the stack.`
|
|
816
|
+
)
|
|
723
817
|
}
|
|
724
818
|
buf1 = this.stacktop(-2)
|
|
725
819
|
buf2 = this.stacktop(-1)
|
|
726
820
|
|
|
727
821
|
if (buf1.length !== buf2.length) {
|
|
728
|
-
this.scriptEvaluationError(
|
|
822
|
+
this.scriptEvaluationError(
|
|
823
|
+
`${OP[currentOpcode] as string} requires the top two stack items to be the same size.`
|
|
824
|
+
)
|
|
729
825
|
}
|
|
730
826
|
|
|
731
827
|
switch (currentOpcode) {
|
|
@@ -752,7 +848,9 @@ export default class Spend {
|
|
|
752
848
|
|
|
753
849
|
case OP.OP_INVERT:
|
|
754
850
|
if (this.stack.length < 1) {
|
|
755
|
-
this.scriptEvaluationError(
|
|
851
|
+
this.scriptEvaluationError(
|
|
852
|
+
'OP_INVERT requires at least one item to be on the stack.'
|
|
853
|
+
)
|
|
756
854
|
}
|
|
757
855
|
buf = this.stacktop(-1)
|
|
758
856
|
for (let i = 0; i < buf.length; i++) {
|
|
@@ -763,17 +861,24 @@ export default class Spend {
|
|
|
763
861
|
case OP.OP_LSHIFT:
|
|
764
862
|
case OP.OP_RSHIFT:
|
|
765
863
|
if (this.stack.length < 2) {
|
|
766
|
-
this.scriptEvaluationError(
|
|
864
|
+
this.scriptEvaluationError(
|
|
865
|
+
`${OP[currentOpcode] as string} requires at least two items to be on the stack.`
|
|
866
|
+
)
|
|
767
867
|
}
|
|
768
868
|
buf1 = this.stacktop(-2)
|
|
769
869
|
if (buf1.length === 0) {
|
|
770
870
|
this.stack.pop()
|
|
771
871
|
} else {
|
|
772
872
|
bn1 = new BigNumber(buf1)
|
|
773
|
-
bn2 = BigNumber.fromScriptNum(
|
|
873
|
+
bn2 = BigNumber.fromScriptNum(
|
|
874
|
+
this.stacktop(-1),
|
|
875
|
+
requireMinimalPush
|
|
876
|
+
)
|
|
774
877
|
n = bn2.toNumber()
|
|
775
878
|
if (n < 0) {
|
|
776
|
-
this.scriptEvaluationError(
|
|
879
|
+
this.scriptEvaluationError(
|
|
880
|
+
`${OP[currentOpcode] as string} requires the top item on the stack not to be negative.`
|
|
881
|
+
)
|
|
777
882
|
}
|
|
778
883
|
this.stack.pop()
|
|
779
884
|
this.stack.pop()
|
|
@@ -795,7 +900,9 @@ export default class Spend {
|
|
|
795
900
|
case OP.OP_EQUAL:
|
|
796
901
|
case OP.OP_EQUALVERIFY:
|
|
797
902
|
if (this.stack.length < 2) {
|
|
798
|
-
this.scriptEvaluationError(
|
|
903
|
+
this.scriptEvaluationError(
|
|
904
|
+
`${OP[currentOpcode] as string} requires at least two items to be on the stack.`
|
|
905
|
+
)
|
|
799
906
|
}
|
|
800
907
|
buf1 = this.stacktop(-2)
|
|
801
908
|
buf2 = this.stacktop(-1)
|
|
@@ -807,7 +914,9 @@ export default class Spend {
|
|
|
807
914
|
if (fEqual) {
|
|
808
915
|
this.stack.pop()
|
|
809
916
|
} else {
|
|
810
|
-
this.scriptEvaluationError(
|
|
917
|
+
this.scriptEvaluationError(
|
|
918
|
+
'OP_EQUALVERIFY requires the top two stack items to be equal.'
|
|
919
|
+
)
|
|
811
920
|
}
|
|
812
921
|
}
|
|
813
922
|
break
|
|
@@ -819,7 +928,9 @@ export default class Spend {
|
|
|
819
928
|
case OP.OP_NOT:
|
|
820
929
|
case OP.OP_0NOTEQUAL:
|
|
821
930
|
if (this.stack.length < 1) {
|
|
822
|
-
this.scriptEvaluationError(
|
|
931
|
+
this.scriptEvaluationError(
|
|
932
|
+
`${OP[currentOpcode] as string} requires at least one items to be on the stack.`
|
|
933
|
+
)
|
|
823
934
|
}
|
|
824
935
|
buf = this.stacktop(-1)
|
|
825
936
|
bn = BigNumber.fromScriptNum(buf, requireMinimalPush)
|
|
@@ -839,10 +950,10 @@ export default class Spend {
|
|
|
839
950
|
}
|
|
840
951
|
break
|
|
841
952
|
case OP.OP_NOT:
|
|
842
|
-
bn = new BigNumber(
|
|
953
|
+
bn = new BigNumber(bn.cmpn(0) === 0 ? 1 : 0 + 0)
|
|
843
954
|
break
|
|
844
955
|
case OP.OP_0NOTEQUAL:
|
|
845
|
-
bn = new BigNumber(
|
|
956
|
+
bn = new BigNumber(bn.cmpn(0) !== 0 ? 1 : 0 + 0)
|
|
846
957
|
break
|
|
847
958
|
}
|
|
848
959
|
this.stack.pop()
|
|
@@ -866,7 +977,9 @@ export default class Spend {
|
|
|
866
977
|
case OP.OP_MIN:
|
|
867
978
|
case OP.OP_MAX:
|
|
868
979
|
if (this.stack.length < 2) {
|
|
869
|
-
this.scriptEvaluationError(
|
|
980
|
+
this.scriptEvaluationError(
|
|
981
|
+
`${OP[currentOpcode] as string} requires at least two items to be on the stack.`
|
|
982
|
+
)
|
|
870
983
|
}
|
|
871
984
|
bn1 = BigNumber.fromScriptNum(this.stacktop(-2), requireMinimalPush)
|
|
872
985
|
bn2 = BigNumber.fromScriptNum(this.stacktop(-1), requireMinimalPush)
|
|
@@ -896,40 +1009,40 @@ export default class Spend {
|
|
|
896
1009
|
break
|
|
897
1010
|
case OP.OP_BOOLAND:
|
|
898
1011
|
bn = new BigNumber(
|
|
899
|
-
|
|
1012
|
+
bn1.cmpn(0) !== 0 && bn2.cmpn(0) !== 0 ? 1 : 0 + 0
|
|
900
1013
|
)
|
|
901
1014
|
break
|
|
902
1015
|
case OP.OP_BOOLOR:
|
|
903
1016
|
bn = new BigNumber(
|
|
904
|
-
|
|
1017
|
+
bn1.cmpn(0) !== 0 || bn2.cmpn(0) !== 0 ? 1 : 0 + 0
|
|
905
1018
|
)
|
|
906
1019
|
break
|
|
907
1020
|
case OP.OP_NUMEQUAL:
|
|
908
|
-
bn = new BigNumber(
|
|
1021
|
+
bn = new BigNumber(bn1.cmp(bn2) === 0 ? 1 : 0 + 0)
|
|
909
1022
|
break
|
|
910
1023
|
case OP.OP_NUMEQUALVERIFY:
|
|
911
|
-
bn = new BigNumber(
|
|
1024
|
+
bn = new BigNumber(bn1.cmp(bn2) === 0 ? 1 : 0 + 0)
|
|
912
1025
|
break
|
|
913
1026
|
case OP.OP_NUMNOTEQUAL:
|
|
914
|
-
bn = new BigNumber(
|
|
1027
|
+
bn = new BigNumber(bn1.cmp(bn2) !== 0 ? 1 : 0 + 0)
|
|
915
1028
|
break
|
|
916
1029
|
case OP.OP_LESSTHAN:
|
|
917
|
-
bn = new BigNumber(
|
|
1030
|
+
bn = new BigNumber(bn1.cmp(bn2) < 0 ? 1 : 0 + 0)
|
|
918
1031
|
break
|
|
919
1032
|
case OP.OP_GREATERTHAN:
|
|
920
|
-
bn = new BigNumber(
|
|
1033
|
+
bn = new BigNumber(bn1.cmp(bn2) > 0 ? 1 : 0 + 0)
|
|
921
1034
|
break
|
|
922
1035
|
case OP.OP_LESSTHANOREQUAL:
|
|
923
|
-
bn = new BigNumber(
|
|
1036
|
+
bn = new BigNumber(bn1.cmp(bn2) <= 0 ? 1 : 0 + 0)
|
|
924
1037
|
break
|
|
925
1038
|
case OP.OP_GREATERTHANOREQUAL:
|
|
926
|
-
bn = new BigNumber(
|
|
1039
|
+
bn = new BigNumber(bn1.cmp(bn2) >= 0 ? 1 : 0 + 0)
|
|
927
1040
|
break
|
|
928
1041
|
case OP.OP_MIN:
|
|
929
|
-
bn =
|
|
1042
|
+
bn = bn1.cmp(bn2) < 0 ? bn1 : bn2
|
|
930
1043
|
break
|
|
931
1044
|
case OP.OP_MAX:
|
|
932
|
-
bn =
|
|
1045
|
+
bn = bn1.cmp(bn2) > 0 ? bn1 : bn2
|
|
933
1046
|
break
|
|
934
1047
|
}
|
|
935
1048
|
this.stack.pop()
|
|
@@ -940,19 +1053,23 @@ export default class Spend {
|
|
|
940
1053
|
if (this.castToBool(this.stacktop(-1))) {
|
|
941
1054
|
this.stack.pop()
|
|
942
1055
|
} else {
|
|
943
|
-
this.scriptEvaluationError(
|
|
1056
|
+
this.scriptEvaluationError(
|
|
1057
|
+
'OP_NUMEQUALVERIFY requires the top stack item to be truthy.'
|
|
1058
|
+
)
|
|
944
1059
|
}
|
|
945
1060
|
}
|
|
946
1061
|
break
|
|
947
1062
|
|
|
948
1063
|
case OP.OP_WITHIN:
|
|
949
1064
|
if (this.stack.length < 3) {
|
|
950
|
-
this.scriptEvaluationError(
|
|
1065
|
+
this.scriptEvaluationError(
|
|
1066
|
+
'OP_WITHIN requires at least three items to be on the stack.'
|
|
1067
|
+
)
|
|
951
1068
|
}
|
|
952
1069
|
bn1 = BigNumber.fromScriptNum(this.stacktop(-3), requireMinimalPush)
|
|
953
1070
|
bn2 = BigNumber.fromScriptNum(this.stacktop(-2), requireMinimalPush)
|
|
954
1071
|
bn3 = BigNumber.fromScriptNum(this.stacktop(-1), requireMinimalPush)
|
|
955
|
-
fValue =
|
|
1072
|
+
fValue = bn2.cmp(bn1) <= 0 && bn1.cmp(bn3) < 0
|
|
956
1073
|
this.stack.pop()
|
|
957
1074
|
this.stack.pop()
|
|
958
1075
|
this.stack.pop()
|
|
@@ -965,7 +1082,9 @@ export default class Spend {
|
|
|
965
1082
|
case OP.OP_HASH160:
|
|
966
1083
|
case OP.OP_HASH256:
|
|
967
1084
|
if (this.stack.length < 1) {
|
|
968
|
-
this.scriptEvaluationError(
|
|
1085
|
+
this.scriptEvaluationError(
|
|
1086
|
+
`${OP[currentOpcode] as string} requires at least one item to be on the stack.`
|
|
1087
|
+
)
|
|
969
1088
|
}
|
|
970
1089
|
buf = this.stacktop(-1)
|
|
971
1090
|
if (currentOpcode === OP.OP_RIPEMD160) {
|
|
@@ -990,7 +1109,9 @@ export default class Spend {
|
|
|
990
1109
|
case OP.OP_CHECKSIG:
|
|
991
1110
|
case OP.OP_CHECKSIGVERIFY:
|
|
992
1111
|
if (this.stack.length < 2) {
|
|
993
|
-
this.scriptEvaluationError(
|
|
1112
|
+
this.scriptEvaluationError(
|
|
1113
|
+
`${OP[currentOpcode] as string} requires at least two items to be on the stack.`
|
|
1114
|
+
)
|
|
994
1115
|
}
|
|
995
1116
|
|
|
996
1117
|
bufSig = this.stacktop(-2)
|
|
@@ -1000,15 +1121,21 @@ export default class Spend {
|
|
|
1000
1121
|
!checkSignatureEncoding(bufSig) ||
|
|
1001
1122
|
!checkPublicKeyEncoding(bufPubkey)
|
|
1002
1123
|
) {
|
|
1003
|
-
this.scriptEvaluationError(
|
|
1124
|
+
this.scriptEvaluationError(
|
|
1125
|
+
`${OP[currentOpcode] as string} requires correct encoding for the public key and signature.`
|
|
1126
|
+
)
|
|
1004
1127
|
}
|
|
1005
1128
|
|
|
1006
1129
|
// Subset of script starting at the most recent codeseparator
|
|
1007
1130
|
// CScript scriptCode(pbegincodehash, pend);
|
|
1008
1131
|
if (this.context === 'UnlockingScript') {
|
|
1009
|
-
subscript = new Script(
|
|
1132
|
+
subscript = new Script(
|
|
1133
|
+
this.unlockingScript.chunks.slice(this.lastCodeSeparator)
|
|
1134
|
+
)
|
|
1010
1135
|
} else {
|
|
1011
|
-
subscript = new Script(
|
|
1136
|
+
subscript = new Script(
|
|
1137
|
+
this.lockingScript.chunks.slice(this.lastCodeSeparator)
|
|
1138
|
+
)
|
|
1012
1139
|
}
|
|
1013
1140
|
|
|
1014
1141
|
// Drop the signature, since there's no way for a signature to sign itself
|
|
@@ -1024,7 +1151,9 @@ export default class Spend {
|
|
|
1024
1151
|
}
|
|
1025
1152
|
|
|
1026
1153
|
if (!fSuccess && bufSig.length > 0) {
|
|
1027
|
-
this.scriptEvaluationError(
|
|
1154
|
+
this.scriptEvaluationError(
|
|
1155
|
+
`${OP[currentOpcode] as string} failed to verify the signature, and requires an empty signature when verification fails.`
|
|
1156
|
+
)
|
|
1028
1157
|
}
|
|
1029
1158
|
|
|
1030
1159
|
this.stack.pop()
|
|
@@ -1036,23 +1165,31 @@ export default class Spend {
|
|
|
1036
1165
|
if (fSuccess) {
|
|
1037
1166
|
this.stack.pop()
|
|
1038
1167
|
} else {
|
|
1039
|
-
this.scriptEvaluationError(
|
|
1168
|
+
this.scriptEvaluationError(
|
|
1169
|
+
'OP_CHECKSIGVERIFY requires that a valid signature is provided.'
|
|
1170
|
+
)
|
|
1040
1171
|
}
|
|
1041
1172
|
}
|
|
1042
1173
|
break
|
|
1043
1174
|
|
|
1044
1175
|
case OP.OP_CHECKMULTISIG:
|
|
1045
1176
|
case OP.OP_CHECKMULTISIGVERIFY:
|
|
1046
|
-
|
|
1047
1177
|
i = 1
|
|
1048
1178
|
if (this.stack.length < i) {
|
|
1049
|
-
this.scriptEvaluationError(
|
|
1179
|
+
this.scriptEvaluationError(
|
|
1180
|
+
`${OP[currentOpcode] as string} requires at least 1 item to be on the stack.`
|
|
1181
|
+
)
|
|
1050
1182
|
}
|
|
1051
1183
|
|
|
1052
|
-
nKeysCount = BigNumber.fromScriptNum(
|
|
1184
|
+
nKeysCount = BigNumber.fromScriptNum(
|
|
1185
|
+
this.stacktop(-i),
|
|
1186
|
+
requireMinimalPush
|
|
1187
|
+
).toNumber()
|
|
1053
1188
|
// TODO: Keys and opcount are parameterized in client. No magic numbers!
|
|
1054
1189
|
if (nKeysCount < 0 || nKeysCount > maxMultisigKeyCount) {
|
|
1055
|
-
this.scriptEvaluationError(
|
|
1190
|
+
this.scriptEvaluationError(
|
|
1191
|
+
`${OP[currentOpcode] as string} requires a key count between 0 and ${maxMultisigKeyCount}.`
|
|
1192
|
+
)
|
|
1056
1193
|
}
|
|
1057
1194
|
ikey = ++i
|
|
1058
1195
|
i += nKeysCount
|
|
@@ -1064,24 +1201,37 @@ export default class Spend {
|
|
|
1064
1201
|
ikey2 = nKeysCount + 2
|
|
1065
1202
|
|
|
1066
1203
|
if (this.stack.length < i) {
|
|
1067
|
-
this.scriptEvaluationError(
|
|
1204
|
+
this.scriptEvaluationError(
|
|
1205
|
+
`${OP[currentOpcode] as string} requires the number of stack items not to be less than the number of keys used.`
|
|
1206
|
+
)
|
|
1068
1207
|
}
|
|
1069
1208
|
|
|
1070
|
-
nSigsCount = BigNumber.fromScriptNum(
|
|
1209
|
+
nSigsCount = BigNumber.fromScriptNum(
|
|
1210
|
+
this.stacktop(-i),
|
|
1211
|
+
requireMinimalPush
|
|
1212
|
+
).toNumber()
|
|
1071
1213
|
if (nSigsCount < 0 || nSigsCount > nKeysCount) {
|
|
1072
|
-
this.scriptEvaluationError(
|
|
1214
|
+
this.scriptEvaluationError(
|
|
1215
|
+
`${OP[currentOpcode] as string} requires the number of signatures to be no greater than the number of keys.`
|
|
1216
|
+
)
|
|
1073
1217
|
}
|
|
1074
1218
|
isig = ++i
|
|
1075
1219
|
i += nSigsCount
|
|
1076
1220
|
if (this.stack.length < i) {
|
|
1077
|
-
this.scriptEvaluationError(
|
|
1221
|
+
this.scriptEvaluationError(
|
|
1222
|
+
`${OP[currentOpcode] as string} requires the number of stack items not to be less than the number of signatures provided.`
|
|
1223
|
+
)
|
|
1078
1224
|
}
|
|
1079
1225
|
|
|
1080
1226
|
// Subset of script starting at the most recent codeseparator
|
|
1081
1227
|
if (this.context === 'UnlockingScript') {
|
|
1082
|
-
subscript = new Script(
|
|
1228
|
+
subscript = new Script(
|
|
1229
|
+
this.unlockingScript.chunks.slice(this.lastCodeSeparator)
|
|
1230
|
+
)
|
|
1083
1231
|
} else {
|
|
1084
|
-
subscript = new Script(
|
|
1232
|
+
subscript = new Script(
|
|
1233
|
+
this.lockingScript.chunks.slice(this.lastCodeSeparator)
|
|
1234
|
+
)
|
|
1085
1235
|
}
|
|
1086
1236
|
|
|
1087
1237
|
// Drop the signatures, since there's no way for a signature to sign itself
|
|
@@ -1101,7 +1251,9 @@ export default class Spend {
|
|
|
1101
1251
|
!checkSignatureEncoding(bufSig) ||
|
|
1102
1252
|
!checkPublicKeyEncoding(bufPubkey)
|
|
1103
1253
|
) {
|
|
1104
|
-
this.scriptEvaluationError(
|
|
1254
|
+
this.scriptEvaluationError(
|
|
1255
|
+
`${OP[currentOpcode] as string} requires correct encoding for the public key and signature.`
|
|
1256
|
+
)
|
|
1105
1257
|
}
|
|
1106
1258
|
|
|
1107
1259
|
try {
|
|
@@ -1129,10 +1281,10 @@ export default class Spend {
|
|
|
1129
1281
|
|
|
1130
1282
|
// Clean up stack of actual arguments
|
|
1131
1283
|
while (i-- > 1) {
|
|
1132
|
-
if (
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1284
|
+
if (!fSuccess && !ikey2 && this.stacktop(-1).length > 0) {
|
|
1285
|
+
this.scriptEvaluationError(
|
|
1286
|
+
`${OP[currentOpcode] as string} failed to verify a signature, and requires an empty signature when verification fails.`
|
|
1287
|
+
)
|
|
1136
1288
|
}
|
|
1137
1289
|
|
|
1138
1290
|
if (ikey2 > 0) {
|
|
@@ -1149,10 +1301,15 @@ export default class Spend {
|
|
|
1149
1301
|
// so optionally verify it is exactly equal to zero prior
|
|
1150
1302
|
// to removing it from the stack.
|
|
1151
1303
|
if (this.stack.length < 1) {
|
|
1152
|
-
this.scriptEvaluationError(
|
|
1304
|
+
this.scriptEvaluationError(
|
|
1305
|
+
`${OP[currentOpcode] as string} requires an extra item to be on the stack.`
|
|
1306
|
+
)
|
|
1153
1307
|
}
|
|
1154
|
-
if (this.stacktop(-1).length > 0) {
|
|
1155
|
-
|
|
1308
|
+
if (this.stacktop(-1).length > 0) {
|
|
1309
|
+
// NOTE: Is this necessary? We don't care about malleability.
|
|
1310
|
+
this.scriptEvaluationError(
|
|
1311
|
+
`${OP[currentOpcode] as string} requires the extra stack item to be empty.`
|
|
1312
|
+
)
|
|
1156
1313
|
}
|
|
1157
1314
|
this.stack.pop()
|
|
1158
1315
|
|
|
@@ -1162,20 +1319,26 @@ export default class Spend {
|
|
|
1162
1319
|
if (fSuccess) {
|
|
1163
1320
|
this.stack.pop()
|
|
1164
1321
|
} else {
|
|
1165
|
-
this.scriptEvaluationError(
|
|
1322
|
+
this.scriptEvaluationError(
|
|
1323
|
+
'OP_CHECKMULTISIGVERIFY requires that a sufficient number of valid signatures are provided.'
|
|
1324
|
+
)
|
|
1166
1325
|
}
|
|
1167
1326
|
}
|
|
1168
1327
|
break
|
|
1169
1328
|
|
|
1170
1329
|
case OP.OP_CAT:
|
|
1171
1330
|
if (this.stack.length < 2) {
|
|
1172
|
-
this.scriptEvaluationError(
|
|
1331
|
+
this.scriptEvaluationError(
|
|
1332
|
+
'OP_CAT requires at least two items to be on the stack.'
|
|
1333
|
+
)
|
|
1173
1334
|
}
|
|
1174
1335
|
|
|
1175
1336
|
buf1 = this.stacktop(-2)
|
|
1176
1337
|
buf2 = this.stacktop(-1)
|
|
1177
1338
|
if (buf1.length + buf2.length > maxScriptElementSize) {
|
|
1178
|
-
this.scriptEvaluationError(
|
|
1339
|
+
this.scriptEvaluationError(
|
|
1340
|
+
`It's not currently possible to push data larger than ${maxScriptElementSize} bytes.`
|
|
1341
|
+
)
|
|
1179
1342
|
}
|
|
1180
1343
|
this.stack[this.stack.length - 2] = [...buf1, ...buf2]
|
|
1181
1344
|
this.stack.pop()
|
|
@@ -1183,14 +1346,21 @@ export default class Spend {
|
|
|
1183
1346
|
|
|
1184
1347
|
case OP.OP_SPLIT:
|
|
1185
1348
|
if (this.stack.length < 2) {
|
|
1186
|
-
this.scriptEvaluationError(
|
|
1349
|
+
this.scriptEvaluationError(
|
|
1350
|
+
'OP_SPLIT requires at least two items to be on the stack.'
|
|
1351
|
+
)
|
|
1187
1352
|
}
|
|
1188
1353
|
buf1 = this.stacktop(-2)
|
|
1189
1354
|
|
|
1190
1355
|
// Make sure the split point is apropriate.
|
|
1191
|
-
n = BigNumber.fromScriptNum(
|
|
1356
|
+
n = BigNumber.fromScriptNum(
|
|
1357
|
+
this.stacktop(-1),
|
|
1358
|
+
requireMinimalPush
|
|
1359
|
+
).toNumber()
|
|
1192
1360
|
if (n < 0 || n > buf1.length) {
|
|
1193
|
-
this.scriptEvaluationError(
|
|
1361
|
+
this.scriptEvaluationError(
|
|
1362
|
+
'OP_SPLIT requires the first stack item to be a non-negative number less than or equal to the size of the second-from-top stack item.'
|
|
1363
|
+
)
|
|
1194
1364
|
}
|
|
1195
1365
|
|
|
1196
1366
|
// Prepare the results in their own buffer as `data`
|
|
@@ -1205,12 +1375,19 @@ export default class Spend {
|
|
|
1205
1375
|
|
|
1206
1376
|
case OP.OP_NUM2BIN:
|
|
1207
1377
|
if (this.stack.length < 2) {
|
|
1208
|
-
this.scriptEvaluationError(
|
|
1378
|
+
this.scriptEvaluationError(
|
|
1379
|
+
'OP_NUM2BIN requires at least two items to be on the stack.'
|
|
1380
|
+
)
|
|
1209
1381
|
}
|
|
1210
1382
|
|
|
1211
|
-
size = BigNumber.fromScriptNum(
|
|
1383
|
+
size = BigNumber.fromScriptNum(
|
|
1384
|
+
this.stacktop(-1),
|
|
1385
|
+
requireMinimalPush
|
|
1386
|
+
).toNumber()
|
|
1212
1387
|
if (size > maxScriptElementSize) {
|
|
1213
|
-
this.scriptEvaluationError(
|
|
1388
|
+
this.scriptEvaluationError(
|
|
1389
|
+
`It's not currently possible to push data larger than ${maxScriptElementSize} bytes.`
|
|
1390
|
+
)
|
|
1214
1391
|
}
|
|
1215
1392
|
|
|
1216
1393
|
this.stack.pop()
|
|
@@ -1221,7 +1398,9 @@ export default class Spend {
|
|
|
1221
1398
|
rawnum = minimallyEncode(rawnum)
|
|
1222
1399
|
|
|
1223
1400
|
if (rawnum.length > size) {
|
|
1224
|
-
this.scriptEvaluationError(
|
|
1401
|
+
this.scriptEvaluationError(
|
|
1402
|
+
'OP_NUM2BIN requires that the size expressed in the top stack item is large enough to hold the value expressed in the second-from-top stack item.'
|
|
1403
|
+
)
|
|
1225
1404
|
}
|
|
1226
1405
|
|
|
1227
1406
|
// We already have an element of the right size, we
|
|
@@ -1254,7 +1433,9 @@ export default class Spend {
|
|
|
1254
1433
|
|
|
1255
1434
|
case OP.OP_BIN2NUM:
|
|
1256
1435
|
if (this.stack.length < 1) {
|
|
1257
|
-
this.scriptEvaluationError(
|
|
1436
|
+
this.scriptEvaluationError(
|
|
1437
|
+
'OP_BIN2NUM requires at least one item to be on the stack.'
|
|
1438
|
+
)
|
|
1258
1439
|
}
|
|
1259
1440
|
|
|
1260
1441
|
buf1 = this.stacktop(-1)
|
|
@@ -1264,7 +1445,9 @@ export default class Spend {
|
|
|
1264
1445
|
|
|
1265
1446
|
// The resulting number must be a valid number.
|
|
1266
1447
|
if (!isMinimallyEncoded(buf2)) {
|
|
1267
|
-
this.scriptEvaluationError(
|
|
1448
|
+
this.scriptEvaluationError(
|
|
1449
|
+
'OP_BIN2NUM requires that the resulting number is valid.'
|
|
1450
|
+
)
|
|
1268
1451
|
}
|
|
1269
1452
|
break
|
|
1270
1453
|
|
|
@@ -1290,24 +1473,35 @@ export default class Spend {
|
|
|
1290
1473
|
*/
|
|
1291
1474
|
validate (): boolean {
|
|
1292
1475
|
if (requirePushOnlyUnlockingScripts && !this.unlockingScript.isPushOnly()) {
|
|
1293
|
-
this.scriptEvaluationError(
|
|
1476
|
+
this.scriptEvaluationError(
|
|
1477
|
+
'Unlocking scripts can only contain push operations, and no other opcodes.'
|
|
1478
|
+
)
|
|
1294
1479
|
}
|
|
1295
1480
|
while (true) {
|
|
1296
1481
|
this.step()
|
|
1297
|
-
if (
|
|
1482
|
+
if (
|
|
1483
|
+
this.context === 'LockingScript' &&
|
|
1484
|
+
this.programCounter >= this.lockingScript.chunks.length
|
|
1485
|
+
) {
|
|
1298
1486
|
break
|
|
1299
1487
|
}
|
|
1300
1488
|
}
|
|
1301
1489
|
if (this.ifStack.length > 0) {
|
|
1302
|
-
this.scriptEvaluationError(
|
|
1490
|
+
this.scriptEvaluationError(
|
|
1491
|
+
'Every OP_IF must be terminated prior to the end of the script.'
|
|
1492
|
+
)
|
|
1303
1493
|
}
|
|
1304
1494
|
if (requireCleanStack) {
|
|
1305
1495
|
if (this.stack.length !== 1) {
|
|
1306
|
-
this.scriptEvaluationError(
|
|
1496
|
+
this.scriptEvaluationError(
|
|
1497
|
+
'The clean stack rule requires exactly one item to be on the stack after script execution.'
|
|
1498
|
+
)
|
|
1307
1499
|
}
|
|
1308
1500
|
}
|
|
1309
1501
|
if (!this.castToBool(this.stacktop(-1))) {
|
|
1310
|
-
this.scriptEvaluationError(
|
|
1502
|
+
this.scriptEvaluationError(
|
|
1503
|
+
'The top stack element must be truthy after script evaluation.'
|
|
1504
|
+
)
|
|
1311
1505
|
}
|
|
1312
1506
|
return true
|
|
1313
1507
|
}
|
|
@@ -1330,6 +1524,8 @@ export default class Spend {
|
|
|
1330
1524
|
}
|
|
1331
1525
|
|
|
1332
1526
|
private scriptEvaluationError (str: string): void {
|
|
1333
|
-
throw new Error(
|
|
1527
|
+
throw new Error(
|
|
1528
|
+
`Script evaluation error: ${str}\n\nSource TXID: ${this.sourceTXID}\nSource output index: ${this.sourceOutputIndex}\nContext: ${this.context}\nProgram counter: ${this.programCounter}\nStack size: ${this.stack.length}\nAlt stack size: ${this.altStack.length}`
|
|
1529
|
+
)
|
|
1334
1530
|
}
|
|
1335
1531
|
}
|