@opcat-labs/opcat 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cjs2esm.json +18 -0
- package/.mocharc.yaml +1 -1
- package/CHANGELOG.md +6 -0
- package/README.md +6 -0
- package/{lib/address.js → cjs/address.cjs} +77 -72
- package/cjs/block/block.cjs +332 -0
- package/{lib/block/blockheader.js → cjs/block/blockheader.cjs} +8 -7
- package/cjs/block/index.cjs +2 -0
- package/{lib/block/merkleblock.js → cjs/block/merkleblock.cjs} +23 -15
- package/cjs/bn.cjs +3411 -0
- package/{lib/crypto/bn.js → cjs/crypto/bn.cjs} +3 -3
- package/{lib/crypto/ecdsa.js → cjs/crypto/ecdsa.cjs} +150 -14
- package/{lib/crypto/hash.node.js → cjs/crypto/hash.cjs} +13 -2
- package/cjs/crypto/index.cjs +16 -0
- package/{lib/crypto/point.js → cjs/crypto/point.cjs} +11 -4
- package/cjs/crypto/random.cjs +18 -0
- package/{lib/crypto/signature.js → cjs/crypto/signature.cjs} +158 -8
- package/{lib/encoding/base58.js → cjs/encoding/base58.cjs} +58 -2
- package/cjs/encoding/base58check.cjs +192 -0
- package/cjs/encoding/bufferreader.cjs +333 -0
- package/cjs/encoding/bufferwriter.cjs +244 -0
- package/{lib/encoding/decode-asm.js → cjs/encoding/decode-asm.cjs} +4 -4
- package/{lib/encoding/decode-hex.js → cjs/encoding/decode-hex.cjs} +1 -1
- package/cjs/encoding/index.cjs +14 -0
- package/cjs/encoding/varint.cjs +116 -0
- package/{lib/errors/index.js → cjs/errors/index.cjs} +9 -9
- package/{lib/errors/spec.js → cjs/errors/spec.cjs} +2 -2
- package/cjs/hash-cache.cjs +98 -0
- package/{lib/hdprivatekey.js → cjs/hdprivatekey.cjs} +232 -140
- package/{lib/hdpublickey.js → cjs/hdpublickey.cjs} +120 -93
- package/cjs/index.cjs +94 -0
- package/cjs/interpreter/index.cjs +2 -0
- package/cjs/interpreter/interpreter.cjs +1988 -0
- package/{lib/script/stack.js → cjs/interpreter/stack.cjs} +9 -2
- package/{lib/message/message.js → cjs/message/message.cjs} +62 -25
- package/cjs/mnemonic/index.cjs +3 -0
- package/{lib/mnemonic/mnemonic.js → cjs/mnemonic/mnemonic.cjs} +44 -13
- package/{lib/mnemonic/pbkdf2.node.js → cjs/mnemonic/pbkdf2.cjs} +9 -2
- package/cjs/mnemonic/words/index.cjs +66 -0
- package/cjs/network.cjs +13 -0
- package/cjs/networks.cjs +321 -0
- package/{lib/opcode.js → cjs/opcode.cjs} +69 -5
- package/cjs/privatekey.cjs +422 -0
- package/{lib/publickey.js → cjs/publickey.cjs} +14 -16
- package/cjs/script/index.cjs +2 -0
- package/{lib/script/script.js → cjs/script/script.cjs} +322 -67
- package/cjs/transaction/index.cjs +5 -0
- package/cjs/transaction/input/index.cjs +34 -0
- package/cjs/transaction/input/input.cjs +396 -0
- package/{lib/transaction/input/multisig.js → cjs/transaction/input/multisig.cjs} +112 -18
- package/{lib/transaction/input/publickey.js → cjs/transaction/input/publickey.cjs} +29 -19
- package/{lib/transaction/input/publickeyhash.js → cjs/transaction/input/publickeyhash.cjs} +25 -17
- package/{lib/transaction/output.js → cjs/transaction/output.cjs} +100 -15
- package/cjs/transaction/sighash.cjs +187 -0
- package/{lib/transaction/signature.js → cjs/transaction/signature.cjs} +30 -6
- package/cjs/transaction/transaction.cjs +2000 -0
- package/{lib/transaction/unspentoutput.js → cjs/transaction/unspentoutput.cjs} +5 -5
- package/cjs/util/derivation.cjs +53 -0
- package/cjs/util/index.cjs +11 -0
- package/cjs/util/js.cjs +95 -0
- package/{lib/util/preconditions.js → cjs/util/preconditions.cjs} +2 -2
- package/esm/address.js +483 -0
- package/{lib → esm}/block/block.js +82 -27
- package/esm/block/blockheader.js +296 -0
- package/esm/block/index.js +2 -0
- package/esm/block/merkleblock.js +331 -0
- package/esm/bn.js +3411 -0
- package/esm/crypto/bn.js +278 -0
- package/esm/crypto/ecdsa.js +475 -0
- package/{lib/crypto/hash.browser.js → esm/crypto/hash.js} +18 -7
- package/esm/crypto/index.js +16 -0
- package/esm/crypto/point.js +228 -0
- package/esm/crypto/random.js +18 -0
- package/esm/crypto/signature.js +475 -0
- package/esm/encoding/base58.js +167 -0
- package/esm/encoding/base58check.js +192 -0
- package/esm/encoding/bufferreader.js +333 -0
- package/esm/encoding/bufferwriter.js +243 -0
- package/esm/encoding/decode-asm.js +24 -0
- package/esm/encoding/decode-hex.js +32 -0
- package/esm/encoding/decode-script-chunks.js +43 -0
- package/esm/encoding/encode-hex.js +284 -0
- package/esm/encoding/index.js +14 -0
- package/esm/encoding/is-hex.js +7 -0
- package/esm/encoding/varint.js +116 -0
- package/esm/errors/index.js +54 -0
- package/esm/errors/spec.js +314 -0
- package/esm/hash-cache.js +98 -0
- package/esm/hdprivatekey.js +768 -0
- package/esm/hdpublickey.js +549 -0
- package/esm/index.js +66 -0
- package/esm/interpreter/index.js +2 -0
- package/{lib/script → esm/interpreter}/interpreter.js +219 -66
- package/esm/interpreter/stack.js +116 -0
- package/esm/message/message.js +228 -0
- package/esm/mnemonic/index.js +3 -0
- package/esm/mnemonic/mnemonic.js +332 -0
- package/{lib/mnemonic/pbkdf2.browser.js → esm/mnemonic/pbkdf2.js} +13 -6
- package/esm/mnemonic/words/chinese.js +2054 -0
- package/esm/mnemonic/words/english.js +2054 -0
- package/esm/mnemonic/words/french.js +2054 -0
- package/esm/mnemonic/words/index.js +66 -0
- package/esm/mnemonic/words/italian.js +2054 -0
- package/esm/mnemonic/words/japanese.js +2054 -0
- package/esm/mnemonic/words/spanish.js +2054 -0
- package/esm/network.js +13 -0
- package/{lib → esm}/networks.js +61 -120
- package/esm/opcode.js +319 -0
- package/{lib → esm}/privatekey.js +76 -28
- package/esm/publickey.js +384 -0
- package/esm/script/index.js +2 -0
- package/esm/script/script.js +1329 -0
- package/esm/script/write-i32-le.js +17 -0
- package/esm/script/write-push-data.js +35 -0
- package/esm/script/write-u16-le.js +12 -0
- package/esm/script/write-u32-le.js +16 -0
- package/esm/script/write-u64-le.js +24 -0
- package/esm/script/write-u8-le.js +8 -0
- package/esm/script/write-varint.js +46 -0
- package/esm/transaction/index.js +5 -0
- package/esm/transaction/input/index.js +33 -0
- package/{lib → esm}/transaction/input/input.js +132 -90
- package/esm/transaction/input/multisig.js +335 -0
- package/esm/transaction/input/publickey.js +108 -0
- package/esm/transaction/input/publickeyhash.js +124 -0
- package/esm/transaction/output.js +316 -0
- package/{lib → esm}/transaction/sighash.js +42 -22
- package/esm/transaction/signature.js +120 -0
- package/{lib → esm}/transaction/transaction.js +522 -163
- package/esm/transaction/unspentoutput.js +112 -0
- package/esm/util/_.js +47 -0
- package/esm/util/derivation.js +53 -0
- package/esm/util/index.js +12 -0
- package/esm/util/js.js +95 -0
- package/esm/util/preconditions.js +33 -0
- package/fixup.cjs +17 -0
- package/package.json +18 -4
- package/test/{address.js → address.cjs} +14 -43
- package/test/block/{block.js → block.cjs} +3 -5
- package/test/block/{blockheader.js → blockheader.cjs} +2 -2
- package/test/block/{merklebloack.js → merklebloack.cjs} +2 -2
- package/test/crypto/{ecdsa.js → ecdsa.cjs} +9 -9
- package/test/crypto/{hash.browser.js → hash.browser.cjs} +2 -1
- package/test/crypto/{signature.js → signature.cjs} +2 -2
- package/test/data/bitcoind/script_tests.json +5 -5
- package/test/{hashCache.js → hashCache.cjs} +2 -1
- package/test/{hdkeys.js → hdkeys.cjs} +4 -2
- package/test/{hdprivatekey.js → hdprivatekey.cjs} +7 -6
- package/test/{hdpublickey.js → hdpublickey.cjs} +2 -7
- package/test/mnemonic/{pbkdf2.test.js → pbkdf2.test.cjs} +2 -2
- package/test/{networks.js → networks.cjs} +12 -31
- package/test/{publickey.js → publickey.cjs} +2 -2
- package/test/script/{interpreter.js → interpreter.cjs} +5 -5
- package/test/script/{script.js → script.cjs} +8 -2
- package/test/transaction/{deserialize.js → deserialize.cjs} +2 -2
- package/test/transaction/input/{input.js → input.cjs} +1 -1
- package/test/transaction/input/{multisig.js → multisig.cjs} +2 -1
- package/test/transaction/input/{publickeyhash.js → publickeyhash.cjs} +1 -1
- package/test/transaction/{sighash.js → sighash.cjs} +1 -1
- package/test/transaction/{transaction.js → transaction.cjs} +2 -2
- package/tsconfig.json +13 -0
- package/types/address.d.cts +252 -0
- package/types/block/block.d.cts +139 -0
- package/types/block/blockheader.d.cts +125 -0
- package/types/block/index.d.cts +2 -0
- package/types/block/merkleblock.d.cts +95 -0
- package/types/bn.d.cts +202 -0
- package/types/crypto/bn.d.cts +2 -0
- package/types/crypto/ecdsa.d.cts +187 -0
- package/types/crypto/hash.d.cts +118 -0
- package/types/crypto/index.d.cts +7 -0
- package/types/crypto/point.d.cts +134 -0
- package/types/crypto/random.d.cts +13 -0
- package/types/crypto/signature.d.cts +160 -0
- package/types/encoding/base58.d.cts +106 -0
- package/types/encoding/base58check.d.cts +107 -0
- package/types/encoding/bufferreader.d.cts +164 -0
- package/types/encoding/bufferwriter.d.cts +126 -0
- package/types/encoding/decode-asm.d.cts +2 -0
- package/types/encoding/decode-hex.d.cts +2 -0
- package/types/encoding/decode-script-chunks.d.cts +14 -0
- package/types/encoding/encode-hex.d.cts +2 -0
- package/types/encoding/index.d.cts +6 -0
- package/types/encoding/is-hex.d.cts +2 -0
- package/types/encoding/varint.d.cts +66 -0
- package/types/errors/index.d.cts +4 -0
- package/types/errors/spec.d.cts +22 -0
- package/types/hash-cache.d.cts +65 -0
- package/types/hdprivatekey.d.cts +281 -0
- package/types/hdpublickey.d.cts +240 -0
- package/types/index.d.cts +26 -0
- package/types/interpreter/index.d.cts +2 -0
- package/types/interpreter/interpreter.d.cts +228 -0
- package/types/interpreter/stack.d.cts +35 -0
- package/types/message/message.d.cts +110 -0
- package/types/mnemonic/index.d.cts +2 -0
- package/types/mnemonic/mnemonic.d.cts +171 -0
- package/types/mnemonic/pbkdf2.d.cts +14 -0
- package/types/mnemonic/words/chinese.d.cts +2 -0
- package/types/mnemonic/words/english.d.cts +2 -0
- package/types/mnemonic/words/french.d.cts +2 -0
- package/types/mnemonic/words/index.d.cts +22 -0
- package/types/mnemonic/words/italian.d.cts +2 -0
- package/types/mnemonic/words/japanese.d.cts +2 -0
- package/types/mnemonic/words/spanish.d.cts +2 -0
- package/types/network.d.cts +11 -0
- package/types/networks.d.cts +76 -0
- package/types/opcode.d.cts +93 -0
- package/types/privatekey.d.cts +169 -0
- package/types/publickey.d.cts +202 -0
- package/types/script/index.d.cts +2 -0
- package/types/script/script.d.cts +449 -0
- package/types/script/write-i32-le.d.cts +2 -0
- package/types/script/write-push-data.d.cts +2 -0
- package/types/script/write-u16-le.d.cts +2 -0
- package/types/script/write-u32-le.d.cts +2 -0
- package/types/script/write-u64-le.d.cts +2 -0
- package/types/script/write-u8-le.d.cts +2 -0
- package/types/script/write-varint.d.cts +2 -0
- package/types/transaction/index.d.cts +2 -0
- package/types/transaction/input/index.d.cts +2 -0
- package/types/transaction/input/input.d.cts +178 -0
- package/types/transaction/input/multisig.d.cts +127 -0
- package/types/transaction/input/publickey.d.cts +44 -0
- package/types/transaction/input/publickeyhash.d.cts +45 -0
- package/types/transaction/output.d.cts +118 -0
- package/types/transaction/sighash.d.cts +61 -0
- package/types/transaction/signature.d.cts +43 -0
- package/types/transaction/transaction.d.cts +716 -0
- package/types/transaction/unspentoutput.d.cts +83 -0
- package/types/util/_.d.cts +26 -0
- package/types/util/derivation.d.cts +21 -0
- package/types/util/index.d.cts +5 -0
- package/types/util/js.d.cts +50 -0
- package/types/util/preconditions.d.cts +3 -0
- package/index.d.ts +0 -1541
- package/index.js +0 -74
- package/lib/block/index.js +0 -4
- package/lib/bn.js +0 -3423
- package/lib/crypto/hash.js +0 -2
- package/lib/crypto/random.browser.js +0 -28
- package/lib/crypto/random.js +0 -2
- package/lib/crypto/random.node.js +0 -11
- package/lib/encoding/base58check.js +0 -121
- package/lib/encoding/bufferreader.js +0 -212
- package/lib/encoding/bufferwriter.js +0 -140
- package/lib/encoding/varint.js +0 -75
- package/lib/hash-cache.js +0 -50
- package/lib/mnemonic/pbkdf2.js +0 -2
- package/lib/mnemonic/words/index.js +0 -8
- package/lib/script/index.js +0 -5
- package/lib/transaction/index.js +0 -7
- package/lib/transaction/input/index.js +0 -5
- package/lib/util/js.js +0 -90
- /package/{lib/encoding/decode-script-chunks.js → cjs/encoding/decode-script-chunks.cjs} +0 -0
- /package/{lib/encoding/encode-hex.js → cjs/encoding/encode-hex.cjs} +0 -0
- /package/{lib/encoding/is-hex.js → cjs/encoding/is-hex.cjs} +0 -0
- /package/{lib/mnemonic/words/chinese.js → cjs/mnemonic/words/chinese.cjs} +0 -0
- /package/{lib/mnemonic/words/english.js → cjs/mnemonic/words/english.cjs} +0 -0
- /package/{lib/mnemonic/words/french.js → cjs/mnemonic/words/french.cjs} +0 -0
- /package/{lib/mnemonic/words/italian.js → cjs/mnemonic/words/italian.cjs} +0 -0
- /package/{lib/mnemonic/words/japanese.js → cjs/mnemonic/words/japanese.cjs} +0 -0
- /package/{lib/mnemonic/words/spanish.js → cjs/mnemonic/words/spanish.cjs} +0 -0
- /package/{lib/script/write-i32-le.js → cjs/script/write-i32-le.cjs} +0 -0
- /package/{lib/script/write-push-data.js → cjs/script/write-push-data.cjs} +0 -0
- /package/{lib/script/write-u16-le.js → cjs/script/write-u16-le.cjs} +0 -0
- /package/{lib/script/write-u32-le.js → cjs/script/write-u32-le.cjs} +0 -0
- /package/{lib/script/write-u64-le.js → cjs/script/write-u64-le.cjs} +0 -0
- /package/{lib/script/write-u8-le.js → cjs/script/write-u8-le.cjs} +0 -0
- /package/{lib/script/write-varint.js → cjs/script/write-varint.cjs} +0 -0
- /package/{lib/util/_.js → cjs/util/_.cjs} +0 -0
- /package/test/crypto/{bn.js → bn.cjs} +0 -0
- /package/test/crypto/{hash.js → hash.cjs} +0 -0
- /package/test/crypto/{point.js → point.cjs} +0 -0
- /package/test/crypto/{random.js → random.cjs} +0 -0
- /package/test/data/{blk86756-testnet.js → blk86756-testnet.cjs} +0 -0
- /package/test/data/{merkleblocks.js → merkleblocks.cjs} +0 -0
- /package/test/encoding/{base58.js → base58.cjs} +0 -0
- /package/test/encoding/{base58check.js → base58check.cjs} +0 -0
- /package/test/encoding/{bufferreader.js → bufferreader.cjs} +0 -0
- /package/test/encoding/{bufferwriter.js → bufferwriter.cjs} +0 -0
- /package/test/encoding/{varint.js → varint.cjs} +0 -0
- /package/test/{index.js → index.cjs} +0 -0
- /package/test/message/{message.js → message.cjs} +0 -0
- /package/test/mnemonic/{mnemonic.js → mnemonic.cjs} +0 -0
- /package/test/{opcode.js → opcode.cjs} +0 -0
- /package/test/{privatekey.js → privatekey.cjs} +0 -0
- /package/test/transaction/input/{publickey.js → publickey.cjs} +0 -0
- /package/test/transaction/{output.js → output.cjs} +0 -0
- /package/test/transaction/{signature.js → signature.cjs} +0 -0
- /package/test/transaction/{unspentoutput.js → unspentoutput.cjs} +0 -0
- /package/test/util/{js.js → js.cjs} +0 -0
- /package/test/util/{preconditions.js → preconditions.cjs} +0 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var BufferWriter = require('./bufferwriter.cjs');
|
|
4
|
+
var BufferReader = require('./bufferreader.cjs');
|
|
5
|
+
var BN = require('../crypto/bn.cjs');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Creates a Varint instance from various input types.
|
|
9
|
+
* @constructor
|
|
10
|
+
* @param {Buffer|number|BN|Object} buf - Input can be a Buffer, number, BN instance, or object with buffer properties.
|
|
11
|
+
* @returns {Varint} New Varint instance when called without `new`.
|
|
12
|
+
*/
|
|
13
|
+
function Varint(buf) {
|
|
14
|
+
if (!(this instanceof Varint)) {
|
|
15
|
+
return new Varint(buf);
|
|
16
|
+
}
|
|
17
|
+
if (Buffer.isBuffer(buf)) {
|
|
18
|
+
this.buf = buf;
|
|
19
|
+
} else if (typeof buf === 'number') {
|
|
20
|
+
var num = buf;
|
|
21
|
+
this.fromNumber(num);
|
|
22
|
+
} else if (buf instanceof BN) {
|
|
23
|
+
var bn = buf;
|
|
24
|
+
this.fromBN(bn);
|
|
25
|
+
} else if (buf) {
|
|
26
|
+
var obj = buf;
|
|
27
|
+
this.set(obj);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Sets the buffer for the Varint instance.
|
|
33
|
+
* @param {Object} obj - The object containing the buffer to set.
|
|
34
|
+
* @param {Buffer} [obj.buf] - The buffer to assign. If not provided, keeps the current buffer.
|
|
35
|
+
* @returns {Varint} The Varint instance for chaining.
|
|
36
|
+
*/
|
|
37
|
+
Varint.prototype.set = function (obj) {
|
|
38
|
+
this.buf = obj.buf || this.buf;
|
|
39
|
+
return this;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Converts a hex string to a Varint buffer and updates the instance.
|
|
44
|
+
* @param {string} str - Hex string to convert.
|
|
45
|
+
* @returns {Varint} The updated Varint instance.
|
|
46
|
+
*/
|
|
47
|
+
Varint.prototype.fromString = function (str) {
|
|
48
|
+
this.set({
|
|
49
|
+
buf: Buffer.from(str, 'hex'),
|
|
50
|
+
});
|
|
51
|
+
return this;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Converts the Varint buffer to a hexadecimal string representation.
|
|
56
|
+
* @returns {string} Hexadecimal string of the buffer.
|
|
57
|
+
*/
|
|
58
|
+
Varint.prototype.toString = function () {
|
|
59
|
+
return this.buf.toString('hex');
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Sets the internal buffer to the provided buffer and returns the instance.
|
|
64
|
+
* @param {Buffer} buf - The buffer to set as the internal buffer.
|
|
65
|
+
* @returns {Varint} The instance for chaining.
|
|
66
|
+
*/
|
|
67
|
+
Varint.prototype.fromBuffer = function (buf) {
|
|
68
|
+
this.buf = buf;
|
|
69
|
+
return this;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Reads a varint from a buffer reader and stores it in the instance.
|
|
74
|
+
* @param {Object} br - The buffer reader instance to read from.
|
|
75
|
+
* @returns {Varint} The current Varint instance for chaining.
|
|
76
|
+
*/
|
|
77
|
+
Varint.prototype.fromBufferReader = function (br) {
|
|
78
|
+
this.buf = br.readVarintBuf();
|
|
79
|
+
return this;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Converts a BigNumber (BN) to a varint and stores it in the buffer.
|
|
84
|
+
* @param {BN} bn - The BigNumber to convert to varint format.
|
|
85
|
+
* @returns {Varint} Returns the Varint instance for chaining.
|
|
86
|
+
*/
|
|
87
|
+
Varint.prototype.fromBN = function (bn) {
|
|
88
|
+
var bw = new BufferWriter();
|
|
89
|
+
this.buf = bw.writeVarintBN(bn).toBuffer();
|
|
90
|
+
return this;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Converts a number to a varint and stores it in the buffer.
|
|
95
|
+
* @param {number} num - The number to convert to varint format.
|
|
96
|
+
* @returns {Varint} Returns the instance for chaining.
|
|
97
|
+
*/
|
|
98
|
+
Varint.prototype.fromNumber = function (num) {
|
|
99
|
+
var bw = new BufferWriter();
|
|
100
|
+
this.buf = bw.writeVarintNum(num).toBuffer();
|
|
101
|
+
return this;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
Varint.prototype.toBuffer = function () {
|
|
105
|
+
return this.buf;
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
Varint.prototype.toBN = function () {
|
|
109
|
+
return BufferReader(this.buf).readVarintBN();
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
Varint.prototype.toNumber = function () {
|
|
113
|
+
return BufferReader(this.buf).readVarintNum();
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
module.exports = Varint;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var _ = require('../util/_');
|
|
3
|
+
var _ = require('../util/_.cjs');
|
|
4
|
+
var data = require('./spec.cjs');
|
|
4
5
|
|
|
5
6
|
function format(message, args) {
|
|
6
7
|
return message.replace('{0}', args[0]).replace('{1}', args[1]).replace('{2}', args[2]);
|
|
@@ -36,19 +37,18 @@ var traverseRoot = function (parent, errorsDefinition) {
|
|
|
36
37
|
return parent;
|
|
37
38
|
};
|
|
38
39
|
|
|
39
|
-
var
|
|
40
|
-
opcat.Error = function () {
|
|
40
|
+
var OpcatError = function () {
|
|
41
41
|
this.message = 'Internal error';
|
|
42
42
|
this.stack = this.message + '\n' + new Error().stack;
|
|
43
43
|
};
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
OpcatError.prototype = Object.create(Error.prototype);
|
|
45
|
+
OpcatError.prototype.name = 'opcat.Error';
|
|
46
46
|
|
|
47
|
-
var data = require('./spec');
|
|
48
|
-
traverseRoot(opcat.Error, data);
|
|
49
47
|
|
|
50
|
-
|
|
48
|
+
traverseRoot(OpcatError, data);
|
|
49
|
+
|
|
50
|
+
module.exports = OpcatError;
|
|
51
51
|
|
|
52
52
|
module.exports.extend = function (spec) {
|
|
53
|
-
return traverseNode(
|
|
53
|
+
return traverseNode(OpcatError, spec);
|
|
54
54
|
};
|
|
@@ -196,7 +196,7 @@ module.exports = [
|
|
|
196
196
|
{
|
|
197
197
|
name: 'CantDeriveAddress',
|
|
198
198
|
message:
|
|
199
|
-
"Can't derive address associated with script {0}, needs to be p2pkh in, p2pkh out
|
|
199
|
+
"Can't derive address associated with script: {0}, needs to be p2pkh in, p2pkh out",
|
|
200
200
|
},
|
|
201
201
|
{
|
|
202
202
|
name: 'InvalidBuffer',
|
|
@@ -251,7 +251,7 @@ module.exports = [
|
|
|
251
251
|
errors: [
|
|
252
252
|
{
|
|
253
253
|
name: 'ArgumentIsPrivateExtended',
|
|
254
|
-
message: 'Argument is an extended private key
|
|
254
|
+
message: 'Argument is an extended private key',
|
|
255
255
|
},
|
|
256
256
|
{
|
|
257
257
|
name: 'InvalidDerivationArgument',
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hash Cache
|
|
3
|
+
* ==========
|
|
4
|
+
*
|
|
5
|
+
* For use in sighash.
|
|
6
|
+
*/
|
|
7
|
+
'use strict';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A class representing a cache for transaction hash buffers.
|
|
11
|
+
* Provides methods for serialization/deserialization between Buffer, JSON, and hex formats.
|
|
12
|
+
*
|
|
13
|
+
* @class
|
|
14
|
+
* @property {Buffer} prevoutsHashBuf - Hash buffer for transaction prevouts
|
|
15
|
+
* @property {Buffer} sequenceHashBuf - Hash buffer for transaction sequence
|
|
16
|
+
* @property {Buffer} outputsHashBuf - Hash buffer for transaction outputs
|
|
17
|
+
*/
|
|
18
|
+
class HashCache {
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a new hash cache instance with the provided hash buffers.
|
|
21
|
+
* @param {Buffer} prevoutsHashBuf - Hash buffer for prevouts
|
|
22
|
+
* @param {Buffer} sequenceHashBuf - Hash buffer for sequence
|
|
23
|
+
* @param {Buffer} outputsHashBuf - Hash buffer for outputs
|
|
24
|
+
*/
|
|
25
|
+
constructor(prevoutsHashBuf, sequenceHashBuf, outputsHashBuf) {
|
|
26
|
+
this.prevoutsHashBuf = prevoutsHashBuf;
|
|
27
|
+
this.sequenceHashBuf = sequenceHashBuf;
|
|
28
|
+
this.outputsHashBuf = outputsHashBuf;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Creates a HashCache instance from a buffer by parsing it as JSON.
|
|
33
|
+
* @param {Buffer} buf - The input buffer containing JSON data.
|
|
34
|
+
* @returns {HashCache} A new HashCache instance created from the parsed JSON.
|
|
35
|
+
*/
|
|
36
|
+
static fromBuffer(buf) {
|
|
37
|
+
return HashCache.fromJSON(JSON.parse(buf.toString()));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Converts the object to a Buffer containing its JSON string representation.
|
|
42
|
+
* @returns {Buffer} A Buffer containing the JSON string of the object.
|
|
43
|
+
*/
|
|
44
|
+
toBuffer() {
|
|
45
|
+
return Buffer.from(JSON.stringify(this.toJSON()));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Creates a HashCache instance from a JSON object.
|
|
50
|
+
* @param {Object} json - The JSON object containing hash buffers in hex format.
|
|
51
|
+
* @param {string} [json.prevoutsHashBuf] - Hex string for prevouts hash buffer.
|
|
52
|
+
* @param {string} [json.sequenceHashBuf] - Hex string for sequence hash buffer.
|
|
53
|
+
* @param {string} [json.outputsHashBuf] - Hex string for outputs hash buffer.
|
|
54
|
+
* @returns {HashCache} A new HashCache instance with converted Buffer values.
|
|
55
|
+
*/
|
|
56
|
+
static fromJSON(json) {
|
|
57
|
+
return new HashCache(
|
|
58
|
+
json.prevoutsHashBuf ? Buffer.from(json.prevoutsHashBuf, 'hex') : undefined,
|
|
59
|
+
json.sequenceHashBuf ? Buffer.from(json.sequenceHashBuf, 'hex') : undefined,
|
|
60
|
+
json.outputsHashBuf ? Buffer.from(json.outputsHashBuf, 'hex') : undefined,
|
|
61
|
+
);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Converts the hash cache object to a JSON representation.
|
|
66
|
+
* @returns {Object} An object containing hex string representations of the hash buffers:
|
|
67
|
+
* - prevoutsHashBuf: Hex string of prevouts hash buffer (if exists)
|
|
68
|
+
* - sequenceHashBuf: Hex string of sequence hash buffer (if exists)
|
|
69
|
+
* - outputsHashBuf: Hex string of outputs hash buffer (if exists)
|
|
70
|
+
*/
|
|
71
|
+
toJSON() {
|
|
72
|
+
return {
|
|
73
|
+
prevoutsHashBuf: this.prevoutsHashBuf ? this.prevoutsHashBuf.toString('hex') : undefined,
|
|
74
|
+
sequenceHashBuf: this.sequenceHashBuf ? this.sequenceHashBuf.toString('hex') : undefined,
|
|
75
|
+
outputsHashBuf: this.outputsHashBuf ? this.outputsHashBuf.toString('hex') : undefined,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Converts the object's buffer representation to a hexadecimal string.
|
|
81
|
+
* @returns {string} Hexadecimal string representation of the buffer.
|
|
82
|
+
*/
|
|
83
|
+
toHex() {
|
|
84
|
+
return this.toBuffer().toString('hex');
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Creates a HashCache instance from a hex string.
|
|
89
|
+
* @param {string} hex - The hex string to convert to a buffer.
|
|
90
|
+
* @returns {HashCache} A HashCache instance created from the hex string buffer.
|
|
91
|
+
*/
|
|
92
|
+
static fromHex(hex) {
|
|
93
|
+
const buf = Buffer.from(hex, 'hex');
|
|
94
|
+
return HashCache.fromBuffer(buf);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
module.exports = HashCache;
|