@xyo-network/chain-validation 1.20.12 → 1.20.14

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.
@@ -188,12 +188,12 @@ var validateElevatedFromTransaction = /* @__PURE__ */ __name((context, payload,
188
188
 
189
189
  // src/elevatedPayload/lib/validateTransactionInBlock.ts
190
190
  import { ZERO_HASH as ZERO_HASH6 } from "@xylabs/sdk-js";
191
- import { isStorageMeta } from "@xyo-network/sdk-js";
191
+ import { isHashMeta } from "@xyo-network/sdk-js";
192
192
  import { BoundWitnessSignaturesValidator as BoundWitnessSignaturesValidator2, InBlockPayloadValidationError as InBlockPayloadValidationError3, isTransactionBoundWitness as isTransactionBoundWitness2, validateTransaction } from "@xyo-network/xl1-sdk";
193
193
  var validateTransactionInBlock = /* @__PURE__ */ __name(async (context, payload, block) => {
194
194
  const errors = [];
195
195
  try {
196
- if (isTransactionBoundWitness2(payload) && isStorageMeta(payload)) {
196
+ if (isTransactionBoundWitness2(payload) && isHashMeta(payload)) {
197
197
  const txErrors = await validateTransaction({
198
198
  ...context,
199
199
  chainId: block[0].chain
@@ -209,7 +209,7 @@ var validateTransactionInBlock = /* @__PURE__ */ __name(async (context, payload,
209
209
  errors.push(new InBlockPayloadValidationError3(payload._hash, block, payload, `BoundWitnessSignaturesValidator error: ${txSignatureError}`, txSignatureError));
210
210
  }
211
211
  } else {
212
- errors.push(new InBlockPayloadValidationError3(payload._hash, block, payload, "Payload failed isTransactionBoundWitness or isStorageMeta"));
212
+ errors.push(new InBlockPayloadValidationError3(payload._hash, block, payload, "Payload failed isTransactionBoundWitness or isHashMeta"));
213
213
  }
214
214
  } catch (ex) {
215
215
  errors.push(new InBlockPayloadValidationError3(payload._hash ?? ZERO_HASH6, block, payload, `validation excepted: ${ex}`, ex));
@@ -218,11 +218,11 @@ var validateTransactionInBlock = /* @__PURE__ */ __name(async (context, payload,
218
218
  }, "validateTransactionInBlock");
219
219
 
220
220
  // src/elevatedPayload/lib/validateTypedPayloadInBlock.ts
221
- import { isHashMeta } from "@xyo-network/sdk-js";
221
+ import { isHashMeta as isHashMeta2 } from "@xyo-network/sdk-js";
222
222
  var validateTypedPayloadInBlock = /* @__PURE__ */ __name(async (context, payload, block, identityFunction) => {
223
223
  const errors = [];
224
224
  try {
225
- if (identityFunction(payload) && isHashMeta(payload)) {
225
+ if (identityFunction(payload) && isHashMeta2(payload)) {
226
226
  if (isElevatedFromBlock(payload, block)) {
227
227
  errors.push(...await validateElevatedFromBlock(context, payload, block));
228
228
  } else {
@@ -388,8 +388,7 @@ var validatePayloadInBlock = /* @__PURE__ */ __name(async (context, payload, blo
388
388
  errors.push(new InBlockPayloadValidationError12(block?.[0]?._hash ?? ZERO_HASH15, block, payload, `Unsupported payload schema: ${payload.schema}`));
389
389
  }
390
390
  } catch (ex) {
391
- const error = new InBlockPayloadValidationError12(block?.[0]?._hash ?? ZERO_HASH15, block, payload, `validation excepted: ${ex}`);
392
- error.cause = ex;
391
+ const error = new InBlockPayloadValidationError12(block?.[0]?._hash ?? ZERO_HASH15, block, payload, `validation excepted: ${ex}`, ex);
393
392
  errors.push(error);
394
393
  }
395
394
  return errors;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/block/validateBlock.ts","../../src/block/validators/AllowedPayloadSchemas.ts","../../src/block/validators/Fields.ts","../../src/block/validators/JsonSchema.ts","../../src/block/validators/PreviousHash.ts","../../src/hydratedBlock/validateHydratedBlock.ts","../../src/hydratedBlock/validators/Payloads.ts","../../src/elevatedPayload/validatePayloadInBlock.ts","../../src/elevatedPayload/lib/isElevatedFromBlock.ts","../../src/elevatedPayload/lib/validateElevatedFromBlock.ts","../../src/elevatedPayload/lib/validateElevatedFromTransaction.ts","../../src/elevatedPayload/lib/validateTransactionInBlock.ts","../../src/elevatedPayload/lib/validateTypedPayloadInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeDestinationObservationInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeIntentInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeSourceObservationInBlock.ts","../../src/elevatedPayload/payloads/validateChainStakeIntentInBlock.ts","../../src/elevatedPayload/payloads/validateHashInBlock.ts","../../src/elevatedPayload/payloads/validateSchemaInBlock.ts","../../src/elevatedPayload/payloads/validateTimeInBlock.ts","../../src/elevatedPayload/payloads/validateTransferInBlock.ts","../../src/hydratedBlockState/validateHydratedBlockState.ts","../../src/hydratedBlockState/validators/RequiredBalance.ts"],"sourcesContent":["import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext,\n BlockBoundWitness, BlockValidatorFunction, ChainId,\n} from '@xyo-network/xl1-sdk'\nimport { BlockValidationError, BoundWitnessSignaturesValidator } from '@xyo-network/xl1-sdk'\n\nimport {\n BlockAllowedPayloadSchemasValidator,\n BlockFieldsValidator, BlockPreviousHashValidator,\n} from './validators/index.ts'\n\nexport const validateBlock = async (\n context: BaseContext,\n block: BlockBoundWitness,\n chainId?: ChainId,\n additionalValidators: BlockValidatorFunction[] = [],\n): Promise<BlockValidationError[]> => {\n const errors: BlockValidationError[] = []\n try {\n const bwErrors = await BoundWitnessSignaturesValidator(block)\n for (const bwError of bwErrors) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'BoundWitness validation failed', bwError))\n }\n const validators: BlockValidatorFunction[] = [\n BlockFieldsValidator,\n BlockPreviousHashValidator,\n BlockAllowedPayloadSchemasValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(\n validators.map(validator => validator(context, block, chainId)),\n )).flat())\n } catch (ex) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'validation excepted', ex))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-sdk'\nimport {\n BlockValidationError,\n isAllowedBlockPayloadSchema,\n} from '@xyo-network/xl1-sdk'\n\nexport const BlockAllowedPayloadSchemasValidator: BlockValidatorFunction = (\n context,\n block,\n) => {\n const errors: BlockValidationError[] = []\n try {\n for (const schema of block.payload_schemas) {\n if (!isAllowedBlockPayloadSchema(schema)) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `payload schema not allowed in block: ${schema}`,\n ))\n }\n }\n } catch (ex) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import type { Hash } from '@xylabs/sdk-js'\nimport { isDefined, ZERO_HASH } from '@xylabs/sdk-js'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext,\n BlockBoundWitness, BlockValidatorFunction, ChainId,\n} from '@xyo-network/xl1-sdk'\nimport { BlockValidationError } from '@xyo-network/xl1-sdk'\n\nexport const BlockFieldsValidator: BlockValidatorFunction = (\n context: BaseContext,\n block: BlockBoundWitness,\n chainId?: ChainId,\n) => {\n const errors: BlockValidationError[] = []\n try {\n if (isDefined(chainId) && block.chain !== chainId.toLowerCase()) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'Invalid chain id'))\n }\n\n // get transaction hashes\n const txHashes: Hash[] = []\n for (let i = 0; i < block.payload_hashes.length; i++) {\n if (block.payload_schemas[i] === BoundWitnessSchema) {\n txHashes.push(block.payload_hashes[i])\n }\n }\n\n // check if transaction hashes are unique\n if (new Set(txHashes).size < txHashes.length) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `Duplicate Transaction Hashes: ${txHashes}`,\n ))\n }\n } catch (ex) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext, BlockBoundWitness, BlockValidatorFunction,\n} from '@xyo-network/xl1-sdk'\nimport { BlockBoundWitnessWithStorageMetaJsonSchema, BlockValidationError } from '@xyo-network/xl1-sdk'\nimport type { AnySchema } from 'ajv'\nimport { Ajv } from 'ajv'\n\nexport const BlockJsonSchemaValidator = (jsonSchema: AnySchema = BlockBoundWitnessWithStorageMetaJsonSchema): BlockValidatorFunction => {\n const ajv = new Ajv({ allErrors: true, strict: true })\n const validate = ajv.compile(jsonSchema)\n return async (\n context: BaseContext,\n block: BlockBoundWitness,\n ) => {\n const errors: BlockValidationError[] = []\n try {\n await validate(block)\n if ((validate.errors ?? []).length > 0) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `failed JSON schema validation: ${ajv.errorsText(validate.errors, { separator: '\\n' })}`,\n )\n error.cause = validate.errors\n errors.push(error)\n }\n } catch (ex) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n )\n error.cause = ex\n errors.push(error)\n }\n return errors\n }\n}\n","import { isHash, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-sdk'\nimport { BlockValidationError } from '@xyo-network/xl1-sdk'\n\nexport const BlockPreviousHashValidator: BlockValidatorFunction = (\n context,\n block,\n) => {\n const errors: BlockValidationError[] = []\n try {\n const blockNumber = block.block\n if (blockNumber > 0n) {\n // if this is not the first block, validate previous hashes\n if (!isHash(block.previous)) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'previous hash is missing or invalid'))\n }\n } else if (blockNumber === 0) {\n // if this is the first block, validate previous hashes\n if (block.previous !== null) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'previous hash should not be set'))\n }\n } else {\n // we have a negative block number\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'invalid block number'))\n }\n } catch (ex) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `Failed BlockPreviousHashValidator: ${ex}`,\n )\n error.cause = ex\n errors.push(error)\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport { ZERO_HASH } from '@xylabs/sdk-js'\nimport type {\n BaseContext,\n BlockValidatorFunction, ChainId, HydratedBlockValidationFunction, HydratedBlockWithHashMeta,\n XL1BlockNumber,\n} from '@xyo-network/xl1-sdk'\nimport { BoundWitnessReferencesValidator, HydratedBlockValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateBlock } from '../block/index.ts'\nimport { PayloadsInBlockValidator } from './validators/index.ts'\n\nexport const validateHydratedBlock = async (\n context: BaseContext,\n hydratedBlock: HydratedBlockWithHashMeta,\n chainIdAtBlockNumber?: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,\n additionalValidators: HydratedBlockValidationFunction[] = [],\n additionalBlockValidators: BlockValidatorFunction[] = [],\n) => {\n const errors: HydratedBlockValidationError[] = []\n try {\n const validateBlockErrors = await validateBlock(\n context,\n hydratedBlock[0],\n chainIdAtBlockNumber ? await chainIdAtBlockNumber(hydratedBlock[0].block) : undefined,\n additionalBlockValidators,\n )\n for (const validateBlockError of validateBlockErrors) {\n errors.push(new HydratedBlockValidationError(hydratedBlock[0]._hash, hydratedBlock, `validateBlock error: ${validateBlockError}`, validateBlockError))\n }\n const bwRefErrors = await BoundWitnessReferencesValidator()(hydratedBlock)\n for (const bwRefError of bwRefErrors) {\n errors.push(new HydratedBlockValidationError(hydratedBlock[0]._hash, hydratedBlock, `boundwitness reference error: ${bwRefError}`, bwRefError))\n }\n const validators: HydratedBlockValidationFunction[] = [\n PayloadsInBlockValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(context, hydratedBlock, chainIdAtBlockNumber)))).flat())\n } catch (ex) {\n errors.push(new HydratedBlockValidationError(\n hydratedBlock?.[0]?._hash ?? ZERO_HASH,\n hydratedBlock,\n `Failed validateHydratedBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { type Hash, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { Payload, WithHashMeta } from '@xyo-network/sdk-js'\nimport type { HydratedBlockValidationFunction } from '@xyo-network/xl1-sdk'\nimport { HydratedBlockValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validatePayloadInBlock } from '../../elevatedPayload/index.ts'\n\nexport const PayloadsInBlockValidator: HydratedBlockValidationFunction = async (\n context,\n [block, payloads],\n) => {\n const errors: HydratedBlockValidationError[] = []\n try {\n const payloadMap: Partial<Record<Hash, WithHashMeta<Payload>>> = {}\n for (const payload of payloads) {\n payloadMap[payload._hash] = payload\n }\n\n const remainingPayloads = { ...payloadMap }\n\n for (let i = 0; i < block.payload_hashes.length; i++) {\n const hash = block.payload_hashes[i]\n const schema = block.payload_schemas[i]\n const payload = payloadMap[hash]\n if (payload) {\n const payloadInBlockErrors = await validatePayloadInBlock(context, payload, [block, payloads])\n for (const payloadInBlockError of payloadInBlockErrors) {\n errors.push(new HydratedBlockValidationError(\n block?._hash ?? ZERO_HASH,\n [block, payloads],\n `validatePayloadInBlock error: ${payloadInBlockError}`,\n payloadInBlockError,\n ))\n }\n delete remainingPayloads[hash]\n } else {\n errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH, [block, payloads], `missing payload ${hash} ${schema}`))\n }\n }\n\n if (Object.keys(remainingPayloads).length > 0) {\n errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH, [block, payloads], `extra payloads ${Object.keys(payloadMap).join(', ')}`))\n }\n } catch (ex) {\n errors.push(new HydratedBlockValidationError(\n block?._hash ?? ZERO_HASH,\n [block, payloads],\n `Failed PayloadsInBlockValidator: ${ex}`,\n ex,\n ))\n }\n\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema } from '@xyo-network/sdk-js'\nimport { SchemaSchema } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n BridgeDestinationObservationSchema, BridgeIntentSchema, BridgeSourceObservationSchema, ChainStakeIntentSchema, HashSchema, InBlockPayloadValidationError,\n TimeSchema, TransferSchema,\n} from '@xyo-network/xl1-sdk'\n\nimport { validateTransactionInBlock } from './lib/index.ts'\nimport {\n validateBridgeDestinationObservationInBlock, validateBridgeIntentInBlock, validateBridgeSourceObservationInBlock, validateChainStakeIntentInBlock,\n validateHashInBlock, validateSchemaInBlock, validateTimeInBlock, validateTransferInBlock,\n} from './payloads/index.ts'\n\nconst payloadValidators: Partial<Record<Schema, InBlockPayloadValidationFunction>> = {\n [BoundWitnessSchema]: validateTransactionInBlock,\n [BridgeDestinationObservationSchema]: validateBridgeDestinationObservationInBlock,\n [BridgeIntentSchema]: validateBridgeIntentInBlock,\n [BridgeSourceObservationSchema]: validateBridgeSourceObservationInBlock,\n [ChainStakeIntentSchema]: validateChainStakeIntentInBlock,\n [HashSchema]: validateHashInBlock,\n [SchemaSchema]: validateSchemaInBlock,\n [TimeSchema]: validateTimeInBlock,\n [TransferSchema]: validateTransferInBlock,\n}\n\nexport const validatePayloadInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n): Promise<InBlockPayloadValidationError[]> => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const validator = payloadValidators[payload.schema]\n if (validator) {\n errors.push(...await validator(context, payload, block))\n } else {\n errors.push(new InBlockPayloadValidationError((block?.[0])?._hash ?? ZERO_HASH, block, payload, `Unsupported payload schema: ${payload.schema}`))\n }\n } catch (ex) {\n const error = new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n )\n error.cause = ex\n errors.push(error)\n }\n return errors\n}\n","import type { Payload, WithHashMeta } from '@xyo-network/sdk-js'\nimport { type HydratedBlock, isTransactionBoundWitness } from '@xyo-network/xl1-sdk'\n\nexport const isElevatedFromBlock = (payload: WithHashMeta<Payload>, [, payloads]: HydratedBlock): boolean => {\n const txs = payloads.filter(p => isTransactionBoundWitness(p))\n for (const tx of txs) {\n if (tx.payload_hashes.includes(payload._hash)) {\n return false\n }\n }\n return true\n}\n","import type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, transactionsFromHydratedBlock } from '@xyo-network/xl1-sdk'\n\nexport const validateElevatedFromBlock: InBlockPayloadValidationFunction = (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const txs = transactionsFromHydratedBlock(block)\n const allTxPayloadHashes = new Set(txs.flatMap(tx => tx.payload_hashes))\n if (allTxPayloadHashes.has(payload._hash)) {\n errors.push(new InBlockPayloadValidationError(\n block[0]?._hash,\n block,\n payload,\n `Transaction may not include block payload hash [${payload.schema}]: ${payload._hash}`,\n ))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(block[0]?._hash, block, payload, `validation excepted: ${ex}`, ex))\n }\n return errors\n}\n","import type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, transactionsFromHydratedBlock } from '@xyo-network/xl1-sdk'\n\nexport const validateElevatedFromTransaction: InBlockPayloadValidationFunction = (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const txs = transactionsFromHydratedBlock(block)\n if (txs.length > 0) {\n const hashes = txs.flatMap(tx => tx.payload_hashes)\n if (!hashes.includes(payload._hash)) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'Transaction does not include payload'))\n }\n } else {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'No Transactions in block'))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `Failed validateElevatedFromTransaction: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { isStorageMeta } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n BoundWitnessSignaturesValidator, InBlockPayloadValidationError, isTransactionBoundWitness, validateTransaction,\n} from '@xyo-network/xl1-sdk'\n\nexport const validateTransactionInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n): Promise<InBlockPayloadValidationError[]> => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n if (isTransactionBoundWitness(payload) && isStorageMeta(payload)) {\n const txErrors = await validateTransaction({ ...context, chainId: block[0].chain }, [payload, block[1]])\n for (const txError of txErrors) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `TransactionValidation error: ${txError}`,\n txError,\n ))\n }\n const txSignatureErrors = await BoundWitnessSignaturesValidator(payload)\n for (const txSignatureError of txSignatureErrors) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `BoundWitnessSignaturesValidator error: ${txSignatureError}`,\n txSignatureError,\n ))\n }\n } else {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'Payload failed isTransactionBoundWitness or isStorageMeta'))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(payload._hash ?? ZERO_HASH, block, payload, `validation excepted: ${ex}`, ex))\n }\n return errors\n}\n","import type { IdentityFunction } from '@xylabs/sdk-js'\nimport type { Payload } from '@xyo-network/sdk-js'\nimport { isHashMeta } from '@xyo-network/sdk-js'\nimport type { HydratedBlockWithHashMeta, InBlockPayloadValidationFunctionContext } from '@xyo-network/xl1-sdk'\n\nimport { isElevatedFromBlock } from './isElevatedFromBlock.ts'\nimport { validateElevatedFromBlock } from './validateElevatedFromBlock.ts'\nimport { validateElevatedFromTransaction } from './validateElevatedFromTransaction.ts'\n\nexport const validateTypedPayloadInBlock = async <T extends Payload>(\n context: InBlockPayloadValidationFunctionContext,\n payload: Payload,\n block: HydratedBlockWithHashMeta,\n identityFunction: IdentityFunction<T>,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n if (identityFunction(payload) && isHashMeta(payload)) {\n if (isElevatedFromBlock(payload, block)) {\n errors.push(...await validateElevatedFromBlock(context, payload, block))\n } else {\n errors.push(...await validateElevatedFromTransaction(context, payload, block))\n }\n } else {\n errors.push(new Error('Payload failed identityFunction or isElevated or isStorageMeta'))\n }\n } catch (ex) {\n errors.push(new Error(`Failed validateTypedPayloadInBlock: ${ex}`))\n }\n return errors\n}\n//\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeDestinationObservation } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeDestinationObservationInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeDestinationObservation)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeObservationInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeIntent } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeIntentInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeIntent)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeIntentInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeSourceObservation } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeSourceObservationInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeSourceObservation)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeObservationInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isChainStakeIntent } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateChainStakeIntentInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isChainStakeIntent)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n block[0]?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isHashPayload } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateHashInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: (InBlockPayloadValidationError)[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isHashPayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { isSchemaPayload } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateSchemaInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isSchemaPayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateSchemaInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isTimePayload } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateTimeInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isTimePayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateTimeInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isTransfer } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateTransferInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isTransfer)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateTransferInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { spanRootAsync, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { ChainId, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport { HydratedBlockStateValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateHydratedBlock } from '../hydratedBlock/index.ts'\nimport { RequiredBalanceBlockStateValidator } from './validators/index.ts'\n\nexport const validateHydratedBlockState: HydratedBlockStateValidationFunction = async (\n context,\n hydratedBlock,\n additionalValidators = [],\n) => {\n return await spanRootAsync('validateHydratedBlockState', async () => {\n const errors: HydratedBlockStateValidationError[] = []\n let chainId: ChainId | undefined\n try {\n chainId = await context.chainIdAtBlockNumber(hydratedBlock[0].block)\n const validateHydratedBlockErrors = await validateHydratedBlock(context, hydratedBlock, context.chainIdAtBlockNumber)\n for (const validateHydratedBlockError of validateHydratedBlockErrors) {\n errors.push(new HydratedBlockStateValidationError(\n hydratedBlock[0]._hash,\n chainId,\n hydratedBlock,\n `validateBlock error: ${validateHydratedBlockError}`,\n validateHydratedBlockError,\n ))\n }\n const validators: HydratedBlockStateValidationFunction[] = [\n RequiredBalanceBlockStateValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(context, hydratedBlock)))).flat())\n } catch (ex) {\n errors.push(new HydratedBlockStateValidationError(\n hydratedBlock?.[0]?._hash ?? ZERO_HASH,\n chainId ?? '00' as ChainId,\n hydratedBlock,\n `Failed validateHydratedBlockState: ${ex}`,\n ex,\n ))\n }\n return errors\n }, context)\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport { spanRootAsync, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { ChainId, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n AttoXL1, HydratedBlockStateValidationError, netBalancesForPayloads, XYO_ZERO_ADDRESS,\n} from '@xyo-network/xl1-sdk'\n\nexport const RequiredBalanceBlockStateValidator: HydratedBlockStateValidationFunction = async (\n context,\n block,\n) => {\n return await spanRootAsync('RequiredBalanceBlockStateValidator', async () => {\n const errors: HydratedBlockStateValidationError[] = []\n let chainId = '00' as ChainId\n try {\n // TODO: Filter by non-producer elevated payloads\n // to allow for transfers from ZERO address\n const netBalances = netBalancesForPayloads({ singletons: {} }, (block[1]))\n const netBalanceAddresses = Object.keys(netBalances) as Address[]\n const requiredBalances: Record<Address, bigint> = {}\n for (const address of netBalanceAddresses) {\n if (netBalances[address] < 0n) {\n requiredBalances[address] = -netBalances[address]\n }\n }\n const previous = block[0].previous\n if (previous === null) return [new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n '00' as ChainId,\n block,\n 'Insufficient funds because first block',\n )]\n chainId = await context.chainIdAtBlockNumber(block[0].block)\n await spanRootAsync('RequiredBalanceBlockStateValidator|balancesLoop', async () => {\n for (const [address, reqBalance] of Object.entries(requiredBalances) as [Address, bigint][]) {\n const result = await context.accountBalance.accountBalances([address], { head: previous })\n const balance = result[address] ?? AttoXL1(0n)\n if (address !== XYO_ZERO_ADDRESS && reqBalance > balance) {\n errors.push(new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n chainId,\n block,\n `insufficient balance for ${address} ${balance} < ${requiredBalances[address]}`,\n ))\n }\n }\n }, context)\n } catch (ex) {\n errors.push(new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n chainId,\n block,\n `Failed RequiredBalanceBlockStateValidator: ${ex}`,\n ex,\n ))\n }\n return await Promise.resolve(errors)\n }, context)\n}\n"],"mappings":"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","names":["ZERO_HASH","BlockValidationError","BoundWitnessSignaturesValidator","ZERO_HASH","BlockValidationError","isAllowedBlockPayloadSchema","BlockAllowedPayloadSchemasValidator","context","block","errors","schema","payload_schemas","isAllowedBlockPayloadSchema","push","BlockValidationError","_hash","ZERO_HASH","ex","isDefined","ZERO_HASH","BoundWitnessSchema","BlockValidationError","BlockFieldsValidator","context","block","chainId","errors","isDefined","chain","toLowerCase","push","BlockValidationError","_hash","ZERO_HASH","txHashes","i","payload_hashes","length","payload_schemas","BoundWitnessSchema","Set","size","ex","ZERO_HASH","BlockBoundWitnessWithStorageMetaJsonSchema","BlockValidationError","Ajv","BlockJsonSchemaValidator","jsonSchema","BlockBoundWitnessWithStorageMetaJsonSchema","ajv","Ajv","allErrors","strict","validate","compile","context","block","errors","length","error","BlockValidationError","_hash","ZERO_HASH","errorsText","separator","cause","push","ex","isHash","ZERO_HASH","BlockValidationError","BlockPreviousHashValidator","context","block","errors","blockNumber","isHash","previous","push","BlockValidationError","_hash","ZERO_HASH","ex","error","cause","validateBlock","context","block","chainId","additionalValidators","errors","bwErrors","BoundWitnessSignaturesValidator","bwError","push","BlockValidationError","_hash","ZERO_HASH","validators","BlockFieldsValidator","BlockPreviousHashValidator","BlockAllowedPayloadSchemasValidator","Promise","all","map","validator","flat","ex","ZERO_HASH","BoundWitnessReferencesValidator","HydratedBlockValidationError","ZERO_HASH","HydratedBlockValidationError","ZERO_HASH","BoundWitnessSchema","SchemaSchema","BridgeDestinationObservationSchema","BridgeIntentSchema","BridgeSourceObservationSchema","ChainStakeIntentSchema","HashSchema","InBlockPayloadValidationError","TimeSchema","TransferSchema","isTransactionBoundWitness","isElevatedFromBlock","payload","payloads","txs","filter","p","isTransactionBoundWitness","tx","payload_hashes","includes","_hash","InBlockPayloadValidationError","transactionsFromHydratedBlock","validateElevatedFromBlock","context","payload","block","errors","txs","transactionsFromHydratedBlock","allTxPayloadHashes","Set","flatMap","tx","payload_hashes","has","_hash","push","InBlockPayloadValidationError","schema","ex","InBlockPayloadValidationError","transactionsFromHydratedBlock","validateElevatedFromTransaction","context","payload","block","errors","txs","transactionsFromHydratedBlock","length","hashes","flatMap","tx","payload_hashes","includes","_hash","push","InBlockPayloadValidationError","ex","ZERO_HASH","isStorageMeta","BoundWitnessSignaturesValidator","InBlockPayloadValidationError","isTransactionBoundWitness","validateTransaction","validateTransactionInBlock","context","payload","block","errors","isTransactionBoundWitness","isStorageMeta","txErrors","validateTransaction","chainId","chain","txError","push","InBlockPayloadValidationError","_hash","txSignatureErrors","BoundWitnessSignaturesValidator","txSignatureError","ex","ZERO_HASH","isHashMeta","validateTypedPayloadInBlock","context","payload","block","identityFunction","errors","isHashMeta","isElevatedFromBlock","push","validateElevatedFromBlock","validateElevatedFromTransaction","Error","ex","ZERO_HASH","InBlockPayloadValidationError","isBridgeDestinationObservation","validateBridgeDestinationObservationInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeDestinationObservation","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isBridgeIntent","validateBridgeIntentInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeIntent","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isBridgeSourceObservation","validateBridgeSourceObservationInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeSourceObservation","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isChainStakeIntent","validateChainStakeIntentInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isChainStakeIntent","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isHashPayload","validateHashInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isHashPayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","isSchemaPayload","InBlockPayloadValidationError","validateSchemaInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isSchemaPayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isTimePayload","validateTimeInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isTimePayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isTransfer","validateTransferInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isTransfer","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","payloadValidators","BoundWitnessSchema","validateTransactionInBlock","BridgeDestinationObservationSchema","validateBridgeDestinationObservationInBlock","BridgeIntentSchema","validateBridgeIntentInBlock","BridgeSourceObservationSchema","validateBridgeSourceObservationInBlock","ChainStakeIntentSchema","validateChainStakeIntentInBlock","HashSchema","validateHashInBlock","SchemaSchema","validateSchemaInBlock","TimeSchema","validateTimeInBlock","TransferSchema","validateTransferInBlock","validatePayloadInBlock","context","payload","block","errors","validator","schema","push","InBlockPayloadValidationError","_hash","ZERO_HASH","ex","error","cause","PayloadsInBlockValidator","context","block","payloads","errors","payloadMap","payload","_hash","remainingPayloads","i","payload_hashes","length","hash","schema","payload_schemas","payloadInBlockErrors","validatePayloadInBlock","payloadInBlockError","push","HydratedBlockValidationError","ZERO_HASH","Object","keys","join","ex","validateHydratedBlock","context","hydratedBlock","chainIdAtBlockNumber","additionalValidators","additionalBlockValidators","errors","validateBlockErrors","validateBlock","block","undefined","validateBlockError","push","HydratedBlockValidationError","_hash","bwRefErrors","BoundWitnessReferencesValidator","bwRefError","validators","PayloadsInBlockValidator","Promise","all","map","v","flat","ex","ZERO_HASH","spanRootAsync","ZERO_HASH","HydratedBlockStateValidationError","spanRootAsync","ZERO_HASH","AttoXL1","HydratedBlockStateValidationError","netBalancesForPayloads","XYO_ZERO_ADDRESS","RequiredBalanceBlockStateValidator","context","block","spanRootAsync","errors","chainId","netBalances","netBalancesForPayloads","singletons","netBalanceAddresses","Object","keys","requiredBalances","address","previous","HydratedBlockStateValidationError","_hash","ZERO_HASH","chainIdAtBlockNumber","reqBalance","entries","result","accountBalance","accountBalances","head","balance","AttoXL1","XYO_ZERO_ADDRESS","push","ex","Promise","resolve","validateHydratedBlockState","context","hydratedBlock","additionalValidators","spanRootAsync","errors","chainId","chainIdAtBlockNumber","block","validateHydratedBlockErrors","validateHydratedBlock","validateHydratedBlockError","push","HydratedBlockStateValidationError","_hash","validators","RequiredBalanceBlockStateValidator","Promise","all","map","v","flat","ex","ZERO_HASH"]}
1
+ {"version":3,"sources":["../../src/block/validateBlock.ts","../../src/block/validators/AllowedPayloadSchemas.ts","../../src/block/validators/Fields.ts","../../src/block/validators/JsonSchema.ts","../../src/block/validators/PreviousHash.ts","../../src/hydratedBlock/validateHydratedBlock.ts","../../src/hydratedBlock/validators/Payloads.ts","../../src/elevatedPayload/validatePayloadInBlock.ts","../../src/elevatedPayload/lib/isElevatedFromBlock.ts","../../src/elevatedPayload/lib/validateElevatedFromBlock.ts","../../src/elevatedPayload/lib/validateElevatedFromTransaction.ts","../../src/elevatedPayload/lib/validateTransactionInBlock.ts","../../src/elevatedPayload/lib/validateTypedPayloadInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeDestinationObservationInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeIntentInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeSourceObservationInBlock.ts","../../src/elevatedPayload/payloads/validateChainStakeIntentInBlock.ts","../../src/elevatedPayload/payloads/validateHashInBlock.ts","../../src/elevatedPayload/payloads/validateSchemaInBlock.ts","../../src/elevatedPayload/payloads/validateTimeInBlock.ts","../../src/elevatedPayload/payloads/validateTransferInBlock.ts","../../src/hydratedBlockState/validateHydratedBlockState.ts","../../src/hydratedBlockState/validators/RequiredBalance.ts"],"sourcesContent":["import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext,\n BlockBoundWitness, BlockValidatorFunction, ChainId,\n} from '@xyo-network/xl1-sdk'\nimport { BlockValidationError, BoundWitnessSignaturesValidator } from '@xyo-network/xl1-sdk'\n\nimport {\n BlockAllowedPayloadSchemasValidator,\n BlockFieldsValidator, BlockPreviousHashValidator,\n} from './validators/index.ts'\n\nexport const validateBlock = async (\n context: BaseContext,\n block: BlockBoundWitness,\n chainId?: ChainId,\n additionalValidators: BlockValidatorFunction[] = [],\n): Promise<BlockValidationError[]> => {\n const errors: BlockValidationError[] = []\n try {\n const bwErrors = await BoundWitnessSignaturesValidator(block)\n for (const bwError of bwErrors) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'BoundWitness validation failed', bwError))\n }\n const validators: BlockValidatorFunction[] = [\n BlockFieldsValidator,\n BlockPreviousHashValidator,\n BlockAllowedPayloadSchemasValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(\n validators.map(validator => validator(context, block, chainId)),\n )).flat())\n } catch (ex) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'validation excepted', ex))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-sdk'\nimport {\n BlockValidationError,\n isAllowedBlockPayloadSchema,\n} from '@xyo-network/xl1-sdk'\n\nexport const BlockAllowedPayloadSchemasValidator: BlockValidatorFunction = (\n context,\n block,\n) => {\n const errors: BlockValidationError[] = []\n try {\n for (const schema of block.payload_schemas) {\n if (!isAllowedBlockPayloadSchema(schema)) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `payload schema not allowed in block: ${schema}`,\n ))\n }\n }\n } catch (ex) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import type { Hash } from '@xylabs/sdk-js'\nimport { isDefined, ZERO_HASH } from '@xylabs/sdk-js'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext,\n BlockBoundWitness, BlockValidatorFunction, ChainId,\n} from '@xyo-network/xl1-sdk'\nimport { BlockValidationError } from '@xyo-network/xl1-sdk'\n\nexport const BlockFieldsValidator: BlockValidatorFunction = (\n context: BaseContext,\n block: BlockBoundWitness,\n chainId?: ChainId,\n) => {\n const errors: BlockValidationError[] = []\n try {\n if (isDefined(chainId) && block.chain !== chainId.toLowerCase()) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'Invalid chain id'))\n }\n\n // get transaction hashes\n const txHashes: Hash[] = []\n for (let i = 0; i < block.payload_hashes.length; i++) {\n if (block.payload_schemas[i] === BoundWitnessSchema) {\n txHashes.push(block.payload_hashes[i])\n }\n }\n\n // check if transaction hashes are unique\n if (new Set(txHashes).size < txHashes.length) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `Duplicate Transaction Hashes: ${txHashes}`,\n ))\n }\n } catch (ex) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext, BlockBoundWitness, BlockValidatorFunction,\n} from '@xyo-network/xl1-sdk'\nimport { BlockBoundWitnessWithStorageMetaJsonSchema, BlockValidationError } from '@xyo-network/xl1-sdk'\nimport type { AnySchema } from 'ajv'\nimport { Ajv } from 'ajv'\n\nexport const BlockJsonSchemaValidator = (jsonSchema: AnySchema = BlockBoundWitnessWithStorageMetaJsonSchema): BlockValidatorFunction => {\n const ajv = new Ajv({ allErrors: true, strict: true })\n const validate = ajv.compile(jsonSchema)\n return async (\n context: BaseContext,\n block: BlockBoundWitness,\n ) => {\n const errors: BlockValidationError[] = []\n try {\n await validate(block)\n if ((validate.errors ?? []).length > 0) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `failed JSON schema validation: ${ajv.errorsText(validate.errors, { separator: '\\n' })}`,\n )\n error.cause = validate.errors\n errors.push(error)\n }\n } catch (ex) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n )\n error.cause = ex\n errors.push(error)\n }\n return errors\n }\n}\n","import { isHash, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-sdk'\nimport { BlockValidationError } from '@xyo-network/xl1-sdk'\n\nexport const BlockPreviousHashValidator: BlockValidatorFunction = (\n context,\n block,\n) => {\n const errors: BlockValidationError[] = []\n try {\n const blockNumber = block.block\n if (blockNumber > 0n) {\n // if this is not the first block, validate previous hashes\n if (!isHash(block.previous)) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'previous hash is missing or invalid'))\n }\n } else if (blockNumber === 0) {\n // if this is the first block, validate previous hashes\n if (block.previous !== null) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'previous hash should not be set'))\n }\n } else {\n // we have a negative block number\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'invalid block number'))\n }\n } catch (ex) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `Failed BlockPreviousHashValidator: ${ex}`,\n )\n error.cause = ex\n errors.push(error)\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport { ZERO_HASH } from '@xylabs/sdk-js'\nimport type {\n BaseContext,\n BlockValidatorFunction, ChainId, HydratedBlockValidationFunction, HydratedBlockWithHashMeta,\n XL1BlockNumber,\n} from '@xyo-network/xl1-sdk'\nimport { BoundWitnessReferencesValidator, HydratedBlockValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateBlock } from '../block/index.ts'\nimport { PayloadsInBlockValidator } from './validators/index.ts'\n\nexport const validateHydratedBlock = async (\n context: BaseContext,\n hydratedBlock: HydratedBlockWithHashMeta,\n chainIdAtBlockNumber?: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,\n additionalValidators: HydratedBlockValidationFunction[] = [],\n additionalBlockValidators: BlockValidatorFunction[] = [],\n) => {\n const errors: HydratedBlockValidationError[] = []\n try {\n const validateBlockErrors = await validateBlock(\n context,\n hydratedBlock[0],\n chainIdAtBlockNumber ? await chainIdAtBlockNumber(hydratedBlock[0].block) : undefined,\n additionalBlockValidators,\n )\n for (const validateBlockError of validateBlockErrors) {\n errors.push(new HydratedBlockValidationError(hydratedBlock[0]._hash, hydratedBlock, `validateBlock error: ${validateBlockError}`, validateBlockError))\n }\n const bwRefErrors = await BoundWitnessReferencesValidator()(hydratedBlock)\n for (const bwRefError of bwRefErrors) {\n errors.push(new HydratedBlockValidationError(hydratedBlock[0]._hash, hydratedBlock, `boundwitness reference error: ${bwRefError}`, bwRefError))\n }\n const validators: HydratedBlockValidationFunction[] = [\n PayloadsInBlockValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(context, hydratedBlock, chainIdAtBlockNumber)))).flat())\n } catch (ex) {\n errors.push(new HydratedBlockValidationError(\n hydratedBlock?.[0]?._hash ?? ZERO_HASH,\n hydratedBlock,\n `Failed validateHydratedBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { type Hash, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { Payload, WithHashMeta } from '@xyo-network/sdk-js'\nimport type { HydratedBlockValidationFunction } from '@xyo-network/xl1-sdk'\nimport { HydratedBlockValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validatePayloadInBlock } from '../../elevatedPayload/index.ts'\n\nexport const PayloadsInBlockValidator: HydratedBlockValidationFunction = async (\n context,\n [block, payloads],\n) => {\n const errors: HydratedBlockValidationError[] = []\n try {\n const payloadMap: Partial<Record<Hash, WithHashMeta<Payload>>> = {}\n for (const payload of payloads) {\n payloadMap[payload._hash] = payload\n }\n\n const remainingPayloads = { ...payloadMap }\n\n for (let i = 0; i < block.payload_hashes.length; i++) {\n const hash = block.payload_hashes[i]\n const schema = block.payload_schemas[i]\n const payload = payloadMap[hash]\n if (payload) {\n const payloadInBlockErrors = await validatePayloadInBlock(context, payload, [block, payloads])\n for (const payloadInBlockError of payloadInBlockErrors) {\n errors.push(new HydratedBlockValidationError(\n block?._hash ?? ZERO_HASH,\n [block, payloads],\n `validatePayloadInBlock error: ${payloadInBlockError}`,\n payloadInBlockError,\n ))\n }\n delete remainingPayloads[hash]\n } else {\n errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH, [block, payloads], `missing payload ${hash} ${schema}`))\n }\n }\n\n if (Object.keys(remainingPayloads).length > 0) {\n errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH, [block, payloads], `extra payloads ${Object.keys(payloadMap).join(', ')}`))\n }\n } catch (ex) {\n errors.push(new HydratedBlockValidationError(\n block?._hash ?? ZERO_HASH,\n [block, payloads],\n `Failed PayloadsInBlockValidator: ${ex}`,\n ex,\n ))\n }\n\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema } from '@xyo-network/sdk-js'\nimport { SchemaSchema } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n BridgeDestinationObservationSchema, BridgeIntentSchema, BridgeSourceObservationSchema, ChainStakeIntentSchema, HashSchema, InBlockPayloadValidationError,\n TimeSchema, TransferSchema,\n} from '@xyo-network/xl1-sdk'\n\nimport { validateTransactionInBlock } from './lib/index.ts'\nimport {\n validateBridgeDestinationObservationInBlock, validateBridgeIntentInBlock, validateBridgeSourceObservationInBlock, validateChainStakeIntentInBlock,\n validateHashInBlock, validateSchemaInBlock, validateTimeInBlock, validateTransferInBlock,\n} from './payloads/index.ts'\n\nconst payloadValidators: Partial<Record<Schema, InBlockPayloadValidationFunction>> = {\n [BoundWitnessSchema]: validateTransactionInBlock,\n [BridgeDestinationObservationSchema]: validateBridgeDestinationObservationInBlock,\n [BridgeIntentSchema]: validateBridgeIntentInBlock,\n [BridgeSourceObservationSchema]: validateBridgeSourceObservationInBlock,\n [ChainStakeIntentSchema]: validateChainStakeIntentInBlock,\n [HashSchema]: validateHashInBlock,\n [SchemaSchema]: validateSchemaInBlock,\n [TimeSchema]: validateTimeInBlock,\n [TransferSchema]: validateTransferInBlock,\n}\n\nexport const validatePayloadInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n): Promise<InBlockPayloadValidationError[]> => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const validator = payloadValidators[payload.schema]\n if (validator) {\n errors.push(...await validator(context, payload, block))\n } else {\n errors.push(new InBlockPayloadValidationError((block?.[0])?._hash ?? ZERO_HASH, block, payload, `Unsupported payload schema: ${payload.schema}`))\n }\n } catch (ex) {\n const error = new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n ex,\n )\n errors.push(error)\n }\n return errors\n}\n","import type { Payload, WithHashMeta } from '@xyo-network/sdk-js'\nimport { type HydratedBlock, isTransactionBoundWitness } from '@xyo-network/xl1-sdk'\n\nexport const isElevatedFromBlock = (payload: WithHashMeta<Payload>, [, payloads]: HydratedBlock): boolean => {\n const txs = payloads.filter(p => isTransactionBoundWitness(p))\n for (const tx of txs) {\n if (tx.payload_hashes.includes(payload._hash)) {\n return false\n }\n }\n return true\n}\n","import type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, transactionsFromHydratedBlock } from '@xyo-network/xl1-sdk'\n\nexport const validateElevatedFromBlock: InBlockPayloadValidationFunction = (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const txs = transactionsFromHydratedBlock(block)\n const allTxPayloadHashes = new Set(txs.flatMap(tx => tx.payload_hashes))\n if (allTxPayloadHashes.has(payload._hash)) {\n errors.push(new InBlockPayloadValidationError(\n block[0]?._hash,\n block,\n payload,\n `Transaction may not include block payload hash [${payload.schema}]: ${payload._hash}`,\n ))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(block[0]?._hash, block, payload, `validation excepted: ${ex}`, ex))\n }\n return errors\n}\n","import type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, transactionsFromHydratedBlock } from '@xyo-network/xl1-sdk'\n\nexport const validateElevatedFromTransaction: InBlockPayloadValidationFunction = (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const txs = transactionsFromHydratedBlock(block)\n if (txs.length > 0) {\n const hashes = txs.flatMap(tx => tx.payload_hashes)\n if (!hashes.includes(payload._hash)) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'Transaction does not include payload'))\n }\n } else {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'No Transactions in block'))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `Failed validateElevatedFromTransaction: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { isHashMeta } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n BoundWitnessSignaturesValidator, InBlockPayloadValidationError, isTransactionBoundWitness, validateTransaction,\n} from '@xyo-network/xl1-sdk'\n\nexport const validateTransactionInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n): Promise<InBlockPayloadValidationError[]> => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n if (isTransactionBoundWitness(payload) && isHashMeta(payload)) {\n const txErrors = await validateTransaction({ ...context, chainId: block[0].chain }, [payload, block[1]])\n for (const txError of txErrors) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `TransactionValidation error: ${txError}`,\n txError,\n ))\n }\n const txSignatureErrors = await BoundWitnessSignaturesValidator(payload)\n for (const txSignatureError of txSignatureErrors) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `BoundWitnessSignaturesValidator error: ${txSignatureError}`,\n txSignatureError,\n ))\n }\n } else {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'Payload failed isTransactionBoundWitness or isHashMeta'))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(payload._hash ?? ZERO_HASH, block, payload, `validation excepted: ${ex}`, ex))\n }\n return errors\n}\n","import type { IdentityFunction } from '@xylabs/sdk-js'\nimport type { Payload } from '@xyo-network/sdk-js'\nimport { isHashMeta } from '@xyo-network/sdk-js'\nimport type { HydratedBlockWithHashMeta, InBlockPayloadValidationFunctionContext } from '@xyo-network/xl1-sdk'\n\nimport { isElevatedFromBlock } from './isElevatedFromBlock.ts'\nimport { validateElevatedFromBlock } from './validateElevatedFromBlock.ts'\nimport { validateElevatedFromTransaction } from './validateElevatedFromTransaction.ts'\n\nexport const validateTypedPayloadInBlock = async <T extends Payload>(\n context: InBlockPayloadValidationFunctionContext,\n payload: Payload,\n block: HydratedBlockWithHashMeta,\n identityFunction: IdentityFunction<T>,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n if (identityFunction(payload) && isHashMeta(payload)) {\n if (isElevatedFromBlock(payload, block)) {\n errors.push(...await validateElevatedFromBlock(context, payload, block))\n } else {\n errors.push(...await validateElevatedFromTransaction(context, payload, block))\n }\n } else {\n errors.push(new Error('Payload failed identityFunction or isElevated or isStorageMeta'))\n }\n } catch (ex) {\n errors.push(new Error(`Failed validateTypedPayloadInBlock: ${ex}`))\n }\n return errors\n}\n//\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeDestinationObservation } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeDestinationObservationInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeDestinationObservation)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeObservationInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeIntent } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeIntentInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeIntent)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeIntentInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeSourceObservation } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeSourceObservationInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeSourceObservation)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeObservationInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isChainStakeIntent } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateChainStakeIntentInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isChainStakeIntent)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n block[0]?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isHashPayload } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateHashInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: (InBlockPayloadValidationError)[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isHashPayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { isSchemaPayload } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateSchemaInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isSchemaPayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateSchemaInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isTimePayload } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateTimeInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isTimePayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateTimeInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isTransfer } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateTransferInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isTransfer)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateTransferInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { spanRootAsync, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { ChainId, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport { HydratedBlockStateValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateHydratedBlock } from '../hydratedBlock/index.ts'\nimport { RequiredBalanceBlockStateValidator } from './validators/index.ts'\n\nexport const validateHydratedBlockState: HydratedBlockStateValidationFunction = async (\n context,\n hydratedBlock,\n additionalValidators = [],\n) => {\n return await spanRootAsync('validateHydratedBlockState', async () => {\n const errors: HydratedBlockStateValidationError[] = []\n let chainId: ChainId | undefined\n try {\n chainId = await context.chainIdAtBlockNumber(hydratedBlock[0].block)\n const validateHydratedBlockErrors = await validateHydratedBlock(context, hydratedBlock, context.chainIdAtBlockNumber)\n for (const validateHydratedBlockError of validateHydratedBlockErrors) {\n errors.push(new HydratedBlockStateValidationError(\n hydratedBlock[0]._hash,\n chainId,\n hydratedBlock,\n `validateBlock error: ${validateHydratedBlockError}`,\n validateHydratedBlockError,\n ))\n }\n const validators: HydratedBlockStateValidationFunction[] = [\n RequiredBalanceBlockStateValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(context, hydratedBlock)))).flat())\n } catch (ex) {\n errors.push(new HydratedBlockStateValidationError(\n hydratedBlock?.[0]?._hash ?? ZERO_HASH,\n chainId ?? '00' as ChainId,\n hydratedBlock,\n `Failed validateHydratedBlockState: ${ex}`,\n ex,\n ))\n }\n return errors\n }, context)\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport { spanRootAsync, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { ChainId, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n AttoXL1, HydratedBlockStateValidationError, netBalancesForPayloads, XYO_ZERO_ADDRESS,\n} from '@xyo-network/xl1-sdk'\n\nexport const RequiredBalanceBlockStateValidator: HydratedBlockStateValidationFunction = async (\n context,\n block,\n) => {\n return await spanRootAsync('RequiredBalanceBlockStateValidator', async () => {\n const errors: HydratedBlockStateValidationError[] = []\n let chainId = '00' as ChainId\n try {\n // TODO: Filter by non-producer elevated payloads\n // to allow for transfers from ZERO address\n const netBalances = netBalancesForPayloads({ singletons: {} }, (block[1]))\n const netBalanceAddresses = Object.keys(netBalances) as Address[]\n const requiredBalances: Record<Address, bigint> = {}\n for (const address of netBalanceAddresses) {\n if (netBalances[address] < 0n) {\n requiredBalances[address] = -netBalances[address]\n }\n }\n const previous = block[0].previous\n if (previous === null) return [new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n '00' as ChainId,\n block,\n 'Insufficient funds because first block',\n )]\n chainId = await context.chainIdAtBlockNumber(block[0].block)\n await spanRootAsync('RequiredBalanceBlockStateValidator|balancesLoop', async () => {\n for (const [address, reqBalance] of Object.entries(requiredBalances) as [Address, bigint][]) {\n const result = await context.accountBalance.accountBalances([address], { head: previous })\n const balance = result[address] ?? AttoXL1(0n)\n if (address !== XYO_ZERO_ADDRESS && reqBalance > balance) {\n errors.push(new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n chainId,\n block,\n `insufficient balance for ${address} ${balance} < ${requiredBalances[address]}`,\n ))\n }\n }\n }, context)\n } catch (ex) {\n errors.push(new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n chainId,\n block,\n `Failed RequiredBalanceBlockStateValidator: ${ex}`,\n ex,\n ))\n }\n return await Promise.resolve(errors)\n }, context)\n}\n"],"mappings":"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","names":["ZERO_HASH","BlockValidationError","BoundWitnessSignaturesValidator","ZERO_HASH","BlockValidationError","isAllowedBlockPayloadSchema","BlockAllowedPayloadSchemasValidator","context","block","errors","schema","payload_schemas","isAllowedBlockPayloadSchema","push","BlockValidationError","_hash","ZERO_HASH","ex","isDefined","ZERO_HASH","BoundWitnessSchema","BlockValidationError","BlockFieldsValidator","context","block","chainId","errors","isDefined","chain","toLowerCase","push","BlockValidationError","_hash","ZERO_HASH","txHashes","i","payload_hashes","length","payload_schemas","BoundWitnessSchema","Set","size","ex","ZERO_HASH","BlockBoundWitnessWithStorageMetaJsonSchema","BlockValidationError","Ajv","BlockJsonSchemaValidator","jsonSchema","BlockBoundWitnessWithStorageMetaJsonSchema","ajv","Ajv","allErrors","strict","validate","compile","context","block","errors","length","error","BlockValidationError","_hash","ZERO_HASH","errorsText","separator","cause","push","ex","isHash","ZERO_HASH","BlockValidationError","BlockPreviousHashValidator","context","block","errors","blockNumber","isHash","previous","push","BlockValidationError","_hash","ZERO_HASH","ex","error","cause","validateBlock","context","block","chainId","additionalValidators","errors","bwErrors","BoundWitnessSignaturesValidator","bwError","push","BlockValidationError","_hash","ZERO_HASH","validators","BlockFieldsValidator","BlockPreviousHashValidator","BlockAllowedPayloadSchemasValidator","Promise","all","map","validator","flat","ex","ZERO_HASH","BoundWitnessReferencesValidator","HydratedBlockValidationError","ZERO_HASH","HydratedBlockValidationError","ZERO_HASH","BoundWitnessSchema","SchemaSchema","BridgeDestinationObservationSchema","BridgeIntentSchema","BridgeSourceObservationSchema","ChainStakeIntentSchema","HashSchema","InBlockPayloadValidationError","TimeSchema","TransferSchema","isTransactionBoundWitness","isElevatedFromBlock","payload","payloads","txs","filter","p","isTransactionBoundWitness","tx","payload_hashes","includes","_hash","InBlockPayloadValidationError","transactionsFromHydratedBlock","validateElevatedFromBlock","context","payload","block","errors","txs","transactionsFromHydratedBlock","allTxPayloadHashes","Set","flatMap","tx","payload_hashes","has","_hash","push","InBlockPayloadValidationError","schema","ex","InBlockPayloadValidationError","transactionsFromHydratedBlock","validateElevatedFromTransaction","context","payload","block","errors","txs","transactionsFromHydratedBlock","length","hashes","flatMap","tx","payload_hashes","includes","_hash","push","InBlockPayloadValidationError","ex","ZERO_HASH","isHashMeta","BoundWitnessSignaturesValidator","InBlockPayloadValidationError","isTransactionBoundWitness","validateTransaction","validateTransactionInBlock","context","payload","block","errors","isTransactionBoundWitness","isHashMeta","txErrors","validateTransaction","chainId","chain","txError","push","InBlockPayloadValidationError","_hash","txSignatureErrors","BoundWitnessSignaturesValidator","txSignatureError","ex","ZERO_HASH","isHashMeta","validateTypedPayloadInBlock","context","payload","block","identityFunction","errors","isHashMeta","isElevatedFromBlock","push","validateElevatedFromBlock","validateElevatedFromTransaction","Error","ex","ZERO_HASH","InBlockPayloadValidationError","isBridgeDestinationObservation","validateBridgeDestinationObservationInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeDestinationObservation","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isBridgeIntent","validateBridgeIntentInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeIntent","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isBridgeSourceObservation","validateBridgeSourceObservationInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeSourceObservation","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isChainStakeIntent","validateChainStakeIntentInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isChainStakeIntent","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isHashPayload","validateHashInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isHashPayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","isSchemaPayload","InBlockPayloadValidationError","validateSchemaInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isSchemaPayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isTimePayload","validateTimeInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isTimePayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isTransfer","validateTransferInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isTransfer","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","payloadValidators","BoundWitnessSchema","validateTransactionInBlock","BridgeDestinationObservationSchema","validateBridgeDestinationObservationInBlock","BridgeIntentSchema","validateBridgeIntentInBlock","BridgeSourceObservationSchema","validateBridgeSourceObservationInBlock","ChainStakeIntentSchema","validateChainStakeIntentInBlock","HashSchema","validateHashInBlock","SchemaSchema","validateSchemaInBlock","TimeSchema","validateTimeInBlock","TransferSchema","validateTransferInBlock","validatePayloadInBlock","context","payload","block","errors","validator","schema","push","InBlockPayloadValidationError","_hash","ZERO_HASH","ex","error","PayloadsInBlockValidator","context","block","payloads","errors","payloadMap","payload","_hash","remainingPayloads","i","payload_hashes","length","hash","schema","payload_schemas","payloadInBlockErrors","validatePayloadInBlock","payloadInBlockError","push","HydratedBlockValidationError","ZERO_HASH","Object","keys","join","ex","validateHydratedBlock","context","hydratedBlock","chainIdAtBlockNumber","additionalValidators","additionalBlockValidators","errors","validateBlockErrors","validateBlock","block","undefined","validateBlockError","push","HydratedBlockValidationError","_hash","bwRefErrors","BoundWitnessReferencesValidator","bwRefError","validators","PayloadsInBlockValidator","Promise","all","map","v","flat","ex","ZERO_HASH","spanRootAsync","ZERO_HASH","HydratedBlockStateValidationError","spanRootAsync","ZERO_HASH","AttoXL1","HydratedBlockStateValidationError","netBalancesForPayloads","XYO_ZERO_ADDRESS","RequiredBalanceBlockStateValidator","context","block","spanRootAsync","errors","chainId","netBalances","netBalancesForPayloads","singletons","netBalanceAddresses","Object","keys","requiredBalances","address","previous","HydratedBlockStateValidationError","_hash","ZERO_HASH","chainIdAtBlockNumber","reqBalance","entries","result","accountBalance","accountBalances","head","balance","AttoXL1","XYO_ZERO_ADDRESS","push","ex","Promise","resolve","validateHydratedBlockState","context","hydratedBlock","additionalValidators","spanRootAsync","errors","chainId","chainIdAtBlockNumber","block","validateHydratedBlockErrors","validateHydratedBlock","validateHydratedBlockError","push","HydratedBlockStateValidationError","_hash","validators","RequiredBalanceBlockStateValidator","Promise","all","map","v","flat","ex","ZERO_HASH"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json.schemastore.org/package.json",
3
3
  "name": "@xyo-network/chain-validation",
4
- "version": "1.20.12",
4
+ "version": "1.20.14",
5
5
  "description": "XYO Layer One SDK Validation",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -40,20 +40,20 @@
40
40
  ],
41
41
  "dependencies": {
42
42
  "@xylabs/sdk-js": "~5.0.90",
43
- "@xyo-network/boundwitness-model": "~5.3.17",
44
- "@xyo-network/sdk-js": "~5.3.17",
45
- "@xyo-network/xl1-sdk": "~1.26.9",
43
+ "@xyo-network/boundwitness-model": "~5.3.20",
44
+ "@xyo-network/sdk-js": "~5.3.20",
45
+ "@xyo-network/xl1-sdk": "~1.26.11",
46
46
  "ajv": "~8.18.0"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/node": "~25.5.0",
50
50
  "@xylabs/sdk-js": "~5.0.90",
51
- "@xylabs/ts-scripts-common": "~7.5.10",
52
- "@xylabs/ts-scripts-yarn3": "~7.5.10",
53
- "@xylabs/tsconfig": "~7.5.10",
54
- "@xyo-network/chain-protocol": "~1.20.12",
55
- "@xyo-network/sdk-js": "~5.3.17",
56
- "axios": "^1.14.0",
51
+ "@xylabs/ts-scripts-common": "~7.5.11",
52
+ "@xylabs/ts-scripts-yarn3": "~7.5.11",
53
+ "@xylabs/tsconfig": "~7.5.11",
54
+ "@xyo-network/chain-protocol": "~1.20.14",
55
+ "@xyo-network/sdk-js": "~5.3.20",
56
+ "axios": "^1.13.6",
57
57
  "ethers": "^6.16.0",
58
58
  "typescript": "~5.9.3",
59
59
  "vitest": "^4.1.2",
@@ -1,5 +1,5 @@
1
1
  import { ZERO_HASH } from '@xylabs/sdk-js'
2
- import { isStorageMeta } from '@xyo-network/sdk-js'
2
+ import { isHashMeta } from '@xyo-network/sdk-js'
3
3
  import type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'
4
4
  import {
5
5
  BoundWitnessSignaturesValidator, InBlockPayloadValidationError, isTransactionBoundWitness, validateTransaction,
@@ -12,7 +12,7 @@ export const validateTransactionInBlock: InBlockPayloadValidationFunction = asyn
12
12
  ): Promise<InBlockPayloadValidationError[]> => {
13
13
  const errors: InBlockPayloadValidationError[] = []
14
14
  try {
15
- if (isTransactionBoundWitness(payload) && isStorageMeta(payload)) {
15
+ if (isTransactionBoundWitness(payload) && isHashMeta(payload)) {
16
16
  const txErrors = await validateTransaction({ ...context, chainId: block[0].chain }, [payload, block[1]])
17
17
  for (const txError of txErrors) {
18
18
  errors.push(new InBlockPayloadValidationError(
@@ -34,7 +34,7 @@ export const validateTransactionInBlock: InBlockPayloadValidationFunction = asyn
34
34
  ))
35
35
  }
36
36
  } else {
37
- errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'Payload failed isTransactionBoundWitness or isStorageMeta'))
37
+ errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'Payload failed isTransactionBoundWitness or isHashMeta'))
38
38
  }
39
39
  } catch (ex) {
40
40
  errors.push(new InBlockPayloadValidationError(payload._hash ?? ZERO_HASH, block, payload, `validation excepted: ${ex}`, ex))
@@ -45,8 +45,8 @@ export const validatePayloadInBlock: InBlockPayloadValidationFunction = async (
45
45
  block,
46
46
  payload,
47
47
  `validation excepted: ${ex}`,
48
+ ex,
48
49
  )
49
- error.cause = ex
50
50
  errors.push(error)
51
51
  }
52
52
  return errors