@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
|
@@ -0,0 +1,741 @@
|
|
|
1
|
+
# API
|
|
2
|
+
|
|
3
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
4
|
+
|
|
5
|
+
## Interfaces
|
|
6
|
+
|
|
7
|
+
| |
|
|
8
|
+
| --- |
|
|
9
|
+
| [BroadcastFailure](#interface-broadcastfailure) |
|
|
10
|
+
| [BroadcastResponse](#interface-broadcastresponse) |
|
|
11
|
+
| [Broadcaster](#interface-broadcaster) |
|
|
12
|
+
| [ChainTracker](#interface-chaintracker) |
|
|
13
|
+
| [FeeModel](#interface-feemodel) |
|
|
14
|
+
| [TransactionInput](#interface-transactioninput) |
|
|
15
|
+
| [TransactionOutput](#interface-transactionoutput) |
|
|
16
|
+
|
|
17
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
### Interface: TransactionInput
|
|
22
|
+
|
|
23
|
+
Represents an input to a Bitcoin transaction.
|
|
24
|
+
This interface defines the structure and components required to construct
|
|
25
|
+
a transaction input in the Bitcoin blockchain.
|
|
26
|
+
|
|
27
|
+
Example
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
// Creating a simple transaction input
|
|
31
|
+
let txInput = {
|
|
32
|
+
sourceTXID: '123abc...',
|
|
33
|
+
sourceOutputIndex: 0,
|
|
34
|
+
sequence: 0xFFFFFFFF
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
// Using an unlocking script template
|
|
38
|
+
txInput.unlockingScriptTemplate = {
|
|
39
|
+
sign: async (tx, index) => { ... },
|
|
40
|
+
estimateLength: async (tx, index) => { ... }
|
|
41
|
+
};
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
export default interface TransactionInput {
|
|
46
|
+
sourceTransaction?: Transaction;
|
|
47
|
+
sourceTXID?: string;
|
|
48
|
+
sourceOutputIndex: number;
|
|
49
|
+
unlockingScript?: UnlockingScript;
|
|
50
|
+
unlockingScriptTemplate?: {
|
|
51
|
+
sign: (tx: Transaction, inputIndex: number) => Promise<UnlockingScript>;
|
|
52
|
+
estimateLength: (tx: Transaction, inputIndex: number) => Promise<number>;
|
|
53
|
+
};
|
|
54
|
+
sequence: number;
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
### Interface: TransactionOutput
|
|
62
|
+
|
|
63
|
+
Represents an output in a Bitcoin transaction.
|
|
64
|
+
This interface defines the structure and components necessary to construct
|
|
65
|
+
a transaction output, which secures owned Bitcoins to be unlocked later.
|
|
66
|
+
|
|
67
|
+
Example
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
// Creating a simple transaction output
|
|
71
|
+
let txOutput = {
|
|
72
|
+
satoshis: 1000,
|
|
73
|
+
lockingScript: LockingScript.fromASM('OP_DUP OP_HASH160 ... OP_EQUALVERIFY OP_CHECKSIG'),
|
|
74
|
+
change: false
|
|
75
|
+
};
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
export default interface TransactionOutput {
|
|
80
|
+
satoshis?: number;
|
|
81
|
+
lockingScript: LockingScript;
|
|
82
|
+
change?: boolean;
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
### Interface: FeeModel
|
|
90
|
+
|
|
91
|
+
Represents the interface for a transaction fee model.
|
|
92
|
+
This interface defines a standard method for computing a fee when given a transaction.
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
export default interface FeeModel {
|
|
96
|
+
computeFee: (transaction: Transaction) => Promise<number>;
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
### Interface: BroadcastResponse
|
|
104
|
+
|
|
105
|
+
Defines the structure of a successful broadcast response.
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
export interface BroadcastResponse {
|
|
109
|
+
status: "success";
|
|
110
|
+
txid: string;
|
|
111
|
+
message: string;
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
### Interface: BroadcastFailure
|
|
119
|
+
|
|
120
|
+
Defines the structure of a failed broadcast response.
|
|
121
|
+
|
|
122
|
+
```ts
|
|
123
|
+
export interface BroadcastFailure {
|
|
124
|
+
status: "error";
|
|
125
|
+
code: string;
|
|
126
|
+
description: string;
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
### Interface: Broadcaster
|
|
134
|
+
|
|
135
|
+
Represents the interface for a transaction broadcaster.
|
|
136
|
+
This interface defines a standard method for broadcasting transactions.
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
export interface Broadcaster {
|
|
140
|
+
broadcast: (transaction: Transaction) => Promise<BroadcastResponse | BroadcastFailure>;
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
### Interface: ChainTracker
|
|
148
|
+
|
|
149
|
+
The Chain Tracker is responsible for verifying the validity of a given Merkle root
|
|
150
|
+
for a specific block height within the blockchain.
|
|
151
|
+
|
|
152
|
+
Chain Trackers ensure the integrity of the blockchain by
|
|
153
|
+
validating new headers against the chain's history. They use accumulated
|
|
154
|
+
proof-of-work and protocol adherence as metrics to assess the legitimacy of blocks.
|
|
155
|
+
|
|
156
|
+
Example
|
|
157
|
+
|
|
158
|
+
```ts
|
|
159
|
+
const chainTracker = {
|
|
160
|
+
isValidRootForHeight: async (root, height) => {
|
|
161
|
+
// Implementation to check if the Merkle root is valid for the specified block height.
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
```ts
|
|
167
|
+
export default interface ChainTracker {
|
|
168
|
+
isValidRootForHeight: (root: string, height: number) => Promise<boolean>;
|
|
169
|
+
}
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
## Classes
|
|
176
|
+
|
|
177
|
+
| |
|
|
178
|
+
| --- |
|
|
179
|
+
| [MerklePath](#class-merklepath) |
|
|
180
|
+
| [SatoshisPerKilobyte](#class-satoshisperkilobyte) |
|
|
181
|
+
| [Transaction](#class-transaction) |
|
|
182
|
+
|
|
183
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
### Class: SatoshisPerKilobyte
|
|
188
|
+
|
|
189
|
+
Represents the "satoshis per kilobyte" transaction fee model.
|
|
190
|
+
|
|
191
|
+
```ts
|
|
192
|
+
export default class SatoshisPerKilobyte implements FeeModel {
|
|
193
|
+
value: number;
|
|
194
|
+
constructor(value: number)
|
|
195
|
+
async computeFee(tx: Transaction): Promise<number>
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
<details>
|
|
200
|
+
|
|
201
|
+
<summary>Class SatoshisPerKilobyte Details</summary>
|
|
202
|
+
|
|
203
|
+
#### Constructor
|
|
204
|
+
|
|
205
|
+
Constructs an instance of the sat/kb fee model.
|
|
206
|
+
|
|
207
|
+
```ts
|
|
208
|
+
constructor(value: number)
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Argument Details
|
|
212
|
+
|
|
213
|
+
+ **value**
|
|
214
|
+
+ The number of satoshis per kilobyte to charge as a fee.
|
|
215
|
+
|
|
216
|
+
#### Method computeFee
|
|
217
|
+
|
|
218
|
+
Computes the fee for a given transaction.
|
|
219
|
+
|
|
220
|
+
```ts
|
|
221
|
+
async computeFee(tx: Transaction): Promise<number>
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Returns
|
|
225
|
+
|
|
226
|
+
The fee in satoshis for the transaction, as a BigNumber.
|
|
227
|
+
|
|
228
|
+
Argument Details
|
|
229
|
+
|
|
230
|
+
+ **tx**
|
|
231
|
+
+ The transaction for which a fee is to be computed.
|
|
232
|
+
|
|
233
|
+
</details>
|
|
234
|
+
|
|
235
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
### Class: MerklePath
|
|
239
|
+
|
|
240
|
+
Represents a Merkle Path, which is used to provide a compact proof of inclusion for a
|
|
241
|
+
transaction in a block. This class encapsulates all the details required for creating
|
|
242
|
+
and verifying Merkle Proofs.
|
|
243
|
+
|
|
244
|
+
Example
|
|
245
|
+
|
|
246
|
+
```ts
|
|
247
|
+
// Creating and verifying a Merkle Path
|
|
248
|
+
const merklePath = MerklePath.fromHex('...');
|
|
249
|
+
const isValid = merklePath.verify(txid, chainTracker);
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
```ts
|
|
253
|
+
export default class MerklePath {
|
|
254
|
+
blockHeight: number;
|
|
255
|
+
path: Array<Array<{
|
|
256
|
+
offset: number;
|
|
257
|
+
hash?: string;
|
|
258
|
+
txid?: boolean;
|
|
259
|
+
duplicate?: boolean;
|
|
260
|
+
}>>;
|
|
261
|
+
static fromHex(hex: string): MerklePath
|
|
262
|
+
static fromReader(reader: Reader): MerklePath
|
|
263
|
+
static fromBinary(bump: number[]): MerklePath
|
|
264
|
+
constructor(blockHeight: number, path: Array<Array<{
|
|
265
|
+
offset: number;
|
|
266
|
+
hash?: string;
|
|
267
|
+
txid?: boolean;
|
|
268
|
+
duplicate?: boolean;
|
|
269
|
+
}>>)
|
|
270
|
+
toBinary(): number[]
|
|
271
|
+
toHex(): string
|
|
272
|
+
computeRoot(txid?: string): string
|
|
273
|
+
async verify(txid: string, chainTracker: ChainTracker): Promise<boolean>
|
|
274
|
+
combine(other: MerklePath): void
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
<details>
|
|
279
|
+
|
|
280
|
+
<summary>Class MerklePath Details</summary>
|
|
281
|
+
|
|
282
|
+
#### Method combine
|
|
283
|
+
|
|
284
|
+
Combines this MerklePath with another to create a compound proof.
|
|
285
|
+
|
|
286
|
+
```ts
|
|
287
|
+
combine(other: MerklePath): void
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Argument Details
|
|
291
|
+
|
|
292
|
+
+ **other**
|
|
293
|
+
+ Another MerklePath to combine with this path.
|
|
294
|
+
|
|
295
|
+
Throws
|
|
296
|
+
|
|
297
|
+
- If the paths have different block heights or roots.
|
|
298
|
+
|
|
299
|
+
#### Method computeRoot
|
|
300
|
+
|
|
301
|
+
Computes the Merkle root from the provided transaction ID.
|
|
302
|
+
|
|
303
|
+
```ts
|
|
304
|
+
computeRoot(txid?: string): string
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Returns
|
|
308
|
+
|
|
309
|
+
- The computed Merkle root as a hexadecimal string.
|
|
310
|
+
|
|
311
|
+
Argument Details
|
|
312
|
+
|
|
313
|
+
+ **txid**
|
|
314
|
+
+ The transaction ID to compute the Merkle root for. If not provided, the root will be computed from an unspecified branch, and not all branches will be validated!
|
|
315
|
+
|
|
316
|
+
Throws
|
|
317
|
+
|
|
318
|
+
- If the transaction ID is not part of the Merkle Path.
|
|
319
|
+
|
|
320
|
+
#### Method fromBinary
|
|
321
|
+
|
|
322
|
+
Creates a MerklePath instance from a binary array.
|
|
323
|
+
|
|
324
|
+
```ts
|
|
325
|
+
static fromBinary(bump: number[]): MerklePath
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
Returns
|
|
329
|
+
|
|
330
|
+
- A new MerklePath instance.
|
|
331
|
+
|
|
332
|
+
Argument Details
|
|
333
|
+
|
|
334
|
+
+ **bump**
|
|
335
|
+
+ The binary array representation of the Merkle Path.
|
|
336
|
+
|
|
337
|
+
#### Method fromHex
|
|
338
|
+
|
|
339
|
+
Creates a MerklePath instance from a hexadecimal string.
|
|
340
|
+
|
|
341
|
+
```ts
|
|
342
|
+
static fromHex(hex: string): MerklePath
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
Returns
|
|
346
|
+
|
|
347
|
+
- A new MerklePath instance.
|
|
348
|
+
|
|
349
|
+
Argument Details
|
|
350
|
+
|
|
351
|
+
+ **hex**
|
|
352
|
+
+ The hexadecimal string representation of the Merkle Path.
|
|
353
|
+
|
|
354
|
+
#### Method toBinary
|
|
355
|
+
|
|
356
|
+
Converts the MerklePath to a binary array format.
|
|
357
|
+
|
|
358
|
+
```ts
|
|
359
|
+
toBinary(): number[]
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
Returns
|
|
363
|
+
|
|
364
|
+
- The binary array representation of the Merkle Path.
|
|
365
|
+
|
|
366
|
+
#### Method toHex
|
|
367
|
+
|
|
368
|
+
Converts the MerklePath to a hexadecimal string format.
|
|
369
|
+
|
|
370
|
+
```ts
|
|
371
|
+
toHex(): string
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
Returns
|
|
375
|
+
|
|
376
|
+
- The hexadecimal string representation of the Merkle Path.
|
|
377
|
+
|
|
378
|
+
#### Method verify
|
|
379
|
+
|
|
380
|
+
Verifies if the given transaction ID is part of the Merkle tree at the specified block height.
|
|
381
|
+
|
|
382
|
+
```ts
|
|
383
|
+
async verify(txid: string, chainTracker: ChainTracker): Promise<boolean>
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
Returns
|
|
387
|
+
|
|
388
|
+
- True if the transaction ID is valid within the Merkle Path at the specified block height.
|
|
389
|
+
|
|
390
|
+
Argument Details
|
|
391
|
+
|
|
392
|
+
+ **txid**
|
|
393
|
+
+ The transaction ID to verify.
|
|
394
|
+
+ **chainTracker**
|
|
395
|
+
+ The ChainTracker instance used to verify the Merkle root.
|
|
396
|
+
|
|
397
|
+
</details>
|
|
398
|
+
|
|
399
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
400
|
+
|
|
401
|
+
---
|
|
402
|
+
### Class: Transaction
|
|
403
|
+
|
|
404
|
+
Represents a complete Bitcoin transaction. This class encapsulates all the details
|
|
405
|
+
required for creating, signing, and processing a Bitcoin transaction, including
|
|
406
|
+
inputs, outputs, and various transaction-related methods.
|
|
407
|
+
|
|
408
|
+
Example
|
|
409
|
+
|
|
410
|
+
```ts
|
|
411
|
+
// Creating a new transaction
|
|
412
|
+
let tx = new Transaction();
|
|
413
|
+
tx.addInput(...);
|
|
414
|
+
tx.addOutput(...);
|
|
415
|
+
await tx.fee();
|
|
416
|
+
await tx.sign();
|
|
417
|
+
await tx.broadcast();
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
```ts
|
|
421
|
+
export default class Transaction {
|
|
422
|
+
version: number;
|
|
423
|
+
inputs: TransactionInput[];
|
|
424
|
+
outputs: TransactionOutput[];
|
|
425
|
+
lockTime: number;
|
|
426
|
+
metadata: Record<string, any>;
|
|
427
|
+
merklePath?: MerklePath;
|
|
428
|
+
static fromBEEF(beef: number[]): Transaction
|
|
429
|
+
static fromBinary(bin: number[]): Transaction
|
|
430
|
+
static fromHex(hex: string): Transaction
|
|
431
|
+
static fromHexBEEF(hex: string): Transaction
|
|
432
|
+
constructor(version: number = 1, inputs: TransactionInput[] = [], outputs: TransactionOutput[] = [], lockTime: number = 0, metadata: Record<string, any> = {}, merklePath?: MerklePath)
|
|
433
|
+
addInput(input: TransactionInput): void
|
|
434
|
+
addOutput(output: TransactionOutput): void
|
|
435
|
+
updateMetadata(metadata: Record<string, any>): void
|
|
436
|
+
async fee(model?: FeeModel, changeDistribution: "equal" | "random" = "equal"): Promise<void>
|
|
437
|
+
async sign(): Promise<void>
|
|
438
|
+
async broadcast(broadcaster: Broadcaster): Promise<BroadcastResponse | BroadcastFailure>
|
|
439
|
+
toBinary(): number[]
|
|
440
|
+
toEF(): number[]
|
|
441
|
+
toHexEF(): string
|
|
442
|
+
toHex(): string
|
|
443
|
+
toHexBEEF(): string
|
|
444
|
+
hash(enc?: "hex"): number[] | string
|
|
445
|
+
id(enc?: "hex"): number[] | string
|
|
446
|
+
async verify(chainTracker: ChainTracker): Promise<boolean>
|
|
447
|
+
toBEEF(): number[]
|
|
448
|
+
}
|
|
449
|
+
```
|
|
450
|
+
|
|
451
|
+
<details>
|
|
452
|
+
|
|
453
|
+
<summary>Class Transaction Details</summary>
|
|
454
|
+
|
|
455
|
+
#### Method addInput
|
|
456
|
+
|
|
457
|
+
Adds a new input to the transaction.
|
|
458
|
+
|
|
459
|
+
```ts
|
|
460
|
+
addInput(input: TransactionInput): void
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
Argument Details
|
|
464
|
+
|
|
465
|
+
+ **input**
|
|
466
|
+
+ The TransactionInput object to add to the transaction.
|
|
467
|
+
|
|
468
|
+
Throws
|
|
469
|
+
|
|
470
|
+
- If the input does not have a sourceTXID or sourceTransaction defined.
|
|
471
|
+
|
|
472
|
+
#### Method addOutput
|
|
473
|
+
|
|
474
|
+
Adds a new output to the transaction.
|
|
475
|
+
|
|
476
|
+
```ts
|
|
477
|
+
addOutput(output: TransactionOutput): void
|
|
478
|
+
```
|
|
479
|
+
|
|
480
|
+
Argument Details
|
|
481
|
+
|
|
482
|
+
+ **output**
|
|
483
|
+
+ The TransactionOutput object to add to the transaction.
|
|
484
|
+
|
|
485
|
+
#### Method broadcast
|
|
486
|
+
|
|
487
|
+
Broadcasts a transaction.
|
|
488
|
+
|
|
489
|
+
```ts
|
|
490
|
+
async broadcast(broadcaster: Broadcaster): Promise<BroadcastResponse | BroadcastFailure>
|
|
491
|
+
```
|
|
492
|
+
|
|
493
|
+
Returns
|
|
494
|
+
|
|
495
|
+
A BroadcastResponse or BroadcastFailure from the Broadcaster
|
|
496
|
+
|
|
497
|
+
Argument Details
|
|
498
|
+
|
|
499
|
+
+ **broadcaster**
|
|
500
|
+
+ The Broadcaster instance wwhere the transaction will be sent
|
|
501
|
+
|
|
502
|
+
#### Method fee
|
|
503
|
+
|
|
504
|
+
Computes fees prior to signing.
|
|
505
|
+
If no fee model is provided, uses a SatoshisPerKilobyte fee model that pays 10 sat/kb.
|
|
506
|
+
|
|
507
|
+
```ts
|
|
508
|
+
async fee(model?: FeeModel, changeDistribution: "equal" | "random" = "equal"): Promise<void>
|
|
509
|
+
```
|
|
510
|
+
|
|
511
|
+
Argument Details
|
|
512
|
+
|
|
513
|
+
+ **model**
|
|
514
|
+
+ The initialized fee model to use
|
|
515
|
+
+ **changeDistribution**
|
|
516
|
+
+ Specifies how the change should be distributed
|
|
517
|
+
amongst the change outputs
|
|
518
|
+
|
|
519
|
+
TODO: Benford's law change distribution.
|
|
520
|
+
|
|
521
|
+
#### Method fromBEEF
|
|
522
|
+
|
|
523
|
+
Creates a new transaction, linked to its inputs and their associated merkle paths, from a BEEF (BRC-62) structure.
|
|
524
|
+
|
|
525
|
+
```ts
|
|
526
|
+
static fromBEEF(beef: number[]): Transaction
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
Returns
|
|
530
|
+
|
|
531
|
+
An anchored transaction, linked to its associated inputs populated with merkle paths.
|
|
532
|
+
|
|
533
|
+
Argument Details
|
|
534
|
+
|
|
535
|
+
+ **beef**
|
|
536
|
+
+ A binary representation of a transaction in BEEF format.
|
|
537
|
+
|
|
538
|
+
#### Method fromBinary
|
|
539
|
+
|
|
540
|
+
Creates a Transaction instance from a binary array.
|
|
541
|
+
|
|
542
|
+
```ts
|
|
543
|
+
static fromBinary(bin: number[]): Transaction
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
Returns
|
|
547
|
+
|
|
548
|
+
- A new Transaction instance.
|
|
549
|
+
|
|
550
|
+
Argument Details
|
|
551
|
+
|
|
552
|
+
+ **bin**
|
|
553
|
+
+ The binary array representation of the transaction.
|
|
554
|
+
|
|
555
|
+
#### Method fromHex
|
|
556
|
+
|
|
557
|
+
Creates a Transaction instance from a hexadecimal string.
|
|
558
|
+
|
|
559
|
+
```ts
|
|
560
|
+
static fromHex(hex: string): Transaction
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
Returns
|
|
564
|
+
|
|
565
|
+
- A new Transaction instance.
|
|
566
|
+
|
|
567
|
+
Argument Details
|
|
568
|
+
|
|
569
|
+
+ **hex**
|
|
570
|
+
+ The hexadecimal string representation of the transaction.
|
|
571
|
+
|
|
572
|
+
#### Method fromHexBEEF
|
|
573
|
+
|
|
574
|
+
Creates a Transaction instance from a hexadecimal string encoded BEEF.
|
|
575
|
+
|
|
576
|
+
```ts
|
|
577
|
+
static fromHexBEEF(hex: string): Transaction
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
Returns
|
|
581
|
+
|
|
582
|
+
- A new Transaction instance.
|
|
583
|
+
|
|
584
|
+
Argument Details
|
|
585
|
+
|
|
586
|
+
+ **hex**
|
|
587
|
+
+ The hexadecimal string representation of the transaction BEEF.
|
|
588
|
+
|
|
589
|
+
#### Method hash
|
|
590
|
+
|
|
591
|
+
Calculates the transaction's hash.
|
|
592
|
+
|
|
593
|
+
```ts
|
|
594
|
+
hash(enc?: "hex"): number[] | string
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
Returns
|
|
598
|
+
|
|
599
|
+
- The hash of the transaction in the specified format.
|
|
600
|
+
|
|
601
|
+
Argument Details
|
|
602
|
+
|
|
603
|
+
+ **enc**
|
|
604
|
+
+ The encoding to use for the hash. If 'hex', returns a hexadecimal string; otherwise returns a binary array.
|
|
605
|
+
|
|
606
|
+
#### Method id
|
|
607
|
+
|
|
608
|
+
Calculates the transaction's ID.
|
|
609
|
+
|
|
610
|
+
```ts
|
|
611
|
+
id(enc?: "hex"): number[] | string
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
Returns
|
|
615
|
+
|
|
616
|
+
- The ID of the transaction in the specified format.
|
|
617
|
+
|
|
618
|
+
Argument Details
|
|
619
|
+
|
|
620
|
+
+ **enc**
|
|
621
|
+
+ The encoding to use for the ID. If 'hex', returns a hexadecimal string; otherwise returns a binary array.
|
|
622
|
+
|
|
623
|
+
#### Method sign
|
|
624
|
+
|
|
625
|
+
Signs a transaction, hydrating all its unlocking scripts based on the provided script templates where they are available.
|
|
626
|
+
|
|
627
|
+
```ts
|
|
628
|
+
async sign(): Promise<void>
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
#### Method toBEEF
|
|
632
|
+
|
|
633
|
+
Serializes this transaction, together with its inputs and the respective merkle proofs, into the BEEF (BRC-62) format. This enables efficient verification of its compliance with the rules of SPV.
|
|
634
|
+
|
|
635
|
+
```ts
|
|
636
|
+
toBEEF(): number[]
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
Returns
|
|
640
|
+
|
|
641
|
+
The serialized BEEF structure
|
|
642
|
+
|
|
643
|
+
#### Method toBinary
|
|
644
|
+
|
|
645
|
+
Converts the transaction to a binary array format.
|
|
646
|
+
|
|
647
|
+
```ts
|
|
648
|
+
toBinary(): number[]
|
|
649
|
+
```
|
|
650
|
+
|
|
651
|
+
Returns
|
|
652
|
+
|
|
653
|
+
- The binary array representation of the transaction.
|
|
654
|
+
|
|
655
|
+
#### Method toEF
|
|
656
|
+
|
|
657
|
+
Converts the transaction to a BRC-30 EF format.
|
|
658
|
+
|
|
659
|
+
```ts
|
|
660
|
+
toEF(): number[]
|
|
661
|
+
```
|
|
662
|
+
|
|
663
|
+
Returns
|
|
664
|
+
|
|
665
|
+
- The BRC-30 EF representation of the transaction.
|
|
666
|
+
|
|
667
|
+
#### Method toHex
|
|
668
|
+
|
|
669
|
+
Converts the transaction to a hexadecimal string format.
|
|
670
|
+
|
|
671
|
+
```ts
|
|
672
|
+
toHex(): string
|
|
673
|
+
```
|
|
674
|
+
|
|
675
|
+
Returns
|
|
676
|
+
|
|
677
|
+
- The hexadecimal string representation of the transaction.
|
|
678
|
+
|
|
679
|
+
#### Method toHexBEEF
|
|
680
|
+
|
|
681
|
+
Converts the transaction to a hexadecimal string BEEF.
|
|
682
|
+
|
|
683
|
+
```ts
|
|
684
|
+
toHexBEEF(): string
|
|
685
|
+
```
|
|
686
|
+
|
|
687
|
+
Returns
|
|
688
|
+
|
|
689
|
+
- The hexadecimal string representation of the transaction BEEF.
|
|
690
|
+
|
|
691
|
+
#### Method toHexEF
|
|
692
|
+
|
|
693
|
+
Converts the transaction to a hexadecimal string EF.
|
|
694
|
+
|
|
695
|
+
```ts
|
|
696
|
+
toHexEF(): string
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
Returns
|
|
700
|
+
|
|
701
|
+
- The hexadecimal string representation of the transaction EF.
|
|
702
|
+
|
|
703
|
+
#### Method updateMetadata
|
|
704
|
+
|
|
705
|
+
Updates the transaction's metadata.
|
|
706
|
+
|
|
707
|
+
```ts
|
|
708
|
+
updateMetadata(metadata: Record<string, any>): void
|
|
709
|
+
```
|
|
710
|
+
|
|
711
|
+
Argument Details
|
|
712
|
+
|
|
713
|
+
+ **metadata**
|
|
714
|
+
+ The metadata object to merge into the existing metadata.
|
|
715
|
+
|
|
716
|
+
#### Method verify
|
|
717
|
+
|
|
718
|
+
Verifies the legitimacy of the Bitcoin transaction according to the rules of SPV by ensuring all the input transactions link back to valid block headers, the chain of spends for all inputs are valid, and the sum of inputs is not less than the sum of outputs.
|
|
719
|
+
|
|
720
|
+
```ts
|
|
721
|
+
async verify(chainTracker: ChainTracker): Promise<boolean>
|
|
722
|
+
```
|
|
723
|
+
|
|
724
|
+
Returns
|
|
725
|
+
|
|
726
|
+
Whether the transaction is valid according to the rules of SPV.
|
|
727
|
+
|
|
728
|
+
Argument Details
|
|
729
|
+
|
|
730
|
+
+ **chainTracker**
|
|
731
|
+
+ An instance of ChainTracker, a Bitcoin block header tracker.
|
|
732
|
+
|
|
733
|
+
</details>
|
|
734
|
+
|
|
735
|
+
Links: [API](#api), [Interfaces](#interfaces), [Classes](#classes), [Functions](#functions), [Variables](#variables)
|
|
736
|
+
|
|
737
|
+
---
|
|
738
|
+
## Functions
|
|
739
|
+
|
|
740
|
+
## Variables
|
|
741
|
+
|