ecash-quicksend 1.0.2 → 1.0.4
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 +65 -175
- package/dist/config/constants.d.ts +11 -4
- package/dist/config/constants.d.ts.map +1 -1
- package/dist/config/constants.js +21 -13
- package/dist/config/constants.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -8
- package/dist/index.js.map +1 -1
- package/dist/send/tokensend.d.ts.map +1 -1
- package/dist/send/tokensend.js +4 -3
- package/dist/send/tokensend.js.map +1 -1
- package/dist/send/xecsend.d.ts +1 -1
- package/dist/send/xecsend.d.ts.map +1 -1
- package/dist/send/xecsend.js +4 -3
- package/dist/send/xecsend.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/wallet/wallet-utils.d.ts +2 -1
- package/dist/wallet/wallet-utils.d.ts.map +1 -1
- package/dist/wallet/wallet-utils.js +8 -3
- package/dist/wallet/wallet-utils.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -3,17 +3,7 @@
|
|
|
3
3
|
[](https://badge.fury.io/js/ecash-quicksend)
|
|
4
4
|
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
|
|
6
|
-
A unified transaction manager for eCash (XEC), SLP, and ALP token transactions.
|
|
7
|
-
|
|
8
|
-
## Features
|
|
9
|
-
|
|
10
|
-
- ✅ **XEC Transactions**: Send eCash (XEC) with customizable UTXO strategies
|
|
11
|
-
- ✅ **SLP Token Support**: Full support for Simple Ledger Protocol tokens
|
|
12
|
-
- ✅ **ALP Token Support**: Advanced Ledger Protocol token transactions
|
|
13
|
-
- ✅ **TypeScript Support**: Full TypeScript definitions included
|
|
14
|
-
- ✅ **Unified API**: Single interface for all transaction types
|
|
15
|
-
- ✅ **Flexible Configuration**: Mnemonic-based wallet management
|
|
16
|
-
- ✅ **Automatic UTXO Management**: Smart UTXO selection strategies
|
|
6
|
+
A unified transaction manager for eCash (XEC), SLP, and ALP token transactions.
|
|
17
7
|
|
|
18
8
|
## Installation
|
|
19
9
|
|
|
@@ -23,201 +13,109 @@ npm install ecash-quicksend
|
|
|
23
13
|
|
|
24
14
|
## Quick Start
|
|
25
15
|
|
|
26
|
-
###
|
|
27
|
-
|
|
28
|
-
Create a `.env` file in your project root:
|
|
16
|
+
### Setup
|
|
29
17
|
|
|
18
|
+
**Option 1: Environment Variable (Recommended)**
|
|
30
19
|
```env
|
|
31
|
-
#
|
|
32
|
-
MNEMONIC="your twelve word mnemonic phrase
|
|
20
|
+
# .env file
|
|
21
|
+
MNEMONIC="your twelve word mnemonic phrase"
|
|
33
22
|
```
|
|
34
23
|
|
|
35
|
-
|
|
24
|
+
**Option 2: Direct in Code**
|
|
25
|
+
```javascript
|
|
26
|
+
// Provide mnemonic directly in function calls
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### Basic Usage
|
|
36
30
|
|
|
37
31
|
```javascript
|
|
38
32
|
import quick from 'ecash-quicksend';
|
|
39
33
|
|
|
40
34
|
// Send XEC
|
|
41
|
-
|
|
42
|
-
{ address: 'ecash:qq...', amount: 1000 } //
|
|
35
|
+
await quick.sendXec([
|
|
36
|
+
{ address: 'ecash:qq...', amount: 1000 } // 10.00 XEC
|
|
43
37
|
]);
|
|
44
38
|
|
|
45
|
-
// Send
|
|
46
|
-
|
|
47
|
-
{ address: 'ecash:qq...', amount:
|
|
39
|
+
// Send XEC with custom mnemonic
|
|
40
|
+
await quick.sendXec([
|
|
41
|
+
{ address: 'ecash:qq...', amount: 1000 } // 10.00 XEC
|
|
48
42
|
], {
|
|
49
|
-
|
|
50
|
-
tokenDecimals: 8
|
|
43
|
+
mnemonic: 'your twelve word mnemonic phrase'
|
|
51
44
|
});
|
|
52
45
|
|
|
53
|
-
// Send
|
|
54
|
-
|
|
55
|
-
{ address: 'ecash:qq...', amount: 100 }
|
|
46
|
+
// Send SLP tokens
|
|
47
|
+
await quick.sendSlp([
|
|
48
|
+
{ address: 'ecash:qq...', amount: 100 } // 1.00 token
|
|
56
49
|
], {
|
|
57
|
-
tokenId: 'your-alp-token-id',
|
|
58
|
-
tokenDecimals: 8
|
|
59
|
-
});
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## API Reference
|
|
63
|
-
|
|
64
|
-
### TransactionManager
|
|
65
|
-
|
|
66
|
-
The main class that manages all transaction types.
|
|
67
|
-
|
|
68
|
-
#### Methods
|
|
69
|
-
|
|
70
|
-
##### `sendXec(recipients, options?)`
|
|
71
|
-
|
|
72
|
-
Send eCash (XEC) to one or more recipients.
|
|
73
|
-
|
|
74
|
-
```typescript
|
|
75
|
-
await quick.sendXec(
|
|
76
|
-
[{ address: 'ecash:qq...', amount: 1000 }],
|
|
77
|
-
{
|
|
78
|
-
utxoStrategy: 'all', // 'all' | 'largest' | 'smallest'
|
|
79
|
-
addressIndex: 0
|
|
80
|
-
}
|
|
81
|
-
);
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
**Parameters:**
|
|
85
|
-
- `recipients`: Array of `{ address: string, amount: number }`
|
|
86
|
-
- `options`: Optional configuration object
|
|
87
|
-
|
|
88
|
-
##### `sendSlp(recipients, options)`
|
|
89
|
-
|
|
90
|
-
Send SLP tokens to one or more recipients.
|
|
91
|
-
|
|
92
|
-
```typescript
|
|
93
|
-
await quick.sendSlp(
|
|
94
|
-
[{ address: 'ecash:qq...', amount: 100 }],
|
|
95
|
-
{
|
|
96
|
-
tokenId: 'your-token-id',
|
|
97
|
-
tokenDecimals: 8,
|
|
98
|
-
addressIndex: 0,
|
|
99
|
-
feeStrategy: 'auto',
|
|
100
|
-
tokenStrategy: 'auto'
|
|
101
|
-
}
|
|
102
|
-
);
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
##### `sendAlp(recipients, options)`
|
|
106
|
-
|
|
107
|
-
Send ALP tokens to one or more recipients.
|
|
108
|
-
|
|
109
|
-
```typescript
|
|
110
|
-
await quick.sendAlp(
|
|
111
|
-
[{ address: 'ecash:qq...', amount: 100 }],
|
|
112
|
-
{
|
|
113
|
-
tokenId: 'your-token-id',
|
|
114
|
-
tokenDecimals: 8,
|
|
115
|
-
addressIndex: 0,
|
|
116
|
-
feeStrategy: 'auto',
|
|
117
|
-
tokenStrategy: 'auto'
|
|
118
|
-
}
|
|
119
|
-
);
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
##### `send(type, recipients, options?)`
|
|
123
|
-
|
|
124
|
-
Universal send method supporting all transaction types.
|
|
125
|
-
|
|
126
|
-
```typescript
|
|
127
|
-
// Send XEC
|
|
128
|
-
await quick.send('xec', recipients, {
|
|
129
|
-
utxoStrategy: 'all',
|
|
130
|
-
addressIndex: 0
|
|
131
|
-
});
|
|
132
|
-
|
|
133
|
-
// Send SLP
|
|
134
|
-
await quick.send('slp', recipients, {
|
|
135
50
|
tokenId: 'your-token-id',
|
|
136
|
-
tokenDecimals:
|
|
51
|
+
tokenDecimals: 2
|
|
137
52
|
});
|
|
138
53
|
|
|
139
|
-
// Send ALP
|
|
140
|
-
await quick.
|
|
54
|
+
// Send ALP tokens
|
|
55
|
+
await quick.sendAlp([
|
|
56
|
+
{ address: 'ecash:qq...', amount: 100 } // 0.01 token
|
|
57
|
+
], {
|
|
141
58
|
tokenId: 'your-token-id',
|
|
142
|
-
tokenDecimals:
|
|
59
|
+
tokenDecimals: 4
|
|
143
60
|
});
|
|
144
61
|
```
|
|
145
62
|
|
|
146
|
-
##
|
|
63
|
+
## API
|
|
147
64
|
|
|
148
|
-
###
|
|
65
|
+
### Methods
|
|
149
66
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
155
|
-
```
|
|
67
|
+
- `sendXec(recipients, options?)` - Send eCash
|
|
68
|
+
- `sendSlp(recipients, options)` - Send SLP tokens
|
|
69
|
+
- `sendAlp(recipients, options)` - Send ALP tokens
|
|
70
|
+
- `send(type, recipients, options?)` - Universal send method
|
|
156
71
|
|
|
157
|
-
###
|
|
72
|
+
### Options
|
|
158
73
|
|
|
159
74
|
```typescript
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
75
|
+
// XEC Options
|
|
76
|
+
{
|
|
77
|
+
utxoStrategy?: 'all' | 'minimal' | 'largest_first';
|
|
78
|
+
addressIndex?: number;
|
|
79
|
+
mnemonic?: string;
|
|
165
80
|
}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### Token Transaction Options
|
|
169
81
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
tokenId: string;
|
|
173
|
-
tokenDecimals: number;
|
|
174
|
-
addressIndex?: number;
|
|
175
|
-
feeStrategy?:
|
|
176
|
-
tokenStrategy?:
|
|
82
|
+
// Token Options (SLP/ALP)
|
|
83
|
+
{
|
|
84
|
+
tokenId: string;
|
|
85
|
+
tokenDecimals: number;
|
|
86
|
+
addressIndex?: number;
|
|
87
|
+
feeStrategy?: 'all' | 'minimal' | 'largest_first';
|
|
88
|
+
tokenStrategy?: 'all' | 'largest' | 'minimal';
|
|
89
|
+
mnemonic?: string;
|
|
177
90
|
}
|
|
178
91
|
```
|
|
179
92
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
utxoStrategy?: string; // 'all' | 'largest' | 'smallest'
|
|
185
|
-
addressIndex?: number; // Wallet address index (default: 0)
|
|
186
|
-
}
|
|
187
|
-
```
|
|
93
|
+
#### Strategy Details
|
|
94
|
+
- **utxoStrategy**: `'all'` (use all UTXOs) | `'minimal'` (fewest UTXOs) | `'largest_first'` (biggest UTXOs first)
|
|
95
|
+
- **feeStrategy**: `'all'` (all UTXOs for fees) | `'minimal'` (fewest for fees) | `'largest_first'` (biggest for fees)
|
|
96
|
+
- **tokenStrategy**: `'all'` (all token UTXOs) | `'largest'` (biggest token UTXO) | `'minimal'` (smallest sufficient)
|
|
188
97
|
|
|
189
98
|
## Advanced Usage
|
|
190
99
|
|
|
191
|
-
### Multiple Recipients
|
|
192
|
-
|
|
193
100
|
```javascript
|
|
194
|
-
//
|
|
101
|
+
// Multiple recipients
|
|
195
102
|
await quick.sendXec([
|
|
196
103
|
{ address: 'ecash:qq...', amount: 1000 },
|
|
197
|
-
{ address: 'ecash:qp...', amount: 2000 }
|
|
198
|
-
{ address: 'ecash:qr...', amount: 500 }
|
|
104
|
+
{ address: 'ecash:qp...', amount: 2000 }
|
|
199
105
|
]);
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
### Custom UTXO Strategies
|
|
203
106
|
|
|
204
|
-
|
|
205
|
-
// Use largest UTXO first (good for consolidation)
|
|
107
|
+
// Custom UTXO strategy
|
|
206
108
|
await quick.sendXec(recipients, { utxoStrategy: 'largest' });
|
|
207
109
|
|
|
208
|
-
//
|
|
209
|
-
await quick.sendXec(recipients, { utxoStrategy: 'smallest' });
|
|
210
|
-
|
|
211
|
-
// Use all available UTXOs (default)
|
|
212
|
-
await quick.sendXec(recipients, { utxoStrategy: 'all' });
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### Address Index Management
|
|
216
|
-
|
|
217
|
-
```javascript
|
|
218
|
-
// Use different derived addresses
|
|
110
|
+
// Different address index
|
|
219
111
|
await quick.sendXec(recipients, { addressIndex: 1 });
|
|
220
|
-
|
|
112
|
+
|
|
113
|
+
// Universal send method
|
|
114
|
+
await quick.send('xec', recipients);
|
|
115
|
+
await quick.send('slp', recipients, {
|
|
116
|
+
tokenId: 'token-id',
|
|
117
|
+
tokenDecimals: 2
|
|
118
|
+
});
|
|
221
119
|
```
|
|
222
120
|
|
|
223
121
|
## Error Handling
|
|
@@ -225,31 +123,23 @@ await quick.sendSlp(recipients, options, { addressIndex: 2 });
|
|
|
225
123
|
```javascript
|
|
226
124
|
try {
|
|
227
125
|
const result = await quick.sendXec(recipients);
|
|
228
|
-
|
|
229
|
-
if (result.success) {
|
|
230
|
-
console.log(`Transaction successful: ${result.txid}`);
|
|
231
|
-
} else {
|
|
232
|
-
console.error(`Transaction failed: ${result.message}`);
|
|
233
|
-
}
|
|
126
|
+
console.log('Success:', result.txid);
|
|
234
127
|
} catch (error) {
|
|
235
|
-
console.error('
|
|
128
|
+
console.error('Failed:', error.message);
|
|
236
129
|
}
|
|
237
130
|
```
|
|
238
131
|
|
|
239
132
|
## Requirements
|
|
240
133
|
|
|
241
134
|
- Node.js >= 18.0.0
|
|
242
|
-
-
|
|
243
|
-
- Network access to eCash blockchain
|
|
135
|
+
- Valid eCash wallet mnemonic phrase
|
|
244
136
|
|
|
245
137
|
## License
|
|
246
138
|
|
|
247
139
|
MIT
|
|
248
140
|
|
|
249
|
-
## Contributing
|
|
250
|
-
|
|
251
141
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
252
142
|
|
|
253
143
|
## Support
|
|
254
144
|
|
|
255
|
-
|
|
145
|
+
[Issues](https://github.com/alitayin/quicksend/issues) | [GitHub](https://github.com/alitayin/quicksend)
|
|
@@ -5,17 +5,24 @@ export declare const CONFIG: {
|
|
|
5
5
|
MNEMONIC: string;
|
|
6
6
|
};
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* 验证必需的环境变量(可选调用)
|
|
9
9
|
*/
|
|
10
|
-
export declare function
|
|
10
|
+
export declare function validateConfig(): void;
|
|
11
|
+
/**
|
|
12
|
+
* 获取助记词(从环境变量)
|
|
13
|
+
* 如果环境变量未设置,返回 null 而不是抛出错误
|
|
14
|
+
*/
|
|
15
|
+
export declare function getMnemonic(): string | null;
|
|
11
16
|
/**
|
|
12
17
|
* 获取钱包私钥WIF (从助记词派生)
|
|
13
18
|
* @param addressIndex - 地址索引,默认为0
|
|
19
|
+
* @param mnemonic - 可选:直接提供助记词,否则从环境变量获取
|
|
14
20
|
*/
|
|
15
|
-
export declare function getPrivateKeyWIF(addressIndex?: number): string;
|
|
21
|
+
export declare function getPrivateKeyWIF(addressIndex?: number, mnemonic?: string): string;
|
|
16
22
|
/**
|
|
17
23
|
* 获取默认的 UTXO 地址 (从助记词派生)
|
|
18
24
|
* @param addressIndex - 地址索引,默认为0
|
|
25
|
+
* @param mnemonic - 可选:直接提供助记词,否则从环境变量获取
|
|
19
26
|
*/
|
|
20
|
-
export declare function getDefaultUtxoAddress(addressIndex?: number): string;
|
|
27
|
+
export declare function getDefaultUtxoAddress(addressIndex?: number, mnemonic?: string): string;
|
|
21
28
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../config/constants.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,MAAM;;CAGlB,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../config/constants.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,eAAO,MAAM,MAAM;;CAGlB,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAIrC;AAKD;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,GAAG,IAAI,CAE3C;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,GAAE,MAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAOpF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,GAAE,MAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAOzF"}
|
package/dist/config/constants.js
CHANGED
|
@@ -9,38 +9,46 @@ export const CONFIG = {
|
|
|
9
9
|
MNEMONIC: process.env.MNEMONIC,
|
|
10
10
|
};
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
12
|
+
* 验证必需的环境变量(可选调用)
|
|
13
13
|
*/
|
|
14
|
-
function validateConfig() {
|
|
14
|
+
export function validateConfig() {
|
|
15
15
|
if (!CONFIG.MNEMONIC) {
|
|
16
16
|
throw new Error('必须设置 MNEMONIC 环境变量');
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
-
//
|
|
20
|
-
validateConfig();
|
|
19
|
+
// 注释掉自动验证,因为用户现在可以在代码中提供助记词
|
|
20
|
+
// validateConfig();
|
|
21
21
|
/**
|
|
22
|
-
*
|
|
22
|
+
* 获取助记词(从环境变量)
|
|
23
|
+
* 如果环境变量未设置,返回 null 而不是抛出错误
|
|
23
24
|
*/
|
|
24
25
|
export function getMnemonic() {
|
|
25
|
-
|
|
26
|
-
throw new Error('助记词未设置');
|
|
27
|
-
}
|
|
28
|
-
return CONFIG.MNEMONIC;
|
|
26
|
+
return CONFIG.MNEMONIC || null;
|
|
29
27
|
}
|
|
30
28
|
/**
|
|
31
29
|
* 获取钱包私钥WIF (从助记词派生)
|
|
32
30
|
* @param addressIndex - 地址索引,默认为0
|
|
31
|
+
* @param mnemonic - 可选:直接提供助记词,否则从环境变量获取
|
|
33
32
|
*/
|
|
34
|
-
export function getPrivateKeyWIF(addressIndex = 0) {
|
|
35
|
-
const
|
|
33
|
+
export function getPrivateKeyWIF(addressIndex = 0, mnemonic) {
|
|
34
|
+
const finalMnemonic = mnemonic || getMnemonic();
|
|
35
|
+
if (!finalMnemonic) {
|
|
36
|
+
throw new Error('助记词未设置:请在环境变量中设置 MNEMONIC 或在代码中提供助记词参数');
|
|
37
|
+
}
|
|
38
|
+
const derived = deriveBuyerKey(finalMnemonic, addressIndex);
|
|
36
39
|
return derived.wif;
|
|
37
40
|
}
|
|
38
41
|
/**
|
|
39
42
|
* 获取默认的 UTXO 地址 (从助记词派生)
|
|
40
43
|
* @param addressIndex - 地址索引,默认为0
|
|
44
|
+
* @param mnemonic - 可选:直接提供助记词,否则从环境变量获取
|
|
41
45
|
*/
|
|
42
|
-
export function getDefaultUtxoAddress(addressIndex = 0) {
|
|
43
|
-
const
|
|
46
|
+
export function getDefaultUtxoAddress(addressIndex = 0, mnemonic) {
|
|
47
|
+
const finalMnemonic = mnemonic || getMnemonic();
|
|
48
|
+
if (!finalMnemonic) {
|
|
49
|
+
throw new Error('助记词未设置:请在环境变量中设置 MNEMONIC 或在代码中提供助记词参数');
|
|
50
|
+
}
|
|
51
|
+
const derived = deriveBuyerKey(finalMnemonic, addressIndex);
|
|
44
52
|
return derived.address;
|
|
45
53
|
}
|
|
46
54
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../config/constants.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,gBAAgB;IAChB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;CAC/B,CAAC;AAEF;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../config/constants.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,gBAAgB;IAChB,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ;CAC/B,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,4BAA4B;AAC5B,oBAAoB;AAEpB;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC;AACjC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,eAAuB,CAAC,EAAE,QAAiB;IAC1E,MAAM,aAAa,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;IAChD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC5D,OAAO,OAAO,CAAC,GAAG,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,eAAuB,CAAC,EAAE,QAAiB;IAC/E,MAAM,aAAa,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;IAChD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAC5D,OAAO,OAAO,CAAC,OAAO,CAAC;AACzB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,26 +7,26 @@ declare class TransactionManager {
|
|
|
7
7
|
/**
|
|
8
8
|
* 发送 SLP 代币
|
|
9
9
|
* @param recipients - 接收方数组
|
|
10
|
-
* @param options -
|
|
10
|
+
* @param options - 交易选项(可包含助记词)
|
|
11
11
|
*/
|
|
12
12
|
sendSlp(recipients: Recipient[], options: TokenTransactionOptions): Promise<TransactionResult>;
|
|
13
13
|
/**
|
|
14
14
|
* 发送 ALP 代币
|
|
15
15
|
* @param recipients - 接收方数组
|
|
16
|
-
* @param options -
|
|
16
|
+
* @param options - 交易选项(可包含助记词)
|
|
17
17
|
*/
|
|
18
18
|
sendAlp(recipients: Recipient[], options: TokenTransactionOptions): Promise<TransactionResult>;
|
|
19
19
|
/**
|
|
20
20
|
* 发送 XEC (eCash)
|
|
21
21
|
* @param recipients - 接收方数组
|
|
22
|
-
* @param options - UTXO选择策略字符串或包含utxoStrategy和
|
|
22
|
+
* @param options - UTXO选择策略字符串或包含utxoStrategy、addressIndex和mnemonic的选项对象
|
|
23
23
|
*/
|
|
24
24
|
sendXec(recipients: Recipient[], options?: XecOptions): Promise<TransactionResult>;
|
|
25
25
|
/**
|
|
26
26
|
* 通用发送方法
|
|
27
27
|
* @param type - 交易类型
|
|
28
28
|
* @param recipients - 接收方数组
|
|
29
|
-
* @param options -
|
|
29
|
+
* @param options - 交易选项(可包含助记词)
|
|
30
30
|
*/
|
|
31
31
|
send(type: TransactionType, recipients: Recipient[], options?: GeneralSendOptions): Promise<TransactionResult>;
|
|
32
32
|
}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EAEV,kBAAkB,EAClB,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,cAAM,kBAAkB;IACtB;;;;OAIG;IACG,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIpG;;;;OAIG;IACG,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIpG;;;;OAIG;IACG,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,UAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EAEV,kBAAkB,EAClB,eAAe,EAChB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,cAAM,kBAAkB;IACtB;;;;OAIG;IACG,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIpG;;;;OAIG;IACG,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIpG;;;;OAIG;IACG,OAAO,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,UAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAmB/F;;;;;OAKG;IACG,IAAI,CAAC,IAAI,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAqCzH;AAGD,QAAA,MAAM,KAAK,oBAA2B,CAAC;AAGvC,eAAe,KAAK,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAG9B,eAAO,MAAQ,OAAO,eA1FM,SAAS,EAAE,WAAW,uBAAuB,KAAG,OAAO,CAAC,iBAAiB,CAAC,EA0F9E,OAAO,eAjFH,SAAS,EAAE,WAAW,uBAAuB,KAAG,OAAO,CAAC,iBAAiB,CAAC,EAiFrE,OAAO,eAxEZ,SAAS,EAAE,YAAW,UAAU,KAAW,OAAO,CAAC,iBAAiB,CAAC,EAwEvD,IAAI,SA/C3B,eAAe,cAAc,SAAS,EAAE,YAAW,kBAAkB,KAAQ,OAAO,CAAC,iBAAiB,CA+CjE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ class TransactionManager {
|
|
|
8
8
|
/**
|
|
9
9
|
* 发送 SLP 代币
|
|
10
10
|
* @param recipients - 接收方数组
|
|
11
|
-
* @param options -
|
|
11
|
+
* @param options - 交易选项(可包含助记词)
|
|
12
12
|
*/
|
|
13
13
|
async sendSlp(recipients, options) {
|
|
14
14
|
return await createRawSlpTransaction(recipients, options);
|
|
@@ -16,7 +16,7 @@ class TransactionManager {
|
|
|
16
16
|
/**
|
|
17
17
|
* 发送 ALP 代币
|
|
18
18
|
* @param recipients - 接收方数组
|
|
19
|
-
* @param options -
|
|
19
|
+
* @param options - 交易选项(可包含助记词)
|
|
20
20
|
*/
|
|
21
21
|
async sendAlp(recipients, options) {
|
|
22
22
|
return await createRawAlpTransaction(recipients, options);
|
|
@@ -24,27 +24,30 @@ class TransactionManager {
|
|
|
24
24
|
/**
|
|
25
25
|
* 发送 XEC (eCash)
|
|
26
26
|
* @param recipients - 接收方数组
|
|
27
|
-
* @param options - UTXO选择策略字符串或包含utxoStrategy和
|
|
27
|
+
* @param options - UTXO选择策略字符串或包含utxoStrategy、addressIndex和mnemonic的选项对象
|
|
28
28
|
*/
|
|
29
29
|
async sendXec(recipients, options = 'all') {
|
|
30
30
|
// 如果options是对象,提取相关参数;否则直接使用options作为策略
|
|
31
31
|
let utxoStrategy;
|
|
32
32
|
let addressIndex;
|
|
33
|
+
let mnemonic;
|
|
33
34
|
if (typeof options === 'object' && options !== null) {
|
|
34
35
|
utxoStrategy = options.utxoStrategy || 'all';
|
|
35
36
|
addressIndex = options.addressIndex || 0;
|
|
37
|
+
mnemonic = options.mnemonic; // 新增:提取助记词
|
|
36
38
|
}
|
|
37
39
|
else {
|
|
38
40
|
utxoStrategy = options;
|
|
39
41
|
addressIndex = 0;
|
|
42
|
+
mnemonic = undefined;
|
|
40
43
|
}
|
|
41
|
-
return await createRawXecTransaction(recipients, utxoStrategy, addressIndex);
|
|
44
|
+
return await createRawXecTransaction(recipients, utxoStrategy, addressIndex, mnemonic);
|
|
42
45
|
}
|
|
43
46
|
/**
|
|
44
47
|
* 通用发送方法
|
|
45
48
|
* @param type - 交易类型
|
|
46
49
|
* @param recipients - 接收方数组
|
|
47
|
-
* @param options -
|
|
50
|
+
* @param options - 交易选项(可包含助记词)
|
|
48
51
|
*/
|
|
49
52
|
async send(type, recipients, options = {}) {
|
|
50
53
|
switch (type.toLowerCase()) {
|
|
@@ -57,7 +60,8 @@ class TransactionManager {
|
|
|
57
60
|
tokenDecimals: options.tokenDecimals,
|
|
58
61
|
addressIndex: options.addressIndex,
|
|
59
62
|
feeStrategy: options.feeStrategy,
|
|
60
|
-
tokenStrategy: options.tokenStrategy
|
|
63
|
+
tokenStrategy: options.tokenStrategy,
|
|
64
|
+
mnemonic: options.mnemonic // 新增:传递助记词
|
|
61
65
|
});
|
|
62
66
|
case 'alp':
|
|
63
67
|
if (!options.tokenId || !options.tokenDecimals) {
|
|
@@ -68,12 +72,14 @@ class TransactionManager {
|
|
|
68
72
|
tokenDecimals: options.tokenDecimals,
|
|
69
73
|
addressIndex: options.addressIndex,
|
|
70
74
|
feeStrategy: options.feeStrategy,
|
|
71
|
-
tokenStrategy: options.tokenStrategy
|
|
75
|
+
tokenStrategy: options.tokenStrategy,
|
|
76
|
+
mnemonic: options.mnemonic // 新增:传递助记词
|
|
72
77
|
});
|
|
73
78
|
case 'xec':
|
|
74
79
|
const xecOptions = {
|
|
75
80
|
utxoStrategy: options.utxoStrategy,
|
|
76
|
-
addressIndex: options.addressIndex
|
|
81
|
+
addressIndex: options.addressIndex,
|
|
82
|
+
mnemonic: options.mnemonic // 新增:传递助记词
|
|
77
83
|
};
|
|
78
84
|
return await this.sendXec(recipients, xecOptions);
|
|
79
85
|
default:
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAW5D;;;GAGG;AACH,MAAM,kBAAkB;IACtB;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,UAAuB,EAAE,OAAgC;QACrE,OAAO,MAAM,uBAAuB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,UAAuB,EAAE,OAAgC;QACrE,OAAO,MAAM,uBAAuB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,UAAuB,EAAE,UAAsB,KAAK;QAChE,wCAAwC;QACxC,IAAI,YAAoB,CAAC;QACzB,IAAI,YAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokensend.d.ts","sourceRoot":"","sources":["../../send/tokensend.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"tokensend.d.ts","sourceRoot":"","sources":["../../send/tokensend.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAuKjF;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAEnI;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAEnI"}
|
package/dist/send/tokensend.js
CHANGED
|
@@ -67,9 +67,10 @@ async function createTokenTransaction(recipients, options, tokenType = 'SLP') {
|
|
|
67
67
|
{ key: 'tokenId', message: 'tokenId is required' },
|
|
68
68
|
{ key: 'tokenDecimals', message: 'tokenDecimals is required', checkUndefined: true }
|
|
69
69
|
]);
|
|
70
|
-
const { tokenId, tokenDecimals, addressIndex = 0, feeStrategy = 'all', tokenStrategy = 'all'
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
const { tokenId, tokenDecimals, addressIndex = 0, feeStrategy = 'all', tokenStrategy = 'all', mnemonic // 新增:从选项中提取助记词
|
|
71
|
+
} = options;
|
|
72
|
+
// 初始化钱包 - 使用指定的地址索引和可选的助记词
|
|
73
|
+
const { walletSk, walletPk, walletP2pkh, address: utxoAddress } = initializeWallet(addressIndex, mnemonic);
|
|
73
74
|
const utxos = await getUtxos(utxoAddress);
|
|
74
75
|
if (utxos.length === 0) {
|
|
75
76
|
throw new Error(`No UTXOs found for address index ${addressIndex}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokensend.js","sourceRoot":"","sources":["../../send/tokensend.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tokensend.js","sourceRoot":"","sources":["../../send/tokensend.ts"],"names":[],"mappings":"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"}
|
package/dist/send/xecsend.d.ts
CHANGED
|
@@ -18,6 +18,6 @@ interface XecTransactionResult extends TransactionResult {
|
|
|
18
18
|
address: string;
|
|
19
19
|
}>;
|
|
20
20
|
}
|
|
21
|
-
export declare function createRawXecTransaction(recipients: ExtendedRecipient[], utxoStrategy?: string, addressIndex?: number): Promise<XecTransactionResult>;
|
|
21
|
+
export declare function createRawXecTransaction(recipients: ExtendedRecipient[], utxoStrategy?: string, addressIndex?: number, mnemonic?: string): Promise<XecTransactionResult>;
|
|
22
22
|
export {};
|
|
23
23
|
//# sourceMappingURL=xecsend.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xecsend.d.ts","sourceRoot":"","sources":["../../send/xecsend.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,UAAU,oBAAqB,SAAQ,iBAAiB;IACtD,aAAa,EAAE,GAAG,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,KAAK,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,iBAAiB,EAAE,EAC/B,YAAY,GAAE,MAAc,EAC5B,YAAY,GAAE,MAAU,
|
|
1
|
+
{"version":3,"file":"xecsend.d.ts","sourceRoot":"","sources":["../../send/xecsend.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAG7C,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,UAAU,oBAAqB,SAAQ,iBAAiB;IACtD,aAAa,EAAE,GAAG,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,KAAK,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,iBAAiB,EAAE,EAC/B,YAAY,GAAE,MAAc,EAC5B,YAAY,GAAE,MAAU,EACxB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,CAAC,CA4G/B"}
|
package/dist/send/xecsend.js
CHANGED
|
@@ -4,7 +4,8 @@ import { getUtxos, selectUtxos } from '../utxo/utxo-utils';
|
|
|
4
4
|
import { initializeWallet } from '../wallet/wallet-utils';
|
|
5
5
|
import { buildTransactionInputs, createP2pkhScript } from '../transaction/transaction-utils';
|
|
6
6
|
import { buildAndBroadcastTransaction, logTransactionSummary } from '../transaction/transaction-builder';
|
|
7
|
-
export async function createRawXecTransaction(recipients, utxoStrategy = 'all', addressIndex = 0
|
|
7
|
+
export async function createRawXecTransaction(recipients, utxoStrategy = 'all', addressIndex = 0, mnemonic // 新增:可选的助记词参数
|
|
8
|
+
) {
|
|
8
9
|
try {
|
|
9
10
|
// 验证参数
|
|
10
11
|
if (!Array.isArray(recipients) || recipients.length === 0) {
|
|
@@ -24,8 +25,8 @@ export async function createRawXecTransaction(recipients, utxoStrategy = 'all',
|
|
|
24
25
|
throw new Error('decimals must be a non-negative integer if provided');
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
|
-
// 初始化钱包 -
|
|
28
|
-
const { walletSk, walletPk, walletP2pkh, address: utxoAddress } = initializeWallet(addressIndex);
|
|
28
|
+
// 初始化钱包 - 使用指定的地址索引和可选的助记词
|
|
29
|
+
const { walletSk, walletPk, walletP2pkh, address: utxoAddress } = initializeWallet(addressIndex, mnemonic);
|
|
29
30
|
const utxos = await getUtxos(utxoAddress);
|
|
30
31
|
if (utxos.length === 0) {
|
|
31
32
|
throw new Error(`No UTXOs found for address index ${addressIndex}`);
|
package/dist/send/xecsend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xecsend.js","sourceRoot":"","sources":["../../send/xecsend.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AA2BzG,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAA+B,EAC/B,eAAuB,KAAK,EAC5B,eAAuB,CAAC
|
|
1
|
+
{"version":3,"file":"xecsend.js","sourceRoot":"","sources":["../../send/xecsend.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -45,6 +45,7 @@ export interface TokenTransactionOptions {
|
|
|
45
45
|
addressIndex?: number;
|
|
46
46
|
feeStrategy?: string;
|
|
47
47
|
tokenStrategy?: string;
|
|
48
|
+
mnemonic?: string;
|
|
48
49
|
}
|
|
49
50
|
/**
|
|
50
51
|
* XEC 交易选项(可以是字符串或对象)
|
|
@@ -52,6 +53,7 @@ export interface TokenTransactionOptions {
|
|
|
52
53
|
export interface XecTransactionOptions {
|
|
53
54
|
utxoStrategy?: string;
|
|
54
55
|
addressIndex?: number;
|
|
56
|
+
mnemonic?: string;
|
|
55
57
|
}
|
|
56
58
|
/**
|
|
57
59
|
* XEC 交易选项联合类型
|
|
@@ -67,6 +69,7 @@ export interface GeneralSendOptions {
|
|
|
67
69
|
tokenDecimals?: number;
|
|
68
70
|
feeStrategy?: string;
|
|
69
71
|
tokenStrategy?: string;
|
|
72
|
+
mnemonic?: string;
|
|
70
73
|
}
|
|
71
74
|
/**
|
|
72
75
|
* 交易类型
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,qBAAqB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC"}
|
|
@@ -10,8 +10,9 @@ interface WalletInfo {
|
|
|
10
10
|
/**
|
|
11
11
|
* 初始化钱包 - 优化版本,只调用一次 deriveBuyerKey
|
|
12
12
|
* @param addressIndex - 地址索引,默认为0
|
|
13
|
+
* @param mnemonic - 可选:直接提供助记词,否则从环境变量获取
|
|
13
14
|
* @returns 钱包相关的密钥、脚本和地址
|
|
14
15
|
*/
|
|
15
|
-
export declare function initializeWallet(addressIndex?: number): WalletInfo;
|
|
16
|
+
export declare function initializeWallet(addressIndex?: number, mnemonic?: string): WalletInfo;
|
|
16
17
|
export {};
|
|
17
18
|
//# sourceMappingURL=wallet-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-utils.d.ts","sourceRoot":"","sources":["../../wallet/wallet-utils.ts"],"names":[],"mappings":"AAaA,UAAU,UAAU;IAClB,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED
|
|
1
|
+
{"version":3,"file":"wallet-utils.d.ts","sourceRoot":"","sources":["../../wallet/wallet-utils.ts"],"names":[],"mappings":"AAaA,UAAU,UAAU;IAClB,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;IACrB,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,GAAE,MAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,CA+BxF"}
|
|
@@ -6,13 +6,18 @@ const { Ecc, Script, fromHex, shaRmd160, } = ecashLib;
|
|
|
6
6
|
/**
|
|
7
7
|
* 初始化钱包 - 优化版本,只调用一次 deriveBuyerKey
|
|
8
8
|
* @param addressIndex - 地址索引,默认为0
|
|
9
|
+
* @param mnemonic - 可选:直接提供助记词,否则从环境变量获取
|
|
9
10
|
* @returns 钱包相关的密钥、脚本和地址
|
|
10
11
|
*/
|
|
11
|
-
export function initializeWallet(addressIndex = 0) {
|
|
12
|
-
|
|
12
|
+
export function initializeWallet(addressIndex = 0, mnemonic) {
|
|
13
|
+
// 如果提供了助记词参数就使用,否则从环境变量获取
|
|
14
|
+
const finalMnemonic = mnemonic || getMnemonic();
|
|
15
|
+
if (!finalMnemonic) {
|
|
16
|
+
throw new Error('助记词未设置:请在环境变量中设置 MNEMONIC 或在函数调用中提供助记词参数');
|
|
17
|
+
}
|
|
13
18
|
console.log('使用助记词派生私钥...');
|
|
14
19
|
// 只调用一次 deriveBuyerKey,获取完整信息
|
|
15
|
-
const derived = deriveBuyerKey(
|
|
20
|
+
const derived = deriveBuyerKey(finalMnemonic, addressIndex);
|
|
16
21
|
const ecc = new Ecc();
|
|
17
22
|
const decoded = wif.decode(derived.wif);
|
|
18
23
|
const privateKey = decoded.privateKey;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-utils.js","sourceRoot":"","sources":["../../wallet/wallet-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,MAAM,EACJ,GAAG,EACH,MAAM,EACN,OAAO,EACP,SAAS,GACV,GAAG,QAAQ,CAAC;AAab
|
|
1
|
+
{"version":3,"file":"wallet-utils.js","sourceRoot":"","sources":["../../wallet/wallet-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,QAAQ,MAAM,WAAW,CAAC;AAEjC,MAAM,EACJ,GAAG,EACH,MAAM,EACN,OAAO,EACP,SAAS,GACV,GAAG,QAAQ,CAAC;AAab;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,eAAuB,CAAC,EAAE,QAAiB;IAC1E,0BAA0B;IAC1B,MAAM,aAAa,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC;IAEhD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAE5B,8BAA8B;IAC9B,MAAM,OAAO,GAAG,cAAc,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IAE5D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;IACtB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE5C,OAAO;QACL,GAAG;QACH,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,WAAW;QACX,OAAO,EAAE,OAAO,CAAC,OAAO,EAAG,YAAY;QACvC,YAAY;KACb,CAAC;AACJ,CAAC"}
|