@xyo-network/xl1-protocol-sdk 1.5.35 → 1.5.36
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/neutral/index.mjs +304 -124
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/types/ChainServiceCollection.d.ts +60 -0
- package/dist/types/ChainServiceCollection.d.ts.map +1 -0
- package/dist/types/ChainServiceCollectionV2.d.ts +60 -0
- package/dist/types/ChainServiceCollectionV2.d.ts.map +1 -0
- package/dist/types/SignedBigInt.d.ts +14 -0
- package/dist/types/SignedBigInt.d.ts.map +1 -0
- package/dist/types/block/hydrateBlock.d.ts +1 -1
- package/dist/types/block/hydrateBlock.d.ts.map +1 -1
- package/dist/types/block/primitives/balanceStepSummaryFromRange.d.ts +6 -0
- package/dist/types/block/primitives/balanceStepSummaryFromRange.d.ts.map +1 -0
- package/dist/types/block/primitives/balanceSummary.d.ts +4 -0
- package/dist/types/block/primitives/balanceSummary.d.ts.map +1 -0
- package/dist/types/block/primitives/frames/deepCalculateFramesFromRange.d.ts.map +1 -1
- package/dist/types/block/primitives/frames/index.d.ts +2 -1
- package/dist/types/block/primitives/frames/index.d.ts.map +1 -1
- package/dist/types/block/primitives/hashFromBlockNumber.d.ts +4 -0
- package/dist/types/block/primitives/hashFromBlockNumber.d.ts.map +1 -0
- package/dist/types/block/primitives/index.d.ts +5 -0
- package/dist/types/block/primitives/index.d.ts.map +1 -1
- package/dist/types/block/primitives/model.d.ts +16 -0
- package/dist/types/block/primitives/model.d.ts.map +1 -0
- package/dist/types/block/primitives/payloads.d.ts +21 -0
- package/dist/types/block/primitives/payloads.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/payload/index.d.ts +2 -0
- package/dist/types/payload/index.d.ts.map +1 -0
- package/dist/types/payload/netBalancesForPayloads.d.ts +3 -0
- package/dist/types/payload/netBalancesForPayloads.d.ts.map +1 -0
- package/dist/types/transaction/buildTransaction.d.ts +1 -1
- package/dist/types/transaction/buildTransaction.d.ts.map +1 -1
- package/package.json +19 -19
- package/src/ChainServiceCollection.ts +65 -0
- package/src/ChainServiceCollectionV2.ts +65 -0
- package/src/SignedBigInt.ts +51 -0
- package/src/block/hydrateBlock.ts +14 -13
- package/src/block/primitives/balanceStepSummaryFromRange.ts +78 -0
- package/src/block/primitives/balanceSummary.ts +27 -0
- package/src/block/primitives/frames/calculateFramesFromRange.ts +2 -2
- package/src/block/primitives/frames/deepCalculateFramesFromRange.ts +2 -2
- package/src/block/primitives/frames/index.ts +2 -1
- package/src/block/primitives/hashFromBlockNumber.ts +31 -0
- package/src/block/primitives/index.ts +5 -0
- package/src/block/primitives/model.ts +18 -0
- package/src/block/primitives/payloads.ts +29 -0
- package/src/index.ts +4 -0
- package/src/payload/index.ts +1 -0
- package/src/payload/netBalancesForPayloads.ts +19 -0
- package/src/transaction/buildTransaction.ts +16 -9
- package/dist/types/block/primitives/frames/loadFrameSummaries.d.ts +0 -5
- package/dist/types/block/primitives/frames/loadFrameSummaries.d.ts.map +0 -1
- package/dist/types/block/primitives/frames/stepHashFramesFromBlock.d.ts +0 -5
- package/dist/types/block/primitives/frames/stepHashFramesFromBlock.d.ts.map +0 -1
- package/src/block/primitives/frames/loadFrameSummaries.ts +0 -12
- package/src/block/primitives/frames/stepHashFramesFromBlock.ts +0 -72
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/block/hydrateBlock.ts","../../src/block/primitives/frames/stepHashFramesFromBlock.ts","../../src/transaction/buildTransaction.ts","../../src/transaction/hydrateTransaction.ts","../../src/transaction/primitives/transactionBlockByteCount.ts","../../src/transaction/primitives/transactionElevatedPayloads.ts","../../src/transaction/primitives/transactionOperations.ts","../../src/transaction/primitives/transactionRequiredGas.ts"],"sourcesContent":["import { filterAs } from '@xylabs/array'\nimport { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock, TransactionBoundWitness } from '@xyo-network/xl1-protocol'\nimport {\n asBlockBoundWitnessWithStorageMeta, asTransactionBoundWitnessWithStorageMeta, isTransactionBoundWitnessWithStorageMeta,\n} from '@xyo-network/xl1-protocol'\n\nexport function allHashesPresent(hashes: Hash[], payloads: WithStorageMeta<Payload>[]): boolean {\n const payloadHashes = new Set(payloads.map(p => p._hash))\n return hashes.every(hash => payloadHashes.has(hash))\n}\n\nexport const tryHydrateBlock = async (\n archivist: ReadArchivist,\n hash: Hash,\n maxDepth: number = 1,\n minDepth?: number,\n): Promise<HydratedBlock | undefined> => {\n try {\n return await hydrateBlock(archivist, hash, maxDepth, minDepth)\n } catch (e) {\n if (e instanceof Error) {\n console.warn(`Failed to hydrate block ${hash}: ${e.message}`)\n } else {\n console.warn(`Failed to hydrate block ${hash}: ${e}`)\n }\n return undefined\n }\n}\n\nexport const hydrateBlock = async (\n archivist: ReadArchivist,\n hash: Hash,\n maxDepth: number = 1,\n minDepth?: number,\n): Promise<HydratedBlock> => {\n if (minDepth === undefined) minDepth = maxDepth\n assertEx(maxDepth >= 0, () => 'maxDepth must be greater than or equal to 0')\n assertEx(minDepth >= 0, () => 'minDepth must be greater than or equal to 0')\n assertEx(maxDepth >= minDepth, () => 'maxDepth must be greater than or equal to minDepth')\n const bw = assertEx(\n filterAs(await archivist.get([hash]), asBlockBoundWitnessWithStorageMeta).at(0),\n () => `block ${hash} not found`,\n )\n if (maxDepth === 0) return [bw, []]\n const blkPayloads = await archivist.get(bw.payload_hashes)\n if (minDepth === 1) assertEx(allHashesPresent(bw.payload_hashes, blkPayloads), () => `Unable to find all payloads for block ${hash}`)\n if (maxDepth === 1) return [bw, blkPayloads]\n const transactions = filterAs(blkPayloads, asTransactionBoundWitnessWithStorageMeta)\n const transactionsPayloadHashes = transactions.flatMap(tx => tx.payload_hashes)\n const transactionsPayloads = await archivist.get(transactionsPayloadHashes)\n assertEx(allHashesPresent(transactionsPayloadHashes, transactionsPayloads), () => `Unable to find all payloads for transactions in block ${hash}`)\n const allPayloadsHashes = new Set([...blkPayloads, ...transactionsPayloads].flatMap(p => p._hash))\n const allPayloads = await archivist.get([...allPayloadsHashes])\n const allPayloadsFiltered = allPayloads.filter(p => allPayloadsHashes.has(p._hash))\n if (maxDepth === 2) assertEx(allHashesPresent(\n [...allPayloadsHashes],\n allPayloadsFiltered,\n ), () => `Unable to find all payloads for transactions in block ${hash}`)\n return [bw, allPayloadsFiltered]\n}\n\nexport const flattenHydratedBlock = (hydratedBlock: HydratedBlock): WithStorageMeta<Payload>[] => {\n const [blk, blkPayloads] = hydratedBlock\n return [...blkPayloads, blk]\n}\n\nexport const flattenHydratedBlocks = (hydratedBlocks: HydratedBlock[]): WithStorageMeta<Payload>[] =>\n hydratedBlocks.flatMap(blk => flattenHydratedBlock(blk))\n\nexport const transactionsFromHydratedBlock = (block: HydratedBlock): WithStorageMeta<TransactionBoundWitness>[] => {\n return filterAs(block[1], asTransactionBoundWitnessWithStorageMeta)\n}\n\nexport const blockPayloadsFromHydratedBlock = (block: HydratedBlock): WithStorageMeta<Payload>[] => {\n return block[0].payload_hashes.map(hash => assertEx(\n block[1].find(p => p._hash === hash),\n () => `missing payload ${hash}`,\n )).filter(x => !isTransactionBoundWitnessWithStorageMeta(x))\n}\n","import { assertEx } from '@xylabs/assert'\nimport { type Hash, isHash } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { isBlockBoundWitness, StepSizes } from '@xyo-network/xl1-protocol'\n\n// get the list of step frames for a block at a specific step size index\nexport async function stepHashFramesFromBlockAtSize(archivist: ArchivistInstance, head: Hash, sizeIndex: number) {\n if (!Number.isInteger(sizeIndex) || sizeIndex < 0 || sizeIndex >= StepSizes.length) {\n throw new Error(`Invalid sizeIndex: ${sizeIndex}`)\n }\n let currentHead = head\n const steps: [Hash, number, number][] = []\n while (isHash(currentHead)) {\n const [block] = await archivist.get([currentHead])\n if (!isBlockBoundWitness(block)) {\n throw new Error(`Block with hash ${currentHead} not found`)\n }\n let stepHash = block.step_hashes.at(sizeIndex)\n while (isDefined(stepHash)) {\n const [stepHashBlock] = await archivist.get([stepHash])\n if (!isBlockBoundWitness(stepHashBlock)) {\n throw new Error(`StepHashBlock with hash ${currentHead} not found`)\n }\n const [lastBlockInStep] = await archivist.get([assertEx(stepHashBlock.previous, () => 'StepHashBlock must have a previous block')])\n if (!isBlockBoundWitness(lastBlockInStep)) {\n throw new Error(`StepHashBlock with hash ${currentHead} not found`)\n }\n steps.push([stepHash, stepHashBlock.block - StepSizes[sizeIndex], stepHashBlock.block - 1])\n stepHash = lastBlockInStep.step_hashes.at(sizeIndex)\n }\n }\n return steps\n}\n\n// TODO: Figure out how to get ranges of smaller blocks for each available range\nexport async function stepHashFramesFromBlock(archivist: ArchivistInstance, head: Hash) {\n const [block] = await archivist.get([head])\n if (!isBlockBoundWitness(block)) {\n throw new Error(`Block with hash ${head} not found`)\n }\n let availableRanges: [number, number][] = [[0, block.block]]\n const foundRanges: [Hash, number, number][] = []\n // fit biggest to smallest\n for (let i = StepSizes.length - 1; i >= 0; i--) {\n const steps = await stepHashFramesFromBlockAtSize(archivist, head, i)\n for (let step of steps) {\n const [, start, end] = step\n if (availableRanges.some(range => range[0] <= start && range[1] >= end)) {\n foundRanges.push(step)\n availableRanges = availableRanges.flatMap((range) => {\n if (range[0] >= start && range[1] <= end) {\n // remove the range\n return [[range[0], start - 1]]\n } else if (range[0] < start && range[1] >= end) {\n // split the range\n return [[range[0], start - 1], [end + 1, range[1]]]\n } else if (range[0] < start && range[1] < end) {\n // adjust the end of the range\n return [[range[0], start - 1]]\n } else if (range[0] > start && range[1] > end) {\n // adjust the start of the range\n return [[end + 1, range[1]]]\n }\n // otherwise, return the range as is\n return [range]\n })\n }\n }\n }\n return foundRanges\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { toHex } from '@xylabs/hex'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport {\n type AllowedBlockPayload,\n defaultTransactionFees,\n type HydratedTransaction, type TransactionBoundWitness, type TransactionBoundWitnessFields, type TransactionFeesBigInt,\n} from '@xyo-network/xl1-protocol'\n\nexport async function buildTransaction(\n chain: Address,\n elevatedPayloads: AllowedBlockPayload[],\n additionalPayloads: Payload[],\n signer: AccountInstance | AccountInstance[],\n nbf: number,\n exp: number,\n from?: Address,\n fees: TransactionFeesBigInt = defaultTransactionFees,\n): Promise<HydratedTransaction> {\n if (from === undefined && Array.isArray(signer)) {\n throw new Error('from is required when signer is an array')\n }\n\n const txBoundWitnessFields: TransactionBoundWitnessFields = {\n chain,\n fees: {\n base: toHex(fees.base),\n gasLimit: toHex(fees.gasLimit),\n gasPrice: toHex(fees.gasPrice),\n priority: toHex(fees.priority),\n },\n nbf,\n exp,\n }\n\n const elevatedHashes = await PayloadBuilder.hashes(elevatedPayloads)\n const script: string[] = []\n for (const elevatedHash of elevatedHashes) {\n script.push(`elevate|${elevatedHash}`)\n }\n\n const [tx, txPayloads] = await new BoundWitnessBuilder<TransactionBoundWitness>()\n .fields({\n ...txBoundWitnessFields,\n script,\n from: from ?? (Array.isArray(signer) ? assertEx(signer.at(0)?.address) : signer.address),\n })\n .meta({ $signatures: [] })\n .payloads([...elevatedPayloads, ...additionalPayloads])\n .signers(Array.isArray(signer) ? signer : [signer])\n .build()\n\n return [await PayloadBuilder.addStorageMeta(tx), await PayloadBuilder.addStorageMeta(txPayloads)]\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from '@xyo-network/archivist-model'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n HydratedTransaction, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport { isAllowedBlockPayload, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nexport const tryHydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction | undefined> => {\n return (await tryHydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\n hash,\n isTransactionBoundWitnessWithStorageMeta,\n )) as HydratedTransaction | undefined\n}\n\nexport const hydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction> => {\n return await hydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\n hash,\n isTransactionBoundWitnessWithStorageMeta,\n ) as HydratedTransaction\n}\n\nexport const flattenHydratedTransaction = (hydratedTransaction: HydratedTransaction): Payload[] => {\n const [tx, txPayloads] = hydratedTransaction\n return [...txPayloads, tx]\n}\n\nexport const flattenHydratedTransactions = (hydratedTransactions: HydratedTransaction[]): Payload[] =>\n hydratedTransactions.flatMap(tx => flattenHydratedTransaction(tx))\n\nexport const tryHydrateElevatedTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction | undefined> => {\n const hydratedTransaction = await tryHydrateTransaction(archivist, hash)\n if (!hydratedTransaction) {\n return undefined\n }\n const [transaction, payloads] = hydratedTransaction\n const opCodes = (transaction.script ?? []).filter(operation => operation.startsWith('elevate|'))\n const elevatedPayloads: WithStorageMeta<AllowedBlockPayload>[] = []\n for (const opCode of opCodes) {\n const [code, hash] = opCode.split('|')\n if (code === 'elevated') {\n const elevatedPayload = payloads.find(payload => payload._hash === hash)\n if (isAllowedBlockPayload(elevatedPayload)) {\n elevatedPayloads.push(elevatedPayload)\n }\n }\n }\n if (opCodes.length === elevatedPayloads.length) {\n return [transaction, elevatedPayloads]\n }\n return undefined\n}\n\nexport const hydrateElevatedTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction> => {\n return assertEx(await tryHydrateElevatedTransaction(archivist, hash), () => 'Hydration failed')\n}\n","import { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { HydratedTransaction } from '@xyo-network/xl1-protocol'\n\n/** The number of bytes that a transaction and its payloads will take up in a block */\nexport function transactionBlockByteCount([transaction, payloads]: HydratedTransaction): number {\n const cleanTransaction = PayloadBuilder.omitStorageMeta(transaction)\n const transactionBytes = JSON.stringify(cleanTransaction).length\n const cleanPayloads = PayloadBuilder.omitStorageMeta(payloads)\n return cleanPayloads.reduce((acc: number, payload) => acc + JSON.stringify(payload).length, 0) + transactionBytes\n}\n","import { asHash, type Hash } from '@xylabs/hex'\nimport type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedTransaction, TransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nimport { crackOperations } from './transactionOperations.ts'\n\nexport function transactionElevatedPayloadHashes(transaction: TransactionBoundWitness): Hash[] {\n const elevateOperations = crackOperations(transaction.script ?? []).filter(op => op[0] === 'elevate')\n return elevateOperations.map(op => asHash(op[1][0], true))\n}\n\nexport function transactionElevatedPayloads([transaction, payloads]: HydratedTransaction): WithHashStorageMeta<Payload>[] {\n const hashes = transactionElevatedPayloadHashes(transaction)\n const elevatedPayloads = payloads.filter(payload => hashes.includes(payload._hash))\n return elevatedPayloads\n}\n","export function crackOperation(operation: string): [string, string[]] {\n const parts = operation.split('|')\n if (parts.length < 2) {\n throw new Error(`Invalid operation format: ${operation}`)\n }\n return [parts[0], parts.slice(1)]\n}\n\nexport function crackOperations(operations: string[]): [string, string[]][] {\n return operations.map(op => crackOperation(op))\n}\n","import type { HydratedTransaction } from '@xyo-network/xl1-protocol'\nimport { AttoXL1, TransactionGasCosts } from '@xyo-network/xl1-protocol'\n\nimport { transactionBlockByteCount } from './transactionBlockByteCount.ts'\nimport { transactionElevatedPayloads } from './transactionElevatedPayloads.ts'\n\n/** The required gas for the byte storage on the block chain for a transaction */\nexport function transactionBytesRequiredGas([transaction, payloads]: HydratedTransaction): AttoXL1 {\n const transactionBlockBytes = transactionBlockByteCount([transaction, payloads])\n return AttoXL1(TransactionGasCosts.characterStorage * BigInt(transactionBlockBytes))\n}\n\nexport function transactionRequiredGas(hydratedTransaction: HydratedTransaction): AttoXL1 {\n const elevatedPayloads = transactionElevatedPayloads(hydratedTransaction)\n const hashes = elevatedPayloads.length + 1 /* for transaction itself */\n const signatures = hydratedTransaction[0].addresses.length\n return AttoXL1(transactionBytesRequiredGas(hydratedTransaction)\n + TransactionGasCosts.hashValidation * BigInt(hashes)\n + TransactionGasCosts.signatureValidation * BigInt(signatures)\n + TransactionGasCosts.payloadValidation * BigInt(elevatedPayloads.length))\n}\n"],"mappings":"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","names":["filterAs","assertEx","asBlockBoundWitnessWithStorageMeta","asTransactionBoundWitnessWithStorageMeta","isTransactionBoundWitnessWithStorageMeta","allHashesPresent","hashes","payloads","payloadHashes","Set","map","p","_hash","every","hash","has","tryHydrateBlock","archivist","maxDepth","minDepth","hydrateBlock","e","Error","console","warn","message","undefined","assertEx","bw","filterAs","get","asBlockBoundWitnessWithStorageMeta","at","blkPayloads","payload_hashes","transactions","asTransactionBoundWitnessWithStorageMeta","transactionsPayloadHashes","flatMap","tx","transactionsPayloads","allPayloadsHashes","allPayloads","allPayloadsFiltered","filter","flattenHydratedBlock","hydratedBlock","blk","flattenHydratedBlocks","hydratedBlocks","transactionsFromHydratedBlock","block","blockPayloadsFromHydratedBlock","find","x","isTransactionBoundWitnessWithStorageMeta","assertEx","isHash","isDefined","isBlockBoundWitness","StepSizes","stepHashFramesFromBlockAtSize","archivist","head","sizeIndex","Number","isInteger","StepSizes","length","Error","currentHead","steps","isHash","block","get","isBlockBoundWitness","stepHash","step_hashes","at","isDefined","stepHashBlock","lastBlockInStep","assertEx","previous","push","stepHashFramesFromBlock","availableRanges","foundRanges","i","step","start","end","some","range","flatMap","assertEx","toHex","BoundWitnessBuilder","PayloadBuilder","defaultTransactionFees","buildTransaction","chain","elevatedPayloads","additionalPayloads","signer","nbf","exp","from","fees","defaultTransactionFees","undefined","Array","isArray","Error","txBoundWitnessFields","base","toHex","gasLimit","gasPrice","priority","elevatedHashes","PayloadBuilder","hashes","script","elevatedHash","push","tx","txPayloads","BoundWitnessBuilder","fields","assertEx","at","address","meta","$signatures","payloads","signers","build","addStorageMeta","assertEx","hydrateTypedBoundWitness","tryHydrateTypedBoundWitness","isAllowedBlockPayload","isTransactionBoundWitnessWithStorageMeta","tryHydrateTransaction","archivist","hash","tryHydrateTypedBoundWitness","isTransactionBoundWitnessWithStorageMeta","hydrateTransaction","hydrateTypedBoundWitness","flattenHydratedTransaction","hydratedTransaction","tx","txPayloads","flattenHydratedTransactions","hydratedTransactions","flatMap","tryHydrateElevatedTransaction","undefined","transaction","payloads","opCodes","script","filter","operation","startsWith","elevatedPayloads","opCode","code","split","elevatedPayload","find","payload","_hash","isAllowedBlockPayload","push","length","hydrateElevatedTransaction","assertEx","PayloadBuilder","transactionBlockByteCount","transaction","payloads","cleanTransaction","PayloadBuilder","omitStorageMeta","transactionBytes","JSON","stringify","length","cleanPayloads","reduce","acc","payload","asHash","crackOperation","operation","parts","split","length","Error","slice","crackOperations","operations","map","op","transactionElevatedPayloadHashes","transaction","elevateOperations","crackOperations","script","filter","op","map","asHash","transactionElevatedPayloads","payloads","hashes","elevatedPayloads","payload","includes","_hash","AttoXL1","TransactionGasCosts","transactionBytesRequiredGas","transaction","payloads","transactionBlockBytes","transactionBlockByteCount","AttoXL1","TransactionGasCosts","characterStorage","BigInt","transactionRequiredGas","hydratedTransaction","elevatedPayloads","transactionElevatedPayloads","hashes","length","signatures","addresses","hashValidation","signatureValidation","payloadValidation"]}
|
|
1
|
+
{"version":3,"sources":["../../src/block/hydrateBlock.ts","../../src/block/primitives/balanceStepSummaryFromRange.ts","../../src/payload/netBalancesForPayloads.ts","../../src/SignedBigInt.ts","../../src/block/primitives/frames/deepCalculateFramesFromRange.ts","../../src/block/primitives/frames/calculateFramesFromRange.ts","../../src/block/primitives/hashFromBlockNumber.ts","../../src/block/primitives/payloads.ts","../../src/block/primitives/balanceSummary.ts","../../src/transaction/buildTransaction.ts","../../src/transaction/hydrateTransaction.ts","../../src/transaction/primitives/transactionBlockByteCount.ts","../../src/transaction/primitives/transactionElevatedPayloads.ts","../../src/transaction/primitives/transactionOperations.ts","../../src/transaction/primitives/transactionRequiredGas.ts"],"sourcesContent":["import { filterAs } from '@xylabs/array'\nimport { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock, TransactionBoundWitness } from '@xyo-network/xl1-protocol'\nimport {\n asBlockBoundWitnessWithStorageMeta, asTransactionBoundWitnessWithStorageMeta, isTransactionBoundWitnessWithStorageMeta,\n} from '@xyo-network/xl1-protocol'\n\nexport function allHashesPresent(hashes: Hash[], payloads: WithStorageMeta<Payload>[]): boolean {\n const payloadHashes = new Set(payloads.map(p => p._hash))\n return hashes.every(hash => payloadHashes.has(hash))\n}\n\nexport const tryHydrateBlock = async (\n archivist: ReadArchivist,\n hash: Hash,\n maxDepth: number = 1,\n): Promise<HydratedBlock | undefined> => {\n assertEx(maxDepth >= 0, () => 'maxDepth must be greater than or equal to 0')\n const bw = filterAs(await archivist.get([hash]), asBlockBoundWitnessWithStorageMeta).at(0)\n if (!bw) return undefined\n if (maxDepth === 0) return [bw, []]\n const blkPayloads = await archivist.get(bw.payload_hashes)\n if (maxDepth === 1) return [bw, blkPayloads]\n const transactions = filterAs(blkPayloads, asTransactionBoundWitnessWithStorageMeta)\n const transactionsPayloadHashes = transactions.flatMap(tx => tx.payload_hashes)\n const transactionsPayloads = await archivist.get(transactionsPayloadHashes)\n const allPayloadsHashes = new Set([...blkPayloads, ...transactionsPayloads].flatMap(p => p._hash))\n const allPayloads = await archivist.get([...allPayloadsHashes])\n const allPayloadsFiltered = allPayloads.filter(p => allPayloadsHashes.has(p._hash))\n return [bw, allPayloadsFiltered]\n}\n\nexport const hydrateBlock = async (\n archivist: ReadArchivist,\n hash: Hash,\n maxDepth: number = 1,\n minDepth = maxDepth,\n): Promise<HydratedBlock> => {\n assertEx(maxDepth >= 0, () => 'maxDepth must be greater than or equal to 0')\n assertEx(minDepth >= 0, () => 'minDepth must be greater than or equal to 0')\n assertEx(maxDepth >= minDepth, () => 'maxDepth must be greater than or equal to minDepth')\n const bw = assertEx(\n filterAs(await archivist.get([hash]), asBlockBoundWitnessWithStorageMeta).at(0),\n () => `block ${hash} not found`,\n )\n if (maxDepth === 0) return [bw, []]\n const blkPayloads = await archivist.get(bw.payload_hashes)\n if (minDepth === 1) assertEx(allHashesPresent(bw.payload_hashes, blkPayloads), () => `Unable to find all payloads for block ${hash}`)\n if (maxDepth === 1) return [bw, blkPayloads]\n const transactions = filterAs(blkPayloads, asTransactionBoundWitnessWithStorageMeta)\n const transactionsPayloadHashes = transactions.flatMap(tx => tx.payload_hashes)\n const transactionsPayloads = await archivist.get(transactionsPayloadHashes)\n assertEx(allHashesPresent(transactionsPayloadHashes, transactionsPayloads), () => `Unable to find all payloads for transactions in block ${hash}`)\n const allPayloadsHashes = new Set([...blkPayloads, ...transactionsPayloads].flatMap(p => p._hash))\n const allPayloads = await archivist.get([...allPayloadsHashes])\n const allPayloadsFiltered = allPayloads.filter(p => allPayloadsHashes.has(p._hash))\n if (maxDepth === 2) assertEx(allHashesPresent(\n [...allPayloadsHashes],\n allPayloadsFiltered,\n ), () => `Unable to find all payloads for transactions in block ${hash}`)\n return [bw, allPayloadsFiltered]\n}\n\nexport const flattenHydratedBlock = (hydratedBlock: HydratedBlock): WithStorageMeta<Payload>[] => {\n const [blk, blkPayloads] = hydratedBlock\n return [...blkPayloads, blk]\n}\n\nexport const flattenHydratedBlocks = (hydratedBlocks: HydratedBlock[]): WithStorageMeta<Payload>[] =>\n hydratedBlocks.flatMap(blk => flattenHydratedBlock(blk))\n\nexport const transactionsFromHydratedBlock = (block: HydratedBlock): WithStorageMeta<TransactionBoundWitness>[] => {\n return filterAs(block[1], asTransactionBoundWitnessWithStorageMeta)\n}\n\nexport const blockPayloadsFromHydratedBlock = (block: HydratedBlock): WithStorageMeta<Payload>[] => {\n return block[0].payload_hashes.map(hash => assertEx(\n block[1].find(p => p._hash === hash),\n () => `missing payload ${hash}`,\n )).filter(x => !isTransactionBoundWitnessWithStorageMeta(x))\n}\n","import { assertEx } from '@xylabs/assert'\nimport { type Address } from '@xylabs/hex'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { isAnyPayload } from '@xyo-network/payload-model'\nimport { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport { netBalancesForPayloads } from '../../payload/netBalancesForPayloads.ts'\nimport {\n parseSignedBigInt, type SignedBigInt, toSignedBigInt,\n} from '../../SignedBigInt.ts'\nimport { hydrateBlock } from '../hydrateBlock.ts'\nimport type { BlockNumberRange } from './frames/BlockNumberRange.ts'\nimport { deepCalculateFramesFromRange } from './frames/deepCalculateFramesFromRange.ts'\nimport { hashFromBlockNumber } from './hashFromBlockNumber.ts'\nimport type { BalanceStepSummaryContext } from './model.ts'\nimport { type BalancesStepSummary, BalancesStepSummarySchema } from './payloads.ts'\n\nexport async function balanceStepSummaryFromRange(\n context: BalanceStepSummaryContext,\n range: BlockNumberRange,\n): Promise<WithStorageMeta<BalancesStepSummary>> {\n // console.log(`balanceStepSummaryFromRange: head=${head}, range=${range[0]}-${range[1]}`)\n const frameHeadHash = await hashFromBlockNumber(context, range[1])\n const frameSize = range[1] - range[0] + 1\n\n let result: BalancesStepSummary | undefined = undefined\n\n if (frameSize === 1) {\n const [, payloads] = await hydrateBlock(context.chainArchivist, context.head)\n const balances: Record<Address, SignedBigInt> = {}\n for (const [address, balance] of Object.entries(netBalancesForPayloads(payloads))) {\n balances[address as Address] = toSignedBigInt(balance)\n }\n result = {\n schema: BalancesStepSummarySchema, hash: context.head, stepSize: -1, balances,\n }\n } else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const step = (StepSizes as any).indexOf(frameSize)\n assertEx(step !== -1, () => `Invalid step size: ${frameSize}. Must be one of ${StepSizes.join(', ')}`)\n\n const [summaryResult] = await context.summaryRepository.get([frameHeadHash])\n if (isAnyPayload(summaryResult)) {\n result = summaryResult as WithStorageMeta<BalancesStepSummary>\n } else {\n // We do not have it, so lets build it\n const subRanges = deepCalculateFramesFromRange(range, step - 1)\n const promises = subRanges.map(subRange => balanceStepSummaryFromRange(\n context,\n subRange,\n ))\n const subResults = await Promise.all(promises)\n\n // add them all up\n const bigIntBalances: Record<Address, bigint> = {}\n for (const subResult of subResults) {\n for (const [address, balance] of Object.entries(subResult.balances)) {\n bigIntBalances[address as Address] = (bigIntBalances[address as Address] ?? 0n) + parseSignedBigInt(balance)\n }\n }\n\n const balances: Record<Address, SignedBigInt> = {}\n for (const [address, balance] of Object.entries(bigIntBalances)) {\n balances[address as Address] = toSignedBigInt(balance)\n }\n\n result = {\n schema: BalancesStepSummarySchema, hash: frameHeadHash, stepSize: frameSize, balances,\n }\n\n await context.summaryRepository.insert([result])\n }\n }\n // console.log(`balanceStepSummaryFromRange-result: head=${head}, range=${range[0]}-${range[1]}: ${toJsonString(result, 10)}`)\n const finalResult = await PayloadBuilder.addStorageMeta(result)\n return finalResult\n}\n","import {\n type Address, type Hex, hexToBigInt, toAddress,\n} from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isTransfer } from '@xyo-network/xl1-protocol'\n\nexport const netBalancesForPayloads = (payloads: Payload[]) => {\n const balances: Record<Address, bigint> = {}\n for (const payload of payloads) {\n if (isTransfer(payload)) {\n const { from } = payload\n for (let [address, amount] of Object.entries(payload.transfers) as [Address, Hex][]) {\n balances[toAddress(address)] = (balances[toAddress(address)] ?? 0n) + hexToBigInt(amount)\n balances[toAddress(from)] = (balances[toAddress(from)] ?? 0n) - hexToBigInt(amount)\n }\n }\n }\n return balances\n}\n","import {\n type Hex,\n hexToBigInt,\n toHex,\n} from '@xylabs/hex'\nimport { isObject } from '@xylabs/object'\n\nexport interface NegativeBigInt {\n negative: Hex\n}\n\nexport interface PositiveBigInt {\n positive: Hex\n}\n\nexport type SignedBigInt = NegativeBigInt | PositiveBigInt\n\nexport const isNegativeBigInt = (value: unknown): value is NegativeBigInt => {\n return isObject(value) && 'negative' in value && typeof value.negative === 'string'\n}\n\nexport const isPositiveBigInt = (value: unknown): value is PositiveBigInt => {\n return isObject(value) && 'positive' in value && typeof value.positive === 'string'\n}\n\nexport const parseSignedBigInt = (value: SignedBigInt): bigint => {\n if (isNegativeBigInt(value)) {\n return -hexToBigInt(value.negative)\n } else if (isPositiveBigInt(value)) {\n return hexToBigInt(value.positive)\n } else {\n throw new Error('Invalid balance type')\n }\n}\n\nexport const toSignedBigInt = (value: bigint): SignedBigInt => {\n return value < 0n ? { negative: toHex(-value) } : { positive: toHex(value) }\n}\n\nexport const toPositiveBigInt = (value: unknown): PositiveBigInt => {\n if (isNegativeBigInt(value)) {\n return { positive: toHex(0n) }\n }\n if (isPositiveBigInt(value)) {\n return { positive: value.positive }\n }\n if (typeof value === 'bigint') {\n return { positive: toHex(value) }\n }\n throw new Error('Invalid value for positive big int')\n}\n","import { StepSizes } from '@xyo-network/xl1-protocol'\n\nimport type { BlockNumberRange } from './BlockNumberRange.ts'\nimport { calculateFramesFromRange } from './calculateFramesFromRange.ts'\n\nexport function deepCalculateFramesFromRange(range: BlockNumberRange, startingStep = StepSizes.length - 1): BlockNumberRange[] {\n const fitted: BlockNumberRange[] = []\n let remaining: BlockNumberRange[] = [range]\n\n for (let step = startingStep; step >= 0; step--) {\n const newRemaining: BlockNumberRange[] = []\n for (const range of remaining) {\n const [newFittedFrames, newRemainingFrames] = calculateFramesFromRange(range, step)\n fitted.push(...newFittedFrames)\n newRemaining.push(...newRemainingFrames)\n }\n remaining = newRemaining\n }\n\n for (const range of remaining) {\n for (let i = range[0]; i <= range[1]; i++) {\n fitted.push([i, i]) // Add individual frames for remaining ranges\n }\n }\n\n return fitted.toSorted((a, b) => a[0] - b[0]) // Sort by start of range\n}\n","import { stepSize } from '@xyo-network/xl1-protocol'\n\nimport type { BlockNumberRange } from './BlockNumberRange.ts'\n\nexport function calculateFramesFromRange(range: BlockNumberRange, step: number): [\n // ranges of fitted frames\n BlockNumberRange[],\n // ranges of remaining blocks\n BlockNumberRange[]] {\n const size = stepSize(step)\n let start = (Math.trunc(range[0] / size)) * size\n const fitted: BlockNumberRange[] = []\n const remaining: BlockNumberRange[] = []\n\n // if the start is not aligned with the range, add a remaining block\n if (start !== range[0]) {\n start += size\n remaining.push([range[0], Math.min(start - 1, range[1])])\n }\n\n for (let i = start; i <= range[1]; i += size) {\n if ((i + size - 1) <= range[1]) {\n fitted.push([i, Math.min(i + size - 1, range[1])])\n } else {\n remaining.push([i, range[1]])\n }\n }\n return [fitted, remaining]\n}\n","import { asHash, type Hash } from '@xylabs/hex'\nimport { toJsonString } from '@xylabs/object'\nimport { asBlockBoundWitnessWithStorageMeta, StepSizes } from '@xyo-network/xl1-protocol'\n\nimport type { ChainContext } from './model.ts'\n\nexport async function hashFromBlockNumber(context: ChainContext, blockNumber: number): Promise<Hash> {\n const result = await context.chainArchivist.get([context.head])\n let currentBlock = asBlockBoundWitnessWithStorageMeta(result.at(0), () => `Head block not found for hash: ${context.head}`, { required: true })\n while (currentBlock.block > blockNumber) {\n let jumpHash: Hash | null = currentBlock.previous\n let jumpBlockNumber = currentBlock.block - 1\n for (const [step, stepSize] of StepSizes.entries()) {\n const possibleJumpBlockNumber = currentBlock.block - stepSize\n if (possibleJumpBlockNumber >= blockNumber && possibleJumpBlockNumber <= jumpBlockNumber) {\n jumpBlockNumber = possibleJumpBlockNumber\n jumpHash = asHash(currentBlock.step_hashes.at(step), () => `Step hash not found for step ${step} in block ${currentBlock.block}`)\n }\n }\n const [newBlock] = await context.chainArchivist.get([\n asHash(jumpHash, () => `Jump hash not found for block number [${blockNumber}]: ${jumpBlockNumber} ${toJsonString(currentBlock, 10)}`)])\n currentBlock = asBlockBoundWitnessWithStorageMeta(newBlock, () => `Block not found for hash: ${jumpHash}`, { required: true })\n if (currentBlock.block === blockNumber) {\n break\n }\n if (currentBlock.block < blockNumber) {\n throw new Error(`Block number ${blockNumber} is not a valid step block number for block ${context.head}.`)\n }\n }\n return currentBlock._hash\n}\n","import type { Address, Hash } from '@xylabs/hex'\nimport type { EmptyObject } from '@xylabs/object'\nimport type { Payload, Schema } from '@xyo-network/payload-model'\n\nimport type { SignedBigInt } from '../../SignedBigInt.ts'\n\nexport const StepSummarySchema: Schema = 'network.xyo.step.summary'\nexport type StepSummarySchema = typeof StepSummarySchema\n\nexport interface StepSummaryFields {\n hash: Hash // the stepHash - the hash of the last block in the step frame\n stepSize: number // the stepSize in blocks\n}\n\nexport interface ChainWindow {\n depth: number // number of blocks the window covers, including the head\n head: Hash // the head of the chain\n}\n\nexport type StepSummary<TAdditionalFields extends EmptyObject | void = void,\n TSchema extends Schema | void = void> = Payload<TAdditionalFields extends void ? StepSummaryFields : TAdditionalFields & StepSummaryFields,\n TSchema extends void ? StepSummarySchema : TSchema>\n\nexport const BalancesStepSummarySchema: Schema = 'network.xyo.step.summary.balances'\nexport type BalancesStepSummarySchema = typeof BalancesStepSummarySchema\n\nexport type BalancesStepSummary = StepSummary<{\n balances: Record<Address, SignedBigInt>\n}, BalancesStepSummarySchema>\n","import type { Address } from '@xylabs/hex'\nimport { asAddress } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { asBlockBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nimport { parseSignedBigInt } from '../../SignedBigInt.ts'\nimport { balanceStepSummaryFromRange } from './balanceStepSummaryFromRange.ts'\nimport { deepCalculateFramesFromRange } from './frames/deepCalculateFramesFromRange.ts'\nimport type { BalanceStepSummaryContext } from './model.ts'\n\nexport async function balanceSummary(\n context: BalanceStepSummaryContext,\n): Promise<Partial<Record<Address, bigint>>> {\n const headResult = await context.chainArchivist.get([context.head])\n const headBoundWitness = asBlockBoundWitnessWithStorageMeta(headResult.at(0), () => `Head block not found for hash: ${context.head}`, { required: true })\n const rangeStart = isDefined(context.windowSize) ? Math.max(headBoundWitness.block - context.windowSize + 1, 0) : 0\n const ranges = deepCalculateFramesFromRange([rangeStart, headBoundWitness.block])\n const summaries = await Promise.all(ranges.map(range => balanceStepSummaryFromRange(context, range)))\n const balances: Partial<Record<Address, bigint>> = {}\n for (let summary of summaries) {\n for (const [address, balance] of Object.entries(summary.balances)) {\n const validAddress = asAddress(address, () => `Invalid address: ${address}`)\n balances[validAddress] = (balances[validAddress] ?? 0n) + parseSignedBigInt(balance)\n }\n }\n return balances\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport { toHex } from '@xylabs/hex'\nimport type { AccountInstance } from '@xyo-network/account-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n ExecutableFields,\n FromFields,\n HydratedTransaction, TransactionBoundWitness, TransactionBoundWitnessFields, TransactionFeesBigInt,\n} from '@xyo-network/xl1-protocol'\nimport { defaultTransactionFees } from '@xyo-network/xl1-protocol'\n\nexport async function buildTransaction(\n chain: Address,\n elevatedPayloads: AllowedBlockPayload[],\n additionalPayloads: Payload[],\n signer: AccountInstance | AccountInstance[],\n nbf: number,\n exp: number,\n from?: Address,\n fees: TransactionFeesBigInt = defaultTransactionFees,\n): Promise<HydratedTransaction> {\n if (from === undefined && Array.isArray(signer)) {\n throw new Error('from is required when signer is an array')\n }\n\n const txBoundWitnessFields: TransactionBoundWitnessFields = {\n chain,\n fees: {\n base: toHex(fees.base),\n gasLimit: toHex(fees.gasLimit),\n gasPrice: toHex(fees.gasPrice),\n priority: toHex(fees.priority),\n },\n nbf,\n exp,\n }\n\n const elevatedHashes = await PayloadBuilder.hashes(elevatedPayloads)\n const script: string[] = []\n for (const elevatedHash of elevatedHashes) {\n script.push(`elevate|${elevatedHash}`)\n }\n\n const fields: TransactionBoundWitnessFields & FromFields & Partial<ExecutableFields> = {\n ...txBoundWitnessFields,\n from: from ?? (Array.isArray(signer) ? assertEx(signer.at(0)?.address) : signer.address),\n }\n\n if (script.length > 0) {\n fields.script = script\n }\n\n const [tx, txPayloads] = await new BoundWitnessBuilder<TransactionBoundWitness>()\n .fields(fields)\n .meta({ $signatures: [] })\n .payloads([...elevatedPayloads, ...additionalPayloads])\n .signers(Array.isArray(signer) ? signer : [signer])\n .build()\n\n return [await PayloadBuilder.addStorageMeta(tx), await PayloadBuilder.addStorageMeta(txPayloads)]\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport { hydrateTypedBoundWitness, tryHydrateTypedBoundWitness } from '@xyo-network/archivist-model'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type {\n AllowedBlockPayload,\n HydratedTransaction, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport { isAllowedBlockPayload, isTransactionBoundWitnessWithStorageMeta } from '@xyo-network/xl1-protocol'\n\nexport const tryHydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction | undefined> => {\n return (await tryHydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\n hash,\n isTransactionBoundWitnessWithStorageMeta,\n )) as HydratedTransaction | undefined\n}\n\nexport const hydrateTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction> => {\n return await hydrateTypedBoundWitness<TransactionBoundWitness>(\n archivist,\n hash,\n isTransactionBoundWitnessWithStorageMeta,\n ) as HydratedTransaction\n}\n\nexport const flattenHydratedTransaction = (hydratedTransaction: HydratedTransaction): Payload[] => {\n const [tx, txPayloads] = hydratedTransaction\n return [...txPayloads, tx]\n}\n\nexport const flattenHydratedTransactions = (hydratedTransactions: HydratedTransaction[]): Payload[] =>\n hydratedTransactions.flatMap(tx => flattenHydratedTransaction(tx))\n\nexport const tryHydrateElevatedTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction | undefined> => {\n const hydratedTransaction = await tryHydrateTransaction(archivist, hash)\n if (!hydratedTransaction) {\n return undefined\n }\n const [transaction, payloads] = hydratedTransaction\n const opCodes = (transaction.script ?? []).filter(operation => operation.startsWith('elevate|'))\n const elevatedPayloads: WithStorageMeta<AllowedBlockPayload>[] = []\n for (const opCode of opCodes) {\n const [code, hash] = opCode.split('|')\n if (code === 'elevated') {\n const elevatedPayload = payloads.find(payload => payload._hash === hash)\n if (isAllowedBlockPayload(elevatedPayload)) {\n elevatedPayloads.push(elevatedPayload)\n }\n }\n }\n if (opCodes.length === elevatedPayloads.length) {\n return [transaction, elevatedPayloads]\n }\n return undefined\n}\n\nexport const hydrateElevatedTransaction = async (\n archivist: ReadArchivist,\n hash: Hash,\n): Promise<HydratedTransaction> => {\n return assertEx(await tryHydrateElevatedTransaction(archivist, hash), () => 'Hydration failed')\n}\n","import { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { HydratedTransaction } from '@xyo-network/xl1-protocol'\n\n/** The number of bytes that a transaction and its payloads will take up in a block */\nexport function transactionBlockByteCount([transaction, payloads]: HydratedTransaction): number {\n const cleanTransaction = PayloadBuilder.omitStorageMeta(transaction)\n const transactionBytes = JSON.stringify(cleanTransaction).length\n const cleanPayloads = PayloadBuilder.omitStorageMeta(payloads)\n return cleanPayloads.reduce((acc: number, payload) => acc + JSON.stringify(payload).length, 0) + transactionBytes\n}\n","import { asHash, type Hash } from '@xylabs/hex'\nimport type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedTransaction, TransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nimport { crackOperations } from './transactionOperations.ts'\n\nexport function transactionElevatedPayloadHashes(transaction: TransactionBoundWitness): Hash[] {\n const elevateOperations = crackOperations(transaction.script ?? []).filter(op => op[0] === 'elevate')\n return elevateOperations.map(op => asHash(op[1][0], true))\n}\n\nexport function transactionElevatedPayloads([transaction, payloads]: HydratedTransaction): WithHashStorageMeta<Payload>[] {\n const hashes = transactionElevatedPayloadHashes(transaction)\n const elevatedPayloads = payloads.filter(payload => hashes.includes(payload._hash))\n return elevatedPayloads\n}\n","export function crackOperation(operation: string): [string, string[]] {\n const parts = operation.split('|')\n if (parts.length < 2) {\n throw new Error(`Invalid operation format: ${operation}`)\n }\n return [parts[0], parts.slice(1)]\n}\n\nexport function crackOperations(operations: string[]): [string, string[]][] {\n return operations.map(op => crackOperation(op))\n}\n","import type { HydratedTransaction } from '@xyo-network/xl1-protocol'\nimport { AttoXL1, TransactionGasCosts } from '@xyo-network/xl1-protocol'\n\nimport { transactionBlockByteCount } from './transactionBlockByteCount.ts'\nimport { transactionElevatedPayloads } from './transactionElevatedPayloads.ts'\n\n/** The required gas for the byte storage on the block chain for a transaction */\nexport function transactionBytesRequiredGas([transaction, payloads]: HydratedTransaction): AttoXL1 {\n const transactionBlockBytes = transactionBlockByteCount([transaction, payloads])\n return AttoXL1(TransactionGasCosts.characterStorage * BigInt(transactionBlockBytes))\n}\n\nexport function transactionRequiredGas(hydratedTransaction: HydratedTransaction): AttoXL1 {\n const elevatedPayloads = transactionElevatedPayloads(hydratedTransaction)\n const hashes = elevatedPayloads.length + 1 /* for transaction itself */\n const signatures = hydratedTransaction[0].addresses.length\n return AttoXL1(transactionBytesRequiredGas(hydratedTransaction)\n + TransactionGasCosts.hashValidation * BigInt(hashes)\n + TransactionGasCosts.signatureValidation * BigInt(signatures)\n + TransactionGasCosts.payloadValidation * BigInt(elevatedPayloads.length))\n}\n"],"mappings":"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","names":["filterAs","assertEx","asBlockBoundWitnessWithStorageMeta","asTransactionBoundWitnessWithStorageMeta","isTransactionBoundWitnessWithStorageMeta","allHashesPresent","hashes","payloads","payloadHashes","Set","map","p","_hash","every","hash","has","tryHydrateBlock","archivist","maxDepth","assertEx","bw","filterAs","get","asBlockBoundWitnessWithStorageMeta","at","undefined","blkPayloads","payload_hashes","transactions","asTransactionBoundWitnessWithStorageMeta","transactionsPayloadHashes","flatMap","tx","transactionsPayloads","allPayloadsHashes","allPayloads","allPayloadsFiltered","filter","hydrateBlock","minDepth","flattenHydratedBlock","hydratedBlock","blk","flattenHydratedBlocks","hydratedBlocks","transactionsFromHydratedBlock","block","blockPayloadsFromHydratedBlock","find","x","isTransactionBoundWitnessWithStorageMeta","assertEx","PayloadBuilder","isAnyPayload","StepSizes","hexToBigInt","toAddress","isTransfer","netBalancesForPayloads","payloads","balances","payload","isTransfer","from","address","amount","Object","entries","transfers","toAddress","hexToBigInt","hexToBigInt","toHex","isObject","isNegativeBigInt","value","isObject","negative","isPositiveBigInt","positive","parseSignedBigInt","hexToBigInt","Error","toSignedBigInt","toHex","toPositiveBigInt","StepSizes","stepSize","calculateFramesFromRange","range","step","size","stepSize","start","Math","trunc","fitted","remaining","push","min","i","deepCalculateFramesFromRange","range","startingStep","StepSizes","length","fitted","remaining","step","newRemaining","newFittedFrames","newRemainingFrames","calculateFramesFromRange","push","i","toSorted","a","b","asHash","toJsonString","asBlockBoundWitnessWithStorageMeta","StepSizes","hashFromBlockNumber","context","blockNumber","result","chainArchivist","get","head","currentBlock","asBlockBoundWitnessWithStorageMeta","at","required","block","jumpHash","previous","jumpBlockNumber","step","stepSize","StepSizes","entries","possibleJumpBlockNumber","asHash","step_hashes","newBlock","toJsonString","Error","_hash","StepSummarySchema","BalancesStepSummarySchema","balanceStepSummaryFromRange","context","range","frameHeadHash","hashFromBlockNumber","frameSize","result","undefined","payloads","hydrateBlock","chainArchivist","head","balances","address","balance","Object","entries","netBalancesForPayloads","toSignedBigInt","schema","BalancesStepSummarySchema","hash","stepSize","step","StepSizes","indexOf","assertEx","join","summaryResult","summaryRepository","get","isAnyPayload","subRanges","deepCalculateFramesFromRange","promises","map","subRange","subResults","Promise","all","bigIntBalances","subResult","parseSignedBigInt","insert","finalResult","PayloadBuilder","addStorageMeta","asAddress","isDefined","asBlockBoundWitnessWithStorageMeta","balanceSummary","context","headResult","chainArchivist","get","head","headBoundWitness","asBlockBoundWitnessWithStorageMeta","at","required","rangeStart","isDefined","windowSize","Math","max","block","ranges","deepCalculateFramesFromRange","summaries","Promise","all","map","range","balanceStepSummaryFromRange","balances","summary","address","balance","Object","entries","validAddress","asAddress","parseSignedBigInt","assertEx","toHex","BoundWitnessBuilder","PayloadBuilder","defaultTransactionFees","buildTransaction","chain","elevatedPayloads","additionalPayloads","signer","nbf","exp","from","fees","defaultTransactionFees","undefined","Array","isArray","Error","txBoundWitnessFields","base","toHex","gasLimit","gasPrice","priority","elevatedHashes","PayloadBuilder","hashes","script","elevatedHash","push","fields","assertEx","at","address","length","tx","txPayloads","BoundWitnessBuilder","meta","$signatures","payloads","signers","build","addStorageMeta","assertEx","hydrateTypedBoundWitness","tryHydrateTypedBoundWitness","isAllowedBlockPayload","isTransactionBoundWitnessWithStorageMeta","tryHydrateTransaction","archivist","hash","tryHydrateTypedBoundWitness","isTransactionBoundWitnessWithStorageMeta","hydrateTransaction","hydrateTypedBoundWitness","flattenHydratedTransaction","hydratedTransaction","tx","txPayloads","flattenHydratedTransactions","hydratedTransactions","flatMap","tryHydrateElevatedTransaction","undefined","transaction","payloads","opCodes","script","filter","operation","startsWith","elevatedPayloads","opCode","code","split","elevatedPayload","find","payload","_hash","isAllowedBlockPayload","push","length","hydrateElevatedTransaction","assertEx","PayloadBuilder","transactionBlockByteCount","transaction","payloads","cleanTransaction","PayloadBuilder","omitStorageMeta","transactionBytes","JSON","stringify","length","cleanPayloads","reduce","acc","payload","asHash","crackOperation","operation","parts","split","length","Error","slice","crackOperations","operations","map","op","transactionElevatedPayloadHashes","transaction","elevateOperations","crackOperations","script","filter","op","map","asHash","transactionElevatedPayloads","payloads","hashes","elevatedPayloads","payload","includes","_hash","AttoXL1","TransactionGasCosts","transactionBytesRequiredGas","transaction","payloads","transactionBlockBytes","transactionBlockByteCount","AttoXL1","TransactionGasCosts","characterStorage","BigInt","transactionRequiredGas","hydratedTransaction","elevatedPayloads","transactionElevatedPayloads","hashes","length","signatures","addresses","hashValidation","signatureValidation","payloadValidation"]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { ArchivistInstance, WriteArchivist } from '@xyo-network/archivist-model';
|
|
2
|
+
import type { WalletInstance } from '@xyo-network/wallet-model';
|
|
3
|
+
import type { AccountBalanceService, BlockProducerService, BlockRewardService, ChainContractViewer, ChainStaker, ChainStakeViewer, ElectionService, EventingChainBlockNumberIterator, StakeIntentService } from '@xyo-network/xl1-protocol';
|
|
4
|
+
export interface ChainServiceCollection {
|
|
5
|
+
/**
|
|
6
|
+
* The account which is used to sign transactions
|
|
7
|
+
*/
|
|
8
|
+
account: WalletInstance;
|
|
9
|
+
/**
|
|
10
|
+
* Services for working with account balances
|
|
11
|
+
*/
|
|
12
|
+
balanceService: AccountBalanceService;
|
|
13
|
+
/**
|
|
14
|
+
* The archivist which the chain data is stored in
|
|
15
|
+
*/
|
|
16
|
+
chainArchivist: ArchivistInstance;
|
|
17
|
+
/**
|
|
18
|
+
* Service for viewing codified chain information
|
|
19
|
+
* from a contract
|
|
20
|
+
*/
|
|
21
|
+
chainContractViewer: ChainContractViewer;
|
|
22
|
+
/**
|
|
23
|
+
* The chain iterator
|
|
24
|
+
*/
|
|
25
|
+
chainIterator?: EventingChainBlockNumberIterator;
|
|
26
|
+
/**
|
|
27
|
+
* Service for viewing stake information
|
|
28
|
+
*/
|
|
29
|
+
chainStakeViewer: ChainStakeViewer;
|
|
30
|
+
/**
|
|
31
|
+
* Service for staking
|
|
32
|
+
*/
|
|
33
|
+
chainStaker: ChainStaker;
|
|
34
|
+
/**
|
|
35
|
+
* The archivist which the chain submissions are stored in
|
|
36
|
+
*/
|
|
37
|
+
chainSubmissionsArchivistWrite: WriteArchivist;
|
|
38
|
+
/**
|
|
39
|
+
* Service for determining leader election
|
|
40
|
+
*/
|
|
41
|
+
electionService: ElectionService;
|
|
42
|
+
/**
|
|
43
|
+
* The archivist which the pending transactions are stored
|
|
44
|
+
* as bundled transactions
|
|
45
|
+
*/
|
|
46
|
+
pendingBundledTransactionsArchivistWrite: ArchivistInstance;
|
|
47
|
+
/**
|
|
48
|
+
* The block producer service
|
|
49
|
+
*/
|
|
50
|
+
producer: BlockProducerService;
|
|
51
|
+
/**
|
|
52
|
+
* Service response for calculating block rewards
|
|
53
|
+
*/
|
|
54
|
+
rewardService: BlockRewardService;
|
|
55
|
+
/**
|
|
56
|
+
* Services for working with staked intents
|
|
57
|
+
*/
|
|
58
|
+
stakeIntentService: StakeIntentService;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=ChainServiceCollection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainServiceCollection.d.ts","sourceRoot":"","sources":["../../src/ChainServiceCollection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EACV,qBAAqB,EAAE,oBAAoB,EAC3C,kBAAkB,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,gCAAgC,EACzH,kBAAkB,EACnB,MAAM,2BAA2B,CAAA;AAElC,MAAM,WAAW,sBAAsB;IAErC;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,cAAc,EAAE,qBAAqB,CAAA;IACrC;;OAEG;IACH,cAAc,EAAE,iBAAiB,CAAA;IACjC;;;OAGG;IACH,mBAAmB,EAAE,mBAAmB,CAAA;IACxC;;OAEG;IACH,aAAa,CAAC,EAAE,gCAAgC,CAAA;IAChD;;OAEG;IACH,gBAAgB,EAAE,gBAAgB,CAAA;IAClC;;OAEG;IACH,WAAW,EAAE,WAAW,CAAA;IACxB;;OAEG;IACH,8BAA8B,EAAE,cAAc,CAAA;IAC9C;;OAEG;IACH,eAAe,EAAE,eAAe,CAAA;IAChC;;;OAGG;IACH,wCAAwC,EAAE,iBAAiB,CAAA;IAC3D;;OAEG;IACH,QAAQ,EAAE,oBAAoB,CAAA;IAC9B;;OAEG;IACH,aAAa,EAAE,kBAAkB,CAAA;IACjC;;OAEG;IACH,kBAAkB,EAAE,kBAAkB,CAAA;CACvC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { ArchivistInstance, WriteArchivist } from '@xyo-network/archivist-model';
|
|
2
|
+
import type { WalletInstance } from '@xyo-network/wallet-model';
|
|
3
|
+
import type { AccountBalanceServiceV2, BlockProducerService, BlockRewardService, ChainContractViewer, ChainStaker, ChainStakeViewer, ElectionService, EventingChainBlockNumberIterator, StakeIntentService } from '@xyo-network/xl1-protocol';
|
|
4
|
+
export interface ChainServiceCollectionV2 {
|
|
5
|
+
/**
|
|
6
|
+
* The account which is used to sign transactions
|
|
7
|
+
*/
|
|
8
|
+
account: WalletInstance;
|
|
9
|
+
/**
|
|
10
|
+
* Services for working with account balances
|
|
11
|
+
*/
|
|
12
|
+
balanceService: AccountBalanceServiceV2;
|
|
13
|
+
/**
|
|
14
|
+
* The archivist which the chain data is stored in
|
|
15
|
+
*/
|
|
16
|
+
chainArchivist: ArchivistInstance;
|
|
17
|
+
/**
|
|
18
|
+
* Service for viewing codified chain information
|
|
19
|
+
* from a contract
|
|
20
|
+
*/
|
|
21
|
+
chainContractViewer: ChainContractViewer;
|
|
22
|
+
/**
|
|
23
|
+
* The chain iterator
|
|
24
|
+
*/
|
|
25
|
+
chainIterator?: EventingChainBlockNumberIterator;
|
|
26
|
+
/**
|
|
27
|
+
* Service for viewing stake information
|
|
28
|
+
*/
|
|
29
|
+
chainStakeViewer: ChainStakeViewer;
|
|
30
|
+
/**
|
|
31
|
+
* Service for staking
|
|
32
|
+
*/
|
|
33
|
+
chainStaker: ChainStaker;
|
|
34
|
+
/**
|
|
35
|
+
* The archivist which the chain submissions are stored in
|
|
36
|
+
*/
|
|
37
|
+
chainSubmissionsArchivistWrite: WriteArchivist;
|
|
38
|
+
/**
|
|
39
|
+
* Service for determining leader election
|
|
40
|
+
*/
|
|
41
|
+
electionService: ElectionService;
|
|
42
|
+
/**
|
|
43
|
+
* The archivist which the pending transactions are stored
|
|
44
|
+
* as bundled transactions
|
|
45
|
+
*/
|
|
46
|
+
pendingBundledTransactionsArchivistWrite: ArchivistInstance;
|
|
47
|
+
/**
|
|
48
|
+
* The block producer service
|
|
49
|
+
*/
|
|
50
|
+
producer: BlockProducerService;
|
|
51
|
+
/**
|
|
52
|
+
* Service response for calculating block rewards
|
|
53
|
+
*/
|
|
54
|
+
rewardService: BlockRewardService;
|
|
55
|
+
/**
|
|
56
|
+
* Services for working with staked intents
|
|
57
|
+
*/
|
|
58
|
+
stakeIntentService: StakeIntentService;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=ChainServiceCollectionV2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainServiceCollectionV2.d.ts","sourceRoot":"","sources":["../../src/ChainServiceCollectionV2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AACrF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EACV,uBAAuB,EAAE,oBAAoB,EAC7C,kBAAkB,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,gCAAgC,EACzH,kBAAkB,EACnB,MAAM,2BAA2B,CAAA;AAElC,MAAM,WAAW,wBAAwB;IAEvC;;OAEG;IACH,OAAO,EAAE,cAAc,CAAA;IACvB;;OAEG;IACH,cAAc,EAAE,uBAAuB,CAAA;IACvC;;OAEG;IACH,cAAc,EAAE,iBAAiB,CAAA;IACjC;;;OAGG;IACH,mBAAmB,EAAE,mBAAmB,CAAA;IACxC;;OAEG;IACH,aAAa,CAAC,EAAE,gCAAgC,CAAA;IAChD;;OAEG;IACH,gBAAgB,EAAE,gBAAgB,CAAA;IAClC;;OAEG;IACH,WAAW,EAAE,WAAW,CAAA;IACxB;;OAEG;IACH,8BAA8B,EAAE,cAAc,CAAA;IAC9C;;OAEG;IACH,eAAe,EAAE,eAAe,CAAA;IAChC;;;OAGG;IACH,wCAAwC,EAAE,iBAAiB,CAAA;IAC3D;;OAEG;IACH,QAAQ,EAAE,oBAAoB,CAAA;IAC9B;;OAEG;IACH,aAAa,EAAE,kBAAkB,CAAA;IACjC;;OAEG;IACH,kBAAkB,EAAE,kBAAkB,CAAA;CACvC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type Hex } from '@xylabs/hex';
|
|
2
|
+
export interface NegativeBigInt {
|
|
3
|
+
negative: Hex;
|
|
4
|
+
}
|
|
5
|
+
export interface PositiveBigInt {
|
|
6
|
+
positive: Hex;
|
|
7
|
+
}
|
|
8
|
+
export type SignedBigInt = NegativeBigInt | PositiveBigInt;
|
|
9
|
+
export declare const isNegativeBigInt: (value: unknown) => value is NegativeBigInt;
|
|
10
|
+
export declare const isPositiveBigInt: (value: unknown) => value is PositiveBigInt;
|
|
11
|
+
export declare const parseSignedBigInt: (value: SignedBigInt) => bigint;
|
|
12
|
+
export declare const toSignedBigInt: (value: bigint) => SignedBigInt;
|
|
13
|
+
export declare const toPositiveBigInt: (value: unknown) => PositiveBigInt;
|
|
14
|
+
//# sourceMappingURL=SignedBigInt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SignedBigInt.d.ts","sourceRoot":"","sources":["../../src/SignedBigInt.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,GAAG,EAGT,MAAM,aAAa,CAAA;AAGpB,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,GAAG,CAAA;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,GAAG,CAAA;CACd;AAED,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,cAAc,CAAA;AAE1D,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,cAE1D,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,cAE1D,CAAA;AAED,eAAO,MAAM,iBAAiB,GAAI,OAAO,YAAY,KAAG,MAQvD,CAAA;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,YAE9C,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,cAWjD,CAAA"}
|
|
@@ -3,7 +3,7 @@ import type { ReadArchivist } from '@xyo-network/archivist-model';
|
|
|
3
3
|
import type { Payload, WithStorageMeta } from '@xyo-network/payload-model';
|
|
4
4
|
import type { HydratedBlock, TransactionBoundWitness } from '@xyo-network/xl1-protocol';
|
|
5
5
|
export declare function allHashesPresent(hashes: Hash[], payloads: WithStorageMeta<Payload>[]): boolean;
|
|
6
|
-
export declare const tryHydrateBlock: (archivist: ReadArchivist, hash: Hash, maxDepth?: number
|
|
6
|
+
export declare const tryHydrateBlock: (archivist: ReadArchivist, hash: Hash, maxDepth?: number) => Promise<HydratedBlock | undefined>;
|
|
7
7
|
export declare const hydrateBlock: (archivist: ReadArchivist, hash: Hash, maxDepth?: number, minDepth?: number) => Promise<HydratedBlock>;
|
|
8
8
|
export declare const flattenHydratedBlock: (hydratedBlock: HydratedBlock) => WithStorageMeta<Payload>[];
|
|
9
9
|
export declare const flattenHydratedBlocks: (hydratedBlocks: HydratedBlock[]) => WithStorageMeta<Payload>[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hydrateBlock.d.ts","sourceRoot":"","sources":["../../../src/block/hydrateBlock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAKvF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAG9F;AAED,eAAO,MAAM,eAAe,GAC1B,WAAW,aAAa,EACxB,MAAM,IAAI,EACV,WAAU,MAAU,
|
|
1
|
+
{"version":3,"file":"hydrateBlock.d.ts","sourceRoot":"","sources":["../../../src/block/hydrateBlock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AAKvF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,EAAE,GAAG,OAAO,CAG9F;AAED,eAAO,MAAM,eAAe,GAC1B,WAAW,aAAa,EACxB,MAAM,IAAI,EACV,WAAU,MAAU,KACnB,OAAO,CAAC,aAAa,GAAG,SAAS,CAcnC,CAAA;AAED,eAAO,MAAM,YAAY,GACvB,WAAW,aAAa,EACxB,MAAM,IAAI,EACV,WAAU,MAAU,EACpB,iBAAmB,KAClB,OAAO,CAAC,aAAa,CAwBvB,CAAA;AAED,eAAO,MAAM,oBAAoB,GAAI,eAAe,aAAa,KAAG,eAAe,CAAC,OAAO,CAAC,EAG3F,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,gBAAgB,aAAa,EAAE,KAAG,eAAe,CAAC,OAAO,CAAC,EACtC,CAAA;AAE1D,eAAO,MAAM,6BAA6B,GAAI,OAAO,aAAa,KAAG,eAAe,CAAC,uBAAuB,CAAC,EAE5G,CAAA;AAED,eAAO,MAAM,8BAA8B,GAAI,OAAO,aAAa,KAAG,eAAe,CAAC,OAAO,CAAC,EAK7F,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { WithStorageMeta } from '@xyo-network/payload-model';
|
|
2
|
+
import type { BlockNumberRange } from './frames/BlockNumberRange.ts';
|
|
3
|
+
import type { BalanceStepSummaryContext } from './model.ts';
|
|
4
|
+
import { type BalancesStepSummary } from './payloads.ts';
|
|
5
|
+
export declare function balanceStepSummaryFromRange(context: BalanceStepSummaryContext, range: BlockNumberRange): Promise<WithStorageMeta<BalancesStepSummary>>;
|
|
6
|
+
//# sourceMappingURL=balanceStepSummaryFromRange.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balanceStepSummaryFromRange.d.ts","sourceRoot":"","sources":["../../../../src/block/primitives/balanceStepSummaryFromRange.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AASjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAGpE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAC3D,OAAO,EAAE,KAAK,mBAAmB,EAA6B,MAAM,eAAe,CAAA;AAEnF,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAwD/C"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Address } from '@xylabs/hex';
|
|
2
|
+
import type { BalanceStepSummaryContext } from './model.ts';
|
|
3
|
+
export declare function balanceSummary(context: BalanceStepSummaryContext): Promise<Partial<Record<Address, bigint>>>;
|
|
4
|
+
//# sourceMappingURL=balanceSummary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"balanceSummary.d.ts","sourceRoot":"","sources":["../../../../src/block/primitives/balanceSummary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAQ1C,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAE3D,wBAAsB,cAAc,CAClC,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAc3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepCalculateFramesFromRange.d.ts","sourceRoot":"","sources":["../../../../../src/block/primitives/frames/deepCalculateFramesFromRange.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAG7D,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"deepCalculateFramesFromRange.d.ts","sourceRoot":"","sources":["../../../../../src/block/primitives/frames/deepCalculateFramesFromRange.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAG7D,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,EAAE,YAAY,SAAuB,GAAG,gBAAgB,EAAE,CAqB7H"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/block/primitives/frames/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/block/primitives/frames/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,mCAAmC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hashFromBlockNumber.d.ts","sourceRoot":"","sources":["../../../../src/block/primitives/hashFromBlockNumber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,IAAI,EAAE,MAAM,aAAa,CAAA;AAI/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBnG"}
|
|
@@ -1,2 +1,7 @@
|
|
|
1
|
+
export * from './balanceStepSummaryFromRange.ts';
|
|
2
|
+
export * from './balanceSummary.ts';
|
|
1
3
|
export * from './frames/index.ts';
|
|
4
|
+
export * from './hashFromBlockNumber.ts';
|
|
5
|
+
export * from './model.ts';
|
|
6
|
+
export * from './payloads.ts';
|
|
2
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/block/primitives/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/block/primitives/index.ts"],"names":[],"mappings":"AAAA,cAAc,kCAAkC,CAAA;AAChD,cAAc,qBAAqB,CAAA;AACnC,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,eAAe,CAAA"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Hash } from '@xylabs/hex';
|
|
2
|
+
import type { ReadArchivist } from '@xyo-network/archivist-model';
|
|
3
|
+
import type { Payload } from '@xyo-network/payload-model';
|
|
4
|
+
import type { PayloadRepository } from '@xyo-network/xl1-protocol';
|
|
5
|
+
import type { BalancesStepSummary } from './payloads.ts';
|
|
6
|
+
export interface ChainContext {
|
|
7
|
+
chainArchivist: ReadArchivist;
|
|
8
|
+
head: Hash;
|
|
9
|
+
windowSize?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ChainSummaryContext<T extends Payload> extends ChainContext {
|
|
12
|
+
summaryRepository: PayloadRepository<Hash, T>;
|
|
13
|
+
}
|
|
14
|
+
export interface BalanceStepSummaryContext extends ChainSummaryContext<BalancesStepSummary> {
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../../src/block/primitives/model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAElE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAExD,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,aAAa,CAAA;IAC7B,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,SAAS,OAAO,CAAE,SAAQ,YAAY;IAC1E,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;CAC9C;AAED,MAAM,WAAW,yBAA0B,SAAQ,mBAAmB,CAAC,mBAAmB,CAAC;CAAG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Address, Hash } from '@xylabs/hex';
|
|
2
|
+
import type { EmptyObject } from '@xylabs/object';
|
|
3
|
+
import type { Payload, Schema } from '@xyo-network/payload-model';
|
|
4
|
+
import type { SignedBigInt } from '../../SignedBigInt.ts';
|
|
5
|
+
export declare const StepSummarySchema: Schema;
|
|
6
|
+
export type StepSummarySchema = typeof StepSummarySchema;
|
|
7
|
+
export interface StepSummaryFields {
|
|
8
|
+
hash: Hash;
|
|
9
|
+
stepSize: number;
|
|
10
|
+
}
|
|
11
|
+
export interface ChainWindow {
|
|
12
|
+
depth: number;
|
|
13
|
+
head: Hash;
|
|
14
|
+
}
|
|
15
|
+
export type StepSummary<TAdditionalFields extends EmptyObject | void = void, TSchema extends Schema | void = void> = Payload<TAdditionalFields extends void ? StepSummaryFields : TAdditionalFields & StepSummaryFields, TSchema extends void ? StepSummarySchema : TSchema>;
|
|
16
|
+
export declare const BalancesStepSummarySchema: Schema;
|
|
17
|
+
export type BalancesStepSummarySchema = typeof BalancesStepSummarySchema;
|
|
18
|
+
export type BalancesStepSummary = StepSummary<{
|
|
19
|
+
balances: Record<Address, SignedBigInt>;
|
|
20
|
+
}, BalancesStepSummarySchema>;
|
|
21
|
+
//# sourceMappingURL=payloads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payloads.d.ts","sourceRoot":"","sources":["../../../../src/block/primitives/payloads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,eAAO,MAAM,iBAAiB,EAAE,MAAmC,CAAA;AACnE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAA;AAExD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;CACX;AAED,MAAM,MAAM,WAAW,CAAC,iBAAiB,SAAS,WAAW,GAAG,IAAI,GAAG,IAAI,EACzE,OAAO,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,OAAO,CAAC,iBAAiB,SAAS,IAAI,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,iBAAiB,EACxI,OAAO,SAAS,IAAI,GAAG,iBAAiB,GAAG,OAAO,CAAC,CAAA;AAEvD,eAAO,MAAM,yBAAyB,EAAE,MAA4C,CAAA;AACpF,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAA;AAExE,MAAM,MAAM,mBAAmB,GAAG,WAAW,CAAC;IAC5C,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;CACxC,EAAE,yBAAyB,CAAC,CAAA"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export * from './block/index.ts';
|
|
2
|
+
export * from './ChainServiceCollection.ts';
|
|
3
|
+
export * from './ChainServiceCollectionV2.ts';
|
|
2
4
|
export * from './instances/index.ts';
|
|
5
|
+
export * from './payload/index.ts';
|
|
6
|
+
export * from './SignedBigInt.ts';
|
|
3
7
|
export * from './transaction/index.ts';
|
|
4
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA;AACjC,cAAc,wBAAwB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/payload/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"netBalancesForPayloads.d.ts","sourceRoot":"","sources":["../../../src/payload/netBalancesForPayloads.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAGzD,eAAO,MAAM,sBAAsB,GAAI,UAAU,OAAO,EAAE,sCAYzD,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex';
|
|
2
2
|
import type { AccountInstance } from '@xyo-network/account-model';
|
|
3
3
|
import type { Payload } from '@xyo-network/payload-model';
|
|
4
|
-
import {
|
|
4
|
+
import type { AllowedBlockPayload, HydratedTransaction, TransactionFeesBigInt } from '@xyo-network/xl1-protocol';
|
|
5
5
|
export declare function buildTransaction(chain: Address, elevatedPayloads: AllowedBlockPayload[], additionalPayloads: Payload[], signer: AccountInstance | AccountInstance[], nbf: number, exp: number, from?: Address, fees?: TransactionFeesBigInt): Promise<HydratedTransaction>;
|
|
6
6
|
//# sourceMappingURL=buildTransaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/buildTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,
|
|
1
|
+
{"version":3,"file":"buildTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/buildTransaction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAGjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EACV,mBAAmB,EAGnB,mBAAmB,EAA0D,qBAAqB,EACnG,MAAM,2BAA2B,CAAA;AAGlC,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,OAAO,EACd,gBAAgB,EAAE,mBAAmB,EAAE,EACvC,kBAAkB,EAAE,OAAO,EAAE,EAC7B,MAAM,EAAE,eAAe,GAAG,eAAe,EAAE,EAC3C,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,EACd,IAAI,GAAE,qBAA8C,GACnD,OAAO,CAAC,mBAAmB,CAAC,CAwC9B"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/xl1-protocol-sdk",
|
|
4
|
-
"version": "1.5.
|
|
4
|
+
"version": "1.5.36",
|
|
5
5
|
"description": "XYO Layer One SDK Protocol",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -34,27 +34,27 @@
|
|
|
34
34
|
"deploy3": "echo Deploy3 not allowed!"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@xylabs/array": "^4.
|
|
38
|
-
"@xylabs/assert": "^4.
|
|
39
|
-
"@xylabs/hex": "^4.
|
|
40
|
-
"@xylabs/object": "^4.
|
|
41
|
-
"@xylabs/promise": "^4.
|
|
42
|
-
"@xylabs/typeof": "^4.
|
|
43
|
-
"@xyo-network/account-model": "^3.18.
|
|
44
|
-
"@xyo-network/archivist-model": "^3.18.
|
|
45
|
-
"@xyo-network/boundwitness-builder": "^3.18.
|
|
46
|
-
"@xyo-network/boundwitness-model": "^3.18.
|
|
47
|
-
"@xyo-network/payload-builder": "^3.18.
|
|
48
|
-
"@xyo-network/payload-model": "^3.18.
|
|
49
|
-
"@xyo-network/xl1-protocol": "^1.
|
|
37
|
+
"@xylabs/array": "^4.12.29",
|
|
38
|
+
"@xylabs/assert": "^4.12.29",
|
|
39
|
+
"@xylabs/hex": "^4.12.29",
|
|
40
|
+
"@xylabs/object": "^4.12.29",
|
|
41
|
+
"@xylabs/promise": "^4.12.29",
|
|
42
|
+
"@xylabs/typeof": "^4.12.29",
|
|
43
|
+
"@xyo-network/account-model": "^3.18.10",
|
|
44
|
+
"@xyo-network/archivist-model": "^3.18.10",
|
|
45
|
+
"@xyo-network/boundwitness-builder": "^3.18.10",
|
|
46
|
+
"@xyo-network/boundwitness-model": "^3.18.10",
|
|
47
|
+
"@xyo-network/payload-builder": "^3.18.10",
|
|
48
|
+
"@xyo-network/payload-model": "^3.18.10",
|
|
49
|
+
"@xyo-network/xl1-protocol": "^1.5.16"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@types/node": "^24.0.
|
|
53
|
-
"@xylabs/ts-scripts-yarn3": "^6.5.
|
|
54
|
-
"@xylabs/tsconfig": "^6.5.
|
|
55
|
-
"knip": "^5.61.
|
|
52
|
+
"@types/node": "^24.0.8",
|
|
53
|
+
"@xylabs/ts-scripts-yarn3": "^6.5.12",
|
|
54
|
+
"@xylabs/tsconfig": "^6.5.12",
|
|
55
|
+
"knip": "^5.61.3",
|
|
56
56
|
"typescript": "^5.8.3",
|
|
57
|
-
"vitest": "^3.2.
|
|
57
|
+
"vitest": "^3.2.4"
|
|
58
58
|
},
|
|
59
59
|
"engines": {
|
|
60
60
|
"node": ">=22.3 <23"
|