ecash-lib 1.0.1 → 1.2.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/README.md +2 -0
- package/dist/address/address.d.ts +131 -0
- package/dist/address/address.d.ts.map +1 -0
- package/dist/address/address.js +253 -0
- package/dist/address/address.js.map +1 -0
- package/dist/address/legacyaddr.d.ts +31 -0
- package/dist/address/legacyaddr.d.ts.map +1 -0
- package/dist/address/legacyaddr.js +101 -0
- package/dist/address/legacyaddr.js.map +1 -0
- package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/script.d.ts.map +1 -1
- package/dist/script.js +15 -51
- package/dist/script.js.map +1 -1
- package/dist/sigHashType.d.ts +4 -0
- package/dist/sigHashType.d.ts.map +1 -1
- package/dist/sigHashType.js +19 -1
- package/dist/sigHashType.js.map +1 -1
- package/dist/txBuilder.d.ts +5 -0
- package/dist/txBuilder.d.ts.map +1 -1
- package/dist/txBuilder.js +17 -5
- package/dist/txBuilder.js.map +1 -1
- package/dist/unsignedTx.d.ts.map +1 -1
- package/dist/unsignedTx.js +103 -3
- package/dist/unsignedTx.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -104,3 +104,5 @@ console.log(toHex(rawTx));
|
|
|
104
104
|
- 0.2.1 - Fix fee estimation for signatories that depend on tx outputs [D16673](https://reviews.bitcoinabc.org/D16673)
|
|
105
105
|
- 1.0.0 - **(Breaking change)** Modify `GenesisInfo` so that `auth` and `data` types match [D17194](https://reviews.bitcoinabc.org/D17194)
|
|
106
106
|
- 1.0.1 - Include `ecashaddrjs` and `chronik-client` installations from `npmjs` instead of local, to prevent need for peer dependencies [D17215](https://reviews.bitcoinabc.org/D17215)
|
|
107
|
+
- 1.1.0 - Add support for the original pre-UAHF Bitcoin signatures, so we can sign transactions for other blockchains like BTC/DOGE/... [D17255](https://reviews.bitcoinabc.org/D17255)
|
|
108
|
+
- 1.2.0 - Add `Address` class for cashaddr and legacy addresses. [D17269](https://reviews.bitcoinabc.org/D17269)
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { Script } from '../script';
|
|
2
|
+
export type AddressType = 'p2pkh' | 'p2sh';
|
|
3
|
+
export type AddressEncoding = 'cashaddr' | 'legacy';
|
|
4
|
+
export declare const ECASH_PREFIXES_TESTNET: string[];
|
|
5
|
+
/**
|
|
6
|
+
* Converts an ecash address in cashaddr format to legacy format
|
|
7
|
+
* Throws if user attempts to convert a legacy address to a legacy address
|
|
8
|
+
* Separated as its own function here for
|
|
9
|
+
*
|
|
10
|
+
* 1 - simpler unit testing
|
|
11
|
+
* 2 - exported for users looking to convert string cashaddr to string legacy addr
|
|
12
|
+
* without using the Address class
|
|
13
|
+
*/
|
|
14
|
+
export declare const toLegacyAddress: (cashaddress: string) => string;
|
|
15
|
+
interface AddressInterface {
|
|
16
|
+
/**
|
|
17
|
+
* hash
|
|
18
|
+
* The hash this address encodes as a hex string.
|
|
19
|
+
* It's part of the Script this address represents.
|
|
20
|
+
*/
|
|
21
|
+
hash: string;
|
|
22
|
+
/**
|
|
23
|
+
* p2pkh or p2sh
|
|
24
|
+
* The type of address
|
|
25
|
+
* Address supports p2pkh or p2sh address types
|
|
26
|
+
*/
|
|
27
|
+
type: AddressType;
|
|
28
|
+
/**
|
|
29
|
+
* Defined for a cashaddr address, i.e. one with encoding === 'cashaddr'
|
|
30
|
+
* This is distinct from the version byte. Common prefixes on ecash include
|
|
31
|
+
* 'ecash', 'etoken', 'ectest', and 'ecregest'. But a prefix could be anything
|
|
32
|
+
* so long as the address checksum matches.
|
|
33
|
+
*/
|
|
34
|
+
prefix?: string;
|
|
35
|
+
/**
|
|
36
|
+
* encoded address as a string
|
|
37
|
+
* cashaddr or legacy
|
|
38
|
+
* type available in 'encoding' field
|
|
39
|
+
*/
|
|
40
|
+
address: string;
|
|
41
|
+
/**
|
|
42
|
+
* How this address is encoded
|
|
43
|
+
* cashaddr or legacy
|
|
44
|
+
* If cashaddr, 'prefix' is defined and a string
|
|
45
|
+
*/
|
|
46
|
+
encoding: AddressEncoding;
|
|
47
|
+
}
|
|
48
|
+
export declare const DEFAULT_PREFIX = "ecash";
|
|
49
|
+
/**
|
|
50
|
+
* Address
|
|
51
|
+
* Stores properties of supported crypto addresses
|
|
52
|
+
* in standard typed structure. Provides methods for
|
|
53
|
+
* easy access of address data in dev-friendly formats.
|
|
54
|
+
* Provides methods for instantiating by type, encoding,
|
|
55
|
+
* script, prefix, and address string of arbitrary encoding.
|
|
56
|
+
*
|
|
57
|
+
* Simplifies conversion between cashaddr prefixes and
|
|
58
|
+
* address encoding types.
|
|
59
|
+
*
|
|
60
|
+
* Address is an ecash-first class. Legacy BTC format
|
|
61
|
+
* is supported to simplify conversion to and from
|
|
62
|
+
* ecash addresses.
|
|
63
|
+
*
|
|
64
|
+
* Address may be extended to support other crypto
|
|
65
|
+
* address formats.
|
|
66
|
+
*/
|
|
67
|
+
export declare class Address implements AddressInterface {
|
|
68
|
+
hash: string;
|
|
69
|
+
type: AddressType;
|
|
70
|
+
prefix?: string;
|
|
71
|
+
address: string;
|
|
72
|
+
encoding: AddressEncoding;
|
|
73
|
+
private constructor();
|
|
74
|
+
/**
|
|
75
|
+
* Create a new p2pkh Address from hash
|
|
76
|
+
* cashaddr encoding, ecash: prefix
|
|
77
|
+
*/
|
|
78
|
+
static p2pkh: (hash: string | Uint8Array) => Address;
|
|
79
|
+
/**
|
|
80
|
+
* Create a new p2sh Address from hash
|
|
81
|
+
* cashaddr encoding
|
|
82
|
+
* ecash: prefix
|
|
83
|
+
*/
|
|
84
|
+
static p2sh: (hash: string | Uint8Array) => Address;
|
|
85
|
+
/**
|
|
86
|
+
* Create a new Address from a given address string
|
|
87
|
+
* address must be valid legacy or cashaddr address
|
|
88
|
+
*/
|
|
89
|
+
static parse: (address: string) => Address;
|
|
90
|
+
/**
|
|
91
|
+
* Create a new Address from a cashaddr
|
|
92
|
+
* prefix, type, and hash from creating cashaddr
|
|
93
|
+
*/
|
|
94
|
+
static fromCashAddress: (address: string) => Address;
|
|
95
|
+
/**
|
|
96
|
+
* Create a new Address from legacy address
|
|
97
|
+
* No prefix for Address created from legacy address
|
|
98
|
+
* type and hash from legacy address
|
|
99
|
+
*/
|
|
100
|
+
static fromLegacyAddress: (legacy: string) => Address;
|
|
101
|
+
/**
|
|
102
|
+
* Create a new Address from an outputScript as Script
|
|
103
|
+
* type and hash from outputScript
|
|
104
|
+
* cashaddr encoding
|
|
105
|
+
* ecash: prefix
|
|
106
|
+
*/
|
|
107
|
+
static fromScript: (script: Script) => Address;
|
|
108
|
+
/**
|
|
109
|
+
* Create a new Address from an outputScript as hex string
|
|
110
|
+
* type and hash from outputScript
|
|
111
|
+
* cashaddr encoding
|
|
112
|
+
* ecash: prefix
|
|
113
|
+
*/
|
|
114
|
+
static fromScriptHex: (scriptHex: string) => Address;
|
|
115
|
+
toString: () => string;
|
|
116
|
+
legacy: () => Address;
|
|
117
|
+
/**
|
|
118
|
+
* Create an Address with cashaddr encoding
|
|
119
|
+
* from an existing Address
|
|
120
|
+
*/
|
|
121
|
+
cash: () => Address;
|
|
122
|
+
/**
|
|
123
|
+
* Create address with specified prefix
|
|
124
|
+
* from an existing cashaddr-encoding Address
|
|
125
|
+
*/
|
|
126
|
+
withPrefix: (prefix: string) => Address;
|
|
127
|
+
toScript: () => Script;
|
|
128
|
+
toScriptHex: () => string;
|
|
129
|
+
}
|
|
130
|
+
export {};
|
|
131
|
+
//# sourceMappingURL=address.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../../src/address/address.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;AAC3C,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEpD,eAAO,MAAM,sBAAsB,UAA0B,CAAC;AAE9D;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,gBAAiB,MAAM,KAAG,MA4CrD,CAAC;AAEF,UAAU,gBAAgB;IACtB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,QAAQ,EAAE,eAAe,CAAC;CAC7B;AAaD,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,OAAQ,YAAW,gBAAgB;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,eAAe,CAAC;IAE1B,OAAO;IAWP;;;OAGG;IACH,MAAM,CAAC,KAAK,SAAU,MAAM,GAAG,UAAU,aAOlC;IAEP;;;;OAIG;IACH,MAAM,CAAC,IAAI,SAAU,MAAM,GAAG,UAAU,aAOjC;IAEP;;;OAGG;IACH,MAAM,CAAC,KAAK,YAAa,MAAM,aAsB7B;IAEF;;;OAGG;IACH,MAAM,CAAC,eAAe,YAAa,MAAM,aASvC;IAEF;;;;OAIG;IACH,MAAM,CAAC,iBAAiB,WAAY,MAAM,aASxC;IAEF;;;;;OAKG;IACH,MAAM,CAAC,UAAU,WAAY,MAAM,aAGjC;IAEF;;;;;OAKG;IACH,MAAM,CAAC,aAAa,cAAe,MAAM,aAcvC;IAEF,QAAQ,eAEN;IAEF,MAAM,gBAMC;IAEP;;;OAGG;IACH,IAAI,gBAgBG;IAEP;;;OAGG;IACH,UAAU,WAAY,MAAM,aAgB1B;IAEF,QAAQ,QAAO,MAAM,CAInB;IAEF,WAAW,QAAO,MAAM,CAEtB;CACL"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Address = exports.DEFAULT_PREFIX = exports.toLegacyAddress = exports.ECASH_PREFIXES_TESTNET = void 0;
|
|
4
|
+
// Copyright (c) 2024 The Bitcoin developers
|
|
5
|
+
// Distributed under the MIT software license, see the accompanying
|
|
6
|
+
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
7
|
+
const hex_1 = require("../io/hex");
|
|
8
|
+
const ecashaddrjs_1 = require("ecashaddrjs");
|
|
9
|
+
const legacyaddr_1 = require("./legacyaddr");
|
|
10
|
+
const script_1 = require("../script");
|
|
11
|
+
exports.ECASH_PREFIXES_TESTNET = ['ectest', 'ecregtest'];
|
|
12
|
+
/**
|
|
13
|
+
* Converts an ecash address in cashaddr format to legacy format
|
|
14
|
+
* Throws if user attempts to convert a legacy address to a legacy address
|
|
15
|
+
* Separated as its own function here for
|
|
16
|
+
*
|
|
17
|
+
* 1 - simpler unit testing
|
|
18
|
+
* 2 - exported for users looking to convert string cashaddr to string legacy addr
|
|
19
|
+
* without using the Address class
|
|
20
|
+
*/
|
|
21
|
+
const toLegacyAddress = (cashaddress) => {
|
|
22
|
+
try {
|
|
23
|
+
// No-op if user is trying to convert legacy to legacy
|
|
24
|
+
(0, legacyaddr_1.decodeLegacyAddress)(cashaddress);
|
|
25
|
+
return cashaddress;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
// Do nothing with this error since we expect it every time for the function's intended use case
|
|
29
|
+
// Proceed to convert to legacy
|
|
30
|
+
}
|
|
31
|
+
const { prefix, type, hash } = (0, ecashaddrjs_1.decodeCashAddress)(cashaddress);
|
|
32
|
+
const isTestnet = exports.ECASH_PREFIXES_TESTNET.includes(prefix);
|
|
33
|
+
// Get correct version byte for legacy format
|
|
34
|
+
let versionByte;
|
|
35
|
+
switch (type) {
|
|
36
|
+
case 'p2pkh':
|
|
37
|
+
versionByte = isTestnet
|
|
38
|
+
? legacyaddr_1.LEGACY_VERSION_BYTES.legacy.testnet.p2pkh
|
|
39
|
+
: legacyaddr_1.LEGACY_VERSION_BYTES.legacy.mainnet.p2pkh;
|
|
40
|
+
break;
|
|
41
|
+
case 'p2sh':
|
|
42
|
+
versionByte = isTestnet
|
|
43
|
+
? legacyaddr_1.LEGACY_VERSION_BYTES.legacy.testnet.p2sh
|
|
44
|
+
: legacyaddr_1.LEGACY_VERSION_BYTES.legacy.mainnet.p2sh;
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
throw new Error('Unsupported address type: ' + type);
|
|
48
|
+
}
|
|
49
|
+
// Convert hash to Uint8Array
|
|
50
|
+
const hashArray = (0, hex_1.fromHex)(hash);
|
|
51
|
+
// Create a new Uint8Array to hold the data
|
|
52
|
+
const uint8Array = new Uint8Array(1 + hashArray.length);
|
|
53
|
+
// Set the version byte
|
|
54
|
+
uint8Array[0] = versionByte;
|
|
55
|
+
// Set the hash
|
|
56
|
+
uint8Array.set(hashArray, 1);
|
|
57
|
+
// Encode to base58check
|
|
58
|
+
return (0, legacyaddr_1.encodeBase58Check)(uint8Array);
|
|
59
|
+
};
|
|
60
|
+
exports.toLegacyAddress = toLegacyAddress;
|
|
61
|
+
exports.DEFAULT_PREFIX = 'ecash';
|
|
62
|
+
/**
|
|
63
|
+
* Address
|
|
64
|
+
* Stores properties of supported crypto addresses
|
|
65
|
+
* in standard typed structure. Provides methods for
|
|
66
|
+
* easy access of address data in dev-friendly formats.
|
|
67
|
+
* Provides methods for instantiating by type, encoding,
|
|
68
|
+
* script, prefix, and address string of arbitrary encoding.
|
|
69
|
+
*
|
|
70
|
+
* Simplifies conversion between cashaddr prefixes and
|
|
71
|
+
* address encoding types.
|
|
72
|
+
*
|
|
73
|
+
* Address is an ecash-first class. Legacy BTC format
|
|
74
|
+
* is supported to simplify conversion to and from
|
|
75
|
+
* ecash addresses.
|
|
76
|
+
*
|
|
77
|
+
* Address may be extended to support other crypto
|
|
78
|
+
* address formats.
|
|
79
|
+
*/
|
|
80
|
+
class Address {
|
|
81
|
+
constructor(params) {
|
|
82
|
+
this.toString = () => {
|
|
83
|
+
return this.address;
|
|
84
|
+
};
|
|
85
|
+
this.legacy = () => new Address({
|
|
86
|
+
type: this.type,
|
|
87
|
+
hash: this.hash,
|
|
88
|
+
address: (0, exports.toLegacyAddress)(this.address),
|
|
89
|
+
encoding: 'legacy',
|
|
90
|
+
});
|
|
91
|
+
/**
|
|
92
|
+
* Create an Address with cashaddr encoding
|
|
93
|
+
* from an existing Address
|
|
94
|
+
*/
|
|
95
|
+
this.cash = () => new Address({
|
|
96
|
+
type: this.type,
|
|
97
|
+
hash: this.hash,
|
|
98
|
+
address: (0, ecashaddrjs_1.encodeCashAddress)(typeof this.prefix !== 'undefined'
|
|
99
|
+
? this.prefix
|
|
100
|
+
: exports.DEFAULT_PREFIX, this.type, this.hash),
|
|
101
|
+
encoding: 'cashaddr',
|
|
102
|
+
prefix: typeof this.prefix !== 'undefined'
|
|
103
|
+
? this.prefix
|
|
104
|
+
: exports.DEFAULT_PREFIX,
|
|
105
|
+
});
|
|
106
|
+
/**
|
|
107
|
+
* Create address with specified prefix
|
|
108
|
+
* from an existing cashaddr-encoding Address
|
|
109
|
+
*/
|
|
110
|
+
this.withPrefix = (prefix) => {
|
|
111
|
+
if (this.encoding === 'legacy') {
|
|
112
|
+
// Take no action for legacy address types
|
|
113
|
+
throw new Error('withPrefix does not support legacy address types');
|
|
114
|
+
}
|
|
115
|
+
if (this.prefix === prefix) {
|
|
116
|
+
// Take no action if prefix is not changing
|
|
117
|
+
throw new Error(`prefix is already "${this.prefix}"`);
|
|
118
|
+
}
|
|
119
|
+
return new Address({
|
|
120
|
+
type: this.type,
|
|
121
|
+
hash: this.hash,
|
|
122
|
+
prefix,
|
|
123
|
+
address: (0, ecashaddrjs_1.encodeCashAddress)(prefix, this.type, this.hash),
|
|
124
|
+
encoding: 'cashaddr',
|
|
125
|
+
});
|
|
126
|
+
};
|
|
127
|
+
this.toScript = () => {
|
|
128
|
+
return new script_1.Script((0, hex_1.fromHex)((0, ecashaddrjs_1.getOutputScriptFromTypeAndHash)(this.type, this.hash)));
|
|
129
|
+
};
|
|
130
|
+
this.toScriptHex = () => {
|
|
131
|
+
return (0, ecashaddrjs_1.getOutputScriptFromTypeAndHash)(this.type, this.hash);
|
|
132
|
+
};
|
|
133
|
+
const { hash, type, address, encoding } = params;
|
|
134
|
+
this.hash = hash;
|
|
135
|
+
this.type = type;
|
|
136
|
+
this.address = address;
|
|
137
|
+
this.encoding = encoding;
|
|
138
|
+
if (typeof params.prefix !== 'undefined') {
|
|
139
|
+
this.prefix = params.prefix;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
exports.Address = Address;
|
|
144
|
+
/**
|
|
145
|
+
* Create a new p2pkh Address from hash
|
|
146
|
+
* cashaddr encoding, ecash: prefix
|
|
147
|
+
*/
|
|
148
|
+
Address.p2pkh = (hash) => new Address({
|
|
149
|
+
type: 'p2pkh',
|
|
150
|
+
hash: hash instanceof Uint8Array ? (0, hex_1.toHex)(hash) : hash,
|
|
151
|
+
prefix: exports.DEFAULT_PREFIX,
|
|
152
|
+
address: (0, ecashaddrjs_1.encodeCashAddress)(exports.DEFAULT_PREFIX, 'p2pkh', hash),
|
|
153
|
+
encoding: 'cashaddr',
|
|
154
|
+
});
|
|
155
|
+
/**
|
|
156
|
+
* Create a new p2sh Address from hash
|
|
157
|
+
* cashaddr encoding
|
|
158
|
+
* ecash: prefix
|
|
159
|
+
*/
|
|
160
|
+
Address.p2sh = (hash) => new Address({
|
|
161
|
+
type: 'p2sh',
|
|
162
|
+
hash: hash instanceof Uint8Array ? (0, hex_1.toHex)(hash) : hash,
|
|
163
|
+
prefix: exports.DEFAULT_PREFIX,
|
|
164
|
+
address: (0, ecashaddrjs_1.encodeCashAddress)(exports.DEFAULT_PREFIX, 'p2sh', hash),
|
|
165
|
+
encoding: 'cashaddr',
|
|
166
|
+
});
|
|
167
|
+
/**
|
|
168
|
+
* Create a new Address from a given address string
|
|
169
|
+
* address must be valid legacy or cashaddr address
|
|
170
|
+
*/
|
|
171
|
+
Address.parse = (address) => {
|
|
172
|
+
if ((0, ecashaddrjs_1.isValidCashAddress)(address)) {
|
|
173
|
+
const { type, hash, prefix } = (0, ecashaddrjs_1.decodeCashAddress)(address);
|
|
174
|
+
return new Address({
|
|
175
|
+
type,
|
|
176
|
+
hash,
|
|
177
|
+
prefix,
|
|
178
|
+
encoding: 'cashaddr',
|
|
179
|
+
address,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
try {
|
|
183
|
+
const { type, hash } = (0, legacyaddr_1.decodeLegacyAddress)(address);
|
|
184
|
+
return new Address({
|
|
185
|
+
type,
|
|
186
|
+
hash,
|
|
187
|
+
encoding: 'legacy',
|
|
188
|
+
address,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
throw new Error('Invalid cashaddr or legacy address');
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Create a new Address from a cashaddr
|
|
197
|
+
* prefix, type, and hash from creating cashaddr
|
|
198
|
+
*/
|
|
199
|
+
Address.fromCashAddress = (address) => {
|
|
200
|
+
const { type, hash, prefix } = (0, ecashaddrjs_1.decodeCashAddress)(address);
|
|
201
|
+
return new Address({
|
|
202
|
+
type,
|
|
203
|
+
hash,
|
|
204
|
+
address,
|
|
205
|
+
encoding: 'cashaddr',
|
|
206
|
+
prefix,
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
/**
|
|
210
|
+
* Create a new Address from legacy address
|
|
211
|
+
* No prefix for Address created from legacy address
|
|
212
|
+
* type and hash from legacy address
|
|
213
|
+
*/
|
|
214
|
+
Address.fromLegacyAddress = (legacy) => {
|
|
215
|
+
// Determine addr params from legacy address
|
|
216
|
+
const { type, hash } = (0, legacyaddr_1.decodeLegacyAddress)(legacy);
|
|
217
|
+
return new Address({
|
|
218
|
+
type,
|
|
219
|
+
hash,
|
|
220
|
+
address: legacy,
|
|
221
|
+
encoding: 'legacy',
|
|
222
|
+
});
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* Create a new Address from an outputScript as Script
|
|
226
|
+
* type and hash from outputScript
|
|
227
|
+
* cashaddr encoding
|
|
228
|
+
* ecash: prefix
|
|
229
|
+
*/
|
|
230
|
+
Address.fromScript = (script) => {
|
|
231
|
+
const scriptHex = (0, hex_1.toHex)(script.bytecode);
|
|
232
|
+
return Address.fromScriptHex(scriptHex);
|
|
233
|
+
};
|
|
234
|
+
/**
|
|
235
|
+
* Create a new Address from an outputScript as hex string
|
|
236
|
+
* type and hash from outputScript
|
|
237
|
+
* cashaddr encoding
|
|
238
|
+
* ecash: prefix
|
|
239
|
+
*/
|
|
240
|
+
Address.fromScriptHex = (scriptHex) => {
|
|
241
|
+
const { type, hash } = (0, ecashaddrjs_1.getTypeAndHashFromOutputScript)(scriptHex);
|
|
242
|
+
// Default cashaddr encoding with default prefix
|
|
243
|
+
const address = (0, ecashaddrjs_1.encodeCashAddress)(exports.DEFAULT_PREFIX, type, hash);
|
|
244
|
+
const prefix = exports.DEFAULT_PREFIX;
|
|
245
|
+
return new Address({
|
|
246
|
+
type,
|
|
247
|
+
hash,
|
|
248
|
+
prefix,
|
|
249
|
+
address,
|
|
250
|
+
encoding: 'cashaddr',
|
|
251
|
+
});
|
|
252
|
+
};
|
|
253
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../src/address/address.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { AddressType } from './address';
|
|
2
|
+
/**
|
|
3
|
+
* Base 58 Check
|
|
4
|
+
*/
|
|
5
|
+
export declare const encodeBase58Check: (data: Uint8Array) => string;
|
|
6
|
+
export declare const decodeBase58Check: (str: string) => Uint8Array;
|
|
7
|
+
type NetworkType = 'mainnet' | 'testnet';
|
|
8
|
+
export interface DecodedLegacyAddress {
|
|
9
|
+
type: AddressType;
|
|
10
|
+
hash: string;
|
|
11
|
+
network: NetworkType;
|
|
12
|
+
}
|
|
13
|
+
interface NetworkVersionBytes {
|
|
14
|
+
p2pkh: number;
|
|
15
|
+
p2sh: number;
|
|
16
|
+
}
|
|
17
|
+
interface VersionByteReference {
|
|
18
|
+
legacy: {
|
|
19
|
+
mainnet: NetworkVersionBytes;
|
|
20
|
+
testnet: NetworkVersionBytes;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export declare const LEGACY_VERSION_BYTES: VersionByteReference;
|
|
24
|
+
export declare const decodeLegacyAddress: (address: string) => DecodedLegacyAddress;
|
|
25
|
+
/**
|
|
26
|
+
* Encode a legacy address given type and hash
|
|
27
|
+
* For now, this is a stub method that supports only BTC p2pkh and p2sh
|
|
28
|
+
*/
|
|
29
|
+
export declare const encodeLegacyAddress: (hash: Uint8Array, type: 'p2pkh' | 'p2sh', network?: NetworkType) => string;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=legacyaddr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacyaddr.d.ts","sourceRoot":"","sources":["../../src/address/legacyaddr.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGxC;;GAEG;AAEH,eAAO,MAAM,iBAAiB,SAAU,UAAU,KAAG,MAMpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAS,MAAM,KAAG,UAiB/C,CAAC;AAEF,KAAK,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;AACzC,MAAM,WAAW,oBAAoB;IACjC,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,WAAW,CAAC;CACxB;AAKD,UAAU,mBAAmB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AACD,UAAU,oBAAoB;IAC1B,MAAM,EAAE;QACJ,OAAO,EAAE,mBAAmB,CAAC;QAC7B,OAAO,EAAE,mBAAmB,CAAC;KAChC,CAAC;CACL;AACD,eAAO,MAAM,oBAAoB,EAAE,oBAKlC,CAAC;AAGF,eAAO,MAAM,mBAAmB,YAAa,MAAM,KAAG,oBA4CrD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,SACtB,UAAU,QACV,OAAO,GAAG,MAAM,YACb,WAAW,WAOvB,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) 2024 The Bitcoin developers
|
|
3
|
+
// Distributed under the MIT software license, see the accompanying
|
|
4
|
+
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.encodeLegacyAddress = exports.decodeLegacyAddress = exports.LEGACY_VERSION_BYTES = exports.decodeBase58Check = exports.encodeBase58Check = void 0;
|
|
7
|
+
const hash_1 = require("../hash");
|
|
8
|
+
const b58_ts_1 = require("b58-ts");
|
|
9
|
+
const hex_1 = require("../io/hex");
|
|
10
|
+
/**
|
|
11
|
+
* Base 58 Check
|
|
12
|
+
*/
|
|
13
|
+
const encodeBase58Check = (data) => {
|
|
14
|
+
const checksum = (0, hash_1.sha256d)(data);
|
|
15
|
+
const dataWithChecksum = new Uint8Array(data.length + 4);
|
|
16
|
+
dataWithChecksum.set(data, 0);
|
|
17
|
+
dataWithChecksum.set(checksum.subarray(0, 4), data.length);
|
|
18
|
+
return (0, b58_ts_1.encodeBase58)(dataWithChecksum);
|
|
19
|
+
};
|
|
20
|
+
exports.encodeBase58Check = encodeBase58Check;
|
|
21
|
+
const decodeBase58Check = (str) => {
|
|
22
|
+
const dataWithChecksum = (0, b58_ts_1.decodeBase58)(str);
|
|
23
|
+
const payload = dataWithChecksum.slice(0, -4);
|
|
24
|
+
const checksum = dataWithChecksum.slice(-4);
|
|
25
|
+
const expectedChecksum = (0, hash_1.sha256d)(payload);
|
|
26
|
+
// Ensure the two checksums are equal
|
|
27
|
+
if ((checksum[0] ^ expectedChecksum[0]) |
|
|
28
|
+
(checksum[1] ^ expectedChecksum[1]) |
|
|
29
|
+
(checksum[2] ^ expectedChecksum[2]) |
|
|
30
|
+
(checksum[3] ^ expectedChecksum[3])) {
|
|
31
|
+
throw new Error('Invalid checksum');
|
|
32
|
+
}
|
|
33
|
+
return payload;
|
|
34
|
+
};
|
|
35
|
+
exports.decodeBase58Check = decodeBase58Check;
|
|
36
|
+
// Length of a valid base58check encoding payload: 1 byte for
|
|
37
|
+
// the version byte plus 20 bytes for a RIPEMD - 160 hash.
|
|
38
|
+
const BASE_58_CHECK_PAYLOAD_LENGTH = 21;
|
|
39
|
+
exports.LEGACY_VERSION_BYTES = {
|
|
40
|
+
legacy: {
|
|
41
|
+
mainnet: { p2pkh: 0, p2sh: 5 },
|
|
42
|
+
testnet: { p2pkh: 111, p2sh: 196 },
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
// Modeled from https://github.com/ealmansi/bchaddrjs/blob/master/src/bchaddr.js#L193
|
|
46
|
+
const decodeLegacyAddress = (address) => {
|
|
47
|
+
try {
|
|
48
|
+
const payload = (0, exports.decodeBase58Check)(address);
|
|
49
|
+
if (payload.length !== BASE_58_CHECK_PAYLOAD_LENGTH) {
|
|
50
|
+
throw new Error(`Invalid legacy address: payload length must be ${BASE_58_CHECK_PAYLOAD_LENGTH}`);
|
|
51
|
+
}
|
|
52
|
+
const versionByte = payload[0];
|
|
53
|
+
const hash = (0, hex_1.toHex)(new Uint8Array(payload.slice(1)));
|
|
54
|
+
switch (versionByte) {
|
|
55
|
+
case exports.LEGACY_VERSION_BYTES.legacy.mainnet.p2pkh:
|
|
56
|
+
return {
|
|
57
|
+
hash,
|
|
58
|
+
type: 'p2pkh',
|
|
59
|
+
network: 'mainnet',
|
|
60
|
+
};
|
|
61
|
+
case exports.LEGACY_VERSION_BYTES.legacy.mainnet.p2sh:
|
|
62
|
+
return {
|
|
63
|
+
hash,
|
|
64
|
+
type: 'p2sh',
|
|
65
|
+
network: 'mainnet',
|
|
66
|
+
};
|
|
67
|
+
case exports.LEGACY_VERSION_BYTES.legacy.testnet.p2pkh:
|
|
68
|
+
return {
|
|
69
|
+
hash,
|
|
70
|
+
type: 'p2pkh',
|
|
71
|
+
network: 'testnet',
|
|
72
|
+
};
|
|
73
|
+
case exports.LEGACY_VERSION_BYTES.legacy.testnet.p2sh:
|
|
74
|
+
return {
|
|
75
|
+
hash,
|
|
76
|
+
type: 'p2sh',
|
|
77
|
+
network: 'testnet',
|
|
78
|
+
};
|
|
79
|
+
default: {
|
|
80
|
+
throw new Error(`Invalid legacy address: unrecognized version byte "${versionByte}"`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
throw new Error(`Invalid legacy address`);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
exports.decodeLegacyAddress = decodeLegacyAddress;
|
|
89
|
+
/**
|
|
90
|
+
* Encode a legacy address given type and hash
|
|
91
|
+
* For now, this is a stub method that supports only BTC p2pkh and p2sh
|
|
92
|
+
*/
|
|
93
|
+
const encodeLegacyAddress = (hash, type, network = 'mainnet') => {
|
|
94
|
+
const versionByte = exports.LEGACY_VERSION_BYTES.legacy[network][type];
|
|
95
|
+
const combined = new Uint8Array(1 + hash.length);
|
|
96
|
+
combined[0] = versionByte;
|
|
97
|
+
combined.set(hash, 1);
|
|
98
|
+
return (0, exports.encodeBase58Check)(combined);
|
|
99
|
+
};
|
|
100
|
+
exports.encodeLegacyAddress = encodeLegacyAddress;
|
|
101
|
+
//# sourceMappingURL=legacyaddr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legacyaddr.js","sourceRoot":"","sources":["../../src/address/legacyaddr.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -23,6 +23,7 @@ __exportStar(require("./hash.js"), exports);
|
|
|
23
23
|
__exportStar(require("./op.js"), exports);
|
|
24
24
|
__exportStar(require("./opcode.js"), exports);
|
|
25
25
|
__exportStar(require("./script.js"), exports);
|
|
26
|
+
__exportStar(require("./address/address"), exports);
|
|
26
27
|
__exportStar(require("./sigHashType.js"), exports);
|
|
27
28
|
__exportStar(require("./tx.js"), exports);
|
|
28
29
|
__exportStar(require("./txBuilder.js"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;AAEtE,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B;AAC5B,mDAAiC;AACjC,0CAAwB;AACxB,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,iDAA+B;AAC/B,sDAAoC;AACpC,uDAAqC;AACrC,iDAA+B;AAC/B,oDAAkC;AAClC,kDAAgC;AAChC,iDAA+B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;;;;;;;;;;;;;;AAEtE,8CAA4B;AAC5B,2CAAyB;AACzB,4CAA0B;AAC1B,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B;AAC5B,oDAAkC;AAClC,mDAAiC;AACjC,0CAAwB;AACxB,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,8CAA4B;AAC5B,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,iDAA+B;AAC/B,sDAAoC;AACpC,uDAAqC;AACrC,iDAA+B;AAC/B,oDAAkC;AAClC,kDAAgC;AAChC,iDAA+B"}
|
package/dist/script.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,OAAO,EAAE,EAAE,EAAgC,MAAM,SAAS,CAAC;AAS3D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,gDAAgD;AAChD,qBAAa,MAAM;IACR,QAAQ,EAAE,UAAU,CAAC;IAE5B,2DAA2D;gBACxC,QAAQ,CAAC,EAAE,UAAU;IAIxC;;;QAGI;IACG,aAAa,CAAC,MAAM,EAAE,MAAM;WAKrB,YAAY,CAAC,KAAK,EAAE,KAAK;IAKvC,+CAA+C;WACjC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,MAAM;WAc1B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;
|
|
1
|
+
{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,OAAO,EAAE,EAAE,EAAgC,MAAM,SAAS,CAAC;AAS3D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,gDAAgD;AAChD,qBAAa,MAAM;IACR,QAAQ,EAAE,UAAU,CAAC;IAE5B,2DAA2D;gBACxC,QAAQ,CAAC,EAAE,UAAU;IAIxC;;;QAGI;IACG,aAAa,CAAC,MAAM,EAAE,MAAM;WAKrB,YAAY,CAAC,KAAK,EAAE,KAAK;IAKvC,+CAA+C;WACjC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,MAAM;WAc1B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAqBlD,0CAA0C;IACnC,GAAG,IAAI,YAAY;IAI1B,wCAAwC;IACjC,IAAI,IAAI,MAAM;IAIrB;;;;;;;;;;;;;;;;;;OAkBG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAe9C;;;QAGI;IACG,MAAM,IAAI,OAAO;IAWxB,oDAAoD;WACtC,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;IASlD,yDAAyD;WAC3C,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAa5C,oDAAoD;WACtC,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;CAGpE;AAED,yCAAyC;AACzC,qBAAa,YAAY;IACrB,KAAK,EAAE,KAAK,CAAC;gBAEM,KAAK,EAAE,KAAK;IAI/B;;;OAGG;IACI,IAAI,IAAI,EAAE,GAAG,SAAS;CAMhC"}
|
package/dist/script.js
CHANGED
|
@@ -2,38 +2,16 @@
|
|
|
2
2
|
// Copyright (c) 2024 The Bitcoin developers
|
|
3
3
|
// Distributed under the MIT software license, see the accompanying
|
|
4
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
-
}
|
|
11
|
-
Object.defineProperty(o, k2, desc);
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
-
}) : function(o, v) {
|
|
19
|
-
o["default"] = v;
|
|
20
|
-
});
|
|
21
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
-
if (mod && mod.__esModule) return mod;
|
|
23
|
-
var result = {};
|
|
24
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
-
__setModuleDefault(result, mod);
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
6
|
exports.ScriptOpIter = exports.Script = void 0;
|
|
30
7
|
const varsize_js_1 = require("./io/varsize.js");
|
|
31
8
|
const writerlength_js_1 = require("./io/writerlength.js");
|
|
32
9
|
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
10
|
+
const hex_js_1 = require("./io/hex.js");
|
|
33
11
|
const op_js_1 = require("./op.js");
|
|
34
12
|
const opcode_js_1 = require("./opcode.js");
|
|
35
13
|
const bytes_js_1 = require("./io/bytes.js");
|
|
36
|
-
const
|
|
14
|
+
const address_1 = require("./address/address");
|
|
37
15
|
/** A Bitcoin Script locking/unlocking a UTXO */
|
|
38
16
|
class Script {
|
|
39
17
|
/** Create a new Script with the given bytecode or empty */
|
|
@@ -67,35 +45,21 @@ class Script {
|
|
|
67
45
|
return new Script(bytecodeWriter.data);
|
|
68
46
|
}
|
|
69
47
|
static fromAddress(address) {
|
|
70
|
-
//
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
case 'P2PKH': {
|
|
84
|
-
return Script.p2pkh(decodedAddress.hash);
|
|
85
|
-
}
|
|
86
|
-
case 'P2SH': {
|
|
87
|
-
return Script.p2sh(decodedAddress.hash);
|
|
88
|
-
}
|
|
89
|
-
default: {
|
|
90
|
-
// Note we should never get here, as ecashaddrjs decode method
|
|
91
|
-
// only supports p2pkh and p2sh
|
|
92
|
-
throw new Error(`Unsupported address type: ${decodedAddress.type}`);
|
|
93
|
-
}
|
|
48
|
+
// make Address from address
|
|
49
|
+
const thisAddress = address_1.Address.fromCashAddress(address);
|
|
50
|
+
switch (thisAddress.type) {
|
|
51
|
+
case 'p2pkh': {
|
|
52
|
+
return Script.p2pkh((0, hex_js_1.fromHex)(thisAddress.hash));
|
|
53
|
+
}
|
|
54
|
+
case 'p2sh': {
|
|
55
|
+
return Script.p2sh((0, hex_js_1.fromHex)(thisAddress.hash));
|
|
56
|
+
}
|
|
57
|
+
default: {
|
|
58
|
+
// Note we should never get here, as Address constructor
|
|
59
|
+
// only supports p2pkh and p2sh
|
|
60
|
+
throw new Error(`Unsupported address type: ${thisAddress.type}`);
|
|
94
61
|
}
|
|
95
62
|
}
|
|
96
|
-
// Note we should never get here, as ecashaddrjs decode method
|
|
97
|
-
// always returns hash as a Uint8Array when called with (<addr>, false)
|
|
98
|
-
throw new Error(`Error decoding address "${address}"`);
|
|
99
63
|
}
|
|
100
64
|
/** Iterate over the Ops of this Script */
|
|
101
65
|
ops() {
|
package/dist/script.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE
|
|
1
|
+
{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"}
|
package/dist/sigHashType.d.ts
CHANGED
|
@@ -63,4 +63,8 @@ export declare const NONE_ANYONECANPAY_LEGACY: SigHashType;
|
|
|
63
63
|
export declare const SINGLE_LEGACY: SigHashType;
|
|
64
64
|
/** SINGLE|ANYONECANPAY|LEGACY */
|
|
65
65
|
export declare const SINGLE_ANYONECANPAY_LEGACY: SigHashType;
|
|
66
|
+
/** List of BIP143 sighashes (FORKID) */
|
|
67
|
+
export declare const SIG_HASH_TYPES_BIP143: SigHashType[];
|
|
68
|
+
/** List of legacy sighashes (OG Bitcoin signature) */
|
|
69
|
+
export declare const SIG_HASH_TYPES_LEGACY: SigHashType[];
|
|
66
70
|
//# sourceMappingURL=sigHashType.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sigHashType.d.ts","sourceRoot":"","sources":["../src/sigHashType.ts"],"names":[],"mappings":"AAIA,6EAA6E;AAC7E,qBAAa,WAAW;IACpB,oDAAoD;IAC7C,OAAO,EAAE,kBAAkB,CAAC;IACnC,wDAAwD;IACjD,SAAS,EAAE,iBAAiB,CAAC;IACpC,uDAAuD;IAChD,UAAU,EAAE,kBAAkB,CAAC;gBAEnB,MAAM,EAAE;QACvB,OAAO,EAAE,kBAAkB,CAAC;QAC5B,SAAS,EAAE,iBAAiB,CAAC;QAC7B,UAAU,EAAE,kBAAkB,CAAC;KAClC;IAMD,+CAA+C;WACjC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IA+B7D,4CAA4C;IACrC,KAAK,IAAI,MAAM;CAGzB;AAED,6BAA6B;AAC7B,oBAAY,kBAAkB;IAC1B,2CAA2C;IAC3C,MAAM,IAAI;IACV,4CAA4C;IAC5C,MAAM,KAAO;CAChB;AAED,+BAA+B;AAC/B,oBAAY,iBAAiB;IACzB,2DAA2D;IAC3D,KAAK,IAAI;IACT,8DAA8D;IAC9D,YAAY,MAAO;CACtB;AAED,gCAAgC;AAChC,oBAAY,kBAAkB;IAC1B,8DAA8D;IAC9D,GAAG,IAAI;IACP,kDAAkD;IAClD,IAAI,IAAI;IACR,kEAAkE;IAClE,MAAM,IAAI;CACb;AAED,iBAAiB;AACjB,eAAO,MAAM,UAAU,EAAE,WAIvB,CAAC;AAEH,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,EAAE,WAIpC,CAAC;AAEH,kBAAkB;AAClB,eAAO,MAAM,WAAW,EAAE,WAIxB,CAAC;AAEH,+BAA+B;AAC/B,eAAO,MAAM,wBAAwB,EAAE,WAIrC,CAAC;AAEH,oBAAoB;AACpB,eAAO,MAAM,aAAa,EAAE,WAI1B,CAAC;AAEH,iCAAiC;AACjC,eAAO,MAAM,0BAA0B,EAAE,WAIvC,CAAC;AAEH,iBAAiB;AACjB,eAAO,MAAM,UAAU,EAAE,WAIvB,CAAC;AAEH,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,EAAE,WAIpC,CAAC;AAEH,kBAAkB;AAClB,eAAO,MAAM,WAAW,EAAE,WAIxB,CAAC;AAEH,+BAA+B;AAC/B,eAAO,MAAM,wBAAwB,EAAE,WAIrC,CAAC;AAEH,oBAAoB;AACpB,eAAO,MAAM,aAAa,EAAE,WAI1B,CAAC;AAEH,iCAAiC;AACjC,eAAO,MAAM,0BAA0B,EAAE,WAIvC,CAAC"}
|
|
1
|
+
{"version":3,"file":"sigHashType.d.ts","sourceRoot":"","sources":["../src/sigHashType.ts"],"names":[],"mappings":"AAIA,6EAA6E;AAC7E,qBAAa,WAAW;IACpB,oDAAoD;IAC7C,OAAO,EAAE,kBAAkB,CAAC;IACnC,wDAAwD;IACjD,SAAS,EAAE,iBAAiB,CAAC;IACpC,uDAAuD;IAChD,UAAU,EAAE,kBAAkB,CAAC;gBAEnB,MAAM,EAAE;QACvB,OAAO,EAAE,kBAAkB,CAAC;QAC5B,SAAS,EAAE,iBAAiB,CAAC;QAC7B,UAAU,EAAE,kBAAkB,CAAC;KAClC;IAMD,+CAA+C;WACjC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IA+B7D,4CAA4C;IACrC,KAAK,IAAI,MAAM;CAGzB;AAED,6BAA6B;AAC7B,oBAAY,kBAAkB;IAC1B,2CAA2C;IAC3C,MAAM,IAAI;IACV,4CAA4C;IAC5C,MAAM,KAAO;CAChB;AAED,+BAA+B;AAC/B,oBAAY,iBAAiB;IACzB,2DAA2D;IAC3D,KAAK,IAAI;IACT,8DAA8D;IAC9D,YAAY,MAAO;CACtB;AAED,gCAAgC;AAChC,oBAAY,kBAAkB;IAC1B,8DAA8D;IAC9D,GAAG,IAAI;IACP,kDAAkD;IAClD,IAAI,IAAI;IACR,kEAAkE;IAClE,MAAM,IAAI;CACb;AAED,iBAAiB;AACjB,eAAO,MAAM,UAAU,EAAE,WAIvB,CAAC;AAEH,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,EAAE,WAIpC,CAAC;AAEH,kBAAkB;AAClB,eAAO,MAAM,WAAW,EAAE,WAIxB,CAAC;AAEH,+BAA+B;AAC/B,eAAO,MAAM,wBAAwB,EAAE,WAIrC,CAAC;AAEH,oBAAoB;AACpB,eAAO,MAAM,aAAa,EAAE,WAI1B,CAAC;AAEH,iCAAiC;AACjC,eAAO,MAAM,0BAA0B,EAAE,WAIvC,CAAC;AAEH,iBAAiB;AACjB,eAAO,MAAM,UAAU,EAAE,WAIvB,CAAC;AAEH,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,EAAE,WAIpC,CAAC;AAEH,kBAAkB;AAClB,eAAO,MAAM,WAAW,EAAE,WAIxB,CAAC;AAEH,+BAA+B;AAC/B,eAAO,MAAM,wBAAwB,EAAE,WAIrC,CAAC;AAEH,oBAAoB;AACpB,eAAO,MAAM,aAAa,EAAE,WAI1B,CAAC;AAEH,iCAAiC;AACjC,eAAO,MAAM,0BAA0B,EAAE,WAIvC,CAAC;AAEH,wCAAwC;AACxC,eAAO,MAAM,qBAAqB,eAOjC,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,qBAAqB,eAOjC,CAAC"}
|
package/dist/sigHashType.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
// Distributed under the MIT software license, see the accompanying
|
|
4
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SINGLE_ANYONECANPAY_LEGACY = exports.SINGLE_LEGACY = exports.NONE_ANYONECANPAY_LEGACY = exports.NONE_LEGACY = exports.ALL_ANYONECANPAY_LEGACY = exports.ALL_LEGACY = exports.SINGLE_ANYONECANPAY_BIP143 = exports.SINGLE_BIP143 = exports.NONE_ANYONECANPAY_BIP143 = exports.NONE_BIP143 = exports.ALL_ANYONECANPAY_BIP143 = exports.ALL_BIP143 = exports.SigHashTypeOutputs = exports.SigHashTypeInputs = exports.SigHashTypeVariant = exports.SigHashType = void 0;
|
|
6
|
+
exports.SIG_HASH_TYPES_LEGACY = exports.SIG_HASH_TYPES_BIP143 = exports.SINGLE_ANYONECANPAY_LEGACY = exports.SINGLE_LEGACY = exports.NONE_ANYONECANPAY_LEGACY = exports.NONE_LEGACY = exports.ALL_ANYONECANPAY_LEGACY = exports.ALL_LEGACY = exports.SINGLE_ANYONECANPAY_BIP143 = exports.SINGLE_BIP143 = exports.NONE_ANYONECANPAY_BIP143 = exports.NONE_BIP143 = exports.ALL_ANYONECANPAY_BIP143 = exports.ALL_BIP143 = exports.SigHashTypeOutputs = exports.SigHashTypeInputs = exports.SigHashTypeVariant = exports.SigHashType = void 0;
|
|
7
7
|
/** Type of sighash used to sign for an input for a OP_CHECKSIG operation. */
|
|
8
8
|
class SigHashType {
|
|
9
9
|
constructor(params) {
|
|
@@ -143,4 +143,22 @@ exports.SINGLE_ANYONECANPAY_LEGACY = new SigHashType({
|
|
|
143
143
|
inputType: SigHashTypeInputs.ANYONECANPAY,
|
|
144
144
|
outputType: SigHashTypeOutputs.SINGLE,
|
|
145
145
|
});
|
|
146
|
+
/** List of BIP143 sighashes (FORKID) */
|
|
147
|
+
exports.SIG_HASH_TYPES_BIP143 = [
|
|
148
|
+
exports.ALL_BIP143,
|
|
149
|
+
exports.ALL_ANYONECANPAY_BIP143,
|
|
150
|
+
exports.NONE_BIP143,
|
|
151
|
+
exports.NONE_ANYONECANPAY_BIP143,
|
|
152
|
+
exports.SINGLE_BIP143,
|
|
153
|
+
exports.SINGLE_ANYONECANPAY_BIP143,
|
|
154
|
+
];
|
|
155
|
+
/** List of legacy sighashes (OG Bitcoin signature) */
|
|
156
|
+
exports.SIG_HASH_TYPES_LEGACY = [
|
|
157
|
+
exports.ALL_LEGACY,
|
|
158
|
+
exports.ALL_ANYONECANPAY_LEGACY,
|
|
159
|
+
exports.NONE_LEGACY,
|
|
160
|
+
exports.NONE_ANYONECANPAY_LEGACY,
|
|
161
|
+
exports.SINGLE_LEGACY,
|
|
162
|
+
exports.SINGLE_ANYONECANPAY_LEGACY,
|
|
163
|
+
];
|
|
146
164
|
//# sourceMappingURL=sigHashType.js.map
|
package/dist/sigHashType.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sigHashType.js","sourceRoot":"","sources":["../src/sigHashType.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAEtE,6EAA6E;AAC7E,MAAa,WAAW;IAQpB,YAAmB,MAIlB;QACG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACxC,CAAC;IAED,+CAA+C;IACxC,MAAM,CAAC,OAAO,CAAC,KAAa;QAC/B,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,0DAA0D;QAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC;QACjC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACnB,+BAA+B;YAC/B,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,WAAW,CAAC;YACnB,OAAO,EACH,KAAK,GAAG,IAAI;gBACR,CAAC,CAAC,kBAAkB,CAAC,MAAM;gBAC3B,CAAC,CAAC,kBAAkB,CAAC,MAAM;YACnC,SAAS,EACL,KAAK,GAAG,IAAI;gBACR,CAAC,CAAC,iBAAiB,CAAC,YAAY;gBAChC,CAAC,CAAC,iBAAiB,CAAC,KAAK;YACjC,UAAU,EACN,WAAW,IAAI,CAAC;gBACZ,CAAC,CAAC,kBAAkB,CAAC,GAAG;gBACxB,CAAC,CAAC,WAAW,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"sigHashType.js","sourceRoot":"","sources":["../src/sigHashType.ts"],"names":[],"mappings":"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"}
|
package/dist/txBuilder.d.ts
CHANGED
|
@@ -63,6 +63,11 @@ export declare class TxBuilder {
|
|
|
63
63
|
export declare function calcTxFee(txSize: number, feePerKb: number): bigint;
|
|
64
64
|
/** Append the sighash flags to the signature */
|
|
65
65
|
export declare function flagSignature(sig: Uint8Array, sigHashFlags: SigHashType): Uint8Array;
|
|
66
|
+
/**
|
|
67
|
+
* Sign the sighash using Schnorr for BIP143 signatures and ECDSA for Legacy
|
|
68
|
+
* signatures, and then flags the signature correctly
|
|
69
|
+
**/
|
|
70
|
+
export declare function signWithSigHash(ecc: Ecc, sk: Uint8Array, sigHash: Uint8Array, sigHashType: SigHashType): Uint8Array;
|
|
66
71
|
/** Signatory for a P2PKH input. Always uses Schnorr signatures */
|
|
67
72
|
export declare const P2PKHSignatory: (sk: Uint8Array, pk: Uint8Array, sigHashType: SigHashType) => (ecc: Ecc, input: UnsignedTxInput) => Script;
|
|
68
73
|
/** Signatory for a P2PK input. Always uses Schnorr signatures */
|
package/dist/txBuilder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txBuilder.d.ts","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"txBuilder.d.ts","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAEH,EAAE,EACF,OAAO,EACP,QAAQ,EAGX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAc,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE9D;;;;;;;;;;;;;;;IAeI;AACJ,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC;AAErE,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD,oDAAoD;AACpD,qBAAa,SAAS;IAClB,mCAAmC;IAC5B,OAAO,EAAE,MAAM,CAAC;IACvB,+CAA+C;IACxC,MAAM,EAAE,cAAc,EAAE,CAAC;IAChC;;;QAGI;IACG,OAAO,EAAE,eAAe,EAAE,CAAC;IAClC,oCAAoC;IAC7B,QAAQ,EAAE,MAAM,CAAC;gBAEL,MAAM,CAAC,EAAE;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;QAC1B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB;IAOD,0EAA0E;IAC1E,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,cAAc;IA2BtB,wDAAwD;IACjD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,EAAE;CAiFnE;AAED;kBACkB;AAClB,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,gDAAgD;AAChD,wBAAgB,aAAa,CACzB,GAAG,EAAE,UAAU,EACf,YAAY,EAAE,WAAW,GAC1B,UAAU,CAKZ;AAED;;;IAGI;AACJ,wBAAgB,eAAe,CAC3B,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,WAAW,GACzB,UAAU,CAMZ;AAED,kEAAkE;AAClE,eAAO,MAAM,cAAc,OACnB,UAAU,MACV,UAAU,eACD,WAAW,WAEX,GAAG,SAAS,eAAe,KAAG,MAM9C,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,aAAa,OAAQ,UAAU,eAAe,WAAW,WACrD,GAAG,SAAS,eAAe,KAAG,MAM9C,CAAC"}
|
package/dist/txBuilder.js
CHANGED
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
// Distributed under the MIT software license, see the accompanying
|
|
4
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.P2PKSignatory = exports.P2PKHSignatory = exports.flagSignature = exports.calcTxFee = exports.TxBuilder = void 0;
|
|
6
|
+
exports.P2PKSignatory = exports.P2PKHSignatory = exports.signWithSigHash = exports.flagSignature = exports.calcTxFee = exports.TxBuilder = void 0;
|
|
7
7
|
const ecc_js_1 = require("./ecc.js");
|
|
8
8
|
const hash_js_1 = require("./hash.js");
|
|
9
9
|
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
10
10
|
const op_js_1 = require("./op.js");
|
|
11
11
|
const script_js_1 = require("./script.js");
|
|
12
|
+
const sigHashType_js_1 = require("./sigHashType.js");
|
|
12
13
|
const tx_js_1 = require("./tx.js");
|
|
13
14
|
const unsignedTx_js_1 = require("./unsignedTx.js");
|
|
14
15
|
/** Class that can be used to build and sign txs. */
|
|
@@ -135,13 +136,24 @@ function flagSignature(sig, sigHashFlags) {
|
|
|
135
136
|
return writer.data;
|
|
136
137
|
}
|
|
137
138
|
exports.flagSignature = flagSignature;
|
|
139
|
+
/**
|
|
140
|
+
* Sign the sighash using Schnorr for BIP143 signatures and ECDSA for Legacy
|
|
141
|
+
* signatures, and then flags the signature correctly
|
|
142
|
+
**/
|
|
143
|
+
function signWithSigHash(ecc, sk, sigHash, sigHashType) {
|
|
144
|
+
const sig = sigHashType.variant == sigHashType_js_1.SigHashTypeVariant.LEGACY
|
|
145
|
+
? ecc.ecdsaSign(sk, sigHash)
|
|
146
|
+
: ecc.schnorrSign(sk, sigHash);
|
|
147
|
+
return flagSignature(sig, sigHashType);
|
|
148
|
+
}
|
|
149
|
+
exports.signWithSigHash = signWithSigHash;
|
|
138
150
|
/** Signatory for a P2PKH input. Always uses Schnorr signatures */
|
|
139
151
|
const P2PKHSignatory = (sk, pk, sigHashType) => {
|
|
140
152
|
return (ecc, input) => {
|
|
141
153
|
const preimage = input.sigHashPreimage(sigHashType);
|
|
142
154
|
const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
|
|
143
|
-
const
|
|
144
|
-
return script_js_1.Script.p2pkhSpend(pk,
|
|
155
|
+
const sigFlagged = signWithSigHash(ecc, sk, sighash, sigHashType);
|
|
156
|
+
return script_js_1.Script.p2pkhSpend(pk, sigFlagged);
|
|
145
157
|
};
|
|
146
158
|
};
|
|
147
159
|
exports.P2PKHSignatory = P2PKHSignatory;
|
|
@@ -150,8 +162,8 @@ const P2PKSignatory = (sk, sigHashType) => {
|
|
|
150
162
|
return (ecc, input) => {
|
|
151
163
|
const preimage = input.sigHashPreimage(sigHashType);
|
|
152
164
|
const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
|
|
153
|
-
const
|
|
154
|
-
return script_js_1.Script.fromOps([(0, op_js_1.pushBytesOp)(
|
|
165
|
+
const sigFlagged = signWithSigHash(ecc, sk, sighash, sigHashType);
|
|
166
|
+
return script_js_1.Script.fromOps([(0, op_js_1.pushBytesOp)(sigFlagged)]);
|
|
155
167
|
};
|
|
156
168
|
};
|
|
157
169
|
exports.P2PKSignatory = P2PKSignatory;
|
package/dist/txBuilder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txBuilder.js","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAEtE,qCAAyC;AACzC,uCAAoC;AACpC,wDAAkD;AAClD,mCAAsC;AACtC,2CAAqC;
|
|
1
|
+
{"version":3,"file":"txBuilder.js","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/unsignedTx.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsignedTx.d.ts","sourceRoot":"","sources":["../src/unsignedTx.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unsignedTx.d.ts","sourceRoot":"","sources":["../src/unsignedTx.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACH,WAAW,EAId,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGH,EAAE,EACF,OAAO,EAGV,MAAM,SAAS,CAAC;AAEjB,gFAAgF;AAChF,qBAAa,UAAU;IACnB,EAAE,EAAE,EAAE,CAAC;IACP,YAAY,EAAE,UAAU,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;IAC1B,WAAW,EAAE,UAAU,CAAC;IAExB,OAAO;IAYP;;;QAGI;WACU,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,UAAU;IASxC;;;QAGI;WACU,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,UAAU;IAS7C,4DAA4D;IACrD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe;CAGpD;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC5B,+CAA+C;IAC/C,KAAK,EAAE,UAAU,CAAC;IAClB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;CACxB;AAkGD;;;IAGI;AACJ,qBAAa,eAAe;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;gBAEJ,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE;IAKvE;;;QAGI;IACG,eAAe,CAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,MAAM,GAClB,eAAe;IAyGlB,iDAAiD;IAC1C,OAAO,IAAI,OAAO;CAG5B"}
|
package/dist/unsignedTx.js
CHANGED
|
@@ -7,6 +7,10 @@ exports.UnsignedTxInput = exports.UnsignedTx = void 0;
|
|
|
7
7
|
const hash_js_1 = require("./hash.js");
|
|
8
8
|
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
9
9
|
const writerlength_js_1 = require("./io/writerlength.js");
|
|
10
|
+
const varsize_js_1 = require("./io/varsize.js");
|
|
11
|
+
const op_js_1 = require("./op.js");
|
|
12
|
+
const opcode_js_1 = require("./opcode.js");
|
|
13
|
+
const script_js_1 = require("./script.js");
|
|
10
14
|
const sigHashType_js_1 = require("./sigHashType.js");
|
|
11
15
|
const tx_js_1 = require("./tx.js");
|
|
12
16
|
/** An unsigned tx, which helps us build the sighash preimage we need to sign */
|
|
@@ -47,6 +51,86 @@ class UnsignedTx {
|
|
|
47
51
|
}
|
|
48
52
|
}
|
|
49
53
|
exports.UnsignedTx = UnsignedTx;
|
|
54
|
+
// Write the legacy preimage used pre-UAHF.
|
|
55
|
+
// It's modeled closely after SignatureHash in interpreter.cpp.
|
|
56
|
+
function writeLegacyPreimage(writer, tx, scriptCode, inputIdx, sigHashType) {
|
|
57
|
+
const hasAnyoneCanPay = sigHashType.inputType === sigHashType_js_1.SigHashTypeInputs.ANYONECANPAY;
|
|
58
|
+
const writeLegacyScriptCode = () => {
|
|
59
|
+
const ops = scriptCode.ops();
|
|
60
|
+
let nextOp = undefined;
|
|
61
|
+
const newOps = [];
|
|
62
|
+
// Filter out all code separators
|
|
63
|
+
while ((nextOp = ops.next()) !== undefined) {
|
|
64
|
+
if ((0, op_js_1.isPushOp)(nextOp) || nextOp != opcode_js_1.OP_CODESEPARATOR) {
|
|
65
|
+
newOps.push(nextOp);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
script_js_1.Script.fromOps(newOps).writeWithSize(writer);
|
|
69
|
+
};
|
|
70
|
+
const writeLegacyInput = (idx) => {
|
|
71
|
+
// In case of SIGHASH_ANYONECANPAY, only the input being signed is
|
|
72
|
+
// serialized
|
|
73
|
+
if (hasAnyoneCanPay) {
|
|
74
|
+
idx = inputIdx;
|
|
75
|
+
}
|
|
76
|
+
const input = tx.inputs[idx];
|
|
77
|
+
// Serialize the prevout
|
|
78
|
+
(0, tx_js_1.writeOutPoint)(input.prevOut, writer);
|
|
79
|
+
// Serialize the script
|
|
80
|
+
if (idx != inputIdx) {
|
|
81
|
+
// Blank out other inputs' signatures
|
|
82
|
+
new script_js_1.Script().writeWithSize(writer);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
writeLegacyScriptCode();
|
|
86
|
+
}
|
|
87
|
+
// Serialize the nSequence
|
|
88
|
+
if (idx != inputIdx &&
|
|
89
|
+
(sigHashType.outputType === sigHashType_js_1.SigHashTypeOutputs.SINGLE ||
|
|
90
|
+
sigHashType.outputType === sigHashType_js_1.SigHashTypeOutputs.NONE)) {
|
|
91
|
+
// let the others update at will
|
|
92
|
+
writer.putU32(0);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
writer.putU32(input.sequence ?? tx_js_1.DEFAULT_SEQUENCE);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
const writeLegacyOutput = (idx) => {
|
|
99
|
+
if (sigHashType.outputType === sigHashType_js_1.SigHashTypeOutputs.SINGLE &&
|
|
100
|
+
idx != inputIdx) {
|
|
101
|
+
// Do not lock-in the txout payee at other indices as txin
|
|
102
|
+
(0, tx_js_1.writeTxOutput)({ value: 0, script: new script_js_1.Script() }, writer);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
(0, tx_js_1.writeTxOutput)(tx.outputs[idx], writer);
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
writer.putU32(tx.version);
|
|
109
|
+
const numInputs = hasAnyoneCanPay ? 1 : tx.inputs.length;
|
|
110
|
+
(0, varsize_js_1.writeVarSize)(numInputs, writer);
|
|
111
|
+
for (let inputIdx = 0; inputIdx < numInputs; ++inputIdx) {
|
|
112
|
+
writeLegacyInput(inputIdx);
|
|
113
|
+
}
|
|
114
|
+
// Serialize vout
|
|
115
|
+
const numOutputs = (() => {
|
|
116
|
+
switch (sigHashType.outputType) {
|
|
117
|
+
case sigHashType_js_1.SigHashTypeOutputs.NONE:
|
|
118
|
+
return 0;
|
|
119
|
+
case sigHashType_js_1.SigHashTypeOutputs.SINGLE:
|
|
120
|
+
return inputIdx + 1;
|
|
121
|
+
default:
|
|
122
|
+
return tx.outputs.length;
|
|
123
|
+
}
|
|
124
|
+
})();
|
|
125
|
+
(0, varsize_js_1.writeVarSize)(numOutputs, writer);
|
|
126
|
+
for (let outputIdx = 0; outputIdx < numOutputs; outputIdx++) {
|
|
127
|
+
writeLegacyOutput(outputIdx);
|
|
128
|
+
}
|
|
129
|
+
// Serialize nLockTime
|
|
130
|
+
writer.putU32(tx.locktime);
|
|
131
|
+
// Serialize sigHashType
|
|
132
|
+
writer.putU32(sigHashType.toInt());
|
|
133
|
+
}
|
|
50
134
|
/**
|
|
51
135
|
* An unsigned tx input, can be used to build a sighash preimage ready to be
|
|
52
136
|
* signed
|
|
@@ -61,9 +145,6 @@ class UnsignedTxInput {
|
|
|
61
145
|
* and OP_CODESEPARATOR index
|
|
62
146
|
**/
|
|
63
147
|
sigHashPreimage(sigHashType, nCodesep) {
|
|
64
|
-
if (sigHashType.variant == sigHashType_js_1.SigHashTypeVariant.LEGACY) {
|
|
65
|
-
throw new Error('Legacy sighash type not implemented');
|
|
66
|
-
}
|
|
67
148
|
const tx = this.unsignedTx.tx;
|
|
68
149
|
const input = tx.inputs[this.inputIdx];
|
|
69
150
|
if (input.signData === undefined) {
|
|
@@ -74,6 +155,25 @@ class UnsignedTxInput {
|
|
|
74
155
|
const scriptCode = nCodesep === undefined
|
|
75
156
|
? redeemScript
|
|
76
157
|
: redeemScript.cutOutCodesep(nCodesep);
|
|
158
|
+
// Sign LEGACY signatures that don't use SIGHASH_FORKID
|
|
159
|
+
if (sigHashType.variant === sigHashType_js_1.SigHashTypeVariant.LEGACY) {
|
|
160
|
+
if (sigHashType.outputType == sigHashType_js_1.SigHashTypeOutputs.SINGLE &&
|
|
161
|
+
this.inputIdx >= tx.outputs.length) {
|
|
162
|
+
throw new Error('Invalid usage of SINGLE, input has no corresponding output');
|
|
163
|
+
}
|
|
164
|
+
const writePreimage = (writer) => {
|
|
165
|
+
writeLegacyPreimage(writer, this.unsignedTx.tx, scriptCode, this.inputIdx, sigHashType);
|
|
166
|
+
};
|
|
167
|
+
const preimageWriterLen = new writerlength_js_1.WriterLength();
|
|
168
|
+
writePreimage(preimageWriterLen);
|
|
169
|
+
const preimageWriter = new writerbytes_js_1.WriterBytes(preimageWriterLen.length);
|
|
170
|
+
writePreimage(preimageWriter);
|
|
171
|
+
return {
|
|
172
|
+
bytes: preimageWriter.data,
|
|
173
|
+
scriptCode,
|
|
174
|
+
redeemScript,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
77
177
|
let hashOutputs;
|
|
78
178
|
switch (sigHashType.outputType) {
|
|
79
179
|
case sigHashType_js_1.SigHashTypeOutputs.ALL:
|
package/dist/unsignedTx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unsignedTx.js","sourceRoot":"","sources":["../src/unsignedTx.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAEtE,uCAAoC;AAEpC,wDAAkD;AAClD,0DAAoD;
|
|
1
|
+
{"version":3,"file":"unsignedTx.js","sourceRoot":"","sources":["../src/unsignedTx.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ecash-lib",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Library for eCash transaction building",
|
|
5
5
|
"main": "./dist/indexNodeJs.js",
|
|
6
6
|
"browser": "./dist/indexBrowser.js",
|
|
@@ -33,11 +33,12 @@
|
|
|
33
33
|
"@types/mocha": "^10.0.6",
|
|
34
34
|
"@types/node": "^20.12.7",
|
|
35
35
|
"chai": "^5.1.0",
|
|
36
|
-
"chronik-client": "^2.
|
|
36
|
+
"chronik-client": "^2.1.0",
|
|
37
37
|
"eslint-plugin-header": "^3.1.1",
|
|
38
38
|
"mocha": "^10.4.0",
|
|
39
39
|
"mocha-junit-reporter": "^2.2.1",
|
|
40
40
|
"nyc": "^15.1.0",
|
|
41
|
+
"random-js": "^2.1.0",
|
|
41
42
|
"source-map-support": "^0.5.21",
|
|
42
43
|
"ts-node": "^10.9.2",
|
|
43
44
|
"tsx": "^4.7.2",
|
|
@@ -45,6 +46,7 @@
|
|
|
45
46
|
"typescript-eslint": "^7.6.0"
|
|
46
47
|
},
|
|
47
48
|
"dependencies": {
|
|
48
|
-
"
|
|
49
|
+
"b58-ts": "^0.1.0",
|
|
50
|
+
"ecashaddrjs": "^2.0.0"
|
|
49
51
|
}
|
|
50
52
|
}
|