@layerzerolabs/lz-corekit-solana 3.0.2-initia.5 → 3.0.3
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/CHANGELOG.md +4 -4
- package/dist/index.cjs +405 -50
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +5 -16
- package/dist/index.d.ts +5 -16
- package/dist/index.mjs +408 -52
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# @layerzerolabs/lz-corekit-solana
|
|
2
2
|
|
|
3
|
-
## 3.0.
|
|
3
|
+
## 3.0.3
|
|
4
4
|
|
|
5
5
|
### Patch Changes
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
- Updated dependencies
|
|
9
|
-
- @layerzerolabs/lz-core@3.0.
|
|
7
|
+
- 49d6081: testnets unichain, hyperliquid
|
|
8
|
+
- Updated dependencies [49d6081]
|
|
9
|
+
- @layerzerolabs/lz-core@3.0.3
|
|
10
10
|
|
|
11
11
|
## 3.0.2
|
|
12
12
|
|
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var bytes = require('@ethersproject/bytes');
|
|
4
3
|
var web3_js = require('@solana/web3.js');
|
|
5
4
|
var lzCore = require('@layerzerolabs/lz-core');
|
|
5
|
+
var bytes = require('@ethersproject/bytes');
|
|
6
6
|
var bip39 = require('bip39');
|
|
7
7
|
var ed25519HdKey = require('ed25519-hd-key');
|
|
8
8
|
var secp256k1 = require('@noble/secp256k1');
|
|
@@ -27,6 +27,398 @@ function _interopNamespace(e) {
|
|
|
27
27
|
|
|
28
28
|
var bip39__namespace = /*#__PURE__*/_interopNamespace(bip39);
|
|
29
29
|
|
|
30
|
+
// src/providers/solana.ts
|
|
31
|
+
|
|
32
|
+
// ../../../node_modules/.store/@ethersproject-logger-npm-5.7.0-63fe9c3d29/package/lib.esm/_version.js
|
|
33
|
+
var version = "logger/5.7.0";
|
|
34
|
+
|
|
35
|
+
// ../../../node_modules/.store/@ethersproject-logger-npm-5.7.0-63fe9c3d29/package/lib.esm/index.js
|
|
36
|
+
var _permanentCensorErrors = false;
|
|
37
|
+
var _censorErrors = false;
|
|
38
|
+
var LogLevels = { debug: 1, "default": 2, info: 2, warning: 3, error: 4, off: 5 };
|
|
39
|
+
var _logLevel = LogLevels["default"];
|
|
40
|
+
var _globalLogger = null;
|
|
41
|
+
function _checkNormalize() {
|
|
42
|
+
try {
|
|
43
|
+
const missing = [];
|
|
44
|
+
["NFD", "NFC", "NFKD", "NFKC"].forEach((form) => {
|
|
45
|
+
try {
|
|
46
|
+
if ("test".normalize(form) !== "test") {
|
|
47
|
+
throw new Error("bad normalize");
|
|
48
|
+
}
|
|
49
|
+
;
|
|
50
|
+
} catch (error) {
|
|
51
|
+
missing.push(form);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
if (missing.length) {
|
|
55
|
+
throw new Error("missing " + missing.join(", "));
|
|
56
|
+
}
|
|
57
|
+
if (String.fromCharCode(233).normalize("NFD") !== String.fromCharCode(101, 769)) {
|
|
58
|
+
throw new Error("broken implementation");
|
|
59
|
+
}
|
|
60
|
+
} catch (error) {
|
|
61
|
+
return error.message;
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
var _normalizeError = _checkNormalize();
|
|
66
|
+
var LogLevel;
|
|
67
|
+
(function(LogLevel2) {
|
|
68
|
+
LogLevel2["DEBUG"] = "DEBUG";
|
|
69
|
+
LogLevel2["INFO"] = "INFO";
|
|
70
|
+
LogLevel2["WARNING"] = "WARNING";
|
|
71
|
+
LogLevel2["ERROR"] = "ERROR";
|
|
72
|
+
LogLevel2["OFF"] = "OFF";
|
|
73
|
+
})(LogLevel || (LogLevel = {}));
|
|
74
|
+
var ErrorCode;
|
|
75
|
+
(function(ErrorCode2) {
|
|
76
|
+
ErrorCode2["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";
|
|
77
|
+
ErrorCode2["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
|
|
78
|
+
ErrorCode2["UNSUPPORTED_OPERATION"] = "UNSUPPORTED_OPERATION";
|
|
79
|
+
ErrorCode2["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
80
|
+
ErrorCode2["SERVER_ERROR"] = "SERVER_ERROR";
|
|
81
|
+
ErrorCode2["TIMEOUT"] = "TIMEOUT";
|
|
82
|
+
ErrorCode2["BUFFER_OVERRUN"] = "BUFFER_OVERRUN";
|
|
83
|
+
ErrorCode2["NUMERIC_FAULT"] = "NUMERIC_FAULT";
|
|
84
|
+
ErrorCode2["MISSING_NEW"] = "MISSING_NEW";
|
|
85
|
+
ErrorCode2["INVALID_ARGUMENT"] = "INVALID_ARGUMENT";
|
|
86
|
+
ErrorCode2["MISSING_ARGUMENT"] = "MISSING_ARGUMENT";
|
|
87
|
+
ErrorCode2["UNEXPECTED_ARGUMENT"] = "UNEXPECTED_ARGUMENT";
|
|
88
|
+
ErrorCode2["CALL_EXCEPTION"] = "CALL_EXCEPTION";
|
|
89
|
+
ErrorCode2["INSUFFICIENT_FUNDS"] = "INSUFFICIENT_FUNDS";
|
|
90
|
+
ErrorCode2["NONCE_EXPIRED"] = "NONCE_EXPIRED";
|
|
91
|
+
ErrorCode2["REPLACEMENT_UNDERPRICED"] = "REPLACEMENT_UNDERPRICED";
|
|
92
|
+
ErrorCode2["UNPREDICTABLE_GAS_LIMIT"] = "UNPREDICTABLE_GAS_LIMIT";
|
|
93
|
+
ErrorCode2["TRANSACTION_REPLACED"] = "TRANSACTION_REPLACED";
|
|
94
|
+
ErrorCode2["ACTION_REJECTED"] = "ACTION_REJECTED";
|
|
95
|
+
})(ErrorCode || (ErrorCode = {}));
|
|
96
|
+
var HEX = "0123456789abcdef";
|
|
97
|
+
var Logger = class _Logger {
|
|
98
|
+
constructor(version3) {
|
|
99
|
+
Object.defineProperty(this, "version", {
|
|
100
|
+
enumerable: true,
|
|
101
|
+
value: version3,
|
|
102
|
+
writable: false
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
_log(logLevel, args) {
|
|
106
|
+
const level = logLevel.toLowerCase();
|
|
107
|
+
if (LogLevels[level] == null) {
|
|
108
|
+
this.throwArgumentError("invalid log level name", "logLevel", logLevel);
|
|
109
|
+
}
|
|
110
|
+
if (_logLevel > LogLevels[level]) {
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
console.log.apply(console, args);
|
|
114
|
+
}
|
|
115
|
+
debug(...args) {
|
|
116
|
+
this._log(_Logger.levels.DEBUG, args);
|
|
117
|
+
}
|
|
118
|
+
info(...args) {
|
|
119
|
+
this._log(_Logger.levels.INFO, args);
|
|
120
|
+
}
|
|
121
|
+
warn(...args) {
|
|
122
|
+
this._log(_Logger.levels.WARNING, args);
|
|
123
|
+
}
|
|
124
|
+
makeError(message, code, params) {
|
|
125
|
+
if (_censorErrors) {
|
|
126
|
+
return this.makeError("censored error", code, {});
|
|
127
|
+
}
|
|
128
|
+
if (!code) {
|
|
129
|
+
code = _Logger.errors.UNKNOWN_ERROR;
|
|
130
|
+
}
|
|
131
|
+
if (!params) {
|
|
132
|
+
params = {};
|
|
133
|
+
}
|
|
134
|
+
const messageDetails = [];
|
|
135
|
+
Object.keys(params).forEach((key) => {
|
|
136
|
+
const value = params[key];
|
|
137
|
+
try {
|
|
138
|
+
if (value instanceof Uint8Array) {
|
|
139
|
+
let hex = "";
|
|
140
|
+
for (let i = 0; i < value.length; i++) {
|
|
141
|
+
hex += HEX[value[i] >> 4];
|
|
142
|
+
hex += HEX[value[i] & 15];
|
|
143
|
+
}
|
|
144
|
+
messageDetails.push(key + "=Uint8Array(0x" + hex + ")");
|
|
145
|
+
} else {
|
|
146
|
+
messageDetails.push(key + "=" + JSON.stringify(value));
|
|
147
|
+
}
|
|
148
|
+
} catch (error2) {
|
|
149
|
+
messageDetails.push(key + "=" + JSON.stringify(params[key].toString()));
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
messageDetails.push(`code=${code}`);
|
|
153
|
+
messageDetails.push(`version=${this.version}`);
|
|
154
|
+
const reason = message;
|
|
155
|
+
let url = "";
|
|
156
|
+
switch (code) {
|
|
157
|
+
case ErrorCode.NUMERIC_FAULT: {
|
|
158
|
+
url = "NUMERIC_FAULT";
|
|
159
|
+
const fault = message;
|
|
160
|
+
switch (fault) {
|
|
161
|
+
case "overflow":
|
|
162
|
+
case "underflow":
|
|
163
|
+
case "division-by-zero":
|
|
164
|
+
url += "-" + fault;
|
|
165
|
+
break;
|
|
166
|
+
case "negative-power":
|
|
167
|
+
case "negative-width":
|
|
168
|
+
url += "-unsupported";
|
|
169
|
+
break;
|
|
170
|
+
case "unbound-bitwise-result":
|
|
171
|
+
url += "-unbound-result";
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
case ErrorCode.CALL_EXCEPTION:
|
|
177
|
+
case ErrorCode.INSUFFICIENT_FUNDS:
|
|
178
|
+
case ErrorCode.MISSING_NEW:
|
|
179
|
+
case ErrorCode.NONCE_EXPIRED:
|
|
180
|
+
case ErrorCode.REPLACEMENT_UNDERPRICED:
|
|
181
|
+
case ErrorCode.TRANSACTION_REPLACED:
|
|
182
|
+
case ErrorCode.UNPREDICTABLE_GAS_LIMIT:
|
|
183
|
+
url = code;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
if (url) {
|
|
187
|
+
message += " [ See: https://links.ethers.org/v5-errors-" + url + " ]";
|
|
188
|
+
}
|
|
189
|
+
if (messageDetails.length) {
|
|
190
|
+
message += " (" + messageDetails.join(", ") + ")";
|
|
191
|
+
}
|
|
192
|
+
const error = new Error(message);
|
|
193
|
+
error.reason = reason;
|
|
194
|
+
error.code = code;
|
|
195
|
+
Object.keys(params).forEach(function(key) {
|
|
196
|
+
error[key] = params[key];
|
|
197
|
+
});
|
|
198
|
+
return error;
|
|
199
|
+
}
|
|
200
|
+
throwError(message, code, params) {
|
|
201
|
+
throw this.makeError(message, code, params);
|
|
202
|
+
}
|
|
203
|
+
throwArgumentError(message, name, value) {
|
|
204
|
+
return this.throwError(message, _Logger.errors.INVALID_ARGUMENT, {
|
|
205
|
+
argument: name,
|
|
206
|
+
value
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
assert(condition, message, code, params) {
|
|
210
|
+
if (!!condition) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
this.throwError(message, code, params);
|
|
214
|
+
}
|
|
215
|
+
assertArgument(condition, message, name, value) {
|
|
216
|
+
if (!!condition) {
|
|
217
|
+
return;
|
|
218
|
+
}
|
|
219
|
+
this.throwArgumentError(message, name, value);
|
|
220
|
+
}
|
|
221
|
+
checkNormalize(message) {
|
|
222
|
+
if (_normalizeError) {
|
|
223
|
+
this.throwError("platform missing String.prototype.normalize", _Logger.errors.UNSUPPORTED_OPERATION, {
|
|
224
|
+
operation: "String.prototype.normalize",
|
|
225
|
+
form: _normalizeError
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
checkSafeUint53(value, message) {
|
|
230
|
+
if (typeof value !== "number") {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
if (message == null) {
|
|
234
|
+
message = "value not safe";
|
|
235
|
+
}
|
|
236
|
+
if (value < 0 || value >= 9007199254740991) {
|
|
237
|
+
this.throwError(message, _Logger.errors.NUMERIC_FAULT, {
|
|
238
|
+
operation: "checkSafeInteger",
|
|
239
|
+
fault: "out-of-safe-range",
|
|
240
|
+
value
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
if (value % 1) {
|
|
244
|
+
this.throwError(message, _Logger.errors.NUMERIC_FAULT, {
|
|
245
|
+
operation: "checkSafeInteger",
|
|
246
|
+
fault: "non-integer",
|
|
247
|
+
value
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
checkArgumentCount(count, expectedCount, message) {
|
|
252
|
+
if (message) {
|
|
253
|
+
message = ": " + message;
|
|
254
|
+
} else {
|
|
255
|
+
message = "";
|
|
256
|
+
}
|
|
257
|
+
if (count < expectedCount) {
|
|
258
|
+
this.throwError("missing argument" + message, _Logger.errors.MISSING_ARGUMENT, {
|
|
259
|
+
count,
|
|
260
|
+
expectedCount
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
if (count > expectedCount) {
|
|
264
|
+
this.throwError("too many arguments" + message, _Logger.errors.UNEXPECTED_ARGUMENT, {
|
|
265
|
+
count,
|
|
266
|
+
expectedCount
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
checkNew(target, kind) {
|
|
271
|
+
if (target === Object || target == null) {
|
|
272
|
+
this.throwError("missing new", _Logger.errors.MISSING_NEW, { name: kind.name });
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
checkAbstract(target, kind) {
|
|
276
|
+
if (target === kind) {
|
|
277
|
+
this.throwError("cannot instantiate abstract class " + JSON.stringify(kind.name) + " directly; use a sub-class", _Logger.errors.UNSUPPORTED_OPERATION, { name: target.name, operation: "new" });
|
|
278
|
+
} else if (target === Object || target == null) {
|
|
279
|
+
this.throwError("missing new", _Logger.errors.MISSING_NEW, { name: kind.name });
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
static globalLogger() {
|
|
283
|
+
if (!_globalLogger) {
|
|
284
|
+
_globalLogger = new _Logger(version);
|
|
285
|
+
}
|
|
286
|
+
return _globalLogger;
|
|
287
|
+
}
|
|
288
|
+
static setCensorship(censorship, permanent) {
|
|
289
|
+
if (!censorship && permanent) {
|
|
290
|
+
this.globalLogger().throwError("cannot permanently disable censorship", _Logger.errors.UNSUPPORTED_OPERATION, {
|
|
291
|
+
operation: "setCensorship"
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
if (_permanentCensorErrors) {
|
|
295
|
+
if (!censorship) {
|
|
296
|
+
return;
|
|
297
|
+
}
|
|
298
|
+
this.globalLogger().throwError("error censorship permanent", _Logger.errors.UNSUPPORTED_OPERATION, {
|
|
299
|
+
operation: "setCensorship"
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
_censorErrors = !!censorship;
|
|
303
|
+
_permanentCensorErrors = !!permanent;
|
|
304
|
+
}
|
|
305
|
+
static setLogLevel(logLevel) {
|
|
306
|
+
const level = LogLevels[logLevel.toLowerCase()];
|
|
307
|
+
if (level == null) {
|
|
308
|
+
_Logger.globalLogger().warn("invalid log level - " + logLevel);
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
_logLevel = level;
|
|
312
|
+
}
|
|
313
|
+
static from(version3) {
|
|
314
|
+
return new _Logger(version3);
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
Logger.errors = ErrorCode;
|
|
318
|
+
Logger.levels = LogLevel;
|
|
319
|
+
|
|
320
|
+
// ../../../node_modules/.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package/lib.esm/_version.js
|
|
321
|
+
var version2 = "bytes/5.7.0";
|
|
322
|
+
|
|
323
|
+
// ../../../node_modules/.store/@ethersproject-bytes-npm-5.7.0-4454fe4cb0/package/lib.esm/index.js
|
|
324
|
+
var logger = new Logger(version2);
|
|
325
|
+
function isHexable(value) {
|
|
326
|
+
return !!value.toHexString;
|
|
327
|
+
}
|
|
328
|
+
function addSlice(array) {
|
|
329
|
+
if (array.slice) {
|
|
330
|
+
return array;
|
|
331
|
+
}
|
|
332
|
+
array.slice = function() {
|
|
333
|
+
const args = Array.prototype.slice.call(arguments);
|
|
334
|
+
return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));
|
|
335
|
+
};
|
|
336
|
+
return array;
|
|
337
|
+
}
|
|
338
|
+
function isInteger(value) {
|
|
339
|
+
return typeof value === "number" && value == value && value % 1 === 0;
|
|
340
|
+
}
|
|
341
|
+
function isBytes(value) {
|
|
342
|
+
if (value == null) {
|
|
343
|
+
return false;
|
|
344
|
+
}
|
|
345
|
+
if (value.constructor === Uint8Array) {
|
|
346
|
+
return true;
|
|
347
|
+
}
|
|
348
|
+
if (typeof value === "string") {
|
|
349
|
+
return false;
|
|
350
|
+
}
|
|
351
|
+
if (!isInteger(value.length) || value.length < 0) {
|
|
352
|
+
return false;
|
|
353
|
+
}
|
|
354
|
+
for (let i = 0; i < value.length; i++) {
|
|
355
|
+
const v = value[i];
|
|
356
|
+
if (!isInteger(v) || v < 0 || v >= 256) {
|
|
357
|
+
return false;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return true;
|
|
361
|
+
}
|
|
362
|
+
function arrayify(value, options) {
|
|
363
|
+
if (!options) {
|
|
364
|
+
options = {};
|
|
365
|
+
}
|
|
366
|
+
if (typeof value === "number") {
|
|
367
|
+
logger.checkSafeUint53(value, "invalid arrayify value");
|
|
368
|
+
const result = [];
|
|
369
|
+
while (value) {
|
|
370
|
+
result.unshift(value & 255);
|
|
371
|
+
value = parseInt(String(value / 256));
|
|
372
|
+
}
|
|
373
|
+
if (result.length === 0) {
|
|
374
|
+
result.push(0);
|
|
375
|
+
}
|
|
376
|
+
return addSlice(new Uint8Array(result));
|
|
377
|
+
}
|
|
378
|
+
if (options.allowMissingPrefix && typeof value === "string" && value.substring(0, 2) !== "0x") {
|
|
379
|
+
value = "0x" + value;
|
|
380
|
+
}
|
|
381
|
+
if (isHexable(value)) {
|
|
382
|
+
value = value.toHexString();
|
|
383
|
+
}
|
|
384
|
+
if (isHexString(value)) {
|
|
385
|
+
let hex = value.substring(2);
|
|
386
|
+
if (hex.length % 2) {
|
|
387
|
+
if (options.hexPad === "left") {
|
|
388
|
+
hex = "0" + hex;
|
|
389
|
+
} else if (options.hexPad === "right") {
|
|
390
|
+
hex += "0";
|
|
391
|
+
} else {
|
|
392
|
+
logger.throwArgumentError("hex data is odd-length", "value", value);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
const result = [];
|
|
396
|
+
for (let i = 0; i < hex.length; i += 2) {
|
|
397
|
+
result.push(parseInt(hex.substring(i, i + 2), 16));
|
|
398
|
+
}
|
|
399
|
+
return addSlice(new Uint8Array(result));
|
|
400
|
+
}
|
|
401
|
+
if (isBytes(value)) {
|
|
402
|
+
return addSlice(new Uint8Array(value));
|
|
403
|
+
}
|
|
404
|
+
return logger.throwArgumentError("invalid arrayify value", "value", value);
|
|
405
|
+
}
|
|
406
|
+
function isHexString(value, length) {
|
|
407
|
+
if (typeof value !== "string" || !value.match(/^0x[0-9A-Fa-f]*$/)) {
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
if (length && value.length !== 2 + 2 * length) {
|
|
411
|
+
return false;
|
|
412
|
+
}
|
|
413
|
+
return true;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// src/utils.ts
|
|
417
|
+
function toRawTransaction(transaction) {
|
|
418
|
+
const retval = typeof transaction === "string" ? arrayify(transaction) : transaction.serialize();
|
|
419
|
+
return retval;
|
|
420
|
+
}
|
|
421
|
+
|
|
30
422
|
// src/providers/solana.ts
|
|
31
423
|
var SolanaProvider = class _SolanaProvider {
|
|
32
424
|
constructor(url) {
|
|
@@ -102,30 +494,21 @@ var SolanaProvider = class _SolanaProvider {
|
|
|
102
494
|
}
|
|
103
495
|
async sendTransaction(transaction, sendOptions) {
|
|
104
496
|
const _transaction = transaction.signed;
|
|
105
|
-
const
|
|
497
|
+
const rawTransaction = toRawTransaction(_transaction);
|
|
498
|
+
const response = await this.nativeProvider.sendRawTransaction(rawTransaction, sendOptions);
|
|
106
499
|
return lzCore.TransactionPending.from(response);
|
|
107
500
|
}
|
|
108
501
|
async sendAndConfirm(transaction, opts) {
|
|
109
502
|
const _transaction = transaction.signed;
|
|
503
|
+
const rawTransaction = toRawTransaction(_transaction);
|
|
110
504
|
const response = await web3_js.sendAndConfirmRawTransaction(
|
|
111
505
|
this.nativeProvider,
|
|
112
|
-
Buffer.from(
|
|
506
|
+
Buffer.from(rawTransaction),
|
|
113
507
|
opts
|
|
114
508
|
);
|
|
115
509
|
return lzCore.TransactionReceipt.from(response);
|
|
116
510
|
}
|
|
117
511
|
};
|
|
118
|
-
async function signWithECDSA(data, privateKey) {
|
|
119
|
-
const [signature, recoveryId] = await secp256k1.sign(data, privateKey.replace("0x", ""), {
|
|
120
|
-
canonical: true,
|
|
121
|
-
recovered: true,
|
|
122
|
-
der: false
|
|
123
|
-
});
|
|
124
|
-
return {
|
|
125
|
-
signature,
|
|
126
|
-
recoveryId
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
512
|
function getECDSAPublicKey(privateKey) {
|
|
130
513
|
return bytes.hexlify(secp256k1.getPublicKey(privateKey.replace("0x", "")).subarray(1));
|
|
131
514
|
}
|
|
@@ -185,42 +568,26 @@ var SolanaSigner = class {
|
|
|
185
568
|
}
|
|
186
569
|
async sendAndConfirm(transaction, opts) {
|
|
187
570
|
const provider = this.assertAndGetProvider();
|
|
188
|
-
const
|
|
189
|
-
const
|
|
571
|
+
const _transaction = transaction.signed;
|
|
572
|
+
const rawTransaction = toRawTransaction(_transaction);
|
|
573
|
+
const response = await web3_js.sendAndConfirmRawTransaction(provider, Buffer.from(rawTransaction), opts);
|
|
190
574
|
return lzCore.TransactionReceipt.from(response);
|
|
191
575
|
}
|
|
192
576
|
async sendTransaction(transaction, sendOptions) {
|
|
193
577
|
const provider = this.assertAndGetProvider();
|
|
194
|
-
const
|
|
195
|
-
const
|
|
578
|
+
const _transaction = transaction.signed;
|
|
579
|
+
const rawTransaction = toRawTransaction(_transaction);
|
|
580
|
+
const response = await provider.sendRawTransaction(rawTransaction, sendOptions);
|
|
196
581
|
return lzCore.TransactionPending.from(response);
|
|
197
582
|
}
|
|
198
583
|
async signTransaction(transaction, opts) {
|
|
199
|
-
const
|
|
200
|
-
const provider = this.assertAndGetProvider();
|
|
201
|
-
const tx = await this.buildTxByPopulatedTx(populatedTransaction, opts);
|
|
584
|
+
const tx = transaction.request;
|
|
202
585
|
if (isVersionedTransaction(tx)) {
|
|
203
|
-
if (populatedTransaction.signers) {
|
|
204
|
-
tx.sign(populatedTransaction.signers);
|
|
205
|
-
}
|
|
206
586
|
tx.sign([this.keypair]);
|
|
207
587
|
} else {
|
|
208
|
-
tx.feePayer = tx.feePayer ?? this.publicKey;
|
|
209
|
-
tx.recentBlockhash = (await provider.getLatestBlockhash(opts)).blockhash;
|
|
210
|
-
if (populatedTransaction.signers) {
|
|
211
|
-
for (const signer of populatedTransaction.signers) {
|
|
212
|
-
tx.partialSign(signer);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
if (populatedTransaction.lzSingers) {
|
|
216
|
-
for (const signer of populatedTransaction.lzSingers) {
|
|
217
|
-
signer.partialSign(tx);
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
588
|
tx.partialSign(this.keypair);
|
|
221
589
|
}
|
|
222
|
-
|
|
223
|
-
return lzCore.SignedTransaction.from(response);
|
|
590
|
+
return Promise.resolve(lzCore.SignedTransaction.from(tx));
|
|
224
591
|
}
|
|
225
592
|
async signBuffer(_buffer) {
|
|
226
593
|
await Promise.resolve();
|
|
@@ -233,17 +600,6 @@ var SolanaSigner = class {
|
|
|
233
600
|
tx.partialSign(this.keypair);
|
|
234
601
|
}
|
|
235
602
|
}
|
|
236
|
-
async buildTxByPopulatedTx(populatedTransaction, commitmentOrConfig) {
|
|
237
|
-
const provider = this.assertAndGetProvider();
|
|
238
|
-
const tx = new web3_js.VersionedTransaction(
|
|
239
|
-
new web3_js.TransactionMessage({
|
|
240
|
-
payerKey: this.publicKey,
|
|
241
|
-
recentBlockhash: await provider.getLatestBlockhash(commitmentOrConfig).then((r) => r.blockhash),
|
|
242
|
-
instructions: populatedTransaction.instructions
|
|
243
|
-
}).compileToV0Message()
|
|
244
|
-
);
|
|
245
|
-
return tx;
|
|
246
|
-
}
|
|
247
603
|
assertAndGetProvider() {
|
|
248
604
|
if (!this.provider) {
|
|
249
605
|
throw new Error("Signer was not connected to a provider, did you forgot to connect to provider?");
|
|
@@ -271,6 +627,5 @@ exports.SolanaProvider = SolanaProvider;
|
|
|
271
627
|
exports.SolanaSigner = SolanaSigner;
|
|
272
628
|
exports.getECDSAPublicKey = getECDSAPublicKey;
|
|
273
629
|
exports.isVersionedTransaction = isVersionedTransaction;
|
|
274
|
-
exports.signWithECDSA = signWithECDSA;
|
|
275
630
|
//# sourceMappingURL=out.js.map
|
|
276
631
|
//# sourceMappingURL=index.cjs.map
|