@nosana/kit 2.3.1 → 2.4.1
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/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/services/programs/jobs/JobsProgram.d.ts +208 -1
- package/dist/services/programs/jobs/JobsProgram.d.ts.map +1 -1
- package/dist/services/programs/jobs/JobsProgram.js +108 -0
- package/dist/services/programs/jobs/JobsProgram.js.map +1 -1
- package/dist/services/programs/jobs/computeUnits.d.ts +16 -0
- package/dist/services/programs/jobs/computeUnits.d.ts.map +1 -0
- package/dist/services/programs/jobs/computeUnits.generated.d.ts +39 -0
- package/dist/services/programs/jobs/computeUnits.generated.d.ts.map +1 -0
- package/dist/services/programs/jobs/computeUnits.generated.js +34 -0
- package/dist/services/programs/jobs/computeUnits.generated.js.map +1 -0
- package/dist/services/programs/jobs/computeUnits.js +20 -0
- package/dist/services/programs/jobs/computeUnits.js.map +1 -0
- package/dist/services/programs/jobs/decode.d.ts +29 -0
- package/dist/services/programs/jobs/decode.d.ts.map +1 -0
- package/dist/services/programs/jobs/decode.js +48 -0
- package/dist/services/programs/jobs/decode.js.map +1 -0
- package/dist/services/programs/jobs/discriminators.d.ts +21 -0
- package/dist/services/programs/jobs/discriminators.d.ts.map +1 -0
- package/dist/services/programs/jobs/discriminators.js +47 -0
- package/dist/services/programs/jobs/discriminators.js.map +1 -0
- package/dist/services/programs/jobs/index.d.ts +4 -0
- package/dist/services/programs/jobs/index.d.ts.map +1 -1
- package/dist/services/programs/jobs/index.js +4 -0
- package/dist/services/programs/jobs/index.js.map +1 -1
- package/dist/services/programs/jobs/instructions/complete.d.ts +1 -1
- package/dist/services/programs/jobs/instructions/complete.d.ts.map +1 -1
- package/dist/services/programs/jobs/instructions/complete.js +3 -3
- package/dist/services/programs/jobs/instructions/complete.js.map +1 -1
- package/dist/services/solana/SolanaService.d.ts +134 -0
- package/dist/services/solana/SolanaService.d.ts.map +1 -1
- package/dist/services/solana/SolanaService.js +155 -0
- package/dist/services/solana/SolanaService.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/packInstructions.d.ts +79 -0
- package/dist/utils/packInstructions.d.ts.map +1 -0
- package/dist/utils/packInstructions.js +110 -0
- package/dist/utils/packInstructions.js.map +1 -0
- package/package.json +2 -2
|
@@ -5,8 +5,16 @@ import { SYSTEM_PROGRAM_ADDRESS, getTransferSolInstruction } from '@solana-progr
|
|
|
5
5
|
import { NosanaError, ErrorCodes } from '../../errors/NosanaError.js';
|
|
6
6
|
import { convertHttpToWebSocketUrl } from '../../utils/convertHttpToWebSocketUrl.js';
|
|
7
7
|
import { resolveAddressOrWallet } from '../../utils/resolveAddressOrWallet.js';
|
|
8
|
+
import { packInstructions, MAX_COMPUTE_UNITS } from '../../utils/packInstructions.js';
|
|
8
9
|
import { resolvePriorityFeeMicroLamports } from './priorityFees.js';
|
|
9
10
|
const SOL_DECIMALS = 9;
|
|
11
|
+
/**
|
|
12
|
+
* Compute units assumed for an instruction whose cost is unknown to the batch
|
|
13
|
+
* sender (no `computeUnits` estimate provided, or an estimator returned
|
|
14
|
+
* undefined). Matches Solana's own per-instruction default, so a transaction is
|
|
15
|
+
* never under-provisioned.
|
|
16
|
+
*/
|
|
17
|
+
const DEFAULT_INSTRUCTION_COMPUTE_UNITS = 200000;
|
|
10
18
|
/**
|
|
11
19
|
* Factory function to create an estimateAndSetComputeUnitLimit function
|
|
12
20
|
* that estimates compute units and adds the set compute unit limit instruction
|
|
@@ -83,6 +91,80 @@ export function createSolanaService(deps, config) {
|
|
|
83
91
|
throw new NosanaError('Failed to get balance info', ErrorCodes.RPC_ERROR, error);
|
|
84
92
|
}
|
|
85
93
|
};
|
|
94
|
+
// Shared setup for the batch methods (send and sign-only): resolve the fee payer,
|
|
95
|
+
// pack the groups into buckets, and expose how to map a bucket back to its input
|
|
96
|
+
// groups and how to prepend the per-bucket compute-unit limit. The send/sign step
|
|
97
|
+
// itself differs between the two callers and stays in each method.
|
|
98
|
+
const prepareBatch = (groups, options) => {
|
|
99
|
+
// Resolve the fee payer so size measurement accounts for account dedup accurately.
|
|
100
|
+
const transactionFeePayer = options?.feePayer ?? feePayer ?? deps.getWallet();
|
|
101
|
+
if (!transactionFeePayer) {
|
|
102
|
+
throw new NosanaError('No wallet found and no feePayer provided', ErrorCodes.NO_WALLET);
|
|
103
|
+
}
|
|
104
|
+
// Per-instruction compute-unit estimate, with a safe fallback for unknown
|
|
105
|
+
// instructions, scaled by an optional safety margin. The margin raises both the
|
|
106
|
+
// baked-in compute-unit limit and the packing bound — used to over-provision when
|
|
107
|
+
// a static estimate may under-budget at land time (e.g. a transaction that is
|
|
108
|
+
// signed now but broadcast later against a deeper, costlier market queue).
|
|
109
|
+
const cuOption = options?.computeUnits;
|
|
110
|
+
const margin = Math.max(options?.computeUnitMargin ?? 1, 0);
|
|
111
|
+
const baseComputeUnits = typeof cuOption === 'function'
|
|
112
|
+
? (ix) => cuOption(ix) ?? DEFAULT_INSTRUCTION_COMPUTE_UNITS
|
|
113
|
+
: () => cuOption ?? DEFAULT_INSTRUCTION_COMPUTE_UNITS;
|
|
114
|
+
const resolveComputeUnits = (ix) => Math.ceil(baseComputeUnits(ix) * margin);
|
|
115
|
+
// Never exceed Solana's hard per-transaction cap, even if a larger value is passed.
|
|
116
|
+
const maxCU = Math.min(options?.maxComputeUnits ?? MAX_COMPUTE_UNITS, MAX_COMPUTE_UNITS);
|
|
117
|
+
// Set the compute-unit limit statically unless the caller opts into simulation.
|
|
118
|
+
const useStaticLimit = options?.estimateComputeUnits !== true;
|
|
119
|
+
// Reserve headroom for the compute-budget / priority-fee instructions that
|
|
120
|
+
// buildTransaction prepends to every transaction, so a packed bucket can never
|
|
121
|
+
// overflow once those are added. Values are placeholders — only their size matters.
|
|
122
|
+
const reservedInstructions = [
|
|
123
|
+
getSetComputeUnitPriceInstruction({ microLamports: 0n }),
|
|
124
|
+
getSetComputeUnitLimitInstruction({ units: 0 }),
|
|
125
|
+
];
|
|
126
|
+
const buckets = packInstructions(groups, {
|
|
127
|
+
feePayer: transactionFeePayer.address,
|
|
128
|
+
reservedInstructions,
|
|
129
|
+
maxTransactionSize: options?.maxTransactionSize,
|
|
130
|
+
// Bound packing by compute units only when we set the limit statically.
|
|
131
|
+
computeUnits: useStaticLimit ? resolveComputeUnits : undefined,
|
|
132
|
+
maxComputeUnits: maxCU,
|
|
133
|
+
});
|
|
134
|
+
// packInstructions preserves instruction object identity, so map each
|
|
135
|
+
// instruction reference back to the index of the group it came from. This lets
|
|
136
|
+
// every per-transaction result report which submitted groups it carried.
|
|
137
|
+
const groupIndexByInstruction = new Map();
|
|
138
|
+
groups.forEach((group, index) => {
|
|
139
|
+
for (const instruction of Array.isArray(group) ? group : [group]) {
|
|
140
|
+
if (!groupIndexByInstruction.has(instruction)) {
|
|
141
|
+
groupIndexByInstruction.set(instruction, index);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
const groupIndicesOf = (bucket) => {
|
|
146
|
+
const indices = [];
|
|
147
|
+
const seen = new Set();
|
|
148
|
+
for (const instruction of bucket) {
|
|
149
|
+
const index = groupIndexByInstruction.get(instruction);
|
|
150
|
+
if (index !== undefined && !seen.has(index)) {
|
|
151
|
+
seen.add(index);
|
|
152
|
+
indices.push(index);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return indices;
|
|
156
|
+
};
|
|
157
|
+
// Prepend an explicit, tight compute-unit limit so priority fees stay accurate.
|
|
158
|
+
const withComputeLimit = (bucket) => useStaticLimit
|
|
159
|
+
? [
|
|
160
|
+
getSetComputeUnitLimitInstruction({
|
|
161
|
+
units: Math.min(bucket.reduce((sum, ix) => sum + resolveComputeUnits(ix), 0), maxCU),
|
|
162
|
+
}),
|
|
163
|
+
...bucket,
|
|
164
|
+
]
|
|
165
|
+
: bucket;
|
|
166
|
+
return { buckets, groupIndicesOf, withComputeLimit };
|
|
167
|
+
};
|
|
86
168
|
return {
|
|
87
169
|
config,
|
|
88
170
|
rpc,
|
|
@@ -269,6 +351,79 @@ export function createSolanaService(deps, config) {
|
|
|
269
351
|
const signedTransaction = await this.signTransaction(transactionMessage);
|
|
270
352
|
return await this.sendTransaction(signedTransaction, { commitment: options?.commitment });
|
|
271
353
|
},
|
|
354
|
+
/**
|
|
355
|
+
* Pack instruction groups into the fewest size-bounded transactions, then build,
|
|
356
|
+
* sign, and send all of them, reporting each transaction's outcome.
|
|
357
|
+
*
|
|
358
|
+
* See the interface documentation for details.
|
|
359
|
+
*/
|
|
360
|
+
async buildSignAndSendBatch(groups, options) {
|
|
361
|
+
const { buckets, groupIndicesOf, withComputeLimit } = prepareBatch(groups, options);
|
|
362
|
+
// Build, sign, and send one packed bucket as a single transaction.
|
|
363
|
+
const sendBucket = async (bucket) => {
|
|
364
|
+
const transactionMessage = await this.buildTransaction(withComputeLimit(bucket), {
|
|
365
|
+
feePayer: options?.feePayer,
|
|
366
|
+
estimateComputeUnits: options?.estimateComputeUnits,
|
|
367
|
+
});
|
|
368
|
+
const signedTransaction = await this.signTransaction(transactionMessage);
|
|
369
|
+
return this.sendTransaction(signedTransaction, { commitment: options?.commitment });
|
|
370
|
+
};
|
|
371
|
+
const toResult = (bucket, outcome) => ({
|
|
372
|
+
instructions: bucket,
|
|
373
|
+
status: outcome.error === undefined ? 'fulfilled' : 'rejected',
|
|
374
|
+
confirmed: outcome.error === undefined,
|
|
375
|
+
signature: outcome.signature,
|
|
376
|
+
error: outcome.error,
|
|
377
|
+
groupIndices: groupIndicesOf(bucket),
|
|
378
|
+
});
|
|
379
|
+
// Attempt every transaction; a failure in one does not stop the others.
|
|
380
|
+
if (options?.sequential) {
|
|
381
|
+
// Send one at a time, confirming each before the next. When compute units
|
|
382
|
+
// are estimated by simulation, this makes each estimate reflect the true
|
|
383
|
+
// chain state produced by the prior transactions (e.g. a queue that grows
|
|
384
|
+
// or shrinks across the batch), which concurrent sending cannot.
|
|
385
|
+
const results = [];
|
|
386
|
+
for (const bucket of buckets) {
|
|
387
|
+
try {
|
|
388
|
+
results.push(toResult(bucket, { signature: await sendBucket(bucket) }));
|
|
389
|
+
}
|
|
390
|
+
catch (error) {
|
|
391
|
+
results.push(toResult(bucket, { error }));
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
return results;
|
|
395
|
+
}
|
|
396
|
+
const settled = await Promise.allSettled(buckets.map(sendBucket));
|
|
397
|
+
return settled.map((result, index) => result.status === 'fulfilled'
|
|
398
|
+
? toResult(buckets[index], { signature: result.value })
|
|
399
|
+
: toResult(buckets[index], { error: result.reason }));
|
|
400
|
+
},
|
|
401
|
+
/**
|
|
402
|
+
* Pack, build, and sign — but do not send. See the interface documentation.
|
|
403
|
+
*/
|
|
404
|
+
async buildAndSignBatch(groups, options) {
|
|
405
|
+
const { buckets, groupIndicesOf, withComputeLimit } = prepareBatch(groups, options);
|
|
406
|
+
// Build + sign each bucket; never send. signTransaction signs with the
|
|
407
|
+
// message's embedded signers, so the fresh job/run keypairs minted by each
|
|
408
|
+
// instruction and the fee payer all sign here — the returned blob is fully
|
|
409
|
+
// signed and broadcastable as-is by a separate process.
|
|
410
|
+
const signBucket = async (bucket) => {
|
|
411
|
+
const transactionMessage = await this.buildTransaction(withComputeLimit(bucket), {
|
|
412
|
+
feePayer: options?.feePayer,
|
|
413
|
+
estimateComputeUnits: options?.estimateComputeUnits,
|
|
414
|
+
});
|
|
415
|
+
const signedTransaction = await this.signTransaction(transactionMessage);
|
|
416
|
+
return {
|
|
417
|
+
blob: this.serializeTransaction(signedTransaction),
|
|
418
|
+
signature: getSignatureFromTransaction(signedTransaction),
|
|
419
|
+
lastValidBlockHeight: transactionMessage.lifetimeConstraint.lastValidBlockHeight,
|
|
420
|
+
instructions: bucket,
|
|
421
|
+
groupIndices: groupIndicesOf(bucket),
|
|
422
|
+
};
|
|
423
|
+
};
|
|
424
|
+
// No send, so the buckets are independent — build + sign them concurrently.
|
|
425
|
+
return Promise.all(buckets.map(signBucket));
|
|
426
|
+
},
|
|
272
427
|
/**
|
|
273
428
|
* Get an instruction to transfer SOL from one address to another.
|
|
274
429
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolanaService.js","sourceRoot":"","sources":["../../../src/services/solana/SolanaService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SolanaService.js","sourceRoot":"","sources":["../../../src/services/solana/SolanaService.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './convertBigIntToNumber.js';
|
|
2
2
|
export * from './convertHttpToWebSocketUrl.js';
|
|
3
3
|
export * from './getStaticAccounts.js';
|
|
4
|
+
export * from './packInstructions.js';
|
|
4
5
|
export * from './resolveAddressOrWallet.js';
|
|
5
6
|
export * from './walletToAuthorizationSigner.js';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AACA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
export * from './convertBigIntToNumber.js';
|
|
3
3
|
export * from './convertHttpToWebSocketUrl.js';
|
|
4
4
|
export * from './getStaticAccounts.js';
|
|
5
|
+
export * from './packInstructions.js';
|
|
5
6
|
export * from './resolveAddressOrWallet.js';
|
|
6
7
|
export * from './walletToAuthorizationSigner.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { type Address, type Instruction } from '@solana/kit';
|
|
2
|
+
/**
|
|
3
|
+
* Maximum size, in bytes, of a serialized Solana transaction (the packet MTU limit).
|
|
4
|
+
* @group @nosana/kit
|
|
5
|
+
*/
|
|
6
|
+
export declare const TRANSACTION_SIZE_LIMIT = 1232;
|
|
7
|
+
/**
|
|
8
|
+
* Maximum compute units a single Solana transaction may consume.
|
|
9
|
+
* @group @nosana/kit
|
|
10
|
+
*/
|
|
11
|
+
export declare const MAX_COMPUTE_UNITS = 1400000;
|
|
12
|
+
/**
|
|
13
|
+
* Options for {@link packInstructions}.
|
|
14
|
+
* @group @nosana/kit
|
|
15
|
+
*/
|
|
16
|
+
export interface PackInstructionsOptions {
|
|
17
|
+
/**
|
|
18
|
+
* The fee payer address for the resulting transactions. Provided so that size
|
|
19
|
+
* measurement accounts for account deduplication accurately (the fee payer is
|
|
20
|
+
* shared across every instruction). Defaults to a placeholder address, which is
|
|
21
|
+
* slightly conservative.
|
|
22
|
+
*/
|
|
23
|
+
feePayer?: Address;
|
|
24
|
+
/**
|
|
25
|
+
* Instructions that will be prepended to every transaction at send time (for
|
|
26
|
+
* example compute-budget or priority-fee instructions). They are charged against
|
|
27
|
+
* the size budget of each bucket but are NOT included in the returned buckets —
|
|
28
|
+
* the transaction builder adds the real ones when sending.
|
|
29
|
+
*/
|
|
30
|
+
reservedInstructions?: Instruction[];
|
|
31
|
+
/**
|
|
32
|
+
* Maximum serialized transaction size in bytes. Defaults to
|
|
33
|
+
* {@link TRANSACTION_SIZE_LIMIT} (1232).
|
|
34
|
+
*/
|
|
35
|
+
maxTransactionSize?: number;
|
|
36
|
+
/**
|
|
37
|
+
* Optional per-instruction compute-unit estimator. When provided, a bucket is
|
|
38
|
+
* also split whenever its cumulative estimated compute units would exceed
|
|
39
|
+
* {@link PackInstructionsOptions.maxComputeUnits}. When omitted, compute units
|
|
40
|
+
* are not considered and only transaction size bounds the packing.
|
|
41
|
+
*/
|
|
42
|
+
computeUnits?: (instruction: Instruction) => number;
|
|
43
|
+
/**
|
|
44
|
+
* Maximum compute units per transaction. Only enforced when
|
|
45
|
+
* {@link PackInstructionsOptions.computeUnits} is provided. Defaults to
|
|
46
|
+
* {@link MAX_COMPUTE_UNITS} (1,400,000).
|
|
47
|
+
*/
|
|
48
|
+
maxComputeUnits?: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Greedily pack instruction groups into the fewest transactions that each stay
|
|
52
|
+
* within Solana's transaction size limit.
|
|
53
|
+
*
|
|
54
|
+
* Each entry of `groups` is an *atomic group*: a single instruction, or an array
|
|
55
|
+
* of instructions that must land together in the same transaction (e.g. a
|
|
56
|
+
* create-account + initialize pair). A group is never split across transactions;
|
|
57
|
+
* groups are filled into a bucket in order until the next group would overflow the
|
|
58
|
+
* size limit, at which point a new bucket is started.
|
|
59
|
+
*
|
|
60
|
+
* A bucket is bounded by two constraints, and is split whenever the next group
|
|
61
|
+
* would exceed either one:
|
|
62
|
+
* - Transaction size: determined by compiling each candidate transaction
|
|
63
|
+
* in-memory and measuring its serialized length, so shared accounts (program
|
|
64
|
+
* ids, fee payer, sysvars) are correctly deduplicated — no static estimate and
|
|
65
|
+
* no RPC call.
|
|
66
|
+
* - Compute units (optional): when a `computeUnits` estimator is provided, the
|
|
67
|
+
* cumulative estimated compute units of a bucket may not exceed
|
|
68
|
+
* `maxComputeUnits`.
|
|
69
|
+
*
|
|
70
|
+
* @param groups Atomic instruction groups to pack, in order.
|
|
71
|
+
* @param options Packing options (fee payer, reserved instructions, limits).
|
|
72
|
+
* @returns An array of buckets; each bucket is a flat array of instructions for
|
|
73
|
+
* one transaction.
|
|
74
|
+
* @throws {NosanaError} If a single group cannot fit in one transaction (by size
|
|
75
|
+
* or compute units), since it cannot be split.
|
|
76
|
+
* @group @nosana/kit
|
|
77
|
+
*/
|
|
78
|
+
export declare function packInstructions(groups: Array<Instruction | Instruction[]>, options?: PackInstructionsOptions): Instruction[][];
|
|
79
|
+
//# sourceMappingURL=packInstructions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packInstructions.d.ts","sourceRoot":"","sources":["../../src/utils/packInstructions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,WAAW,EASjB,MAAM,aAAa,CAAC;AAGrB;;;GAGG;AACH,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,iBAAiB,UAAY,CAAC;AA+B3C;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;IACrC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,MAAM,CAAC;IACpD;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC,EAC1C,OAAO,GAAE,uBAA4B,GACpC,WAAW,EAAE,EAAE,CA0DjB"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { address, appendTransactionMessageInstructions, compileTransaction, createTransactionMessage, getTransactionEncoder, pipe, setTransactionMessageFeePayer, setTransactionMessageLifetimeUsingBlockhash, } from '@solana/kit';
|
|
2
|
+
import { ErrorCodes, NosanaError } from '../errors/NosanaError.js';
|
|
3
|
+
/**
|
|
4
|
+
* Maximum size, in bytes, of a serialized Solana transaction (the packet MTU limit).
|
|
5
|
+
* @group @nosana/kit
|
|
6
|
+
*/
|
|
7
|
+
export const TRANSACTION_SIZE_LIMIT = 1232;
|
|
8
|
+
/**
|
|
9
|
+
* Maximum compute units a single Solana transaction may consume.
|
|
10
|
+
* @group @nosana/kit
|
|
11
|
+
*/
|
|
12
|
+
export const MAX_COMPUTE_UNITS = 1400000;
|
|
13
|
+
// Placeholder fee payer and blockhash used purely to measure a transaction's
|
|
14
|
+
// serialized size locally (no RPC). Neither value affects the byte length: a fee
|
|
15
|
+
// payer is always one 32-byte account and a blockhash is always 32 bytes, so the
|
|
16
|
+
// measurement is size-accurate. Using a placeholder fee payer that does not appear
|
|
17
|
+
// in any instruction is the conservative choice — it can only ever over-count by a
|
|
18
|
+
// single account, never under-count.
|
|
19
|
+
const PLACEHOLDER_FEE_PAYER = address('11111111111111111111111111111112');
|
|
20
|
+
const PLACEHOLDER_BLOCKHASH = {
|
|
21
|
+
blockhash: '11111111111111111111111111111111',
|
|
22
|
+
lastValidBlockHeight: 0n,
|
|
23
|
+
};
|
|
24
|
+
const transactionEncoder = getTransactionEncoder();
|
|
25
|
+
/**
|
|
26
|
+
* Measure the serialized byte size of a transaction built from the given
|
|
27
|
+
* instructions. Compiles the message in-memory using placeholder fee payer and
|
|
28
|
+
* blockhash values — no network access and no signing required.
|
|
29
|
+
*/
|
|
30
|
+
function measureTransactionSize(instructions, feePayer) {
|
|
31
|
+
const message = pipe(createTransactionMessage({ version: 0 }), (tx) => setTransactionMessageFeePayer(feePayer, tx), (tx) => setTransactionMessageLifetimeUsingBlockhash(PLACEHOLDER_BLOCKHASH, tx), (tx) => appendTransactionMessageInstructions(instructions, tx));
|
|
32
|
+
return transactionEncoder.encode(compileTransaction(message)).length;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Greedily pack instruction groups into the fewest transactions that each stay
|
|
36
|
+
* within Solana's transaction size limit.
|
|
37
|
+
*
|
|
38
|
+
* Each entry of `groups` is an *atomic group*: a single instruction, or an array
|
|
39
|
+
* of instructions that must land together in the same transaction (e.g. a
|
|
40
|
+
* create-account + initialize pair). A group is never split across transactions;
|
|
41
|
+
* groups are filled into a bucket in order until the next group would overflow the
|
|
42
|
+
* size limit, at which point a new bucket is started.
|
|
43
|
+
*
|
|
44
|
+
* A bucket is bounded by two constraints, and is split whenever the next group
|
|
45
|
+
* would exceed either one:
|
|
46
|
+
* - Transaction size: determined by compiling each candidate transaction
|
|
47
|
+
* in-memory and measuring its serialized length, so shared accounts (program
|
|
48
|
+
* ids, fee payer, sysvars) are correctly deduplicated — no static estimate and
|
|
49
|
+
* no RPC call.
|
|
50
|
+
* - Compute units (optional): when a `computeUnits` estimator is provided, the
|
|
51
|
+
* cumulative estimated compute units of a bucket may not exceed
|
|
52
|
+
* `maxComputeUnits`.
|
|
53
|
+
*
|
|
54
|
+
* @param groups Atomic instruction groups to pack, in order.
|
|
55
|
+
* @param options Packing options (fee payer, reserved instructions, limits).
|
|
56
|
+
* @returns An array of buckets; each bucket is a flat array of instructions for
|
|
57
|
+
* one transaction.
|
|
58
|
+
* @throws {NosanaError} If a single group cannot fit in one transaction (by size
|
|
59
|
+
* or compute units), since it cannot be split.
|
|
60
|
+
* @group @nosana/kit
|
|
61
|
+
*/
|
|
62
|
+
export function packInstructions(groups, options = {}) {
|
|
63
|
+
const feePayer = options.feePayer ?? PLACEHOLDER_FEE_PAYER;
|
|
64
|
+
const reserved = options.reservedInstructions ?? [];
|
|
65
|
+
const maxSize = options.maxTransactionSize ?? TRANSACTION_SIZE_LIMIT;
|
|
66
|
+
const computeUnitsOf = options.computeUnits;
|
|
67
|
+
const maxCU = options.maxComputeUnits ?? MAX_COMPUTE_UNITS;
|
|
68
|
+
const groupComputeUnits = (ixs) => computeUnitsOf ? ixs.reduce((sum, ix) => sum + computeUnitsOf(ix), 0) : 0;
|
|
69
|
+
const buckets = [];
|
|
70
|
+
let current = [];
|
|
71
|
+
let currentCU = 0;
|
|
72
|
+
const tooLargeToSplit = (groupSize, constraint) => {
|
|
73
|
+
const limit = constraint === 'size' ? `${maxSize} bytes` : `${maxCU} compute units`;
|
|
74
|
+
throw new NosanaError(`An atomic group of ${groupSize} instruction(s) exceeds the maximum transaction ` +
|
|
75
|
+
`${constraint} (${limit}) and cannot be split across transactions`, ErrorCodes.TRANSACTION_ERROR);
|
|
76
|
+
};
|
|
77
|
+
for (const group of groups) {
|
|
78
|
+
const groupIxs = Array.isArray(group) ? group : [group];
|
|
79
|
+
if (groupIxs.length === 0)
|
|
80
|
+
continue;
|
|
81
|
+
const groupCU = groupComputeUnits(groupIxs);
|
|
82
|
+
const withGroup = [...current, ...groupIxs];
|
|
83
|
+
const sizeFits = measureTransactionSize([...reserved, ...withGroup], feePayer) <= maxSize;
|
|
84
|
+
const computeFits = !computeUnitsOf || currentCU + groupCU <= maxCU;
|
|
85
|
+
if (sizeFits && computeFits) {
|
|
86
|
+
current = withGroup;
|
|
87
|
+
currentCU += groupCU;
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
// The group does not fit alongside the current bucket's contents.
|
|
91
|
+
if (current.length === 0) {
|
|
92
|
+
// Nothing to flush — the group cannot fit even on its own.
|
|
93
|
+
tooLargeToSplit(groupIxs.length, sizeFits ? 'compute units' : 'size');
|
|
94
|
+
}
|
|
95
|
+
// Flush the current bucket and place the group into a fresh one.
|
|
96
|
+
buckets.push(current);
|
|
97
|
+
if (measureTransactionSize([...reserved, ...groupIxs], feePayer) > maxSize) {
|
|
98
|
+
tooLargeToSplit(groupIxs.length, 'size');
|
|
99
|
+
}
|
|
100
|
+
if (computeUnitsOf && groupCU > maxCU) {
|
|
101
|
+
tooLargeToSplit(groupIxs.length, 'compute units');
|
|
102
|
+
}
|
|
103
|
+
current = [...groupIxs];
|
|
104
|
+
currentCU = groupCU;
|
|
105
|
+
}
|
|
106
|
+
if (current.length > 0)
|
|
107
|
+
buckets.push(current);
|
|
108
|
+
return buckets;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=packInstructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"packInstructions.js","sourceRoot":"","sources":["../../src/utils/packInstructions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nosana/kit",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.1",
|
|
4
4
|
"description": "Nosana KIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"package.json",
|
|
72
72
|
"README.md"
|
|
73
73
|
],
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "acca0b845809e919d243e2e112558f6539a2bab0"
|
|
75
75
|
}
|