@haven-fi/solauto-sdk 1.0.276 → 1.0.278
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/transactions/transactionsManager.d.ts.map +1 -1
- package/dist/transactions/transactionsManager.js +2 -12
- package/dist/utils/solanaUtils.d.ts.map +1 -1
- package/dist/utils/solanaUtils.js +3 -3
- package/package.json +1 -1
- package/src/transactions/transactionsManager.ts +2 -15
- package/src/utils/solanaUtils.ts +16 -15
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,OAAO,EACL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAO7D,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAqCD,qBAAa,eAAe;IAMjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM;IARtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACjB,WAAW,EAAE,OAAO,CAAS;gBAG3B,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAKV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AAoFD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAVpB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;gBAGzB,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,OAAO,GAAE,MAAU,EACnB,UAAU,GAAE,MAAY;YAQpB,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;
|
1
|
+
{"version":3,"file":"transactionsManager.d.ts","sourceRoot":"","sources":["../../src/transactions/transactionsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAMzD,OAAO,EACL,aAAa,EAEd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,kBAAkB,EAElB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,oBAAoB,EAAa,MAAM,YAAY,CAAC;AAO7D,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM;CAK5B;AAqCD,qBAAa,eAAe;IAMjB,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM;IARtB,oBAAoB,EAAG,MAAM,EAAE,CAAC;IAChC,EAAE,CAAC,EAAE,kBAAkB,CAAC;IACjB,WAAW,EAAE,OAAO,CAAS;gBAG3B,OAAO,EAAE,CACd,UAAU,EAAE,MAAM,KACf,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,EACxC,IAAI,CAAC,EAAE,MAAM,YAAA;IAGhB,UAAU;IAKV,OAAO,CAAC,UAAU,EAAE,MAAM;IAMhC,cAAc,IAAI,MAAM,EAAE;CAY3B;AAoFD,oBAAY,iBAAiB;IAC3B,OAAO,YAAY;IACnB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,EAAE,CAAC;AAEJ,qBAAa,mBAAmB;IAK5B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,cAAc,CAAC;IACvB,OAAO,CAAC,MAAM,CAAC;IACf,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,aAAa,CAAC;IACtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,UAAU;IAVpB,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,YAAY,CAAe;gBAGzB,SAAS,EAAE,aAAa,GAAG,oBAAoB,EAC/C,cAAc,CAAC,GAAE,CAAC,QAAQ,EAAE,0BAA0B,KAAK,IAAI,aAAA,EAC/D,MAAM,CAAC,EAAE,kBAAkB,YAAA,EAC3B,kBAAkB,GAAE,kBAA2C,EAC/D,aAAa,CAAC,EAAE,aAAa,YAAA,EAC7B,OAAO,GAAE,MAAU,EACnB,UAAU,GAAE,MAAY;YAQpB,uBAAuB;IAwCrC,OAAO,CAAC,YAAY;YA6CN,aAAa;IAoB3B,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,mBAAmB;YAMb,SAAS;IAgBV,UAAU,CACrB,YAAY,EAAE,eAAe,EAAE,GAC9B,OAAO,CAAC,0BAA0B,CAAC;IA+DzB,IAAI,CACf,KAAK,EAAE,eAAe,EAAE,GACvB,OAAO,CAAC,0BAA0B,CAAC;YA+BxB,qBAAqB;YAuDrB,cAAc;YAqCd,eAAe;CAoD9B"}
|
@@ -217,7 +217,6 @@ class TransactionsManager {
|
|
217
217
|
this.txHandler.log(`${name} is ${status.toString().toLowerCase()}`);
|
218
218
|
this.statusCallback?.([...this.statuses]);
|
219
219
|
}
|
220
|
-
// TODO remove me
|
221
220
|
async debugAccounts(itemSet, tx) {
|
222
221
|
const lutInputs = await itemSet.lookupTables.getLutInputs([]);
|
223
222
|
const lutAccounts = lutInputs.map((x) => x.addresses).flat();
|
@@ -260,14 +259,11 @@ class TransactionsManager {
|
|
260
259
|
for (const item of items) {
|
261
260
|
await item.initialize();
|
262
261
|
}
|
263
|
-
|
262
|
+
let [choresBefore, choresAfter] = await (0, transactionUtils_1.getTransactionChores)(client, (0, umi_1.transactionBuilder)().add(items
|
264
263
|
.filter((x) => x.tx && x.tx.getInstructions().length > 0)
|
265
264
|
.map((x) => x.tx)));
|
266
265
|
if (updateLookupTable && !updateLookupTable?.new) {
|
267
|
-
choresBefore.prepend(updateLookupTable.tx);
|
268
|
-
this.txHandler.log(updateLookupTable.tx
|
269
|
-
.getInstructions()
|
270
|
-
.map((x) => x.programId.toString()));
|
266
|
+
choresBefore = choresBefore.prepend(updateLookupTable.tx);
|
271
267
|
}
|
272
268
|
if (choresBefore.getInstructions().length > 0) {
|
273
269
|
const chore = new TransactionItem(async () => ({ tx: choresBefore }), CHORES_TX_NAME);
|
@@ -302,12 +298,6 @@ class TransactionsManager {
|
|
302
298
|
const itemSets = await this.assembleTransactionSets(items);
|
303
299
|
this.updateStatusForSets(itemSets);
|
304
300
|
this.txHandler.log("Initial item sets:", itemSets.length);
|
305
|
-
for (const itemSet of itemSets) {
|
306
|
-
const programs = (await itemSet.getSingleTransaction())
|
307
|
-
.getInstructions()
|
308
|
-
.map((x) => x.programId);
|
309
|
-
this.txHandler.log(programs.map((x) => x.toString()));
|
310
|
-
}
|
311
301
|
if (this.txType === "only-simulate" && itemSets.length > 1) {
|
312
302
|
this.txHandler.log("Only simulate and more than 1 transaction. Skipping...");
|
313
303
|
return [];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,GAAG,EACH,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAKL,UAAU,EACV,SAAS,EAKT,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAgBzB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAIlE,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,UAErD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,UAE3D;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,SAAgC,GAC1C,CAAC,UAAU,EAAE,GAAG,CAAC,CAQnB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,sBAAsB,GACzB,kBAAkB,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAOpB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,kBAAkB,CAUpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,MAAM,GACf,kBAAkB,CASpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAKpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAKpB;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAkBpC;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBAc1B;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBA2D1B;
|
1
|
+
{"version":3,"file":"solanaUtils.d.ts","sourceRoot":"","sources":["../../src/utils/solanaUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,kBAAkB,EAClB,GAAG,EACH,kBAAkB,EAGnB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAKL,UAAU,EACV,SAAS,EAKT,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAgBzB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAIlE,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,UAErD;AAED,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,UAE3D;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,SAAgC,GAC1C,CAAC,UAAU,EAAE,GAAG,CAAC,CAQnB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,sBAAsB,GACzB,kBAAkB,CAMpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,GACtB,kBAAkB,CAOpB;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,kBAAkB,CAOpB;AAED,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,kBAAkB,CAUpB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,SAAS,EACtB,QAAQ,EAAE,MAAM,GACf,kBAAkB,CASpB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,SAAS,EACvB,SAAS,EAAE,SAAS,GACnB,kBAAkB,CAKpB;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,GACb,kBAAkB,CAKpB;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,GAAG,EACR,oBAAoB,EAAE,MAAM,EAAE,GAC7B,OAAO,CAAC,uBAAuB,EAAE,CAAC,CAkBpC;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBAc1B;AAED,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,kBAAkB,EAC/B,gBAAgB,CAAC,EAAE,MAAM,EACzB,gBAAgB,CAAC,EAAE,MAAM,sBA2D1B;AAuBD,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,kBAAkB,EACtB,eAAe,EAAE,kBAAkB,GAClC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAsB7B;AAiDD,wBAAsB,8BAA8B,CAClD,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,UAAU,EACtB,EAAE,EAAE,kBAAkB,EACtB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,eAAe,GAAE,kBAA2C,EAC5D,cAAc,CAAC,EAAE,MAAM,IAAI,GAC1B,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,CA0DjC"}
|
@@ -138,8 +138,8 @@ function assembleFinalTransaction(signer, transaction, computeUnitPrice, compute
|
|
138
138
|
}
|
139
139
|
return tx;
|
140
140
|
}
|
141
|
-
async function simulateTransaction(connection, transaction) {
|
142
|
-
const simulationResult = await connection.simulateTransaction(transaction, {
|
141
|
+
async function simulateTransaction(umi, connection, transaction) {
|
142
|
+
const simulationResult = await connection.simulateTransaction(web3_js_1.VersionedTransaction.deserialize(transaction.build(umi).serializedMessage), {
|
143
143
|
sigVerify: false,
|
144
144
|
commitment: "processed",
|
145
145
|
});
|
@@ -217,7 +217,7 @@ async function sendSingleOptimizedTransaction(umi, connection, tx, txType, prior
|
|
217
217
|
}
|
218
218
|
let computeUnitLimit = undefined;
|
219
219
|
if (txType !== "skip-simulation") {
|
220
|
-
const simulationResult = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await simulateTransaction(
|
220
|
+
const simulationResult = await (0, generalUtils_1.retryWithExponentialBackoff)(async () => await simulateTransaction(umi, connection, await assembleFinalTransaction(umi.identity, tx, cuPrice, 1400000).setLatestBlockhash(umi)), 3);
|
221
221
|
simulationResult.value.err;
|
222
222
|
computeUnitLimit = Math.round(simulationResult.value.unitsConsumed * 1.1);
|
223
223
|
(0, generalUtils_1.consoleLog)("Compute unit limit: ", computeUnitLimit);
|
package/package.json
CHANGED
@@ -312,7 +312,6 @@ export class TransactionsManager {
|
|
312
312
|
this.statusCallback?.([...this.statuses]);
|
313
313
|
}
|
314
314
|
|
315
|
-
// TODO remove me
|
316
315
|
private async debugAccounts(itemSet: TransactionSet, tx: TransactionBuilder) {
|
317
316
|
const lutInputs = await itemSet.lookupTables.getLutInputs([]);
|
318
317
|
const lutAccounts = lutInputs.map((x) => x.addresses).flat();
|
@@ -382,7 +381,7 @@ export class TransactionsManager {
|
|
382
381
|
await item.initialize();
|
383
382
|
}
|
384
383
|
|
385
|
-
|
384
|
+
let [choresBefore, choresAfter] = await getTransactionChores(
|
386
385
|
client,
|
387
386
|
transactionBuilder().add(
|
388
387
|
items
|
@@ -391,12 +390,7 @@ export class TransactionsManager {
|
|
391
390
|
)
|
392
391
|
);
|
393
392
|
if (updateLookupTable && !updateLookupTable?.new) {
|
394
|
-
choresBefore.prepend(updateLookupTable.tx);
|
395
|
-
this.txHandler.log(
|
396
|
-
updateLookupTable.tx
|
397
|
-
.getInstructions()
|
398
|
-
.map((x) => x.programId.toString())
|
399
|
-
);
|
393
|
+
choresBefore = choresBefore.prepend(updateLookupTable.tx);
|
400
394
|
}
|
401
395
|
if (choresBefore.getInstructions().length > 0) {
|
402
396
|
const chore = new TransactionItem(
|
@@ -452,13 +446,6 @@ export class TransactionsManager {
|
|
452
446
|
this.updateStatusForSets(itemSets);
|
453
447
|
this.txHandler.log("Initial item sets:", itemSets.length);
|
454
448
|
|
455
|
-
for (const itemSet of itemSets) {
|
456
|
-
const programs = (await itemSet.getSingleTransaction())
|
457
|
-
.getInstructions()
|
458
|
-
.map((x) => x.programId);
|
459
|
-
this.txHandler.log(programs.map((x) => x.toString()));
|
460
|
-
}
|
461
|
-
|
462
449
|
if (this.txType === "only-simulate" && itemSets.length > 1) {
|
463
450
|
this.txHandler.log(
|
464
451
|
"Only simulate and more than 1 transaction. Skipping..."
|
package/src/utils/solanaUtils.ts
CHANGED
@@ -267,13 +267,17 @@ export function assembleFinalTransaction(
|
|
267
267
|
}
|
268
268
|
|
269
269
|
async function simulateTransaction(
|
270
|
+
umi: Umi,
|
270
271
|
connection: Connection,
|
271
|
-
transaction:
|
272
|
+
transaction: TransactionBuilder
|
272
273
|
): Promise<RpcResponseAndContext<SimulatedTransactionResponse>> {
|
273
|
-
const simulationResult = await connection.simulateTransaction(
|
274
|
-
|
275
|
-
|
276
|
-
|
274
|
+
const simulationResult = await connection.simulateTransaction(
|
275
|
+
VersionedTransaction.deserialize(transaction.build(umi).serializedMessage),
|
276
|
+
{
|
277
|
+
sigVerify: false,
|
278
|
+
commitment: "processed",
|
279
|
+
}
|
280
|
+
);
|
277
281
|
if (simulationResult.value.err) {
|
278
282
|
simulationResult.value.logs?.forEach((x: any) => {
|
279
283
|
consoleLog(x);
|
@@ -384,17 +388,14 @@ export async function sendSingleOptimizedTransaction(
|
|
384
388
|
const simulationResult = await retryWithExponentialBackoff(
|
385
389
|
async () =>
|
386
390
|
await simulateTransaction(
|
391
|
+
umi,
|
387
392
|
connection,
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
1_400_000
|
395
|
-
).setLatestBlockhash(umi)
|
396
|
-
).build(umi)
|
397
|
-
)
|
393
|
+
await assembleFinalTransaction(
|
394
|
+
umi.identity,
|
395
|
+
tx,
|
396
|
+
cuPrice,
|
397
|
+
1_400_000
|
398
|
+
).setLatestBlockhash(umi)
|
398
399
|
),
|
399
400
|
3
|
400
401
|
);
|