@bsv/sdk 1.0.0
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/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
- package/.github/ISSUE_TEMPLATE/discussion.md +24 -0
- package/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md +23 -0
- package/CHANGELOG.md +72 -0
- package/CONTRIBUTING.md +85 -0
- package/LICENSE.txt +28 -0
- package/README.md +87 -0
- package/ROADMAP.md +3 -0
- package/dist/cjs/mod.js +25 -0
- package/dist/cjs/mod.js.map +1 -0
- package/dist/cjs/package.json +42 -0
- package/dist/cjs/src/compat/BIP39.js +272 -0
- package/dist/cjs/src/compat/BIP39.js.map +1 -0
- package/dist/cjs/src/compat/BSM.js +77 -0
- package/dist/cjs/src/compat/BSM.js.map +1 -0
- package/dist/cjs/src/compat/ECIES.js +483 -0
- package/dist/cjs/src/compat/ECIES.js.map +1 -0
- package/dist/cjs/src/compat/HD.js +326 -0
- package/dist/cjs/src/compat/HD.js.map +1 -0
- package/dist/cjs/src/compat/Mnemonic.js +298 -0
- package/dist/cjs/src/compat/Mnemonic.js.map +1 -0
- package/dist/cjs/src/compat/bip-39-wordlist-en.js +2057 -0
- package/dist/cjs/src/compat/bip-39-wordlist-en.js.map +1 -0
- package/dist/cjs/src/compat/index.js +37 -0
- package/dist/cjs/src/compat/index.js.map +1 -0
- package/dist/cjs/src/messages/EncryptedMessage.js +69 -0
- package/dist/cjs/src/messages/EncryptedMessage.js.map +1 -0
- package/dist/cjs/src/messages/SignedMessage.js +85 -0
- package/dist/cjs/src/messages/SignedMessage.js.map +1 -0
- package/dist/cjs/src/messages/index.js +29 -0
- package/dist/cjs/src/messages/index.js.map +1 -0
- package/dist/cjs/src/primitives/AESGCM.js +384 -0
- package/dist/cjs/src/primitives/AESGCM.js.map +1 -0
- package/dist/cjs/src/primitives/BasePoint.js +19 -0
- package/dist/cjs/src/primitives/BasePoint.js.map +1 -0
- package/dist/cjs/src/primitives/BigNumber.js +4269 -0
- package/dist/cjs/src/primitives/BigNumber.js.map +1 -0
- package/dist/cjs/src/primitives/Curve.js +1126 -0
- package/dist/cjs/src/primitives/Curve.js.map +1 -0
- package/dist/cjs/src/primitives/DRBG.js +99 -0
- package/dist/cjs/src/primitives/DRBG.js.map +1 -0
- package/dist/cjs/src/primitives/ECDSA.js +169 -0
- package/dist/cjs/src/primitives/ECDSA.js.map +1 -0
- package/dist/cjs/src/primitives/Hash.js +1332 -0
- package/dist/cjs/src/primitives/Hash.js.map +1 -0
- package/dist/cjs/src/primitives/JacobianPoint.js +400 -0
- package/dist/cjs/src/primitives/JacobianPoint.js.map +1 -0
- package/dist/cjs/src/primitives/K256.js +111 -0
- package/dist/cjs/src/primitives/K256.js.map +1 -0
- package/dist/cjs/src/primitives/Mersenne.js +118 -0
- package/dist/cjs/src/primitives/Mersenne.js.map +1 -0
- package/dist/cjs/src/primitives/MontgomoryMethod.js +150 -0
- package/dist/cjs/src/primitives/MontgomoryMethod.js.map +1 -0
- package/dist/cjs/src/primitives/Point.js +819 -0
- package/dist/cjs/src/primitives/Point.js.map +1 -0
- package/dist/cjs/src/primitives/PrivateKey.js +190 -0
- package/dist/cjs/src/primitives/PrivateKey.js.map +1 -0
- package/dist/cjs/src/primitives/PublicKey.js +151 -0
- package/dist/cjs/src/primitives/PublicKey.js.map +1 -0
- package/dist/cjs/src/primitives/Random.js +57 -0
- package/dist/cjs/src/primitives/Random.js.map +1 -0
- package/dist/cjs/src/primitives/ReductionContext.js +490 -0
- package/dist/cjs/src/primitives/ReductionContext.js.map +1 -0
- package/dist/cjs/src/primitives/Signature.js +220 -0
- package/dist/cjs/src/primitives/Signature.js.map +1 -0
- package/dist/cjs/src/primitives/SymmetricKey.js +69 -0
- package/dist/cjs/src/primitives/SymmetricKey.js.map +1 -0
- package/dist/cjs/src/primitives/TransactionSignature.js +172 -0
- package/dist/cjs/src/primitives/TransactionSignature.js.map +1 -0
- package/dist/cjs/src/primitives/index.js +45 -0
- package/dist/cjs/src/primitives/index.js.map +1 -0
- package/dist/cjs/src/primitives/utils.js +615 -0
- package/dist/cjs/src/primitives/utils.js.map +1 -0
- package/dist/cjs/src/script/LockingScript.js +35 -0
- package/dist/cjs/src/script/LockingScript.js.map +1 -0
- package/dist/cjs/src/script/OP.js +208 -0
- package/dist/cjs/src/script/OP.js.map +1 -0
- package/dist/cjs/src/script/Script.js +429 -0
- package/dist/cjs/src/script/Script.js.map +1 -0
- package/dist/cjs/src/script/ScriptChunk.js +3 -0
- package/dist/cjs/src/script/ScriptChunk.js.map +1 -0
- package/dist/cjs/src/script/ScriptTemplate.js +3 -0
- package/dist/cjs/src/script/ScriptTemplate.js.map +1 -0
- package/dist/cjs/src/script/Spend.js +1252 -0
- package/dist/cjs/src/script/Spend.js.map +1 -0
- package/dist/cjs/src/script/UnlockingScript.js +35 -0
- package/dist/cjs/src/script/UnlockingScript.js.map +1 -0
- package/dist/cjs/src/script/index.js +32 -0
- package/dist/cjs/src/script/index.js.map +1 -0
- package/dist/cjs/src/script/templates/P2PKH.js +98 -0
- package/dist/cjs/src/script/templates/P2PKH.js.map +1 -0
- package/dist/cjs/src/script/templates/RPuzzle.js +125 -0
- package/dist/cjs/src/script/templates/RPuzzle.js.map +1 -0
- package/dist/cjs/src/script/templates/index.js +11 -0
- package/dist/cjs/src/script/templates/index.js.map +1 -0
- package/dist/cjs/src/transaction/Broadcaster.js +3 -0
- package/dist/cjs/src/transaction/Broadcaster.js.map +1 -0
- package/dist/cjs/src/transaction/ChainTracker.js +3 -0
- package/dist/cjs/src/transaction/ChainTracker.js.map +1 -0
- package/dist/cjs/src/transaction/FeeModel.js +3 -0
- package/dist/cjs/src/transaction/FeeModel.js.map +1 -0
- package/dist/cjs/src/transaction/MerklePath.js +239 -0
- package/dist/cjs/src/transaction/MerklePath.js.map +1 -0
- package/dist/cjs/src/transaction/Transaction.js +557 -0
- package/dist/cjs/src/transaction/Transaction.js.map +1 -0
- package/dist/cjs/src/transaction/TransactionInput.js +3 -0
- package/dist/cjs/src/transaction/TransactionInput.js.map +1 -0
- package/dist/cjs/src/transaction/TransactionOutput.js +3 -0
- package/dist/cjs/src/transaction/TransactionOutput.js.map +1 -0
- package/dist/cjs/src/transaction/broadcasters/ARC.js +101 -0
- package/dist/cjs/src/transaction/broadcasters/ARC.js.map +1 -0
- package/dist/cjs/src/transaction/broadcasters/index.js +9 -0
- package/dist/cjs/src/transaction/broadcasters/index.js.map +1 -0
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js +69 -0
- package/dist/cjs/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -0
- package/dist/cjs/src/transaction/fee-models/index.js +9 -0
- package/dist/cjs/src/transaction/fee-models/index.js.map +1 -0
- package/dist/cjs/src/transaction/index.js +11 -0
- package/dist/cjs/src/transaction/index.js.map +1 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/esm/mod.js +9 -0
- package/dist/esm/mod.js.map +1 -0
- package/dist/esm/src/compat/BIP39.js +272 -0
- package/dist/esm/src/compat/BIP39.js.map +1 -0
- package/dist/esm/src/compat/BSM.js +45 -0
- package/dist/esm/src/compat/BSM.js.map +1 -0
- package/dist/esm/src/compat/ECIES.js +454 -0
- package/dist/esm/src/compat/ECIES.js.map +1 -0
- package/dist/esm/src/compat/HD.js +304 -0
- package/dist/esm/src/compat/HD.js.map +1 -0
- package/dist/esm/src/compat/Mnemonic.js +272 -0
- package/dist/esm/src/compat/Mnemonic.js.map +1 -0
- package/dist/esm/src/compat/bip-39-wordlist-en.js +2054 -0
- package/dist/esm/src/compat/bip-39-wordlist-en.js.map +1 -0
- package/dist/esm/src/compat/index.js +5 -0
- package/dist/esm/src/compat/index.js.map +1 -0
- package/dist/esm/src/messages/EncryptedMessage.js +61 -0
- package/dist/esm/src/messages/EncryptedMessage.js.map +1 -0
- package/dist/esm/src/messages/SignedMessage.js +77 -0
- package/dist/esm/src/messages/SignedMessage.js.map +1 -0
- package/dist/esm/src/messages/index.js +3 -0
- package/dist/esm/src/messages/index.js.map +1 -0
- package/dist/esm/src/primitives/AESGCM.js +371 -0
- package/dist/esm/src/primitives/AESGCM.js.map +1 -0
- package/dist/esm/src/primitives/BasePoint.js +16 -0
- package/dist/esm/src/primitives/BasePoint.js.map +1 -0
- package/dist/esm/src/primitives/BigNumber.js +4304 -0
- package/dist/esm/src/primitives/BigNumber.js.map +1 -0
- package/dist/esm/src/primitives/Curve.js +1141 -0
- package/dist/esm/src/primitives/Curve.js.map +1 -0
- package/dist/esm/src/primitives/DRBG.js +98 -0
- package/dist/esm/src/primitives/DRBG.js.map +1 -0
- package/dist/esm/src/primitives/ECDSA.js +161 -0
- package/dist/esm/src/primitives/ECDSA.js.map +1 -0
- package/dist/esm/src/primitives/Hash.js +1336 -0
- package/dist/esm/src/primitives/Hash.js.map +1 -0
- package/dist/esm/src/primitives/JacobianPoint.js +398 -0
- package/dist/esm/src/primitives/JacobianPoint.js.map +1 -0
- package/dist/esm/src/primitives/K256.js +105 -0
- package/dist/esm/src/primitives/K256.js.map +1 -0
- package/dist/esm/src/primitives/Mersenne.js +117 -0
- package/dist/esm/src/primitives/Mersenne.js.map +1 -0
- package/dist/esm/src/primitives/MontgomoryMethod.js +149 -0
- package/dist/esm/src/primitives/MontgomoryMethod.js.map +1 -0
- package/dist/esm/src/primitives/Point.js +816 -0
- package/dist/esm/src/primitives/Point.js.map +1 -0
- package/dist/esm/src/primitives/PrivateKey.js +184 -0
- package/dist/esm/src/primitives/PrivateKey.js.map +1 -0
- package/dist/esm/src/primitives/PublicKey.js +145 -0
- package/dist/esm/src/primitives/PublicKey.js.map +1 -0
- package/dist/esm/src/primitives/Random.js +56 -0
- package/dist/esm/src/primitives/Random.js.map +1 -0
- package/dist/esm/src/primitives/ReductionContext.js +486 -0
- package/dist/esm/src/primitives/ReductionContext.js.map +1 -0
- package/dist/esm/src/primitives/Signature.js +223 -0
- package/dist/esm/src/primitives/Signature.js.map +1 -0
- package/dist/esm/src/primitives/SymmetricKey.js +63 -0
- package/dist/esm/src/primitives/SymmetricKey.js.map +1 -0
- package/dist/esm/src/primitives/TransactionSignature.js +144 -0
- package/dist/esm/src/primitives/TransactionSignature.js.map +1 -0
- package/dist/esm/src/primitives/index.js +9 -0
- package/dist/esm/src/primitives/index.js.map +1 -0
- package/dist/esm/src/primitives/utils.js +601 -0
- package/dist/esm/src/primitives/utils.js.map +1 -0
- package/dist/esm/src/script/LockingScript.js +29 -0
- package/dist/esm/src/script/LockingScript.js.map +1 -0
- package/dist/esm/src/script/OP.js +206 -0
- package/dist/esm/src/script/OP.js.map +1 -0
- package/dist/esm/src/script/Script.js +424 -0
- package/dist/esm/src/script/Script.js.map +1 -0
- package/dist/esm/src/script/ScriptChunk.js +2 -0
- package/dist/esm/src/script/ScriptChunk.js.map +1 -0
- package/dist/esm/src/script/ScriptTemplate.js +2 -0
- package/dist/esm/src/script/ScriptTemplate.js.map +1 -0
- package/dist/esm/src/script/Spend.js +1240 -0
- package/dist/esm/src/script/Spend.js.map +1 -0
- package/dist/esm/src/script/UnlockingScript.js +29 -0
- package/dist/esm/src/script/UnlockingScript.js.map +1 -0
- package/dist/esm/src/script/index.js +7 -0
- package/dist/esm/src/script/index.js.map +1 -0
- package/dist/esm/src/script/templates/P2PKH.js +92 -0
- package/dist/esm/src/script/templates/P2PKH.js.map +1 -0
- package/dist/esm/src/script/templates/RPuzzle.js +119 -0
- package/dist/esm/src/script/templates/RPuzzle.js.map +1 -0
- package/dist/esm/src/script/templates/index.js +3 -0
- package/dist/esm/src/script/templates/index.js.map +1 -0
- package/dist/esm/src/transaction/Broadcaster.js +2 -0
- package/dist/esm/src/transaction/Broadcaster.js.map +1 -0
- package/dist/esm/src/transaction/ChainTracker.js +2 -0
- package/dist/esm/src/transaction/ChainTracker.js.map +1 -0
- package/dist/esm/src/transaction/FeeModel.js +2 -0
- package/dist/esm/src/transaction/FeeModel.js.map +1 -0
- package/dist/esm/src/transaction/MerklePath.js +237 -0
- package/dist/esm/src/transaction/MerklePath.js.map +1 -0
- package/dist/esm/src/transaction/Transaction.js +557 -0
- package/dist/esm/src/transaction/Transaction.js.map +1 -0
- package/dist/esm/src/transaction/TransactionInput.js +2 -0
- package/dist/esm/src/transaction/TransactionInput.js.map +1 -0
- package/dist/esm/src/transaction/TransactionOutput.js +2 -0
- package/dist/esm/src/transaction/TransactionOutput.js.map +1 -0
- package/dist/esm/src/transaction/broadcasters/ARC.js +100 -0
- package/dist/esm/src/transaction/broadcasters/ARC.js.map +1 -0
- package/dist/esm/src/transaction/broadcasters/index.js +2 -0
- package/dist/esm/src/transaction/broadcasters/index.js.map +1 -0
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js +71 -0
- package/dist/esm/src/transaction/fee-models/SatoshisPerKilobyte.js.map +1 -0
- package/dist/esm/src/transaction/fee-models/index.js +2 -0
- package/dist/esm/src/transaction/fee-models/index.js.map +1 -0
- package/dist/esm/src/transaction/index.js +3 -0
- package/dist/esm/src/transaction/index.js.map +1 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/types/mod.d.ts +9 -0
- package/dist/types/mod.d.ts.map +1 -0
- package/dist/types/src/compat/BIP39.d.ts +132 -0
- package/dist/types/src/compat/BIP39.d.ts.map +1 -0
- package/dist/types/src/compat/BSM.d.ts +28 -0
- package/dist/types/src/compat/BSM.d.ts.map +1 -0
- package/dist/types/src/compat/ECIES.d.ts +62 -0
- package/dist/types/src/compat/ECIES.d.ts.map +1 -0
- package/dist/types/src/compat/HD.d.ts +117 -0
- package/dist/types/src/compat/HD.d.ts.map +1 -0
- package/dist/types/src/compat/Mnemonic.d.ts +132 -0
- package/dist/types/src/compat/Mnemonic.d.ts.map +1 -0
- package/dist/types/src/compat/bip-39-wordlist-en.d.ts +5 -0
- package/dist/types/src/compat/bip-39-wordlist-en.d.ts.map +1 -0
- package/dist/types/src/compat/index.d.ts +5 -0
- package/dist/types/src/compat/index.d.ts.map +1 -0
- package/dist/types/src/messages/EncryptedMessage.d.ts +20 -0
- package/dist/types/src/messages/EncryptedMessage.d.ts.map +1 -0
- package/dist/types/src/messages/SignedMessage.d.ts +21 -0
- package/dist/types/src/messages/SignedMessage.d.ts.map +1 -0
- package/dist/types/src/messages/index.d.ts +3 -0
- package/dist/types/src/messages/index.d.ts.map +1 -0
- package/dist/types/src/primitives/AESGCM.d.ts +14 -0
- package/dist/types/src/primitives/AESGCM.d.ts.map +1 -0
- package/dist/types/src/primitives/BasePoint.d.ts +22 -0
- package/dist/types/src/primitives/BasePoint.d.ts.map +1 -0
- package/dist/types/src/primitives/BigNumber.d.ts +1895 -0
- package/dist/types/src/primitives/BigNumber.d.ts.map +1 -0
- package/dist/types/src/primitives/Curve.d.ts +55 -0
- package/dist/types/src/primitives/Curve.d.ts.map +1 -0
- package/dist/types/src/primitives/DRBG.d.ts +54 -0
- package/dist/types/src/primitives/DRBG.d.ts.map +1 -0
- package/dist/types/src/primitives/ECDSA.d.ts +39 -0
- package/dist/types/src/primitives/ECDSA.d.ts.map +1 -0
- package/dist/types/src/primitives/Hash.d.ts +411 -0
- package/dist/types/src/primitives/Hash.d.ts.map +1 -0
- package/dist/types/src/primitives/JacobianPoint.d.ts +164 -0
- package/dist/types/src/primitives/JacobianPoint.d.ts.map +1 -0
- package/dist/types/src/primitives/K256.d.ts +53 -0
- package/dist/types/src/primitives/K256.d.ts.map +1 -0
- package/dist/types/src/primitives/Mersenne.d.ts +72 -0
- package/dist/types/src/primitives/Mersenne.d.ts.map +1 -0
- package/dist/types/src/primitives/MontgomoryMethod.d.ts +96 -0
- package/dist/types/src/primitives/MontgomoryMethod.d.ts.map +1 -0
- package/dist/types/src/primitives/Point.d.ts +303 -0
- package/dist/types/src/primitives/Point.d.ts.map +1 -0
- package/dist/types/src/primitives/PrivateKey.d.ts +143 -0
- package/dist/types/src/primitives/PrivateKey.d.ts.map +1 -0
- package/dist/types/src/primitives/PublicKey.d.ts +108 -0
- package/dist/types/src/primitives/PublicKey.d.ts.map +1 -0
- package/dist/types/src/primitives/Random.d.ts +14 -0
- package/dist/types/src/primitives/Random.d.ts.map +1 -0
- package/dist/types/src/primitives/ReductionContext.d.ts +308 -0
- package/dist/types/src/primitives/ReductionContext.d.ts.map +1 -0
- package/dist/types/src/primitives/Signature.d.ts +100 -0
- package/dist/types/src/primitives/Signature.d.ts.map +1 -0
- package/dist/types/src/primitives/SymmetricKey.d.ts +44 -0
- package/dist/types/src/primitives/SymmetricKey.d.ts.map +1 -0
- package/dist/types/src/primitives/TransactionSignature.d.ts +36 -0
- package/dist/types/src/primitives/TransactionSignature.d.ts.map +1 -0
- package/dist/types/src/primitives/index.d.ts +9 -0
- package/dist/types/src/primitives/index.d.ts.map +1 -0
- package/dist/types/src/primitives/utils.d.ts +118 -0
- package/dist/types/src/primitives/utils.d.ts.map +1 -0
- package/dist/types/src/script/LockingScript.d.ts +25 -0
- package/dist/types/src/script/LockingScript.d.ts.map +1 -0
- package/dist/types/src/script/OP.d.ts +193 -0
- package/dist/types/src/script/OP.d.ts.map +1 -0
- package/dist/types/src/script/Script.d.ts +148 -0
- package/dist/types/src/script/Script.d.ts.map +1 -0
- package/dist/types/src/script/ScriptChunk.d.ts +8 -0
- package/dist/types/src/script/ScriptChunk.d.ts.map +1 -0
- package/dist/types/src/script/ScriptTemplate.d.ts +33 -0
- package/dist/types/src/script/ScriptTemplate.d.ts.map +1 -0
- package/dist/types/src/script/Spend.d.ts +103 -0
- package/dist/types/src/script/Spend.d.ts.map +1 -0
- package/dist/types/src/script/UnlockingScript.d.ts +25 -0
- package/dist/types/src/script/UnlockingScript.d.ts.map +1 -0
- package/dist/types/src/script/index.d.ts +8 -0
- package/dist/types/src/script/index.d.ts.map +1 -0
- package/dist/types/src/script/templates/P2PKH.d.ts +37 -0
- package/dist/types/src/script/templates/P2PKH.d.ts.map +1 -0
- package/dist/types/src/script/templates/RPuzzle.d.ts +47 -0
- package/dist/types/src/script/templates/RPuzzle.d.ts.map +1 -0
- package/dist/types/src/script/templates/index.d.ts +3 -0
- package/dist/types/src/script/templates/index.d.ts.map +1 -0
- package/dist/types/src/transaction/Broadcaster.d.ts +39 -0
- package/dist/types/src/transaction/Broadcaster.d.ts.map +1 -0
- package/dist/types/src/transaction/ChainTracker.d.ts +23 -0
- package/dist/types/src/transaction/ChainTracker.d.ts.map +1 -0
- package/dist/types/src/transaction/FeeModel.d.ts +12 -0
- package/dist/types/src/transaction/FeeModel.d.ts.map +1 -0
- package/dist/types/src/transaction/MerklePath.d.ts +91 -0
- package/dist/types/src/transaction/MerklePath.d.ts.map +1 -0
- package/dist/types/src/transaction/Transaction.d.ts +181 -0
- package/dist/types/src/transaction/Transaction.d.ts.map +1 -0
- package/dist/types/src/transaction/TransactionInput.d.ts +63 -0
- package/dist/types/src/transaction/TransactionInput.d.ts.map +1 -0
- package/dist/types/src/transaction/TransactionOutput.d.ts +36 -0
- package/dist/types/src/transaction/TransactionOutput.d.ts.map +1 -0
- package/dist/types/src/transaction/broadcasters/ARC.d.ts +28 -0
- package/dist/types/src/transaction/broadcasters/ARC.d.ts.map +1 -0
- package/dist/types/src/transaction/broadcasters/index.d.ts +2 -0
- package/dist/types/src/transaction/broadcasters/index.d.ts.map +1 -0
- package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts +26 -0
- package/dist/types/src/transaction/fee-models/SatoshisPerKilobyte.d.ts.map +1 -0
- package/dist/types/src/transaction/fee-models/index.d.ts +2 -0
- package/dist/types/src/transaction/fee-models/index.d.ts.map +1 -0
- package/dist/types/src/transaction/index.d.ts +7 -0
- package/dist/types/src/transaction/index.d.ts.map +1 -0
- package/dist/types/tsconfig.types.tsbuildinfo +1 -0
- package/docs/README.md +9 -0
- package/docs/compat.md +2856 -0
- package/docs/getting-started/COMMONJS.md +94 -0
- package/docs/getting-started/REACT-TS.md +131 -0
- package/docs/getting-started/TS-NODE.md +106 -0
- package/docs/getting-started/VUE.md +103 -0
- package/docs/messages.md +146 -0
- package/docs/primitives.md +7440 -0
- package/docs/script.md +766 -0
- package/docs/transaction.md +741 -0
- package/jest.config.js +6 -0
- package/mod.ts +8 -0
- package/package.json +137 -0
- package/src/compat/BSM.ts +51 -0
- package/src/compat/ECIES.ts +557 -0
- package/src/compat/HD.ts +348 -0
- package/src/compat/Mnemonic.ts +295 -0
- package/src/compat/__tests/BSM.test.ts +38 -0
- package/src/compat/__tests/ECIES.test.ts +90 -0
- package/src/compat/__tests/HD.test.ts +405 -0
- package/src/compat/__tests/Mnemonic.test.ts +177 -0
- package/src/compat/__tests/Mnemonic.vectors.ts +172 -0
- package/src/compat/bip-39-wordlist-en.ts +2053 -0
- package/src/compat/index.ts +4 -0
- package/src/messages/EncryptedMessage.ts +70 -0
- package/src/messages/SignedMessage.ts +87 -0
- package/src/messages/__tests/EncryptedMessage.test.ts +36 -0
- package/src/messages/__tests/SignedMessage.test.ts +53 -0
- package/src/messages/index.ts +2 -0
- package/src/primitives/AESGCM.ts +479 -0
- package/src/primitives/BasePoint.ts +21 -0
- package/src/primitives/BigNumber.ts +4619 -0
- package/src/primitives/Curve.ts +1163 -0
- package/src/primitives/DRBG.ts +102 -0
- package/src/primitives/ECDSA.ts +164 -0
- package/src/primitives/Hash.ts +1420 -0
- package/src/primitives/JacobianPoint.ts +410 -0
- package/src/primitives/K256.ts +116 -0
- package/src/primitives/Mersenne.ts +123 -0
- package/src/primitives/MontgomoryMethod.ts +160 -0
- package/src/primitives/Point.ts +852 -0
- package/src/primitives/PrivateKey.ts +195 -0
- package/src/primitives/PublicKey.ts +154 -0
- package/src/primitives/Random.ts +55 -0
- package/src/primitives/ReductionContext.ts +528 -0
- package/src/primitives/Signature.ts +235 -0
- package/src/primitives/SymmetricKey.ts +75 -0
- package/src/primitives/TransactionSignature.ts +189 -0
- package/src/primitives/__tests/AESGCM.test.ts +338 -0
- package/src/primitives/__tests/BRC42.private.vectors.ts +33 -0
- package/src/primitives/__tests/BRC42.public.vectors.ts +33 -0
- package/src/primitives/__tests/BigNumber.arithmatic.test.ts +572 -0
- package/src/primitives/__tests/BigNumber.binary.test.ts +203 -0
- package/src/primitives/__tests/BigNumber.constructor.test.ts +176 -0
- package/src/primitives/__tests/BigNumber.dhGroup.test.ts +18 -0
- package/src/primitives/__tests/BigNumber.fixtures.ts +264 -0
- package/src/primitives/__tests/BigNumber.serializers.test.ts +157 -0
- package/src/primitives/__tests/BigNumber.utils.test.ts +347 -0
- package/src/primitives/__tests/Curve.unit.test.ts +192 -0
- package/src/primitives/__tests/DRBG.test.ts +18 -0
- package/src/primitives/__tests/DRBG.vectors.ts +167 -0
- package/src/primitives/__tests/ECDH.test.ts +31 -0
- package/src/primitives/__tests/ECDSA.test.ts +58 -0
- package/src/primitives/__tests/HMAC.test.ts +59 -0
- package/src/primitives/__tests/Hash.test.ts +121 -0
- package/src/primitives/__tests/PBKDF2.vectors.ts +119 -0
- package/src/primitives/__tests/PrivateKey.test.ts +17 -0
- package/src/primitives/__tests/PublicKey.test.ts +66 -0
- package/src/primitives/__tests/Random.test.ts +14 -0
- package/src/primitives/__tests/Reader.test.ts +296 -0
- package/src/primitives/__tests/ReductionContext.test.ts +279 -0
- package/src/primitives/__tests/SymmetricKey.test.ts +58 -0
- package/src/primitives/__tests/SymmetricKey.vectors.ts +40 -0
- package/src/primitives/__tests/Writer.test.ts +198 -0
- package/src/primitives/__tests/sighash.vectors.ts +3503 -0
- package/src/primitives/__tests/utils.test.ts +108 -0
- package/src/primitives/index.ts +8 -0
- package/src/primitives/utils.ts +665 -0
- package/src/script/LockingScript.ts +30 -0
- package/src/script/OP.ts +219 -0
- package/src/script/Script.ts +426 -0
- package/src/script/ScriptChunk.ts +7 -0
- package/src/script/ScriptTemplate.ts +36 -0
- package/src/script/Spend.ts +1379 -0
- package/src/script/UnlockingScript.ts +30 -0
- package/src/script/__tests/Script.test.ts +369 -0
- package/src/script/__tests/Spend.test.ts +248 -0
- package/src/script/__tests/script.invalid.vectors.ts +925 -0
- package/src/script/__tests/script.valid.vectors.ts +1120 -0
- package/src/script/__tests/scriptFromVector.ts +42 -0
- package/src/script/__tests/spend.valid.vectors.ts +2288 -0
- package/src/script/index.ts +7 -0
- package/src/script/templates/P2PKH.ts +109 -0
- package/src/script/templates/RPuzzle.ts +140 -0
- package/src/script/templates/index.ts +2 -0
- package/src/transaction/Broadcaster.ts +42 -0
- package/src/transaction/ChainTracker.ts +22 -0
- package/src/transaction/FeeModel.ts +13 -0
- package/src/transaction/MerklePath.ts +259 -0
- package/src/transaction/Transaction.ts +602 -0
- package/src/transaction/TransactionInput.ts +63 -0
- package/src/transaction/TransactionOutput.ts +37 -0
- package/src/transaction/__tests/MerklePath.test.ts +181 -0
- package/src/transaction/__tests/Transaction.test.ts +413 -0
- package/src/transaction/__tests/bigtx.vectors.ts +4 -0
- package/src/transaction/__tests/bump.invalid.vectors.ts +8 -0
- package/src/transaction/__tests/bump.valid.vectors.ts +4 -0
- package/src/transaction/__tests/tx.invalid.vectors.ts +281 -0
- package/src/transaction/__tests/tx.valid.vectors.ts +364 -0
- package/src/transaction/broadcasters/ARC.ts +106 -0
- package/src/transaction/broadcasters/__tests/ARC.test.ts +115 -0
- package/src/transaction/broadcasters/index.ts +1 -0
- package/src/transaction/fee-models/SatoshisPerKilobyte.ts +71 -0
- package/src/transaction/fee-models/index.ts +1 -0
- package/src/transaction/index.ts +6 -0
- package/ts2md.json +5 -0
- package/tsconfig.base.json +26 -0
- package/tsconfig.cjs.json +11 -0
- package/tsconfig.eslint.json +12 -0
- package/tsconfig.esm.json +9 -0
- package/tsconfig.json +17 -0
- package/tsconfig.types.json +11 -0
package/docs/script.md
ADDED
|
@@ -0,0 +1,766 @@
|
|
|
1
|
+
# API
|
|
2
|
+
|
|
3
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
4
|
+
|
|
5
|
+
## Interfaces
|
|
6
|
+
|
|
7
|
+
| |
|
|
8
|
+
| --- |
|
|
9
|
+
| [ScriptChunk](#interface-scriptchunk) |
|
|
10
|
+
| [ScriptTemplate](#interface-scripttemplate) |
|
|
11
|
+
|
|
12
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
### Interface: ScriptChunk
|
|
17
|
+
|
|
18
|
+
A representation of a chunk of a script, which includes an opcode. For push operations, the associated data to push onto the stack is also included.
|
|
19
|
+
|
|
20
|
+
```ts
|
|
21
|
+
export default interface ScriptChunk {
|
|
22
|
+
op: number;
|
|
23
|
+
data?: number[];
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
### Interface: ScriptTemplate
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
export default interface ScriptTemplate {
|
|
34
|
+
lock: (...params: any) => LockingScript;
|
|
35
|
+
unlock: (...params: any) => {
|
|
36
|
+
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
|
|
37
|
+
estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
<details>
|
|
43
|
+
|
|
44
|
+
<summary>Interface ScriptTemplate Details</summary>
|
|
45
|
+
|
|
46
|
+
#### Property lock
|
|
47
|
+
|
|
48
|
+
Creates a locking script with the given parameters.
|
|
49
|
+
|
|
50
|
+
```ts
|
|
51
|
+
lock: (...params: any) => LockingScript
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
#### Property unlock
|
|
55
|
+
|
|
56
|
+
Creates a function that generates an unlocking script along with its signature and length estimation.
|
|
57
|
+
|
|
58
|
+
This method returns an object containing two functions:
|
|
59
|
+
1. `sign` - A function that, when called with a transaction and an input index, returns an UnlockingScript instance.
|
|
60
|
+
2. `estimateLength` - A function that returns the estimated length of the unlocking script in bytes.
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
unlock: (...params: any) => {
|
|
64
|
+
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
|
|
65
|
+
estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>;
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
</details>
|
|
70
|
+
|
|
71
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
## Classes
|
|
75
|
+
|
|
76
|
+
| |
|
|
77
|
+
| --- |
|
|
78
|
+
| [LockingScript](#class-lockingscript) |
|
|
79
|
+
| [P2PKH](#class-p2pkh) |
|
|
80
|
+
| [RPuzzle](#class-rpuzzle) |
|
|
81
|
+
| [Script](#class-script) |
|
|
82
|
+
| [Spend](#class-spend) |
|
|
83
|
+
| [UnlockingScript](#class-unlockingscript) |
|
|
84
|
+
|
|
85
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### Class: Script
|
|
90
|
+
|
|
91
|
+
The Script class represents a script in a Bitcoin SV transaction,
|
|
92
|
+
encapsulating the functionality to construct, parse, and serialize
|
|
93
|
+
scripts used in both locking (output) and unlocking (input) scripts.
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
export default class Script {
|
|
97
|
+
chunks: ScriptChunk[];
|
|
98
|
+
static fromASM(asm: string): Script
|
|
99
|
+
static fromHex(hex: string): Script
|
|
100
|
+
static fromBinary(bin: number[]): Script
|
|
101
|
+
constructor(chunks: ScriptChunk[] = [])
|
|
102
|
+
toASM(): string
|
|
103
|
+
toHex(): string
|
|
104
|
+
toBinary(): number[]
|
|
105
|
+
writeScript(script: Script): Script
|
|
106
|
+
writeOpCode(op: number): Script
|
|
107
|
+
setChunkOpCode(i: number, op: number): Script
|
|
108
|
+
writeBn(bn: BigNumber): Script
|
|
109
|
+
writeBin(bin: number[]): Script
|
|
110
|
+
writeNumber(num: number): Script
|
|
111
|
+
removeCodeseparators(): Script
|
|
112
|
+
findAndDelete(script: Script): Script
|
|
113
|
+
isPushOnly(): boolean
|
|
114
|
+
isLockingScript(): boolean
|
|
115
|
+
isUnlockingScript(): boolean
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
<details>
|
|
120
|
+
|
|
121
|
+
<summary>Class Script Details</summary>
|
|
122
|
+
|
|
123
|
+
#### Constructor
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
constructor(chunks: ScriptChunk[] = [])
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
Argument Details
|
|
130
|
+
|
|
131
|
+
+ **chunks**
|
|
132
|
+
+ =[] - An array of script chunks to directly initialize the script.
|
|
133
|
+
|
|
134
|
+
#### Method findAndDelete
|
|
135
|
+
|
|
136
|
+
Deletes the given item wherever it appears in the current script.
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
findAndDelete(script: Script): Script
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Returns
|
|
143
|
+
|
|
144
|
+
This script instance for chaining.
|
|
145
|
+
|
|
146
|
+
Argument Details
|
|
147
|
+
|
|
148
|
+
+ **script**
|
|
149
|
+
+ The script containing the item to delete from the current script.
|
|
150
|
+
|
|
151
|
+
#### Method fromASM
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
static fromASM(asm: string): Script
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Returns
|
|
158
|
+
|
|
159
|
+
A new Script instance.
|
|
160
|
+
|
|
161
|
+
Argument Details
|
|
162
|
+
|
|
163
|
+
+ **asm**
|
|
164
|
+
+ The script in ASM string format.
|
|
165
|
+
|
|
166
|
+
Example
|
|
167
|
+
|
|
168
|
+
```ts
|
|
169
|
+
const script = Script.fromASM("OP_DUP OP_HASH160 abcd... OP_EQUALVERIFY OP_CHECKSIG")
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
#### Method fromBinary
|
|
173
|
+
|
|
174
|
+
```ts
|
|
175
|
+
static fromBinary(bin: number[]): Script
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Returns
|
|
179
|
+
|
|
180
|
+
A new Script instance.
|
|
181
|
+
|
|
182
|
+
Argument Details
|
|
183
|
+
|
|
184
|
+
+ **bin**
|
|
185
|
+
+ The script in binary array format.
|
|
186
|
+
|
|
187
|
+
Example
|
|
188
|
+
|
|
189
|
+
```ts
|
|
190
|
+
const script = Script.fromBinary([0x76, 0xa9, ...])
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
#### Method fromHex
|
|
194
|
+
|
|
195
|
+
```ts
|
|
196
|
+
static fromHex(hex: string): Script
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Returns
|
|
200
|
+
|
|
201
|
+
A new Script instance.
|
|
202
|
+
|
|
203
|
+
Argument Details
|
|
204
|
+
|
|
205
|
+
+ **hex**
|
|
206
|
+
+ The script in hexadecimal format.
|
|
207
|
+
|
|
208
|
+
Example
|
|
209
|
+
|
|
210
|
+
```ts
|
|
211
|
+
const script = Script.fromHex("76a9...");
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
#### Method isLockingScript
|
|
215
|
+
|
|
216
|
+
```ts
|
|
217
|
+
isLockingScript(): boolean
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Returns
|
|
221
|
+
|
|
222
|
+
True if the script is a locking script, otherwise false.
|
|
223
|
+
|
|
224
|
+
#### Method isPushOnly
|
|
225
|
+
|
|
226
|
+
```ts
|
|
227
|
+
isPushOnly(): boolean
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
Returns
|
|
231
|
+
|
|
232
|
+
True if the script is push-only, otherwise false.
|
|
233
|
+
|
|
234
|
+
#### Method isUnlockingScript
|
|
235
|
+
|
|
236
|
+
```ts
|
|
237
|
+
isUnlockingScript(): boolean
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Returns
|
|
241
|
+
|
|
242
|
+
True if the script is an unlocking script, otherwise false.
|
|
243
|
+
|
|
244
|
+
#### Method removeCodeseparators
|
|
245
|
+
|
|
246
|
+
```ts
|
|
247
|
+
removeCodeseparators(): Script
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
Returns
|
|
251
|
+
|
|
252
|
+
This script instance for chaining.
|
|
253
|
+
|
|
254
|
+
#### Method setChunkOpCode
|
|
255
|
+
|
|
256
|
+
```ts
|
|
257
|
+
setChunkOpCode(i: number, op: number): Script
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Returns
|
|
261
|
+
|
|
262
|
+
This script instance for chaining.
|
|
263
|
+
|
|
264
|
+
Argument Details
|
|
265
|
+
|
|
266
|
+
+ **i**
|
|
267
|
+
+ The index of the chunk.
|
|
268
|
+
+ **op**
|
|
269
|
+
+ The opcode to set.
|
|
270
|
+
|
|
271
|
+
#### Method toASM
|
|
272
|
+
|
|
273
|
+
```ts
|
|
274
|
+
toASM(): string
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Returns
|
|
278
|
+
|
|
279
|
+
The script in ASM string format.
|
|
280
|
+
|
|
281
|
+
#### Method toBinary
|
|
282
|
+
|
|
283
|
+
```ts
|
|
284
|
+
toBinary(): number[]
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Returns
|
|
288
|
+
|
|
289
|
+
The script in binary array format.
|
|
290
|
+
|
|
291
|
+
#### Method toHex
|
|
292
|
+
|
|
293
|
+
```ts
|
|
294
|
+
toHex(): string
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
Returns
|
|
298
|
+
|
|
299
|
+
The script in hexadecimal format.
|
|
300
|
+
|
|
301
|
+
#### Method writeBin
|
|
302
|
+
|
|
303
|
+
```ts
|
|
304
|
+
writeBin(bin: number[]): Script
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Returns
|
|
308
|
+
|
|
309
|
+
This script instance for chaining.
|
|
310
|
+
|
|
311
|
+
Argument Details
|
|
312
|
+
|
|
313
|
+
+ **bin**
|
|
314
|
+
+ The binary data to append.
|
|
315
|
+
|
|
316
|
+
Throws
|
|
317
|
+
|
|
318
|
+
Throws an error if the data is too large to be pushed.
|
|
319
|
+
|
|
320
|
+
#### Method writeBn
|
|
321
|
+
|
|
322
|
+
```ts
|
|
323
|
+
writeBn(bn: BigNumber): Script
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
Returns
|
|
327
|
+
|
|
328
|
+
This script instance for chaining.
|
|
329
|
+
|
|
330
|
+
Argument Details
|
|
331
|
+
|
|
332
|
+
+ **bn**
|
|
333
|
+
+ The BigNumber to append.
|
|
334
|
+
|
|
335
|
+
#### Method writeNumber
|
|
336
|
+
|
|
337
|
+
```ts
|
|
338
|
+
writeNumber(num: number): Script
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
Returns
|
|
342
|
+
|
|
343
|
+
This script instance for chaining.
|
|
344
|
+
|
|
345
|
+
Argument Details
|
|
346
|
+
|
|
347
|
+
+ **num**
|
|
348
|
+
+ The number to append.
|
|
349
|
+
|
|
350
|
+
#### Method writeOpCode
|
|
351
|
+
|
|
352
|
+
```ts
|
|
353
|
+
writeOpCode(op: number): Script
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
Returns
|
|
357
|
+
|
|
358
|
+
This script instance for chaining.
|
|
359
|
+
|
|
360
|
+
Argument Details
|
|
361
|
+
|
|
362
|
+
+ **op**
|
|
363
|
+
+ The opcode to append.
|
|
364
|
+
|
|
365
|
+
#### Method writeScript
|
|
366
|
+
|
|
367
|
+
```ts
|
|
368
|
+
writeScript(script: Script): Script
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
Returns
|
|
372
|
+
|
|
373
|
+
This script instance for chaining.
|
|
374
|
+
|
|
375
|
+
Argument Details
|
|
376
|
+
|
|
377
|
+
+ **script**
|
|
378
|
+
+ The script to append.
|
|
379
|
+
|
|
380
|
+
</details>
|
|
381
|
+
|
|
382
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
### Class: LockingScript
|
|
386
|
+
|
|
387
|
+
The LockingScript class represents a locking script in a Bitcoin SV transaction.
|
|
388
|
+
It extends the Script class and is used specifically for output scripts that lock funds.
|
|
389
|
+
|
|
390
|
+
Inherits all properties and methods from the Script class.
|
|
391
|
+
|
|
392
|
+
```ts
|
|
393
|
+
export default class LockingScript extends Script {
|
|
394
|
+
isLockingScript(): boolean
|
|
395
|
+
isUnlockingScript(): boolean
|
|
396
|
+
}
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
<details>
|
|
400
|
+
|
|
401
|
+
<summary>Class LockingScript Details</summary>
|
|
402
|
+
|
|
403
|
+
#### Method isLockingScript
|
|
404
|
+
|
|
405
|
+
```ts
|
|
406
|
+
isLockingScript(): boolean
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
Returns
|
|
410
|
+
|
|
411
|
+
Always returns true for a LockingScript instance.
|
|
412
|
+
|
|
413
|
+
#### Method isUnlockingScript
|
|
414
|
+
|
|
415
|
+
```ts
|
|
416
|
+
isUnlockingScript(): boolean
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
Returns
|
|
420
|
+
|
|
421
|
+
Always returns false for a LockingScript instance.
|
|
422
|
+
|
|
423
|
+
</details>
|
|
424
|
+
|
|
425
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
### Class: UnlockingScript
|
|
429
|
+
|
|
430
|
+
The UnlockingScript class represents an unlocking script in a Bitcoin SV transaction.
|
|
431
|
+
It extends the Script class and is used specifically for input scripts that unlock funds.
|
|
432
|
+
|
|
433
|
+
Inherits all properties and methods from the Script class.
|
|
434
|
+
|
|
435
|
+
```ts
|
|
436
|
+
export default class UnlockingScript extends Script {
|
|
437
|
+
isLockingScript(): boolean
|
|
438
|
+
isUnlockingScript(): boolean
|
|
439
|
+
}
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
<details>
|
|
443
|
+
|
|
444
|
+
<summary>Class UnlockingScript Details</summary>
|
|
445
|
+
|
|
446
|
+
#### Method isLockingScript
|
|
447
|
+
|
|
448
|
+
```ts
|
|
449
|
+
isLockingScript(): boolean
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
Returns
|
|
453
|
+
|
|
454
|
+
Always returns false for an UnlockingScript instance.
|
|
455
|
+
|
|
456
|
+
#### Method isUnlockingScript
|
|
457
|
+
|
|
458
|
+
```ts
|
|
459
|
+
isUnlockingScript(): boolean
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
Returns
|
|
463
|
+
|
|
464
|
+
Always returns true for an UnlockingScript instance.
|
|
465
|
+
|
|
466
|
+
</details>
|
|
467
|
+
|
|
468
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
469
|
+
|
|
470
|
+
---
|
|
471
|
+
### Class: Spend
|
|
472
|
+
|
|
473
|
+
The Spend class represents a spend action within a Bitcoin SV transaction.
|
|
474
|
+
It encapsulates all the necessary data required for spending a UTXO (Unspent Transaction Output)
|
|
475
|
+
and includes details about the source transaction, output, and the spending transaction itself.
|
|
476
|
+
|
|
477
|
+
```ts
|
|
478
|
+
export default class Spend {
|
|
479
|
+
sourceTXID: string;
|
|
480
|
+
sourceOutputIndex: number;
|
|
481
|
+
sourceSatoshis: number;
|
|
482
|
+
lockingScript: LockingScript;
|
|
483
|
+
transactionVersion: number;
|
|
484
|
+
otherInputs: TransactionInput[];
|
|
485
|
+
outputs: TransactionOutput[];
|
|
486
|
+
inputIndex: number;
|
|
487
|
+
unlockingScript: UnlockingScript;
|
|
488
|
+
inputSequence: number;
|
|
489
|
+
lockTime: number;
|
|
490
|
+
context: "UnlockingScript" | "LockingScript";
|
|
491
|
+
programCounter: number;
|
|
492
|
+
lastCodeSeparator: number | null;
|
|
493
|
+
stack: number[][];
|
|
494
|
+
altStack: number[][];
|
|
495
|
+
ifStack: boolean[];
|
|
496
|
+
constructor(params: {
|
|
497
|
+
sourceTXID: string;
|
|
498
|
+
sourceOutputIndex: number;
|
|
499
|
+
sourceSatoshis: number;
|
|
500
|
+
lockingScript: LockingScript;
|
|
501
|
+
transactionVersion: number;
|
|
502
|
+
otherInputs: TransactionInput[];
|
|
503
|
+
outputs: TransactionOutput[];
|
|
504
|
+
unlockingScript: UnlockingScript;
|
|
505
|
+
inputSequence: number;
|
|
506
|
+
inputIndex: number;
|
|
507
|
+
lockTime: number;
|
|
508
|
+
})
|
|
509
|
+
reset(): void
|
|
510
|
+
step(): void
|
|
511
|
+
validate(): boolean
|
|
512
|
+
}
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
<details>
|
|
516
|
+
|
|
517
|
+
<summary>Class Spend Details</summary>
|
|
518
|
+
|
|
519
|
+
#### Constructor
|
|
520
|
+
|
|
521
|
+
```ts
|
|
522
|
+
constructor(params: {
|
|
523
|
+
sourceTXID: string;
|
|
524
|
+
sourceOutputIndex: number;
|
|
525
|
+
sourceSatoshis: number;
|
|
526
|
+
lockingScript: LockingScript;
|
|
527
|
+
transactionVersion: number;
|
|
528
|
+
otherInputs: TransactionInput[];
|
|
529
|
+
outputs: TransactionOutput[];
|
|
530
|
+
unlockingScript: UnlockingScript;
|
|
531
|
+
inputSequence: number;
|
|
532
|
+
inputIndex: number;
|
|
533
|
+
lockTime: number;
|
|
534
|
+
})
|
|
535
|
+
```
|
|
536
|
+
|
|
537
|
+
Argument Details
|
|
538
|
+
|
|
539
|
+
+ **params.sourceTXID**
|
|
540
|
+
+ The transaction ID of the source UTXO.
|
|
541
|
+
+ **params.sourceOutputIndex**
|
|
542
|
+
+ The index of the output in the source transaction.
|
|
543
|
+
+ **params.sourceSatoshis**
|
|
544
|
+
+ The amount of satoshis in the source UTXO.
|
|
545
|
+
+ **params.lockingScript**
|
|
546
|
+
+ The locking script associated with the UTXO.
|
|
547
|
+
+ **params.transactionVersion**
|
|
548
|
+
+ The version of the current transaction.
|
|
549
|
+
+ **params.otherInputs**
|
|
550
|
+
+ -
|
|
551
|
+
An array of other inputs in the transaction.
|
|
552
|
+
+ **params.outputs**
|
|
553
|
+
+ -
|
|
554
|
+
The outputs of the current transaction.
|
|
555
|
+
+ **params.inputIndex**
|
|
556
|
+
+ The index of this input in the current transaction.
|
|
557
|
+
+ **params.unlockingScript**
|
|
558
|
+
+ The unlocking script for this spend.
|
|
559
|
+
+ **params.inputSequence**
|
|
560
|
+
+ The sequence number of this input.
|
|
561
|
+
+ **params.lockTime**
|
|
562
|
+
+ The lock time of the transaction.
|
|
563
|
+
|
|
564
|
+
Example
|
|
565
|
+
|
|
566
|
+
```ts
|
|
567
|
+
const spend = new Spend({
|
|
568
|
+
sourceTXID: "abcd1234", // sourceTXID
|
|
569
|
+
sourceOutputIndex: 0, // sourceOutputIndex
|
|
570
|
+
sourceSatoshis: new BigNumber(1000), // sourceSatoshis
|
|
571
|
+
lockingScript: LockingScript.fromASM("OP_DUP OP_HASH160 abcd1234... OP_EQUALVERIFY OP_CHECKSIG"),
|
|
572
|
+
transactionVersion: 1, // transactionVersion
|
|
573
|
+
otherInputs: [{ sourceTXID: "abcd1234", sourceOutputIndex: 1, sequence: 0xffffffff }], // otherInputs
|
|
574
|
+
outputs: [{ satoshis: new BigNumber(500), lockingScript: LockingScript.fromASM("OP_DUP...") }], // outputs
|
|
575
|
+
inputIndex: 0, // inputIndex
|
|
576
|
+
unlockingScript: UnlockingScript.fromASM("3045... 02ab..."),
|
|
577
|
+
inputSequence: 0xffffffff // inputSequence
|
|
578
|
+
});
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
#### Method validate
|
|
582
|
+
|
|
583
|
+
```ts
|
|
584
|
+
validate(): boolean
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
Returns
|
|
588
|
+
|
|
589
|
+
Returns true if the scripts are valid and the spend is legitimate, otherwise false.
|
|
590
|
+
|
|
591
|
+
Example
|
|
592
|
+
|
|
593
|
+
```ts
|
|
594
|
+
if (spend.validate()) {
|
|
595
|
+
console.log("Spend is valid!");
|
|
596
|
+
} else {
|
|
597
|
+
console.log("Invalid spend!");
|
|
598
|
+
}
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
</details>
|
|
602
|
+
|
|
603
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
604
|
+
|
|
605
|
+
---
|
|
606
|
+
### Class: P2PKH
|
|
607
|
+
|
|
608
|
+
P2PKH (Pay To Public Key Hash) class implementing ScriptTemplate.
|
|
609
|
+
|
|
610
|
+
This class provides methods to create Pay To Public Key Hash locking and unlocking scripts, including the unlocking of P2PKH UTXOs with the private key.
|
|
611
|
+
|
|
612
|
+
```ts
|
|
613
|
+
export default class P2PKH implements ScriptTemplate {
|
|
614
|
+
lock(pubkeyhash: number[]): LockingScript
|
|
615
|
+
unlock(privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false): {
|
|
616
|
+
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
|
|
617
|
+
estimateLength: () => Promise<106>;
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
<details>
|
|
623
|
+
|
|
624
|
+
<summary>Class P2PKH Details</summary>
|
|
625
|
+
|
|
626
|
+
#### Method lock
|
|
627
|
+
|
|
628
|
+
Creates a P2PKH locking script for a given public key hash.
|
|
629
|
+
|
|
630
|
+
```ts
|
|
631
|
+
lock(pubkeyhash: number[]): LockingScript
|
|
632
|
+
```
|
|
633
|
+
|
|
634
|
+
Returns
|
|
635
|
+
|
|
636
|
+
- A P2PKH locking script.
|
|
637
|
+
|
|
638
|
+
Argument Details
|
|
639
|
+
|
|
640
|
+
+ **pubkeyhash**
|
|
641
|
+
+ An array representing the public key hash.
|
|
642
|
+
|
|
643
|
+
#### Method unlock
|
|
644
|
+
|
|
645
|
+
Creates a function that generates a P2PKH unlocking script along with its signature and length estimation.
|
|
646
|
+
|
|
647
|
+
The returned object contains:
|
|
648
|
+
1. `sign` - A function that, when invoked with a transaction and an input index,
|
|
649
|
+
produces an unlocking script suitable for a P2PKH locked output.
|
|
650
|
+
2. `estimateLength` - A function that returns the estimated length of the unlocking script in bytes.
|
|
651
|
+
|
|
652
|
+
```ts
|
|
653
|
+
unlock(privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false): {
|
|
654
|
+
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
|
|
655
|
+
estimateLength: () => Promise<106>;
|
|
656
|
+
}
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
Returns
|
|
660
|
+
|
|
661
|
+
- An object containing the `sign` and `estimateLength` functions.
|
|
662
|
+
|
|
663
|
+
Argument Details
|
|
664
|
+
|
|
665
|
+
+ **privateKey**
|
|
666
|
+
+ The private key used for signing the transaction.
|
|
667
|
+
+ **signOutputs**
|
|
668
|
+
+ The signature scope for outputs.
|
|
669
|
+
+ **anyoneCanPay**
|
|
670
|
+
+ Flag indicating if the signature allows for other inputs to be added later.
|
|
671
|
+
|
|
672
|
+
</details>
|
|
673
|
+
|
|
674
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
675
|
+
|
|
676
|
+
---
|
|
677
|
+
### Class: RPuzzle
|
|
678
|
+
|
|
679
|
+
RPuzzle class implementing ScriptTemplate.
|
|
680
|
+
|
|
681
|
+
This class provides methods to create R Puzzle and R Puzzle Hash locking and unlocking scripts, including the unlocking of UTXOs with the correct K value.
|
|
682
|
+
|
|
683
|
+
```ts
|
|
684
|
+
export default class RPuzzle implements ScriptTemplate {
|
|
685
|
+
type: "raw" | "SHA1" | "SHA256" | "HASH256" | "RIPEMD160" | "HASH160" = "raw";
|
|
686
|
+
constructor(type: "raw" | "SHA1" | "SHA256" | "HASH256" | "RIPEMD160" | "HASH160" = "raw")
|
|
687
|
+
lock(value: number[]): LockingScript
|
|
688
|
+
unlock(k: BigNumber, privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false): {
|
|
689
|
+
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
|
|
690
|
+
estimateLength: () => Promise<106>;
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
```
|
|
694
|
+
|
|
695
|
+
<details>
|
|
696
|
+
|
|
697
|
+
<summary>Class RPuzzle Details</summary>
|
|
698
|
+
|
|
699
|
+
#### Constructor
|
|
700
|
+
|
|
701
|
+
```ts
|
|
702
|
+
constructor(type: "raw" | "SHA1" | "SHA256" | "HASH256" | "RIPEMD160" | "HASH160" = "raw")
|
|
703
|
+
```
|
|
704
|
+
|
|
705
|
+
Argument Details
|
|
706
|
+
|
|
707
|
+
+ **type**
|
|
708
|
+
+ Denotes the type of puzzle to create
|
|
709
|
+
|
|
710
|
+
#### Method lock
|
|
711
|
+
|
|
712
|
+
Creates an R puzzle locking script for a given R value or R value hash.
|
|
713
|
+
|
|
714
|
+
```ts
|
|
715
|
+
lock(value: number[]): LockingScript
|
|
716
|
+
```
|
|
717
|
+
|
|
718
|
+
Returns
|
|
719
|
+
|
|
720
|
+
- An R puzzle locking script.
|
|
721
|
+
|
|
722
|
+
Argument Details
|
|
723
|
+
|
|
724
|
+
+ **value**
|
|
725
|
+
+ An array representing the R value or its hash.
|
|
726
|
+
|
|
727
|
+
#### Method unlock
|
|
728
|
+
|
|
729
|
+
Creates a function that generates an R puzzle unlocking script along with its signature and length estimation.
|
|
730
|
+
|
|
731
|
+
The returned object contains:
|
|
732
|
+
1. `sign` - A function that, when invoked with a transaction and an input index,
|
|
733
|
+
produces an unlocking script suitable for an R puzzle locked output.
|
|
734
|
+
2. `estimateLength` - A function that returns the estimated length of the unlocking script in bytes.
|
|
735
|
+
|
|
736
|
+
```ts
|
|
737
|
+
unlock(k: BigNumber, privateKey: PrivateKey, signOutputs: "all" | "none" | "single" = "all", anyoneCanPay: boolean = false): {
|
|
738
|
+
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
|
|
739
|
+
estimateLength: () => Promise<106>;
|
|
740
|
+
}
|
|
741
|
+
```
|
|
742
|
+
|
|
743
|
+
Returns
|
|
744
|
+
|
|
745
|
+
- An object containing the `sign` and `estimateLength` functions.
|
|
746
|
+
|
|
747
|
+
Argument Details
|
|
748
|
+
|
|
749
|
+
+ **k**
|
|
750
|
+
+ — The K-value used to unlock the R-puzzle.
|
|
751
|
+
+ **privateKey**
|
|
752
|
+
+ The private key used for signing the transaction. If not provided, a random key will be generated.
|
|
753
|
+
+ **signOutputs**
|
|
754
|
+
+ The signature scope for outputs.
|
|
755
|
+
+ **anyoneCanPay**
|
|
756
|
+
+ Flag indicating if the signature allows for other inputs to be added later.
|
|
757
|
+
|
|
758
|
+
</details>
|
|
759
|
+
|
|
760
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
761
|
+
|
|
762
|
+
---
|
|
763
|
+
## Functions
|
|
764
|
+
|
|
765
|
+
## Variables
|
|
766
|
+
|