@hawksightco/hawk-sdk 1.2.65 → 1.2.67
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.
|
@@ -169,7 +169,10 @@ export declare class Transaction {
|
|
|
169
169
|
* @param connection - The connection to the Solana cluster.
|
|
170
170
|
* @returns A new transaction metadata with the candidate user alt injected.
|
|
171
171
|
*/
|
|
172
|
-
injectCandidateUserAlt(connection: web3.Connection): Promise<
|
|
172
|
+
injectCandidateUserAlt(connection: web3.Connection): Promise<{
|
|
173
|
+
metadata: TransactionMetadata;
|
|
174
|
+
withUserAlt: boolean;
|
|
175
|
+
}>;
|
|
173
176
|
/**
|
|
174
177
|
* Generate a new transaction metadata with a user alt injected.
|
|
175
178
|
*
|
|
@@ -201,7 +204,7 @@ export declare class Transaction {
|
|
|
201
204
|
* @param payer - The payer of the transaction.
|
|
202
205
|
* @returns A new address lookup table.
|
|
203
206
|
*/
|
|
204
|
-
createAddressLookupTable(connection: web3.Connection, payer: web3.PublicKey): Promise<[TransactionMetadata
|
|
207
|
+
createAddressLookupTable(connection: web3.Connection, payer: web3.PublicKey): Promise<[TransactionMetadata, web3.PublicKey]>;
|
|
205
208
|
private pubkeysNotInAlt;
|
|
206
209
|
/**
|
|
207
210
|
* List all unique pubkeys in the instructions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../../src/classes/Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AACtD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,MAAM,4BAA4B,GAAG;IACzC,GAAG,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3C,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2BAA2B,EAAE,MAAM,EAAE,CAAC;IACtC,yBAAyB,EAAE,WAAW,EAAE,CAAC;IACzC,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE;QACR,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,OAAO,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,qBAAa,WAAW;IAkDpB,QAAQ,CAAC,kBAAkB,EAAE,2BAA2B;IACxD,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS;IACjC,SAAS,CAAC,eAAe,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE;IAC9E,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE;IAC/C,SAAS,CAAC,cAAc,EAAE,cAAc;IApD1C,SAAS,CAAC,QAAQ,CAAC,WAAW,QAAQ;IAEtC,2FAA2F;IAC3F,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC;IAC9C,IAAI,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAEvC;IAED,+DAA+D;IAC/D,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,oBAAoB,CAAC;IAC3D,IAAI,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAEpD;IAED,+EAA+E;IAC/E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElD,oFAAoF;IACpF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAM;IAC5C,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,6CAA6C;IAC7C,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,yEAAyE;IACzE,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACvD,IAAI,YAAY,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAEhD;IAED,8BAA8B;IAC9B,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED;;;;;;;OAOG;gBAEQ,kBAAkB,EAAE,2BAA2B,EAC/C,QAAQ,EAAE,IAAI,CAAC,SAAS,EACvB,eAAe,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE,EACrE,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,EACrC,cAAc,EAAE,cAAc,EACxC,QAAQ,GAAE,IAAI,CAAC,sBAAsB,EAAO;IA8C9C;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI;IAuB/D;;;;;;OAMG;IACH,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI;IAcpE;;;;OAIG;IACH,yBAAyB,IAAI,OAAO;IAIpC;;;;;;;;;;OAUG;IACG,gBAAgB,CACpB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,IAAI,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAEzC;;;;;;;;;;;;;OAaG;IACG,gBAAgB,CACpB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,KAAK,EACpB,aAAa,EAAE,MAAM,CAAC,aAAa,EACnC,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAwFzC;;;;;;;;;;;;OAYG;IACG,mBAAmB,CACvB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,MAAM,CAAC;IAiBlB;;;;;OAKG;IACG,mBAAmB,CACvB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,OAAO,GAAE,IAAI,CAAC,OAAO,EAAO,GAC3B,OAAO,CAAC,4BAA4B,CAAC;IAyCxC;;OAEG;IACH,gBAAgB,CACd,eAAe,EAAE,IAAI,CAAC,8BAA8B,GACnD,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC;IAcvD;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAWvD;;OAEG;IACH,SAAS,CAAC,4BAA4B,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,GAAG,MAAM;IAgB5F;;OAEG;IACH,SAAS,CAAC,4BAA4B,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,GAAG,MAAM;IAgB5F;;OAEG;IACH,SAAS,CAAC,oBAAoB;IAY9B;;;;;OAKG;IACG,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"Transaction.d.ts","sourceRoot":"","sources":["../../../src/classes/Transaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAC;AACtD,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,MAAM,4BAA4B,GAAG;IACzC,GAAG,EAAE,IAAI,CAAC,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAAC;IAC3C,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,+BAA+B,GAAG,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IAClE,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,2BAA2B,EAAE,MAAM,EAAE,CAAC;IACtC,yBAAyB,EAAE,WAAW,EAAE,CAAC;IACzC,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE;QACR,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,OAAO,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF;;;GAGG;AACH,qBAAa,WAAW;IAkDpB,QAAQ,CAAC,kBAAkB,EAAE,2BAA2B;IACxD,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS;IACjC,SAAS,CAAC,eAAe,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE;IAC9E,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE;IAC/C,SAAS,CAAC,cAAc,EAAE,cAAc;IApD1C,SAAS,CAAC,QAAQ,CAAC,WAAW,QAAQ;IAEtC,2FAA2F;IAC3F,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC;IAC9C,IAAI,SAAS,IAAI,IAAI,CAAC,kBAAkB,CAEvC;IAED,+DAA+D;IAC/D,SAAS,CAAC,qBAAqB,EAAE,IAAI,CAAC,oBAAoB,CAAC;IAC3D,IAAI,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAEpD;IAED,+EAA+E;IAC/E,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElD,oFAAoF;IACpF,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAM;IAC5C,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,6CAA6C;IAC7C,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,yEAAyE;IACzE,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;IACvD,IAAI,YAAY,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAEhD;IAED,8BAA8B;IAC9B,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED;;;;;;;OAOG;gBAEQ,kBAAkB,EAAE,2BAA2B,EAC/C,QAAQ,EAAE,IAAI,CAAC,SAAS,EACvB,eAAe,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAA;KAAE,EACrE,IAAI,EAAE,IAAI,CAAC,yBAAyB,EAAE,EACrC,cAAc,EAAE,cAAc,EACxC,QAAQ,GAAE,IAAI,CAAC,sBAAsB,EAAO;IA8C9C;;;;;;OAMG;IACH,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,GAAE,OAAe,GAAG,IAAI;IAuB/D;;;;;;OAMG;IACH,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,GAAG,IAAI;IAcpE;;;;OAIG;IACH,yBAAyB,IAAI,OAAO;IAIpC;;;;;;;;;;OAUG;IACG,gBAAgB,CACpB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,IAAI,EACnB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAEzC;;;;;;;;;;;;;OAaG;IACG,gBAAgB,CACpB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,KAAK,EACpB,aAAa,EAAE,MAAM,CAAC,aAAa,EACnC,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAwFzC;;;;;;;;;;;;OAYG;IACG,mBAAmB,CACvB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,sBAAsB,CAAC,EAAE,MAAM,GAC9B,OAAO,CAAC,MAAM,CAAC;IAiBlB;;;;;OAKG;IACG,mBAAmB,CACvB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,OAAO,GAAE,IAAI,CAAC,OAAO,EAAO,GAC3B,OAAO,CAAC,4BAA4B,CAAC;IAyCxC;;OAEG;IACH,gBAAgB,CACd,eAAe,EAAE,IAAI,CAAC,8BAA8B,GACnD,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC;IAcvD;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAWvD;;OAEG;IACH,SAAS,CAAC,4BAA4B,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,GAAG,MAAM;IAgB5F;;OAEG;IACH,SAAS,CAAC,4BAA4B,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,GAAG,MAAM;IAgB5F;;OAEG;IACH,SAAS,CAAC,oBAAoB;IAY9B;;;;;OAKG;IACG,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;QACjE,QAAQ,EAAE,mBAAmB,CAAC;QAC9B,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IAiDF;;;;;;OAMG;IACG,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAa3G;;;;;;OAMG;IACG,+BAA+B,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0BhG;;;;;;OAMG;IACG,0BAA0B,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA2B3F;;;;;;OAMG;IACG,wBAAwB,CAC5B,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,KAAK,EAAE,IAAI,CAAC,SAAS,GACpB,OAAO,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAgFjD,OAAO,CAAC,eAAe;IAKvB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAMnB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,gBAAgB;IAKxB;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAYrB"}
|
|
@@ -407,12 +407,29 @@ class Transaction {
|
|
|
407
407
|
rank.push(p.length);
|
|
408
408
|
}
|
|
409
409
|
if (rank.length === 0) {
|
|
410
|
-
|
|
410
|
+
// If no user alts are found, return the original transaction metadata
|
|
411
|
+
console.log(`No user alts found, returning original transaction metadata`);
|
|
412
|
+
return {
|
|
413
|
+
metadata: yield (0, functions_1.createTxMetadata)(this.generalUtility, connection, this.payerKey.toString(), this.txMetadataResponse),
|
|
414
|
+
withUserAlt: false,
|
|
415
|
+
};
|
|
411
416
|
}
|
|
412
417
|
const highetsRank = Math.max(...rank);
|
|
413
418
|
const highestRankIndex = rank.indexOf(highetsRank);
|
|
414
419
|
const highestRankAlt = userAlts[highestRankIndex];
|
|
415
|
-
|
|
420
|
+
// Generate tx metadata with user alt injected
|
|
421
|
+
const metadata = yield this.injectUserAlt(connection, highestRankAlt.key);
|
|
422
|
+
// Serialize the transaction
|
|
423
|
+
const serializedTxn = metadata.transaction.versionedTransaction.serialize();
|
|
424
|
+
// And check if it is within the max tx size
|
|
425
|
+
const withinSizeLimit = serializedTxn.length < this.MAX_TX_SIZE;
|
|
426
|
+
// Log result
|
|
427
|
+
console.log(`Size limit: ${this.MAX_TX_SIZE}, Transaction size: ${serializedTxn.length}, Within size limit: ${withinSizeLimit}`);
|
|
428
|
+
// Return result
|
|
429
|
+
return {
|
|
430
|
+
metadata,
|
|
431
|
+
withUserAlt: withinSizeLimit,
|
|
432
|
+
};
|
|
416
433
|
});
|
|
417
434
|
}
|
|
418
435
|
/**
|
|
@@ -503,63 +520,63 @@ class Transaction {
|
|
|
503
520
|
// }
|
|
504
521
|
const pubkeys = this.listPubkeys();
|
|
505
522
|
const pubkeysNotInAlt = this.pubkeysNotInAlt(pubkeys);
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
if (lookupTable) {
|
|
518
|
-
const addresses = this._pubkeysNotInAlt(pubkeysNotInAlt, table).map(pubkey => new web3.PublicKey(pubkey));
|
|
519
|
-
console.log(`addresses:`, addresses.map(address => address.toString()));
|
|
520
|
-
if (addresses.length > 0) {
|
|
521
|
-
extendAltIx = web3.AddressLookupTableProgram.extendLookupTable({
|
|
522
|
-
lookupTable,
|
|
523
|
-
authority: payer,
|
|
524
|
-
payer,
|
|
525
|
-
addresses,
|
|
526
|
-
});
|
|
527
|
-
}
|
|
523
|
+
const userAlts = yield (0, functions_1.findUserAlts)(this.payerKey, connection);
|
|
524
|
+
let table, lookupTable, createAltIx, extendAltIx;
|
|
525
|
+
console.log(`userAlts:`, userAlts.map(alt => alt.key.toString()));
|
|
526
|
+
// Find candidate alt to extend
|
|
527
|
+
for (const alt of userAlts) {
|
|
528
|
+
if (alt.state.addresses.length < (256 - pubkeysNotInAlt.length)) {
|
|
529
|
+
lookupTable = alt.key;
|
|
530
|
+
table = alt;
|
|
531
|
+
break;
|
|
528
532
|
}
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
533
|
+
}
|
|
534
|
+
// If candidate alt is found, extend it
|
|
535
|
+
if (lookupTable) {
|
|
536
|
+
const addresses = this._pubkeysNotInAlt(pubkeysNotInAlt, table).map(pubkey => new web3.PublicKey(pubkey));
|
|
537
|
+
console.log(`addresses:`, addresses.map(address => address.toString()));
|
|
538
|
+
if (addresses.length > 0) {
|
|
535
539
|
extendAltIx = web3.AddressLookupTableProgram.extendLookupTable({
|
|
536
540
|
lookupTable,
|
|
537
541
|
authority: payer,
|
|
538
542
|
payer,
|
|
539
|
-
addresses
|
|
543
|
+
addresses,
|
|
540
544
|
});
|
|
541
545
|
}
|
|
542
|
-
const mainInstructions = [];
|
|
543
|
-
if (createAltIx) {
|
|
544
|
-
mainInstructions.push(createAltIx);
|
|
545
|
-
}
|
|
546
|
-
if (extendAltIx) {
|
|
547
|
-
mainInstructions.push(extendAltIx);
|
|
548
|
-
}
|
|
549
|
-
const meta = yield (0, functions_1.createTransactionMeta)({
|
|
550
|
-
payer: this.payerKey,
|
|
551
|
-
description: this.txMetadataResponse.description,
|
|
552
|
-
addressLookupTableAddresses: [],
|
|
553
|
-
mainInstructions,
|
|
554
|
-
});
|
|
555
|
-
return [
|
|
556
|
-
yield (0, functions_1.createTxMetadata)(this.generalUtility, connection, this.payerKey.toString(), meta),
|
|
557
|
-
lookupTable
|
|
558
|
-
];
|
|
559
546
|
}
|
|
560
547
|
else {
|
|
561
|
-
|
|
548
|
+
// If no candidate alt is found, create a new alt
|
|
549
|
+
[createAltIx, lookupTable] = web3.AddressLookupTableProgram.createLookupTable({
|
|
550
|
+
authority: payer,
|
|
551
|
+
payer,
|
|
552
|
+
recentSlot: yield connection.getSlot(),
|
|
553
|
+
});
|
|
554
|
+
extendAltIx = web3.AddressLookupTableProgram.extendLookupTable({
|
|
555
|
+
lookupTable,
|
|
556
|
+
authority: payer,
|
|
557
|
+
payer,
|
|
558
|
+
addresses: pubkeysNotInAlt.map(pubkey => new web3.PublicKey(pubkey)),
|
|
559
|
+
});
|
|
560
|
+
}
|
|
561
|
+
const mainInstructions = [];
|
|
562
|
+
if (createAltIx) {
|
|
563
|
+
mainInstructions.push(createAltIx);
|
|
564
|
+
}
|
|
565
|
+
if (extendAltIx) {
|
|
566
|
+
mainInstructions.push(extendAltIx);
|
|
562
567
|
}
|
|
568
|
+
// Create transaction metadata
|
|
569
|
+
const meta = yield (0, functions_1.createTransactionMeta)({
|
|
570
|
+
payer: this.payerKey,
|
|
571
|
+
description: "Create / Extend address lookup table",
|
|
572
|
+
addressLookupTableAddresses: [],
|
|
573
|
+
mainInstructions,
|
|
574
|
+
});
|
|
575
|
+
// Return transaction metadata and lookup table
|
|
576
|
+
return [
|
|
577
|
+
yield (0, functions_1.createTxMetadata)(this.generalUtility, connection, this.payerKey.toString(), meta),
|
|
578
|
+
lookupTable
|
|
579
|
+
];
|
|
563
580
|
});
|
|
564
581
|
}
|
|
565
582
|
pubkeysNotInAlt(pubkeys) {
|