xpi-ts 0.2.18 → 0.2.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +2 -24
- package/dist/cjs/lib/bitcore/crypto/bn.js +7 -10
- package/dist/cjs/lib/bitcore/crypto/point.js +2 -5
- package/dist/cjs/lib/bitcore/encoding/base58.js +1 -4
- package/dist/cjs/lib/bitcore/encoding/base58check.js +1 -4
- package/dist/cjs/lib/bitcore/mnemonic/index.js +1 -4
- package/dist/cjs/lib/rank/index.js +1 -4
- package/dist/cjs/lib/rank/script.js +1 -4
- package/dist/esm/index.js +7 -46
- package/dist/esm/jest.config.js +1 -3
- package/dist/esm/lib/bitcore/address.js +72 -76
- package/dist/esm/lib/bitcore/block/block.js +44 -48
- package/dist/esm/lib/bitcore/block/blockheader.js +55 -59
- package/dist/esm/lib/bitcore/block/index.js +3 -9
- package/dist/esm/lib/bitcore/block/merkleblock.js +49 -55
- package/dist/esm/lib/bitcore/crypto/bn.js +20 -26
- package/dist/esm/lib/bitcore/crypto/ecdsa.js +45 -49
- package/dist/esm/lib/bitcore/crypto/hash.js +23 -27
- package/dist/esm/lib/bitcore/crypto/index.js +8 -22
- package/dist/esm/lib/bitcore/crypto/musig2.js +66 -76
- package/dist/esm/lib/bitcore/crypto/point.js +31 -38
- package/dist/esm/lib/bitcore/crypto/random.js +5 -9
- package/dist/esm/lib/bitcore/crypto/schnorr.js +37 -41
- package/dist/esm/lib/bitcore/crypto/signature.js +31 -35
- package/dist/esm/lib/bitcore/crypto/sigtype.js +4 -10
- package/dist/esm/lib/bitcore/encoding/base58.js +8 -15
- package/dist/esm/lib/bitcore/encoding/base58check.js +10 -17
- package/dist/esm/lib/bitcore/encoding/bufferreader.js +18 -22
- package/dist/esm/lib/bitcore/encoding/bufferwriter.js +23 -27
- package/dist/esm/lib/bitcore/encoding/varint.js +13 -17
- package/dist/esm/lib/bitcore/errors.js +1 -5
- package/dist/esm/lib/bitcore/hdprivatekey.js +63 -67
- package/dist/esm/lib/bitcore/hdpublickey.js +68 -72
- package/dist/esm/lib/bitcore/index.js +42 -167
- package/dist/esm/lib/bitcore/message.js +36 -40
- package/dist/esm/lib/bitcore/mnemonic/errors.js +2 -5
- package/dist/esm/lib/bitcore/mnemonic/index.js +4 -15
- package/dist/esm/lib/bitcore/mnemonic/mnemonic.js +24 -28
- package/dist/esm/lib/bitcore/mnemonic/pbkdf2.js +8 -11
- package/dist/esm/lib/bitcore/mnemonic/words/english.js +1 -4
- package/dist/esm/lib/bitcore/mnemonic/words/french.js +1 -4
- package/dist/esm/lib/bitcore/mnemonic/words/index.js +5 -8
- package/dist/esm/lib/bitcore/musig2/index.js +2 -9
- package/dist/esm/lib/bitcore/musig2/session.js +28 -32
- package/dist/esm/lib/bitcore/musig2/signer.js +38 -43
- package/dist/esm/lib/bitcore/networks.js +44 -51
- package/dist/esm/lib/bitcore/opcode.js +8 -12
- package/dist/esm/lib/bitcore/privatekey.js +39 -43
- package/dist/esm/lib/bitcore/publickey.js +46 -50
- package/dist/esm/lib/bitcore/script/chunk.js +1 -5
- package/dist/esm/lib/bitcore/script/interpreter/condition-stack.js +1 -5
- package/dist/esm/lib/bitcore/script/interpreter/index.js +4 -25
- package/dist/esm/lib/bitcore/script/interpreter/interpreter.js +379 -385
- package/dist/esm/lib/bitcore/script/interpreter/script-num.js +10 -15
- package/dist/esm/lib/bitcore/script/interpreter/types.js +14 -17
- package/dist/esm/lib/bitcore/script/taproot.js +107 -130
- package/dist/esm/lib/bitcore/script.js +201 -205
- package/dist/esm/lib/bitcore/taproot/musig2.js +40 -48
- package/dist/esm/lib/bitcore/transaction/index.js +6 -23
- package/dist/esm/lib/bitcore/transaction/input/multisig.js +2 -6
- package/dist/esm/lib/bitcore/transaction/input/multisigscripthash.js +2 -6
- package/dist/esm/lib/bitcore/transaction/input/publickey.js +2 -6
- package/dist/esm/lib/bitcore/transaction/input/publickeyhash.js +2 -6
- package/dist/esm/lib/bitcore/transaction/input/taproot.js +2 -6
- package/dist/esm/lib/bitcore/transaction/input.js +129 -139
- package/dist/esm/lib/bitcore/transaction/outpoint.js +13 -17
- package/dist/esm/lib/bitcore/transaction/output.js +31 -35
- package/dist/esm/lib/bitcore/transaction/sighash.js +99 -104
- package/dist/esm/lib/bitcore/transaction/signature.js +38 -42
- package/dist/esm/lib/bitcore/transaction/transaction.js +111 -115
- package/dist/esm/lib/bitcore/transaction/unspentoutput.js +23 -27
- package/dist/esm/lib/bitcore/unit.js +3 -7
- package/dist/esm/lib/bitcore/uri.js +4 -8
- package/dist/esm/lib/bitcore/util/base32.js +6 -10
- package/dist/esm/lib/bitcore/util/bits.js +4 -10
- package/dist/esm/lib/bitcore/util/buffer.js +18 -22
- package/dist/esm/lib/bitcore/util/convertBits.js +4 -7
- package/dist/esm/lib/bitcore/util/js.js +1 -5
- package/dist/esm/lib/bitcore/util/merkle.js +9 -15
- package/dist/esm/lib/bitcore/util/preconditions.js +9 -13
- package/dist/esm/lib/bitcore/util.js +12 -19
- package/dist/esm/lib/bitcore/xaddress.js +46 -50
- package/dist/esm/lib/nft.js +55 -60
- package/dist/esm/lib/rank/api.js +1 -4
- package/dist/esm/lib/rank/index.js +119 -136
- package/dist/esm/lib/rank/opcode.js +1 -3
- package/dist/esm/lib/rank/script.js +5 -11
- package/dist/esm/lib/rank/transaction.js +6 -9
- package/dist/esm/lib/rpc.js +3 -7
- package/dist/esm/utils/constants.js +10 -13
- package/dist/esm/utils/env.js +2 -6
- package/dist/esm/utils/string.js +16 -28
- package/dist/esm/utils/wallet.js +8 -11
- package/dist/types/lib/bitcore/crypto/bn.d.ts +2 -1
- package/dist/types/lib/bitcore/crypto/bn.d.ts.map +1 -1
- package/dist/types/lib/bitcore/crypto/point.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -10,36 +10,14 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
10
10
|
if (k2 === undefined) k2 = k;
|
|
11
11
|
o[k2] = m[k];
|
|
12
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
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
15
|
};
|
|
21
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
-
var ownKeys = function(o) {
|
|
23
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
-
var ar = [];
|
|
25
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
-
return ar;
|
|
27
|
-
};
|
|
28
|
-
return ownKeys(o);
|
|
29
|
-
};
|
|
30
|
-
return function (mod) {
|
|
31
|
-
if (mod && mod.__esModule) return mod;
|
|
32
|
-
var result = {};
|
|
33
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
-
__setModuleDefault(result, mod);
|
|
35
|
-
return result;
|
|
36
|
-
};
|
|
37
|
-
})();
|
|
38
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
17
|
exports.RANK = exports.Bitcore = void 0;
|
|
40
18
|
__exportStar(require("./lib/rpc.js"), exports);
|
|
41
|
-
exports.Bitcore =
|
|
42
|
-
exports.RANK =
|
|
19
|
+
exports.Bitcore = require("./lib/bitcore/index.js");
|
|
20
|
+
exports.RANK = require("./lib/rank/index.js");
|
|
43
21
|
__exportStar(require("./utils/constants.js"), exports);
|
|
44
22
|
__exportStar(require("./utils/env.js"), exports);
|
|
45
23
|
__exportStar(require("./utils/string.js"), exports);
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.BN = void 0;
|
|
7
|
-
const bn_js_1 =
|
|
4
|
+
const bn_js_1 = require("bn.js");
|
|
8
5
|
const util_1 = require("../util");
|
|
9
6
|
class BNWrapper {
|
|
10
7
|
static Zero = new BNWrapper(0);
|
|
@@ -12,20 +9,20 @@ class BNWrapper {
|
|
|
12
9
|
static Minus1 = new BNWrapper(-1);
|
|
13
10
|
_bn;
|
|
14
11
|
constructor(n, base) {
|
|
15
|
-
if (n instanceof bn_js_1.
|
|
12
|
+
if (n instanceof bn_js_1.BN) {
|
|
16
13
|
this._bn = n.clone();
|
|
17
14
|
}
|
|
18
15
|
else if (util_1.BufferUtil.isBuffer(n)) {
|
|
19
16
|
if (base === 'le' || base === 'be') {
|
|
20
|
-
this._bn = new bn_js_1.
|
|
17
|
+
this._bn = new bn_js_1.BN(n, undefined, base);
|
|
21
18
|
}
|
|
22
19
|
else {
|
|
23
|
-
this._bn = new bn_js_1.
|
|
20
|
+
this._bn = new bn_js_1.BN(n, base || 'hex');
|
|
24
21
|
}
|
|
25
22
|
}
|
|
26
23
|
else {
|
|
27
24
|
const validBase = base === 'hex' || typeof base === 'number' ? base : undefined;
|
|
28
|
-
this._bn = new bn_js_1.
|
|
25
|
+
this._bn = new bn_js_1.BN(n, validBase);
|
|
29
26
|
}
|
|
30
27
|
}
|
|
31
28
|
static fromString(str, base) {
|
|
@@ -151,13 +148,13 @@ class BNWrapper {
|
|
|
151
148
|
return new BNWrapper(this._bn.div(r._bn));
|
|
152
149
|
}
|
|
153
150
|
modPow(exponent, modulus) {
|
|
154
|
-
const red = bn_js_1.
|
|
151
|
+
const red = bn_js_1.BN.red(modulus._bn);
|
|
155
152
|
const base = this._bn.toRed(red);
|
|
156
153
|
const result = base.redPow(exponent._bn);
|
|
157
154
|
return new BNWrapper(result.fromRed());
|
|
158
155
|
}
|
|
159
156
|
and(other) {
|
|
160
|
-
const otherBN = other instanceof BNWrapper ? other._bn : new bn_js_1.
|
|
157
|
+
const otherBN = other instanceof BNWrapper ? other._bn : new bn_js_1.BN(other);
|
|
161
158
|
return new BNWrapper(this._bn.and(otherBN));
|
|
162
159
|
}
|
|
163
160
|
neg() {
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.Point = exports.PREFIX_Y_EVEN = exports.PREFIX_Y_ODD = void 0;
|
|
7
|
-
const elliptic_1 =
|
|
4
|
+
const elliptic_1 = require("elliptic");
|
|
8
5
|
const bn_1 = require("./bn");
|
|
9
6
|
const util_1 = require("../util");
|
|
10
|
-
const ecInstance = new elliptic_1.
|
|
7
|
+
const ecInstance = new elliptic_1.ec('secp256k1');
|
|
11
8
|
const ecPoint = ecInstance.curve.point.bind(ecInstance.curve);
|
|
12
9
|
const ecPointFromX = ecInstance.curve.pointFromX.bind(ecInstance.curve);
|
|
13
10
|
exports.PREFIX_Y_ODD = 0x03;
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.Base58 = void 0;
|
|
7
|
-
const bs58_1 =
|
|
4
|
+
const bs58_1 = require("bs58");
|
|
8
5
|
const util_1 = require("../util");
|
|
9
6
|
const ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'.split('');
|
|
10
7
|
class Base58 {
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.Base58Check = void 0;
|
|
7
4
|
const sha2_1 = require("@noble/hashes/sha2");
|
|
8
|
-
const bs58_1 =
|
|
5
|
+
const bs58_1 = require("bs58");
|
|
9
6
|
const util_1 = require("../util");
|
|
10
7
|
class Base58Check {
|
|
11
8
|
static encode(buf) {
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.Words = exports.pbkdf2 = exports.MnemonicError = exports.default = exports.Mnemonic = void 0;
|
|
7
4
|
var mnemonic_js_1 = require("./mnemonic.js");
|
|
8
5
|
Object.defineProperty(exports, "Mnemonic", { enumerable: true, get: function () { return mnemonic_js_1.Mnemonic; } });
|
|
9
|
-
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return
|
|
6
|
+
Object.defineProperty(exports, "default", { enumerable: true, get: function () { return mnemonic_js_1.default; } });
|
|
10
7
|
var errors_js_1 = require("./errors.js");
|
|
11
8
|
Object.defineProperty(exports, "MnemonicError", { enumerable: true, get: function () { return errors_js_1.MnemonicError; } });
|
|
12
9
|
var pbkdf2_js_1 = require("./pbkdf2.js");
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.ScriptProcessor = exports.PlatformConfiguration = exports.ScriptChunksOptionalRANKMap = exports.ScriptChunksRANKMap = exports.RANK_SCRIPT_REQUIRED_LENGTH = exports.ScriptChunksRNKCMap = exports.SCRIPT_CHUNK_PLATFORM = exports.RANK_SENTIMENT_OP_CODES = exports.SCRIPT_CHUNK_SENTIMENT = exports.RANK_SENTIMENT_NEGATIVE = exports.RANK_SENTIMENT_POSITIVE = exports.RANK_SENTIMENT_NEUTRAL = exports.SCRIPT_CHUNK_LOKAD = exports.LOKAD_PREFIX_RNKC = exports.LOKAD_PREFIX_RANK = void 0;
|
|
7
4
|
exports.toProfileIdBuf = toProfileIdBuf;
|
|
@@ -17,7 +14,7 @@ exports.toScriptRNKC = toScriptRNKC;
|
|
|
17
14
|
const buffer_1 = require("buffer/");
|
|
18
15
|
const constants_js_1 = require("../../utils/constants.js");
|
|
19
16
|
const string_js_1 = require("../../utils/string.js");
|
|
20
|
-
const opcode_js_1 =
|
|
17
|
+
const opcode_js_1 = require("./opcode.js");
|
|
21
18
|
const script_js_1 = require("./script.js");
|
|
22
19
|
exports.LOKAD_PREFIX_RANK = 0x52414e4b;
|
|
23
20
|
exports.LOKAD_PREFIX_RNKC = 0x524e4b43;
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.isOpReturn = isOpReturn;
|
|
7
4
|
const buffer_1 = require("buffer/");
|
|
8
|
-
const opcode_js_1 =
|
|
5
|
+
const opcode_js_1 = require("./opcode.js");
|
|
9
6
|
function isOpReturn(script) {
|
|
10
7
|
if (typeof script === 'string') {
|
|
11
8
|
script = buffer_1.Buffer.from(script, 'hex');
|
package/dist/esm/index.js
CHANGED
|
@@ -1,46 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
19
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
20
|
-
};
|
|
21
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
-
var ownKeys = function(o) {
|
|
23
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
-
var ar = [];
|
|
25
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
-
return ar;
|
|
27
|
-
};
|
|
28
|
-
return ownKeys(o);
|
|
29
|
-
};
|
|
30
|
-
return function (mod) {
|
|
31
|
-
if (mod && mod.__esModule) return mod;
|
|
32
|
-
var result = {};
|
|
33
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
-
__setModuleDefault(result, mod);
|
|
35
|
-
return result;
|
|
36
|
-
};
|
|
37
|
-
})();
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.RANK = exports.Bitcore = void 0;
|
|
40
|
-
__exportStar(require("./lib/rpc.js"), exports);
|
|
41
|
-
exports.Bitcore = __importStar(require("./lib/bitcore/index.js"));
|
|
42
|
-
exports.RANK = __importStar(require("./lib/rank/index.js"));
|
|
43
|
-
__exportStar(require("./utils/constants.js"), exports);
|
|
44
|
-
__exportStar(require("./utils/env.js"), exports);
|
|
45
|
-
__exportStar(require("./utils/string.js"), exports);
|
|
46
|
-
__exportStar(require("./utils/wallet.js"), exports);
|
|
1
|
+
export * from './lib/rpc.js';
|
|
2
|
+
export * as Bitcore from './lib/bitcore/index.js';
|
|
3
|
+
export * as RANK from './lib/rank/index.js';
|
|
4
|
+
export * from './utils/constants.js';
|
|
5
|
+
export * from './utils/env.js';
|
|
6
|
+
export * from './utils/string.js';
|
|
7
|
+
export * from './utils/wallet.js';
|
package/dist/esm/jest.config.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const script_1 = require("./script");
|
|
13
|
-
const opcode_1 = require("./opcode");
|
|
14
|
-
class Address {
|
|
1
|
+
import { Preconditions as $ } from './util/preconditions';
|
|
2
|
+
import { BitcoreError } from './errors';
|
|
3
|
+
import { Base58Check } from './encoding/base58check';
|
|
4
|
+
import { get as getNetwork, defaultNetwork, } from './networks';
|
|
5
|
+
import { Hash } from './crypto/hash';
|
|
6
|
+
import { JSUtil, BufferUtil } from './util';
|
|
7
|
+
import { PublicKey } from './publickey';
|
|
8
|
+
import { XAddress } from './xaddress';
|
|
9
|
+
import { Script } from './script';
|
|
10
|
+
import { Opcode } from './opcode';
|
|
11
|
+
export class Address {
|
|
15
12
|
static PayToPublicKeyHash = 'pubkeyhash';
|
|
16
13
|
static PayToScriptHash = 'scripthash';
|
|
17
14
|
static PayToTaproot = 'taproot';
|
|
@@ -22,12 +19,12 @@ class Address {
|
|
|
22
19
|
if (data instanceof Address) {
|
|
23
20
|
return data;
|
|
24
21
|
}
|
|
25
|
-
|
|
26
|
-
if (network && !(
|
|
22
|
+
$.checkArgument(data !== undefined, 'data', 'First argument is required, please include address data.', 'guide/address.html');
|
|
23
|
+
if (network && !getNetwork(network)) {
|
|
27
24
|
throw new TypeError('Second argument must be "livenet", "testnet", or "regtest".');
|
|
28
25
|
}
|
|
29
26
|
const networkExplicitlyProvided = network !== undefined;
|
|
30
|
-
network ||=
|
|
27
|
+
network ||= defaultNetwork;
|
|
31
28
|
if (type &&
|
|
32
29
|
type !== Address.PayToPublicKeyHash &&
|
|
33
30
|
type !== Address.PayToScriptHash &&
|
|
@@ -35,9 +32,9 @@ class Address {
|
|
|
35
32
|
throw new TypeError('Third argument must be "pubkeyhash", "scripthash", or "taproot".');
|
|
36
33
|
}
|
|
37
34
|
const info = this._classifyArguments(data, network, type, networkExplicitlyProvided);
|
|
38
|
-
info.network = info.network || (
|
|
35
|
+
info.network = info.network || getNetwork(network) || defaultNetwork;
|
|
39
36
|
info.type = info.type || type || Address.PayToPublicKeyHash;
|
|
40
|
-
|
|
37
|
+
JSUtil.defineImmutable(this, {
|
|
41
38
|
hashBuffer: info.hashBuffer,
|
|
42
39
|
network: info.network,
|
|
43
40
|
type: info.type,
|
|
@@ -45,32 +42,32 @@ class Address {
|
|
|
45
42
|
}
|
|
46
43
|
_classifyArguments(data, network, type, networkExplicitlyProvided = true) {
|
|
47
44
|
if (typeof network === 'string') {
|
|
48
|
-
const networkObj = (
|
|
45
|
+
const networkObj = getNetwork(network);
|
|
49
46
|
if (!networkObj) {
|
|
50
47
|
throw new TypeError('Unknown network');
|
|
51
48
|
}
|
|
52
49
|
network = networkObj;
|
|
53
50
|
}
|
|
54
|
-
if ((
|
|
51
|
+
if ((BufferUtil.isBuffer(data) || data instanceof Uint8Array) &&
|
|
55
52
|
data.length === 20) {
|
|
56
53
|
return Address._transformHash(data);
|
|
57
54
|
}
|
|
58
|
-
else if ((
|
|
55
|
+
else if ((BufferUtil.isBuffer(data) || data instanceof Uint8Array) &&
|
|
59
56
|
data.length === 21) {
|
|
60
57
|
return Address._transformBuffer(data, network, type);
|
|
61
58
|
}
|
|
62
|
-
else if ((
|
|
59
|
+
else if ((BufferUtil.isBuffer(data) || data instanceof Uint8Array) &&
|
|
63
60
|
data.length === 33) {
|
|
64
61
|
return {
|
|
65
|
-
hashBuffer:
|
|
66
|
-
network: typeof network === 'string' ? (
|
|
62
|
+
hashBuffer: BufferUtil.from(data),
|
|
63
|
+
network: typeof network === 'string' ? getNetwork(network) : network,
|
|
67
64
|
type: type || Address.PayToTaproot,
|
|
68
65
|
};
|
|
69
66
|
}
|
|
70
|
-
else if (data instanceof
|
|
67
|
+
else if (data instanceof PublicKey) {
|
|
71
68
|
return Address._transformPublicKey(data, network);
|
|
72
69
|
}
|
|
73
|
-
else if (data instanceof
|
|
70
|
+
else if (data instanceof Script) {
|
|
74
71
|
return Address._transformScript(data, network);
|
|
75
72
|
}
|
|
76
73
|
else if (typeof data === 'string') {
|
|
@@ -88,8 +85,8 @@ class Address {
|
|
|
88
85
|
}
|
|
89
86
|
static _classifyFromVersion(buffer) {
|
|
90
87
|
const version = {};
|
|
91
|
-
const pubkeyhashNetwork = (
|
|
92
|
-
const scripthashNetwork = (
|
|
88
|
+
const pubkeyhashNetwork = getNetwork(buffer[0], 'pubkeyhash');
|
|
89
|
+
const scripthashNetwork = getNetwork(buffer[0], 'scripthash');
|
|
93
90
|
if (pubkeyhashNetwork) {
|
|
94
91
|
version.network = pubkeyhashNetwork;
|
|
95
92
|
version.type = Address.PayToPublicKeyHash;
|
|
@@ -105,7 +102,7 @@ class Address {
|
|
|
105
102
|
throw new TypeError('data parameter supplied is not a string.');
|
|
106
103
|
}
|
|
107
104
|
data = data.trim();
|
|
108
|
-
const networkObj = (
|
|
105
|
+
const networkObj = getNetwork(network);
|
|
109
106
|
if (network && !networkObj) {
|
|
110
107
|
throw new TypeError('Unknown network');
|
|
111
108
|
}
|
|
@@ -116,7 +113,7 @@ class Address {
|
|
|
116
113
|
throw new TypeError('Address has mismatched network type.');
|
|
117
114
|
}
|
|
118
115
|
return {
|
|
119
|
-
hashBuffer:
|
|
116
|
+
hashBuffer: BufferUtil.from(info.hashBuffer),
|
|
120
117
|
network: info.network,
|
|
121
118
|
type: info.type,
|
|
122
119
|
};
|
|
@@ -138,7 +135,7 @@ class Address {
|
|
|
138
135
|
}
|
|
139
136
|
static _transformLegacyString(data, network, type) {
|
|
140
137
|
const info = {};
|
|
141
|
-
const decoded =
|
|
138
|
+
const decoded = Base58Check.decode(data);
|
|
142
139
|
const version = Address._classifyFromVersion(decoded);
|
|
143
140
|
if (!version.network || !version.type) {
|
|
144
141
|
throw new TypeError('Address has invalid version.');
|
|
@@ -154,10 +151,10 @@ class Address {
|
|
|
154
151
|
}
|
|
155
152
|
static _transformXAddressString(data, network, type) {
|
|
156
153
|
if (typeof network === 'string') {
|
|
157
|
-
network = (
|
|
154
|
+
network = getNetwork(network);
|
|
158
155
|
}
|
|
159
|
-
network ||=
|
|
160
|
-
const decodedXAddress =
|
|
156
|
+
network ||= defaultNetwork;
|
|
157
|
+
const decodedXAddress = XAddress._decode(data);
|
|
161
158
|
if (!decodedXAddress.hashBuffer) {
|
|
162
159
|
throw new TypeError('Invalid XAddress.');
|
|
163
160
|
}
|
|
@@ -166,8 +163,8 @@ class Address {
|
|
|
166
163
|
const decodedType = decodedXAddress.type;
|
|
167
164
|
if (decodedType === 'taproot' || decodedType === Address.PayToTaproot) {
|
|
168
165
|
if (hashBuffer.length === 36 &&
|
|
169
|
-
hashBuffer[0] ===
|
|
170
|
-
hashBuffer[1] ===
|
|
166
|
+
hashBuffer[0] === Opcode.OP_SCRIPTTYPE &&
|
|
167
|
+
hashBuffer[1] === Opcode.OP_1 &&
|
|
171
168
|
hashBuffer[2] === 0x21) {
|
|
172
169
|
hashBuffer = hashBuffer.slice(3, 36);
|
|
173
170
|
}
|
|
@@ -183,15 +180,15 @@ class Address {
|
|
|
183
180
|
};
|
|
184
181
|
}
|
|
185
182
|
if (hashBuffer.length === 25 &&
|
|
186
|
-
hashBuffer[0] ===
|
|
187
|
-
hashBuffer[1] ===
|
|
183
|
+
hashBuffer[0] === Opcode.OP_DUP &&
|
|
184
|
+
hashBuffer[1] === Opcode.OP_HASH160 &&
|
|
188
185
|
hashBuffer[2] === 0x14) {
|
|
189
186
|
hashBuffer = hashBuffer.slice(3, 23);
|
|
190
187
|
}
|
|
191
188
|
else if (hashBuffer.length === 23 &&
|
|
192
|
-
hashBuffer[0] ===
|
|
189
|
+
hashBuffer[0] === Opcode.OP_HASH160 &&
|
|
193
190
|
hashBuffer[1] === 0x14 &&
|
|
194
|
-
hashBuffer[22] ===
|
|
191
|
+
hashBuffer[22] === Opcode.OP_EQUAL) {
|
|
195
192
|
hashBuffer = hashBuffer.slice(2, 22);
|
|
196
193
|
return {
|
|
197
194
|
hashBuffer: hashBuffer,
|
|
@@ -207,25 +204,25 @@ class Address {
|
|
|
207
204
|
}
|
|
208
205
|
static _transformHash(hash) {
|
|
209
206
|
const info = {};
|
|
210
|
-
if (!
|
|
207
|
+
if (!BufferUtil.isBuffer(hash)) {
|
|
211
208
|
throw new TypeError('Address supplied is not a buffer.');
|
|
212
209
|
}
|
|
213
210
|
if (hash.length !== 20) {
|
|
214
211
|
throw new TypeError('Address hashbuffers must be exactly 20 bytes.');
|
|
215
212
|
}
|
|
216
|
-
info.hashBuffer =
|
|
213
|
+
info.hashBuffer = BufferUtil.from(hash);
|
|
217
214
|
return info;
|
|
218
215
|
}
|
|
219
216
|
static _transformBuffer(buffer, network, type) {
|
|
220
217
|
const info = {};
|
|
221
|
-
if (!
|
|
218
|
+
if (!BufferUtil.isBuffer(buffer)) {
|
|
222
219
|
throw new TypeError('Address supplied is not a buffer.');
|
|
223
220
|
}
|
|
224
221
|
if (buffer.length !== 21) {
|
|
225
222
|
throw new TypeError('Address buffers must be exactly 21 bytes.');
|
|
226
223
|
}
|
|
227
|
-
const networkObj = (
|
|
228
|
-
const bufferVersion = Address._classifyFromVersion(
|
|
224
|
+
const networkObj = getNetwork(network);
|
|
225
|
+
const bufferVersion = Address._classifyFromVersion(BufferUtil.from(buffer));
|
|
229
226
|
if (network && !networkObj) {
|
|
230
227
|
throw new TypeError('Unknown network');
|
|
231
228
|
}
|
|
@@ -236,29 +233,29 @@ class Address {
|
|
|
236
233
|
if (!bufferVersion.type || (type && type !== bufferVersion.type)) {
|
|
237
234
|
throw new TypeError('Address has mismatched type.');
|
|
238
235
|
}
|
|
239
|
-
info.hashBuffer =
|
|
236
|
+
info.hashBuffer = BufferUtil.from(buffer).slice(1);
|
|
240
237
|
info.network = bufferVersion.network;
|
|
241
238
|
info.type = bufferVersion.type;
|
|
242
239
|
return info;
|
|
243
240
|
}
|
|
244
241
|
static _transformPublicKey(pubkey, network) {
|
|
245
242
|
const info = {};
|
|
246
|
-
if (!(pubkey instanceof
|
|
243
|
+
if (!(pubkey instanceof PublicKey)) {
|
|
247
244
|
throw new TypeError('Address must be an instance of PublicKey.');
|
|
248
245
|
}
|
|
249
|
-
info.hashBuffer =
|
|
246
|
+
info.hashBuffer = Hash.sha256ripemd160(pubkey.toBuffer());
|
|
250
247
|
info.type = Address.PayToPublicKeyHash;
|
|
251
|
-
info.network = network ??
|
|
248
|
+
info.network = network ?? defaultNetwork;
|
|
252
249
|
return info;
|
|
253
250
|
}
|
|
254
251
|
static _transformScript(script, network) {
|
|
255
|
-
|
|
252
|
+
$.checkArgument(script instanceof Script, 'script', 'script must be a Script instance');
|
|
256
253
|
const address = script.getAddressInfo();
|
|
257
254
|
if (!address) {
|
|
258
|
-
throw new
|
|
255
|
+
throw new BitcoreError.Script.CantDeriveAddress('Cannot derive address from script');
|
|
259
256
|
}
|
|
260
257
|
if (typeof network === 'string') {
|
|
261
|
-
network = (
|
|
258
|
+
network = getNetwork(network);
|
|
262
259
|
}
|
|
263
260
|
return {
|
|
264
261
|
hashBuffer: address.hashBuffer,
|
|
@@ -267,34 +264,34 @@ class Address {
|
|
|
267
264
|
};
|
|
268
265
|
}
|
|
269
266
|
static _transformObject(data) {
|
|
270
|
-
|
|
271
|
-
|
|
267
|
+
$.checkArgument(data.hashBuffer !== undefined, 'data', 'Must provide a `hash` or `hashBuffer` property');
|
|
268
|
+
$.checkArgument(data.type !== undefined, 'data', 'Must provide a `type` property');
|
|
272
269
|
return {
|
|
273
|
-
hashBuffer: data.hashBuffer ||
|
|
274
|
-
network: (
|
|
270
|
+
hashBuffer: data.hashBuffer || BufferUtil.from(data.hashBuffer.toString(), 'hex'),
|
|
271
|
+
network: getNetwork(data.network) || defaultNetwork,
|
|
275
272
|
type: data.type,
|
|
276
273
|
};
|
|
277
274
|
}
|
|
278
275
|
static createMultisig(publicKeys, threshold, network) {
|
|
279
|
-
const networkObj = network || publicKeys[0].network ||
|
|
280
|
-
return Address.payingTo(
|
|
276
|
+
const networkObj = network || publicKeys[0].network || defaultNetwork;
|
|
277
|
+
return Address.payingTo(Script.buildMultisigOut(publicKeys, threshold, {}), networkObj);
|
|
281
278
|
}
|
|
282
279
|
static fromPublicKey(data, network) {
|
|
283
|
-
const networkObj = (
|
|
280
|
+
const networkObj = getNetwork(network) || defaultNetwork;
|
|
284
281
|
const info = Address._transformPublicKey(data, networkObj);
|
|
285
282
|
return new Address(info.hashBuffer, info.network, info.type);
|
|
286
283
|
}
|
|
287
284
|
static fromPublicKeyHash(hash, network) {
|
|
288
|
-
const networkObj = (
|
|
285
|
+
const networkObj = getNetwork(network) || defaultNetwork;
|
|
289
286
|
return new Address(hash, networkObj, Address.PayToPublicKeyHash);
|
|
290
287
|
}
|
|
291
288
|
static fromScriptHash(hash, network) {
|
|
292
|
-
const networkObj = (
|
|
289
|
+
const networkObj = getNetwork(network) || defaultNetwork;
|
|
293
290
|
return new Address(hash, networkObj, Address.PayToScriptHash);
|
|
294
291
|
}
|
|
295
292
|
static fromTaprootCommitment(commitment, network) {
|
|
296
|
-
const networkObj = (
|
|
297
|
-
const commitmentBuf = commitment instanceof
|
|
293
|
+
const networkObj = getNetwork(network) || defaultNetwork;
|
|
294
|
+
const commitmentBuf = commitment instanceof PublicKey ? commitment.toBuffer() : commitment;
|
|
298
295
|
if (commitmentBuf.length !== 33) {
|
|
299
296
|
throw new Error('Taproot commitment must be 33-byte compressed public key');
|
|
300
297
|
}
|
|
@@ -309,19 +306,19 @@ class Address {
|
|
|
309
306
|
return new Address(info.hashBuffer, info.network, info.type);
|
|
310
307
|
}
|
|
311
308
|
static fromObject(obj) {
|
|
312
|
-
|
|
313
|
-
const hashBuffer =
|
|
309
|
+
$.checkState(JSUtil.isHexa(obj.hash), 'Unexpected hash property, "' + obj.hash + '", expected to be hex.');
|
|
310
|
+
const hashBuffer = BufferUtil.from(obj.hash, 'hex');
|
|
314
311
|
return new Address(hashBuffer, obj.network, obj.type);
|
|
315
312
|
}
|
|
316
313
|
static fromScript(script, network) {
|
|
317
|
-
|
|
314
|
+
$.checkArgument(script instanceof Script, 'script', 'script must be a Script instance');
|
|
318
315
|
const info = Address._transformScript(script, network);
|
|
319
316
|
return new Address(info.hashBuffer, network, info.type);
|
|
320
317
|
}
|
|
321
318
|
static payingTo(script, network) {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
return Address.fromScriptHash(
|
|
319
|
+
$.checkArgument(script !== null, 'script', 'script is required');
|
|
320
|
+
$.checkArgument(script instanceof Script, 'script', 'script must be instance of Script');
|
|
321
|
+
return Address.fromScriptHash(Hash.sha256ripemd160(script.toBuffer()), network);
|
|
325
322
|
}
|
|
326
323
|
static getValidationError(data, network, type) {
|
|
327
324
|
try {
|
|
@@ -348,10 +345,10 @@ class Address {
|
|
|
348
345
|
return this.hashBuffer;
|
|
349
346
|
}
|
|
350
347
|
toFullBuffer() {
|
|
351
|
-
const version =
|
|
348
|
+
const version = BufferUtil.from([
|
|
352
349
|
this.network[this.type],
|
|
353
350
|
]);
|
|
354
|
-
const buf =
|
|
351
|
+
const buf = BufferUtil.concat([version, this.hashBuffer]);
|
|
355
352
|
return buf;
|
|
356
353
|
}
|
|
357
354
|
toCashBuffer() {
|
|
@@ -378,11 +375,11 @@ class Address {
|
|
|
378
375
|
}
|
|
379
376
|
toXAddress(network) {
|
|
380
377
|
if (this.isPayToTaproot()) {
|
|
381
|
-
const xaddr = new
|
|
378
|
+
const xaddr = new XAddress(this.hashBuffer, network ?? this.network, this.type);
|
|
382
379
|
return xaddr.toString();
|
|
383
380
|
}
|
|
384
|
-
const script =
|
|
385
|
-
const xaddr = new
|
|
381
|
+
const script = Script.fromAddress(this);
|
|
382
|
+
const xaddr = new XAddress(script.toBuffer(), network ?? this.network, this.type);
|
|
386
383
|
return xaddr.toString();
|
|
387
384
|
}
|
|
388
385
|
static decodeCashAddress(address) {
|
|
@@ -403,4 +400,3 @@ class Address {
|
|
|
403
400
|
'>');
|
|
404
401
|
}
|
|
405
402
|
}
|
|
406
|
-
exports.Address = Address;
|