@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,326 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const utils_js_1 = require("../primitives/utils.js");
|
|
30
|
+
const Hash = __importStar(require("../primitives/Hash.js"));
|
|
31
|
+
const Curve_js_1 = __importDefault(require("../primitives/Curve.js"));
|
|
32
|
+
const PrivateKey_js_1 = __importDefault(require("../primitives/PrivateKey.js"));
|
|
33
|
+
const PublicKey_js_1 = __importDefault(require("../primitives/PublicKey.js"));
|
|
34
|
+
const Random_js_1 = __importDefault(require("../primitives/Random.js"));
|
|
35
|
+
const BigNumber_js_1 = __importDefault(require("../primitives/BigNumber.js"));
|
|
36
|
+
/**
|
|
37
|
+
* @deprecated
|
|
38
|
+
* The HD class implements the Bitcoin Improvement Proposal 32 (BIP32) hierarchical deterministic wallets.
|
|
39
|
+
* It allows the generation of child keys from a master key, ensuring a tree-like structure of keys and addresses.
|
|
40
|
+
* This class is deprecated due to the introduction of BRC-42, which offers an enhanced key derivation scheme.
|
|
41
|
+
* BRC-42 uses invoice numbers for key derivation, improving privacy and scalability compared to BIP32.
|
|
42
|
+
*
|
|
43
|
+
* @class HD
|
|
44
|
+
* @deprecated Replaced by BRC-42 which uses invoice numbers and supports private derivation.
|
|
45
|
+
*/
|
|
46
|
+
class HD {
|
|
47
|
+
/**
|
|
48
|
+
* Constructor for the BIP32 HD wallet.
|
|
49
|
+
* Initializes an HD wallet with optional parameters for version bytes, depth, parent fingerprint, child index, chain code, private key, and public key.
|
|
50
|
+
* @param versionBytesNum - Version bytes number for the wallet.
|
|
51
|
+
* @param depth - Depth of the key in the hierarchy.
|
|
52
|
+
* @param parentFingerPrint - Fingerprint of the parent key.
|
|
53
|
+
* @param childIndex - Index of the child key.
|
|
54
|
+
* @param chainCode - Chain code for key derivation.
|
|
55
|
+
* @param privKey - Private key of the wallet.
|
|
56
|
+
* @param pubKey - Public key of the wallet.
|
|
57
|
+
*/
|
|
58
|
+
constructor(versionBytesNum, depth, parentFingerPrint, childIndex, chainCode, privKey, pubKey) {
|
|
59
|
+
this.constants = {
|
|
60
|
+
pubKey: 0x0488b21e,
|
|
61
|
+
privKey: 0x0488ade4
|
|
62
|
+
};
|
|
63
|
+
this.versionBytesNum = versionBytesNum;
|
|
64
|
+
this.depth = depth;
|
|
65
|
+
this.parentFingerPrint = parentFingerPrint;
|
|
66
|
+
this.childIndex = childIndex;
|
|
67
|
+
this.chainCode = chainCode;
|
|
68
|
+
this.privKey = privKey;
|
|
69
|
+
this.pubKey = pubKey;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Generates a new HD wallet with random keys.
|
|
73
|
+
* This method creates a root HD wallet with randomly generated private and public keys.
|
|
74
|
+
* @returns {HD} The current HD instance with generated keys.
|
|
75
|
+
*/
|
|
76
|
+
fromRandom() {
|
|
77
|
+
this.versionBytesNum = this.constants.privKey;
|
|
78
|
+
this.depth = 0x00;
|
|
79
|
+
this.parentFingerPrint = [0, 0, 0, 0];
|
|
80
|
+
this.childIndex = 0;
|
|
81
|
+
this.chainCode = (0, Random_js_1.default)(32);
|
|
82
|
+
this.privKey = PrivateKey_js_1.default.fromRandom();
|
|
83
|
+
this.pubKey = this.privKey.toPublicKey();
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Generates a new HD wallet with random keys.
|
|
88
|
+
* This method creates a root HD wallet with randomly generated private and public keys.
|
|
89
|
+
* @returns {HD} A new HD instance with generated keys.
|
|
90
|
+
* @static
|
|
91
|
+
*/
|
|
92
|
+
static fromRandom() {
|
|
93
|
+
return new this().fromRandom();
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Initializes the HD wallet from a given base58 encoded string.
|
|
97
|
+
* This method decodes a provided string to set up the HD wallet's properties.
|
|
98
|
+
* @param str - A base58 encoded string representing the wallet.
|
|
99
|
+
* @returns {HD} The current instance with properties set from the string.
|
|
100
|
+
*/
|
|
101
|
+
fromString(str) {
|
|
102
|
+
const decoded = (0, utils_js_1.fromBase58Check)(str);
|
|
103
|
+
return this.fromBinary([...decoded.prefix, ...decoded.data]);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Converts the HD wallet to a base58 encoded string.
|
|
107
|
+
* This method provides a string representation of the HD wallet's current state.
|
|
108
|
+
* @returns {string} A base58 encoded string of the HD wallet.
|
|
109
|
+
*/
|
|
110
|
+
toString() {
|
|
111
|
+
const bin = this.toBinary();
|
|
112
|
+
return (0, utils_js_1.toBase58Check)(bin, []);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Initializes the HD wallet from a seed.
|
|
116
|
+
* This method generates keys and other properties from a given seed, conforming to the BIP32 specification.
|
|
117
|
+
* @param bytes - An array of bytes representing the seed.
|
|
118
|
+
* @returns {HD} The current instance with properties set from the seed.
|
|
119
|
+
*/
|
|
120
|
+
fromSeed(bytes) {
|
|
121
|
+
if (bytes.length < 128 / 8) {
|
|
122
|
+
throw new Error('Need more than 128 bits of entropy');
|
|
123
|
+
}
|
|
124
|
+
if (bytes.length > 512 / 8) {
|
|
125
|
+
throw new Error('More than 512 bits of entropy is nonstandard');
|
|
126
|
+
}
|
|
127
|
+
const hash = Hash.sha512hmac((0, utils_js_1.toArray)('Bitcoin seed', 'utf8'), bytes);
|
|
128
|
+
this.depth = 0x00;
|
|
129
|
+
this.parentFingerPrint = [0, 0, 0, 0];
|
|
130
|
+
this.childIndex = 0;
|
|
131
|
+
this.chainCode = hash.slice(32, 64);
|
|
132
|
+
this.versionBytesNum = this.constants.privKey;
|
|
133
|
+
this.privKey = new PrivateKey_js_1.default(hash.slice(0, 32));
|
|
134
|
+
this.pubKey = this.privKey.toPublicKey();
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Initializes the HD wallet from a seed.
|
|
139
|
+
* This method generates keys and other properties from a given seed, conforming to the BIP32 specification.
|
|
140
|
+
* @param bytes - An array of bytes representing the seed.
|
|
141
|
+
* @returns {HD} The current instance with properties set from the seed.
|
|
142
|
+
*/
|
|
143
|
+
static fromSeed(bytes) {
|
|
144
|
+
return new this().fromSeed(bytes);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Initializes the HD wallet from a binary buffer.
|
|
148
|
+
* Parses a binary buffer to set up the wallet's properties.
|
|
149
|
+
* @param buf - A buffer containing the wallet data.
|
|
150
|
+
* @returns {HD} The current instance with properties set from the buffer.
|
|
151
|
+
*/
|
|
152
|
+
fromBinary(buf) {
|
|
153
|
+
// Both pub and private extended keys are 78 buf
|
|
154
|
+
if (buf.length !== 78) {
|
|
155
|
+
throw new Error('incorrect bip32 data length');
|
|
156
|
+
}
|
|
157
|
+
const reader = new utils_js_1.Reader(buf);
|
|
158
|
+
this.versionBytesNum = reader.readUInt32BE();
|
|
159
|
+
this.depth = reader.readUInt8();
|
|
160
|
+
this.parentFingerPrint = reader.read(4);
|
|
161
|
+
this.childIndex = reader.readUInt32BE();
|
|
162
|
+
this.chainCode = reader.read(32);
|
|
163
|
+
const keyBytes = reader.read(33);
|
|
164
|
+
const isPrivate = this.versionBytesNum === this.constants.privKey;
|
|
165
|
+
const isPublic = this.versionBytesNum === this.constants.pubKey;
|
|
166
|
+
if (isPrivate && keyBytes[0] === 0) {
|
|
167
|
+
this.privKey = new PrivateKey_js_1.default(keyBytes.slice(1, 33));
|
|
168
|
+
this.pubKey = this.privKey.toPublicKey();
|
|
169
|
+
}
|
|
170
|
+
else if (isPublic && (keyBytes[0] === 0x02 || keyBytes[0] === 0x03)) {
|
|
171
|
+
this.pubKey = PublicKey_js_1.default.fromString((0, utils_js_1.toHex)(keyBytes));
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
throw new Error('Invalid key');
|
|
175
|
+
}
|
|
176
|
+
return this;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Derives a child HD wallet based on a given path.
|
|
180
|
+
* The path specifies the hierarchy of the child key to be derived.
|
|
181
|
+
* @param path - A string representing the derivation path (e.g., 'm/0'/1).
|
|
182
|
+
* @returns {HD} A new HD instance representing the derived child wallet.
|
|
183
|
+
*/
|
|
184
|
+
derive(path) {
|
|
185
|
+
if (path === 'm') {
|
|
186
|
+
return this;
|
|
187
|
+
}
|
|
188
|
+
const e = path.split('/');
|
|
189
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
190
|
+
let bip32 = this;
|
|
191
|
+
for (const i in e) {
|
|
192
|
+
const c = e[i];
|
|
193
|
+
if (i === '0') {
|
|
194
|
+
if (c !== 'm') {
|
|
195
|
+
throw new Error('invalid path');
|
|
196
|
+
}
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
if (parseInt(c.replace("'", ''), 10).toString() !== c.replace("'", '')) {
|
|
200
|
+
throw new Error('invalid path');
|
|
201
|
+
}
|
|
202
|
+
const usePrivate = c.length > 1 && c[c.length - 1] === "'";
|
|
203
|
+
let childIndex = parseInt(usePrivate ? c.slice(0, c.length - 1) : c, 10) & 0x7fffffff;
|
|
204
|
+
if (usePrivate) {
|
|
205
|
+
childIndex += 0x80000000;
|
|
206
|
+
}
|
|
207
|
+
bip32 = bip32.deriveChild(childIndex);
|
|
208
|
+
}
|
|
209
|
+
return bip32;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Derives a child HD wallet from the current wallet based on an index.
|
|
213
|
+
* This method generates either a private or public child key depending on the current wallet's state.
|
|
214
|
+
* @param i - The index of the child key to derive.
|
|
215
|
+
* @returns {HD} A new HD instance representing the derived child wallet.
|
|
216
|
+
*/
|
|
217
|
+
deriveChild(i) {
|
|
218
|
+
if (typeof i !== 'number') {
|
|
219
|
+
throw new Error('i must be a number');
|
|
220
|
+
}
|
|
221
|
+
const ibc = [];
|
|
222
|
+
ibc.push((i >> 24) & 0xff);
|
|
223
|
+
ibc.push((i >> 16) & 0xff);
|
|
224
|
+
ibc.push((i >> 8) & 0xff);
|
|
225
|
+
ibc.push(i & 0xff);
|
|
226
|
+
const ib = [...ibc];
|
|
227
|
+
const usePrivate = (i & 0x80000000) !== 0;
|
|
228
|
+
const isPrivate = this.versionBytesNum === this.constants.privKey;
|
|
229
|
+
if (usePrivate && (!this.privKey || !isPrivate)) {
|
|
230
|
+
throw new Error('Cannot do private key derivation without private key');
|
|
231
|
+
}
|
|
232
|
+
let ret = null;
|
|
233
|
+
if (this.privKey) {
|
|
234
|
+
let data = null;
|
|
235
|
+
if (usePrivate) {
|
|
236
|
+
data = [0, ...this.privKey.toArray('be', 32), ...ib];
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
data = [...this.pubKey.encode(true), ...ib];
|
|
240
|
+
}
|
|
241
|
+
const hash = Hash.sha512hmac(this.chainCode, data);
|
|
242
|
+
const il = new BigNumber_js_1.default(hash.slice(0, 32));
|
|
243
|
+
const ir = hash.slice(32, 64);
|
|
244
|
+
// ki = IL + kpar (mod n).
|
|
245
|
+
const k = il.add(this.privKey).mod(new Curve_js_1.default().n);
|
|
246
|
+
ret = new HD();
|
|
247
|
+
ret.chainCode = ir;
|
|
248
|
+
ret.privKey = new PrivateKey_js_1.default(k.toArray());
|
|
249
|
+
ret.pubKey = ret.privKey.toPublicKey();
|
|
250
|
+
}
|
|
251
|
+
else {
|
|
252
|
+
const data = [...this.pubKey.encode(true), ...ib];
|
|
253
|
+
const hash = Hash.sha512hmac(this.chainCode, data);
|
|
254
|
+
const il = new BigNumber_js_1.default(hash.slice(0, 32));
|
|
255
|
+
const ir = hash.slice(32, 64);
|
|
256
|
+
// Ki = (IL + kpar)*G = IL*G + Kpar
|
|
257
|
+
const ilG = new Curve_js_1.default().g.mul(il);
|
|
258
|
+
const Kpar = this.pubKey;
|
|
259
|
+
const Ki = ilG.add(Kpar);
|
|
260
|
+
const newpub = new PublicKey_js_1.default(Ki.x, Ki.y);
|
|
261
|
+
ret = new HD();
|
|
262
|
+
ret.chainCode = ir;
|
|
263
|
+
ret.pubKey = newpub;
|
|
264
|
+
}
|
|
265
|
+
ret.childIndex = i;
|
|
266
|
+
const pubKeyhash = Hash.hash160(this.pubKey.encode(true));
|
|
267
|
+
ret.parentFingerPrint = pubKeyhash.slice(0, 4);
|
|
268
|
+
ret.versionBytesNum = this.versionBytesNum;
|
|
269
|
+
ret.depth = this.depth + 1;
|
|
270
|
+
return ret;
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Converts the current HD wallet to a public-only wallet.
|
|
274
|
+
* This method strips away the private key information, leaving only the public part.
|
|
275
|
+
* @returns {HD} A new HD instance representing the public-only wallet.
|
|
276
|
+
*/
|
|
277
|
+
toPublic() {
|
|
278
|
+
const bip32 = new HD(this.versionBytesNum, this.depth, this.parentFingerPrint, this.childIndex, this.chainCode, this.privKey, this.pubKey);
|
|
279
|
+
bip32.versionBytesNum = this.constants.pubKey;
|
|
280
|
+
bip32.privKey = undefined;
|
|
281
|
+
return bip32;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Converts the HD wallet into a binary representation.
|
|
285
|
+
* This method serializes the wallet's properties into a binary format.
|
|
286
|
+
* @returns {number[]} An array of numbers representing the binary data of the wallet.
|
|
287
|
+
*/
|
|
288
|
+
toBinary() {
|
|
289
|
+
const isPrivate = this.versionBytesNum === this.constants.privKey;
|
|
290
|
+
const isPublic = this.versionBytesNum === this.constants.pubKey;
|
|
291
|
+
if (isPrivate) {
|
|
292
|
+
return new utils_js_1.Writer()
|
|
293
|
+
.writeUInt32BE(this.versionBytesNum)
|
|
294
|
+
.writeUInt8(this.depth)
|
|
295
|
+
.write(this.parentFingerPrint)
|
|
296
|
+
.writeUInt32BE(this.childIndex)
|
|
297
|
+
.write(this.chainCode)
|
|
298
|
+
.writeUInt8(0)
|
|
299
|
+
.write(this.privKey.toArray('be', 32))
|
|
300
|
+
.toArray();
|
|
301
|
+
}
|
|
302
|
+
else if (isPublic) {
|
|
303
|
+
return new utils_js_1.Writer()
|
|
304
|
+
.writeUInt32BE(this.versionBytesNum)
|
|
305
|
+
.writeUInt8(this.depth)
|
|
306
|
+
.write(this.parentFingerPrint)
|
|
307
|
+
.writeUInt32BE(this.childIndex)
|
|
308
|
+
.write(this.chainCode)
|
|
309
|
+
.write(this.pubKey.encode(true))
|
|
310
|
+
.toArray();
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
throw new Error('bip32: invalid versionBytesNum byte');
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Checks if the HD wallet contains a private key.
|
|
318
|
+
* This method determines whether the wallet is a private key wallet or a public key only wallet.
|
|
319
|
+
* @returns {boolean} A boolean value indicating whether the wallet has a private key (true) or not (false).
|
|
320
|
+
*/
|
|
321
|
+
isPrivate() {
|
|
322
|
+
return this.versionBytesNum === this.constants.privKey;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
exports.default = HD;
|
|
326
|
+
//# sourceMappingURL=HD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HD.js","sourceRoot":"","sources":["../../../../src/compat/HD.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
const bip_39_wordlist_en_js_1 = require("./bip-39-wordlist-en.js");
|
|
30
|
+
const utils_js_1 = require("../primitives/utils.js");
|
|
31
|
+
const Hash = __importStar(require("../primitives/Hash.js"));
|
|
32
|
+
const Random_js_1 = __importDefault(require("../primitives/Random.js"));
|
|
33
|
+
/**
|
|
34
|
+
* @class Mnemonic
|
|
35
|
+
*
|
|
36
|
+
* @description
|
|
37
|
+
* Class representing Mnemonic functionality.
|
|
38
|
+
* This class provides methods for generating, converting, and validating mnemonic phrases
|
|
39
|
+
* according to the BIP39 standard. It supports creating mnemonics from random entropy,
|
|
40
|
+
* converting mnemonics to seeds, and validating mnemonic phrases.
|
|
41
|
+
*/
|
|
42
|
+
class Mnemonic {
|
|
43
|
+
/**
|
|
44
|
+
* Constructs a Mnemonic object.
|
|
45
|
+
* @param {string} [mnemonic] - An optional mnemonic phrase.
|
|
46
|
+
* @param {number[]} [seed] - An optional seed derived from the mnemonic.
|
|
47
|
+
* @param {object} [wordlist=wordList] - An object containing a list of words and space character used in the mnemonic.
|
|
48
|
+
*/
|
|
49
|
+
constructor(mnemonic, seed, wordlist = bip_39_wordlist_en_js_1.wordList) {
|
|
50
|
+
this.mnemonic = mnemonic;
|
|
51
|
+
this.seed = seed;
|
|
52
|
+
this.Wordlist = wordlist;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Converts the mnemonic and seed into a binary representation.
|
|
56
|
+
* @returns {number[]} The binary representation of the mnemonic and seed.
|
|
57
|
+
*/
|
|
58
|
+
toBinary() {
|
|
59
|
+
const bw = new utils_js_1.Writer();
|
|
60
|
+
if (this.mnemonic) {
|
|
61
|
+
const buf = (0, utils_js_1.toArray)(this.mnemonic, 'utf8');
|
|
62
|
+
bw.writeVarIntNum(buf.length);
|
|
63
|
+
bw.write(buf);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
bw.writeVarIntNum(0);
|
|
67
|
+
}
|
|
68
|
+
if (this.seed) {
|
|
69
|
+
bw.writeVarIntNum(this.seed.length);
|
|
70
|
+
bw.write(this.seed);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
bw.writeVarIntNum(0);
|
|
74
|
+
}
|
|
75
|
+
return bw.toArray();
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Loads a mnemonic and seed from a binary representation.
|
|
79
|
+
* @param {number[]} bin - The binary representation of a mnemonic and seed.
|
|
80
|
+
* @returns {this} The Mnemonic instance with loaded mnemonic and seed.
|
|
81
|
+
*/
|
|
82
|
+
fromBinary(bin) {
|
|
83
|
+
const br = new utils_js_1.Reader(bin);
|
|
84
|
+
const mnemoniclen = br.readVarIntNum();
|
|
85
|
+
if (mnemoniclen > 0) {
|
|
86
|
+
this.mnemonic = (0, utils_js_1.encode)(br.read(mnemoniclen), 'utf8');
|
|
87
|
+
}
|
|
88
|
+
const seedlen = br.readVarIntNum();
|
|
89
|
+
if (seedlen > 0) {
|
|
90
|
+
this.seed = br.read(seedlen);
|
|
91
|
+
}
|
|
92
|
+
return this;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Generates a random mnemonic from a given bit length.
|
|
96
|
+
* @param {number} [bits=128] - The bit length for the random mnemonic (must be a multiple of 32 and at least 128).
|
|
97
|
+
* @returns {this} The Mnemonic instance with the new random mnemonic.
|
|
98
|
+
* @throws {Error} If the bit length is not a multiple of 32 or is less than 128.
|
|
99
|
+
*/
|
|
100
|
+
fromRandom(bits) {
|
|
101
|
+
if (!bits) {
|
|
102
|
+
bits = 128;
|
|
103
|
+
}
|
|
104
|
+
if (bits % 32 !== 0) {
|
|
105
|
+
throw new Error('bits must be multiple of 32');
|
|
106
|
+
}
|
|
107
|
+
if (bits < 128) {
|
|
108
|
+
throw new Error('bits must be at least 128');
|
|
109
|
+
}
|
|
110
|
+
const buf = (0, Random_js_1.default)(bits / 8);
|
|
111
|
+
this.entropy2Mnemonic(buf);
|
|
112
|
+
this.mnemonic2Seed();
|
|
113
|
+
return this;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Static method to generate a Mnemonic instance with a random mnemonic.
|
|
117
|
+
* @param {number} [bits=128] - The bit length for the random mnemonic.
|
|
118
|
+
* @returns {Mnemonic} A new Mnemonic instance.
|
|
119
|
+
*/
|
|
120
|
+
static fromRandom(bits) {
|
|
121
|
+
return new this().fromRandom(bits);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Converts given entropy into a mnemonic phrase.
|
|
125
|
+
* This method is used to generate a mnemonic from a specific entropy source.
|
|
126
|
+
* @param {number[]} buf - The entropy buffer, must be at least 128 bits.
|
|
127
|
+
* @returns {this} The Mnemonic instance with the mnemonic set from the given entropy.
|
|
128
|
+
* @throws {Error} If the entropy is less than 128 bits.
|
|
129
|
+
*/
|
|
130
|
+
fromEntropy(buf) {
|
|
131
|
+
this.entropy2Mnemonic(buf);
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Static method to create a Mnemonic instance from a given entropy.
|
|
136
|
+
* @param {number[]} buf - The entropy buffer.
|
|
137
|
+
* @returns {Mnemonic} A new Mnemonic instance.
|
|
138
|
+
*/
|
|
139
|
+
static fromEntropy(buf) {
|
|
140
|
+
return new this().fromEntropy(buf);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Sets the mnemonic for the instance from a string.
|
|
144
|
+
* @param {string} mnemonic - The mnemonic phrase as a string.
|
|
145
|
+
* @returns {this} The Mnemonic instance with the set mnemonic.
|
|
146
|
+
*/
|
|
147
|
+
fromString(mnemonic) {
|
|
148
|
+
this.mnemonic = mnemonic;
|
|
149
|
+
return this;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Static method to create a Mnemonic instance from a mnemonic string.
|
|
153
|
+
* @param {string} str - The mnemonic phrase.
|
|
154
|
+
* @returns {Mnemonic} A new Mnemonic instance.
|
|
155
|
+
*/
|
|
156
|
+
static fromString(str) {
|
|
157
|
+
return new this().fromString(str);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Converts the instance's mnemonic to a string representation.
|
|
161
|
+
* @returns {string} The mnemonic phrase as a string.
|
|
162
|
+
*/
|
|
163
|
+
toString() {
|
|
164
|
+
return this.mnemonic;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Converts the mnemonic to a seed.
|
|
168
|
+
* The mnemonic must pass the validity check before conversion.
|
|
169
|
+
* @param {string} [passphrase=''] - An optional passphrase for additional security.
|
|
170
|
+
* @returns {number[]} The generated seed.
|
|
171
|
+
* @throws {Error} If the mnemonic is invalid.
|
|
172
|
+
*/
|
|
173
|
+
toSeed(passphrase) {
|
|
174
|
+
this.mnemonic2Seed(passphrase);
|
|
175
|
+
return this.seed;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Converts entropy to a mnemonic phrase.
|
|
179
|
+
* This method takes a buffer of entropy and converts it into a corresponding
|
|
180
|
+
* mnemonic phrase based on the Mnemonic wordlist. The entropy should be at least 128 bits.
|
|
181
|
+
* The method applies a checksum and maps the entropy to words in the wordlist.
|
|
182
|
+
* @param {number[]} buf - The entropy buffer to convert. Must be at least 128 bits.
|
|
183
|
+
* @returns {this} The Mnemonic instance with the mnemonic set from the entropy.
|
|
184
|
+
* @throws {Error} If the entropy is less than 128 bits or if it's not an even multiple of 11 bits.
|
|
185
|
+
*/
|
|
186
|
+
entropy2Mnemonic(buf) {
|
|
187
|
+
if (buf.length < 128 / 8) {
|
|
188
|
+
throw new Error('Entropy is less than 128 bits. It must be 128 bits or more.');
|
|
189
|
+
}
|
|
190
|
+
const hash = Hash.sha256(buf);
|
|
191
|
+
let bin = '';
|
|
192
|
+
const bits = buf.length * 8;
|
|
193
|
+
for (let i = 0; i < buf.length; i++) {
|
|
194
|
+
bin = bin + ('00000000' + buf[i].toString(2)).slice(-8);
|
|
195
|
+
}
|
|
196
|
+
let hashbits = hash[0].toString(2);
|
|
197
|
+
hashbits = ('00000000' + hashbits).slice(-8).slice(0, bits / 32);
|
|
198
|
+
bin = bin + hashbits;
|
|
199
|
+
if (bin.length % 11 !== 0) {
|
|
200
|
+
throw new Error('internal error - entropy not an even multiple of 11 bits - ' + bin.length);
|
|
201
|
+
}
|
|
202
|
+
let mnemonic = '';
|
|
203
|
+
for (let i = 0; i < bin.length / 11; i++) {
|
|
204
|
+
if (mnemonic !== '') {
|
|
205
|
+
mnemonic = mnemonic + this.Wordlist.space;
|
|
206
|
+
}
|
|
207
|
+
const wi = parseInt(bin.slice(i * 11, (i + 1) * 11), 2);
|
|
208
|
+
mnemonic = mnemonic + this.Wordlist.value[wi];
|
|
209
|
+
}
|
|
210
|
+
this.mnemonic = mnemonic;
|
|
211
|
+
return this;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Validates the mnemonic phrase.
|
|
215
|
+
* Checks for correct length, absence of invalid words, and proper checksum.
|
|
216
|
+
* @returns {boolean} True if the mnemonic is valid, false otherwise.
|
|
217
|
+
* @throws {Error} If the mnemonic is not an even multiple of 11 bits.
|
|
218
|
+
*/
|
|
219
|
+
check() {
|
|
220
|
+
const mnemonic = this.mnemonic;
|
|
221
|
+
// confirm no invalid words
|
|
222
|
+
const words = mnemonic.split(this.Wordlist.space);
|
|
223
|
+
let bin = '';
|
|
224
|
+
for (let i = 0; i < words.length; i++) {
|
|
225
|
+
const ind = this.Wordlist.value.indexOf(words[i]);
|
|
226
|
+
if (ind < 0) {
|
|
227
|
+
return false;
|
|
228
|
+
}
|
|
229
|
+
bin = bin + ('00000000000' + ind.toString(2)).slice(-11);
|
|
230
|
+
}
|
|
231
|
+
if (bin.length % 11 !== 0) {
|
|
232
|
+
throw new Error('internal error - entropy not an even multiple of 11 bits - ' + bin.length);
|
|
233
|
+
}
|
|
234
|
+
// confirm checksum
|
|
235
|
+
const cs = bin.length / 33;
|
|
236
|
+
const hashBits = bin.slice(-cs);
|
|
237
|
+
const nonhashBits = bin.slice(0, bin.length - cs);
|
|
238
|
+
const buf = [];
|
|
239
|
+
for (let i = 0; i < nonhashBits.length / 8; i++) {
|
|
240
|
+
buf.push(parseInt(bin.slice(i * 8, (i + 1) * 8), 2));
|
|
241
|
+
}
|
|
242
|
+
const hash = Hash.sha256(buf.slice(0, nonhashBits.length / 8));
|
|
243
|
+
let expectedHashBits = hash[0].toString(2);
|
|
244
|
+
expectedHashBits = ('00000000' + expectedHashBits).slice(-8).slice(0, cs);
|
|
245
|
+
return expectedHashBits === hashBits;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Converts a mnemonic to a seed.
|
|
249
|
+
* This method takes the instance's mnemonic phrase, combines it with a passphrase (if provided),
|
|
250
|
+
* and uses PBKDF2 to generate a seed. It also validates the mnemonic before conversion.
|
|
251
|
+
* This seed can then be used for generating deterministic keys.
|
|
252
|
+
* @param {string} [passphrase=''] - An optional passphrase for added security.
|
|
253
|
+
* @returns {this} The Mnemonic instance with the seed generated from the mnemonic.
|
|
254
|
+
* @throws {Error} If the mnemonic does not pass validation or if the passphrase is not a string.
|
|
255
|
+
*/
|
|
256
|
+
mnemonic2Seed(passphrase = '') {
|
|
257
|
+
let mnemonic = this.mnemonic;
|
|
258
|
+
if (!this.check()) {
|
|
259
|
+
throw new Error('Mnemonic does not pass the check - was the mnemonic typed incorrectly? Are there extra spaces?');
|
|
260
|
+
}
|
|
261
|
+
if (typeof passphrase !== 'string') {
|
|
262
|
+
throw new Error('passphrase must be a string or undefined');
|
|
263
|
+
}
|
|
264
|
+
mnemonic = mnemonic.normalize('NFKD');
|
|
265
|
+
passphrase = passphrase.normalize('NFKD');
|
|
266
|
+
const mbuf = (0, utils_js_1.toArray)(mnemonic, 'utf8');
|
|
267
|
+
const pbuf = [...(0, utils_js_1.toArray)('mnemonic', 'utf8'), ...(0, utils_js_1.toArray)(passphrase, 'utf8')];
|
|
268
|
+
this.seed = Hash.pbkdf2(mbuf, pbuf, 2048, 64, 'sha512');
|
|
269
|
+
return this;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Determines the validity of a given passphrase with the mnemonic.
|
|
273
|
+
* This method is useful for checking if a passphrase matches with the mnemonic.
|
|
274
|
+
* @param {string} [passphrase=''] - The passphrase to validate.
|
|
275
|
+
* @returns {boolean} True if the mnemonic and passphrase combination is valid, false otherwise.
|
|
276
|
+
*/
|
|
277
|
+
isValid(passphrase = '') {
|
|
278
|
+
let isValid;
|
|
279
|
+
try {
|
|
280
|
+
isValid = !!this.mnemonic2Seed(passphrase);
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
isValid = false;
|
|
284
|
+
}
|
|
285
|
+
return isValid;
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Static method to check the validity of a given mnemonic and passphrase combination.
|
|
289
|
+
* @param {string} mnemonic - The mnemonic phrase.
|
|
290
|
+
* @param {string} [passphrase=''] - The passphrase to validate.
|
|
291
|
+
* @returns {boolean} True if the combination is valid, false otherwise.
|
|
292
|
+
*/
|
|
293
|
+
static isValid(mnemonic, passphrase = '') {
|
|
294
|
+
return new Mnemonic(mnemonic).isValid(passphrase);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
exports.default = Mnemonic;
|
|
298
|
+
//# sourceMappingURL=Mnemonic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mnemonic.js","sourceRoot":"","sources":["../../../../src/compat/Mnemonic.ts"],"names":[],"mappings":"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"}
|