INNER CODE UNIT · TypeScript
budget
blueshift-gg/doppler · packages/core/index.ts:139
function budget(computeUnits: number, loadedBytes: number, signatures: number, unitPrice: number | bigint): Budget {
const requestedComputeUnits = computeUnits + 3 * BUILTIN_IX_CU;
const priority = (BigInt(unitPrice) * BigInt(requestedComputeUnits) + 999_999n) / 1_000_000n;
return {
computeUnits,
loadedBytes,
requestedComputeUnits,
requestedLoadedBytes: loadedBytes + 2 * ACCOUNT_OVERHEAD + COMPUTE_BUDGET_PROGRAM_LEN,
lamports: BigInt(signatures) * LAMPORTS_PER_SIGNATURE + priority,
};
}
function layout(fields: unknown): { slots: Slot[]; size: number } {
if (!Array.isArray(fields) || fields.length === 0) throw new TypeError('a payload needs at least one field');
const slots: Slot[] = [];
let size = 0;
for (const field of fields as FieldLike[]) {
const { name, type, len = 1 } = field;