@xyo-network/chain-validation 1.5.29 → 1.5.31
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 +126 -76
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/types/block/validateBlock.d.ts.map +1 -1
- package/dist/types/block/validators/AllowedPayloadSchemas.d.ts.map +1 -1
- package/dist/types/block/validators/Fields.d.ts +1 -1
- package/dist/types/block/validators/Fields.d.ts.map +1 -1
- package/dist/types/block/validators/JsonSchema.d.ts +1 -1
- package/dist/types/block/validators/JsonSchema.d.ts.map +1 -1
- package/dist/types/block/validators/PreviousHash.d.ts.map +1 -1
- package/dist/types/boundwitness/validators/BoundWitnessReferences.d.ts.map +1 -1
- package/dist/types/boundwitness/validators/BoundWitnessSignatures.d.ts.map +1 -1
- package/dist/types/elevatedPayload/payloads/validateSchemaInBlock.d.ts.map +1 -1
- package/dist/types/elevatedPayload/payloads/validateTransferInBlock.d.ts +1 -1
- package/dist/types/elevatedPayload/payloads/validateTransferInBlock.d.ts.map +1 -1
- package/dist/types/elevatedPayload/validatePayloadInBlock.d.ts.map +1 -1
- package/dist/types/hydratedBlock/validateHydratedBlock.d.ts +2 -2
- package/dist/types/hydratedBlock/validateHydratedBlock.d.ts.map +1 -1
- package/dist/types/hydratedBlock/validators/Payloads.d.ts +2 -2
- package/dist/types/hydratedBlock/validators/Payloads.d.ts.map +1 -1
- package/dist/types/hydratedBlockState/validateHydratedBlockState.d.ts.map +1 -1
- package/dist/types/hydratedBlockState/validators/RequiredBalance.d.ts.map +1 -1
- package/dist/types/transaction/validateTransaction.d.ts +2 -2
- package/dist/types/transaction/validateTransaction.d.ts.map +1 -1
- package/dist/types/transaction/validators/TransactionDurationValidator.d.ts +2 -2
- package/dist/types/transaction/validators/TransactionDurationValidator.d.ts.map +1 -1
- package/dist/types/transaction/validators/TransactionElevationValidator.d.ts +2 -2
- package/dist/types/transaction/validators/TransactionElevationValidator.d.ts.map +1 -1
- package/dist/types/transaction/validators/TransactionFromValidator.d.ts +2 -2
- package/dist/types/transaction/validators/TransactionFromValidator.d.ts.map +1 -1
- package/dist/types/transaction/validators/TransactionGasValidator.d.ts +2 -2
- package/dist/types/transaction/validators/TransactionGasValidator.d.ts.map +1 -1
- package/dist/types/transaction/validators/TransactionJsonSchemaValidator.d.ts +2 -2
- package/dist/types/transaction/validators/TransactionJsonSchemaValidator.d.ts.map +1 -1
- package/dist/types/transaction/validators/TransactionProtocolValidator.d.ts +2 -2
- package/dist/types/transaction/validators/TransactionProtocolValidator.d.ts.map +1 -1
- package/package.json +24 -24
- package/src/block/validateBlock.ts +3 -2
- package/src/block/validators/AllowedPayloadSchemas.ts +4 -4
- package/src/block/validators/Fields.ts +7 -5
- package/src/block/validators/JsonSchema.ts +7 -6
- package/src/block/validators/PreviousHash.ts +6 -5
- package/src/boundwitness/validators/BoundWitnessReferences.ts +9 -8
- package/src/boundwitness/validators/BoundWitnessSignatures.ts +5 -4
- package/src/elevatedPayload/payloads/validateChainStakeIntentInBlock.ts +4 -4
- package/src/elevatedPayload/payloads/validateHashInBlock.ts +4 -4
- package/src/elevatedPayload/payloads/validateSchemaInBlock.ts +3 -2
- package/src/elevatedPayload/payloads/validateTransferInBlock.ts +6 -4
- package/src/elevatedPayload/validatePayloadInBlock.ts +6 -5
- package/src/hydratedBlock/validateHydratedBlock.ts +7 -6
- package/src/hydratedBlock/validators/Payloads.ts +7 -6
- package/src/hydratedBlockState/validateHydratedBlockState.ts +7 -2
- package/src/hydratedBlockState/validators/RequiredBalance.ts +13 -4
- package/src/transaction/validateTransaction.ts +5 -5
- package/src/transaction/validators/TransactionDurationValidator.ts +12 -11
- package/src/transaction/validators/TransactionElevationValidator.ts +8 -8
- package/src/transaction/validators/TransactionFromValidator.ts +10 -9
- package/src/transaction/validators/TransactionGasValidator.ts +42 -18
- package/src/transaction/validators/TransactionJsonSchemaValidator.ts +9 -9
- package/src/transaction/validators/TransactionProtocolValidator.ts +9 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/boundwitness/validators/BoundWitnessReferences.ts","../../src/boundwitness/validators/BoundWitnessSignatures.ts","../../src/block/validators/AllowedPayloadSchemas.ts","../../src/block/validators/Fields.ts","../../src/block/validators/JsonSchema.ts","../../src/block/validators/PreviousHash.ts","../../src/block/validateBlock.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/validateChainStakeIntentInBlock.ts","../../src/elevatedPayload/payloads/validateHashInBlock.ts","../../src/elevatedPayload/payloads/validateSchemaInBlock.ts","../../src/elevatedPayload/payloads/validateTransferInBlock.ts","../../src/hydratedBlock/validators/Payloads.ts","../../src/hydratedBlock/validateHydratedBlock.ts","../../src/hydratedBlockState/validators/RequiredBalance.ts","../../src/hydratedBlockState/validateHydratedBlockState.ts","../../src/transaction/validateTransaction.ts","../../src/transaction/validators/TransactionDurationValidator.ts","../../src/transaction/validators/TransactionElevationValidator.ts","../../src/transaction/validators/TransactionFromValidator.ts","../../src/transaction/validators/TransactionGasValidator.ts","../../src/transaction/validators/TransactionJsonSchemaValidator.ts","../../src/transaction/validators/TransactionProtocolValidator.ts"],"sourcesContent":["import type { Hash } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport type {\n Payload,\n Schema,\n WithHashStorageMeta,\n} from '@xyo-network/payload-model'\nimport { isAnyPayload } from '@xyo-network/payload-model'\nimport type { HydratedBoundWitnessValidationFunction, HydratedBoundWitnessWithHashStorageMeta } from '@xyo-network/xl1-protocol'\n\nfunction getPayloadsFromPayloadArray(payloads: WithHashStorageMeta<Payload>[], hashes: Hash[]): (WithHashStorageMeta<Payload> | undefined)[] {\n return hashes.map(hash => payloads.find(payload => payload._hash === hash || payload._dataHash === hash))\n}\n\nexport const BoundWitnessReferencesValidator\n= <T extends BoundWitness = BoundWitness>(allowedSchemas?: Schema[]): HydratedBoundWitnessValidationFunction<T> => (\n [bw, payloadSet]: HydratedBoundWitnessWithHashStorageMeta<T>,\n): Promisable<Error[]> => {\n const errors: Error[] = []\n try {\n const payloads = getPayloadsFromPayloadArray(payloadSet, bw.payload_hashes)\n if (payloads.length !== bw.payload_hashes.length) {\n errors.push(new Error('unable to locate payloads'))\n }\n\n // check if payloads are valid and if their schemas match the declared schemas\n for (let payload of payloads) {\n if (isAnyPayload(payload)) {\n const payloadHashIndex = bw.payload_hashes.indexOf(payload._hash)\n const payloadDataHashIndex = bw.payload_hashes.indexOf(payload._dataHash)\n const payloadIndex = Math.max(payloadHashIndex, payloadDataHashIndex)\n if (payloadIndex === -1) {\n errors.push(new Error('payload hash not found'))\n }\n\n const declaredSchema = bw.payload_schemas[payloadIndex]\n if (declaredSchema !== payload.schema) {\n errors.push(new Error('mismatched schema'))\n }\n\n if (allowedSchemas && !allowedSchemas.includes(payload.schema)) {\n errors.push(new Error(`disallowed schema [${payload.schema}]`))\n }\n } else {\n errors.push(new Error('invalid payload'))\n }\n }\n } catch (ex) {\n errors.push(new Error('validation excepted'), ex as Error)\n }\n return errors\n}\n","import { toArrayBuffer } from '@xylabs/arraybuffer'\nimport type { Address } from '@xylabs/hex'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type { BoundWitnessValidationFunction } from '@xyo-network/xl1-protocol'\n\nexport const BoundWitnessSignaturesValidator: BoundWitnessValidationFunction = async (\n bw: BoundWitness,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n const dataHash = await BoundWitnessBuilder.dataHash(bw)\n const results: [Address, Error[]][] = await Promise.all(bw.addresses.map(async (address, index) => {\n return [address, await BoundWitnessValidator.validateSignature(toArrayBuffer(dataHash), toArrayBuffer(address), toArrayBuffer(bw.$signatures[index]))]\n }))\n for (const [, bwErrors] of results) {\n errors.push(...bwErrors)\n }\n } catch (ex) {\n errors.push(new Error('validation excepted'), ex as Error)\n }\n return errors\n}\n","import {\n type BlockBoundWitness, type BlockValidatorFunction, isAllowedBlockPayloadSchema,\n} from '@xyo-network/xl1-protocol'\n\nexport const BlockAllowedPayloadSchemasValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n) => {\n const errors: Error[] = []\n try {\n for (const schema of block.payload_schemas) {\n if (!isAllowedBlockPayloadSchema(schema)) {\n errors.push(new Error(`payload schema not allowed in block: ${schema}`))\n }\n }\n } catch (e) {\n errors.push(new Error(`Failed BlockAllowedPayloadSchemasValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Address, Hash } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-protocol'\n\nexport const BlockFieldsValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n chainId?: Address,\n) => {\n const errors: Error[] = []\n try {\n if (isDefined(chainId) && block.chain !== chainId.toLowerCase()) {\n errors.push(new Error('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 Error(`Duplicate Transaction Hashes: ${txHashes}`))\n }\n } catch (e) {\n errors.push(new Error(`Failed BlockFieldsValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { BlockBoundWitnessWithStorageMetaJsonSchema } from '@xyo-network/chain-schema'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-protocol'\nimport type { AnySchema } from 'ajv'\nimport { Ajv } from 'ajv'\n\nexport const BlockJsonSchemaValidator = (jsonSchema: AnySchema = BlockBoundWitnessWithStorageMetaJsonSchema): BlockValidatorFunction => async (\n block: BlockBoundWitness,\n) => {\n const errors: Error[] = []\n try {\n const ajv = new Ajv({ allErrors: true, strict: true })\n // see if you can export the super set\n const validate = ajv.compile(jsonSchema)\n await validate(block)\n if ((validate.errors ?? []).length > 0) {\n const error = new Error('failed JSON schema validation')\n error.cause = validate.errors\n errors.push(error)\n }\n } catch (e) {\n errors.push(new Error(`Failed BlockJsonSchemaValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { isHash } from '@xylabs/hex'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-protocol'\n\nexport const BlockPreviousHashValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n) => {\n const errors: Error[] = []\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 Error('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 Error('previous hash should not be set'))\n }\n } else {\n // we have a negative block number\n errors.push(new Error('invalid block number'))\n }\n } catch (e) {\n errors.push(new Error(`Failed BlockPreviousHashValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-protocol'\n\nimport { BoundWitnessSignaturesValidator } from '../boundwitness/index.ts'\nimport {\n BlockAllowedPayloadSchemasValidator,\n BlockFieldsValidator, BlockJsonSchemaValidator, BlockPreviousHashValidator,\n} from './validators/index.ts'\n\nexport const validateBlock: BlockValidatorFunction = async (\n block: BlockBoundWitness,\n chainId?: Address,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n const validators: BlockValidatorFunction[] = [\n BoundWitnessSignaturesValidator,\n BlockFieldsValidator,\n BlockPreviousHashValidator,\n BlockJsonSchemaValidator(),\n BlockAllowedPayloadSchemasValidator,\n ]\n errors.push(...(await Promise.all(\n validators.map(validator => validator(block, chainId)),\n )).flat())\n } catch (ex) {\n errors.push(new Error('validation excepted'), ex as Error)\n }\n return errors\n}\n","import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema } from '@xyo-network/payload-model'\nimport { SchemaSchema } from '@xyo-network/schema-payload-plugin'\nimport type {\n HydratedBlock,\n InBlockPayloadValidationFunction,\n} from '@xyo-network/xl1-protocol'\nimport {\n ChainStakeIntentSchema, HashSchema, TransferSchema,\n} from '@xyo-network/xl1-protocol'\n\nimport { validateTransactionInBlock } from './lib/index.ts'\nimport {\n validateChainStakeIntentInBlock, validateHashInBlock, validateSchemaInBlock, validateTransferInBlock,\n} from './payloads/index.ts'\n\nconst payloadValidators: Partial<Record<Schema, InBlockPayloadValidationFunction>> = {\n [HashSchema]: validateHashInBlock,\n [TransferSchema]: validateTransferInBlock,\n [SchemaSchema]: validateSchemaInBlock,\n [ChainStakeIntentSchema]: validateChainStakeIntentInBlock,\n [BoundWitnessSchema]: validateTransactionInBlock,\n}\n\nexport const validatePayloadInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n const validator = payloadValidators[payload.schema]\n if (validator) {\n errors.push(...await validator(payload, block))\n } else {\n errors.push(new Error(`Unsupported payload schema: ${payload.schema}`))\n }\n } catch (e) {\n errors.push(new Error(`Failed validatePayloadInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { type HydratedBlock, isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nexport const isElevatedFromBlock = (payload: WithStorageMeta<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 { Promisable } from '@xylabs/promise'\nimport { transactionsFromHydratedBlock } from '@xyo-network/chain-protocol'\nimport type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\n\nexport const validateElevatedFromBlock: InBlockPayloadValidationFunction = (\n payload,\n block: HydratedBlock,\n): Promisable<Error[]> => {\n const errors: Error[] = []\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 Error(`Transaction may not include block payload hash [${payload.schema}]: ${payload._hash}`))\n }\n } catch (e) {\n errors.push(new Error(`Failed validateElevatedFromBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/promise'\nimport { transactionsFromHydratedBlock } from '@xyo-network/chain-protocol'\nimport type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\n\nexport const validateElevatedFromTransaction: InBlockPayloadValidationFunction = (\n payload,\n block: HydratedBlock,\n): Promisable<Error[]> => {\n const errors: Error[] = []\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 Error('Transaction does not include payload'))\n }\n } else {\n errors.push(new Error('No Transactions in block'))\n }\n } catch (e) {\n errors.push(new Error(`Failed validateElevatedFromTransaction: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { isStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nimport { BoundWitnessSignaturesValidator } from '../../boundwitness/index.ts'\n\nexport const validateTransactionInBlock: InBlockPayloadValidationFunction = async (\n payload,\n _block: HydratedBlock,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n if (isTransactionBoundWitness(payload) && isStorageMeta(payload)) {\n errors.push(...await BoundWitnessSignaturesValidator(payload))\n } else {\n errors.push(new Error('Payload failed isTransactionBoundWitness or isStorageMeta'))\n }\n } catch (e) {\n errors.push(new Error(`Failed validateTransactionInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { IdentityFunction } from '@xyo-network/chain-protocol'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\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 payload: Payload,\n block: HydratedBlock,\n identityFunction: IdentityFunction<T>,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n if (identityFunction(payload) && isStorageMeta(payload)) {\n if (isElevatedFromBlock(payload, block)) {\n errors.push(...await validateElevatedFromBlock(payload, block))\n } else {\n errors.push(...await validateElevatedFromTransaction(payload, block))\n }\n } else {\n errors.push(new Error('Payload failed identityFunction or isElevated or isStorageMeta'))\n }\n } catch (e) {\n errors.push(new Error(`Failed validateTypedPayloadInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n//\n","import type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\nimport { isChainStakeIntent } from '@xyo-network/xl1-protocol'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateChainStakeIntentInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n errors.push(...await validateTypedPayloadInBlock(payload, block, isChainStakeIntent))\n } catch (e) {\n errors.push(new Error(`Failed validateChainStakeIntentInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\nimport { isHashPayload } from '@xyo-network/xl1-protocol'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateHashInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n errors.push(...await validateTypedPayloadInBlock(payload, block, isHashPayload))\n } catch (e) {\n errors.push(new Error(`Failed validateHashInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { isSchemaPayload } from '@xyo-network/schema-payload-plugin'\nimport type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateSchemaInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n errors.push(...await validateTypedPayloadInBlock(payload, block, isSchemaPayload))\n } catch (e) {\n errors.push(new Error(`Failed validateSchemaInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import {\n type HydratedBlock, type InBlockPayloadValidationFunction, isTransfer,\n} from '@xyo-network/xl1-protocol'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateTransferInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n errors.push(...await validateTypedPayloadInBlock(payload, block, isTransfer))\n } catch (e) {\n errors.push(new Error(`Failed validateTransferInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'\nimport type {\n HydratedBlock,\n HydratedBlockValidatorFunction,\n} from '@xyo-network/xl1-protocol'\n\nimport { validatePayloadInBlock } from '../../elevatedPayload/validatePayloadInBlock.ts'\n\nexport const PayloadsInBlockValidator: HydratedBlockValidatorFunction = async (\n [block, payloads]: HydratedBlock,\n) => {\n const errors: Error[] = []\n try {\n const payloadMap: Partial<Record<Hash, WithHashStorageMeta<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 errors.push(...await validatePayloadInBlock(payload, [block, payloads]))\n delete remainingPayloads[hash]\n } else {\n errors.push(new Error(`missing payload ${hash} ${schema}`))\n }\n }\n\n if (Object.keys(remainingPayloads).length > 0) {\n errors.push(new Error(`extra payloads ${Object.keys(payloadMap).join(', ')}`))\n }\n } catch (e) {\n errors.push(new Error(`Failed PayloadsInBlockValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { HydratedBlock, HydratedBlockValidatorFunction } from '@xyo-network/xl1-protocol'\n\nimport { validateBlock } from '../block/index.ts'\nimport { BoundWitnessReferencesValidator } from '../boundwitness/index.ts'\nimport { PayloadsInBlockValidator } from './validators/index.ts'\n\nexport const validateHydratedBlock: HydratedBlockValidatorFunction = async (\n hydratedBlock: HydratedBlock,\n chainId?: Address,\n additionalValidators: HydratedBlockValidatorFunction[] = [],\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n errors.push(...await validateBlock(hydratedBlock[0], chainId))\n const validators: HydratedBlockValidatorFunction[] = [\n BoundWitnessReferencesValidator(),\n PayloadsInBlockValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(hydratedBlock, chainId)))).flat())\n } catch (e) {\n errors.push(new Error(`Failed validateHydratedBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { type Address, hexToBigInt } from '@xylabs/hex'\nimport { netBalancesForPayloads } from '@xyo-network/chain-protocol'\nimport { XYO_ZERO_ADDRESS } from '@xyo-network/chain-utils'\nimport type {\n AccountBalanceService, HydratedBlock, HydratedBlockStateValidationFunction,\n} from '@xyo-network/xl1-protocol'\n\nexport const RequiredBalanceBlockStateValidator: HydratedBlockStateValidationFunction = async (\n block: HydratedBlock,\n chainId: Address,\n services: { accountBalance: AccountBalanceService },\n) => {\n const errors: Error[] = []\n try {\n // TODO: Filter by non-producer elevated payloads\n // to allow for transfers from ZERO address\n const netBalances = netBalancesForPayloads(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 Error('Insufficient funds because first block')]\n\n for (const [address, reqBalance] of Object.entries(requiredBalances) as [Address, bigint][]) {\n const balance = hexToBigInt(services.accountBalance.getBalance(address))\n if (address !== XYO_ZERO_ADDRESS && reqBalance > balance) {\n errors.push(new Error(`insufficient balance for ${address} ${balance} < ${requiredBalances[address]}`))\n }\n }\n } catch (e) {\n errors.push(new Error(`Failed RequiredBalanceBlockStateValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return await Promise.resolve(errors)\n}\n","import type { Address } from '@xylabs/hex'\nimport type {\n AccountBalanceService, HydratedBlock, HydratedBlockStateValidationFunction,\n} from '@xyo-network/xl1-protocol'\n\nimport { validateHydratedBlock } from '../hydratedBlock/index.ts'\nimport { RequiredBalanceBlockStateValidator } from './validators/index.ts'\n\nexport const validateHydratedBlockState: HydratedBlockStateValidationFunction = async (\n hydratedBlock: HydratedBlock,\n chainId: Address,\n services: { accountBalance: AccountBalanceService },\n additionalValidators: HydratedBlockStateValidationFunction[] = [],\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n errors.push(...await validateHydratedBlock(hydratedBlock, chainId))\n const validators: HydratedBlockStateValidationFunction[] = [\n RequiredBalanceBlockStateValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(hydratedBlock, chainId, services)))).flat())\n } catch (e) {\n errors.push(new Error(`Failed validateHydratedBlockState: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { HydratedTransactionValidatorFunction, HydratedTransactionWithHashStorageMeta } from '@xyo-network/xl1-protocol'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nimport {\n TransactionDurationValidator,\n TransactionElevationValidator, TransactionFromValidator, TransactionGasValidator, TransactionJsonSchemaValidator, TransactionProtocolValidator,\n} from './validators/index.ts'\n\nexport async function validateTransaction(\n tx: HydratedTransactionWithHashStorageMeta,\n chainId?: Address,\n additionalValidators: HydratedTransactionValidatorFunction[] = [],\n): Promise<Error[]> {\n try {\n if (!isTransactionBoundWitness(tx[0])) {\n return [new Error('failed isTransactionBoundWitness identity check')]\n }\n\n const validators: HydratedTransactionValidatorFunction[] = [\n TransactionProtocolValidator,\n TransactionJsonSchemaValidator,\n TransactionDurationValidator,\n TransactionFromValidator,\n TransactionGasValidator,\n TransactionElevationValidator,\n ...additionalValidators,\n ]\n return (await Promise.all(validators.map(v => v(tx, chainId)))).flat()\n } catch (e) {\n return [(new Error(`Failed TransactionGasValidator: ${e instanceof Error ? e.message : String(e)}`))]\n }\n}\n","import type {\n HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\n\nexport const TransactionDurationValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (\n [tx]: HydratedTransaction,\n): Error[] => {\n const errors: Error[] = []\n try {\n const { exp, nbf } = tx\n if (nbf < 0) errors.push(new Error('Transaction nbf must be positive'))\n\n if (exp < 0) errors.push(new Error('Transaction exp must be positive'))\n if (exp <= nbf) errors.push(new Error('Transaction exp must greater than nbf'))\n if (exp - nbf > 10_000) errors.push(new Error('Transaction exp must not be too far in the future'))\n } catch (e) {\n errors.push(new Error(`Failed TransactionDurationValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n\n return errors\n}\n","import type { Promisable } from '@xylabs/promise'\nimport { extractElevatedHashes } from '@xyo-network/chain-protocol'\nimport type {\n HydratedTransactionValidatorFunction, HydratedTransactionWithHashStorageMeta, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\n\nexport const TransactionElevationValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (\n tx: HydratedTransactionWithHashStorageMeta,\n): Promisable<Error[]> => {\n const errors: Error[] = []\n try {\n try {\n extractElevatedHashes(tx)\n } catch {\n errors.push(new Error('Hydrated transaction does not include all script hashes'))\n }\n } catch (e) {\n errors.push(new Error(`Failed TransactionElevationValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { asAddress } from '@xylabs/hex'\nimport { addressesContains } from '@xyo-network/boundwitness-validator'\nimport type {\n HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\n\nexport const TransactionFromValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (\n [tx]: HydratedTransaction,\n): Error[] => {\n const errors: Error[] = []\n try {\n const from = asAddress(tx.from)\n if (from === undefined)errors.push(new Error('Transaction from is not a valid address'))\n else if (!addressesContains(tx, from)) errors.push(new Error('Transaction from address must be listed in addresses'))\n } catch (e) {\n errors.push(new Error(`Failed TransactionFromValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { hexToBigInt } from '@xylabs/hex'\nimport {\n AttoXL1,\n type HydratedTransaction, type HydratedTransactionValidatorFunction,\n minTransactionFees,\n type TransactionBoundWitness, type TransactionFeesBigInt, type TransactionFeesHex,\n} from '@xyo-network/xl1-protocol'\n\nexport const TransactionGasValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (\n [tx]: HydratedTransaction,\n): Error[] => {\n const errors: Error[] = []\n try {\n if (tx?.fees === undefined) {\n errors.push(new Error('Missing fees'))\n } else {\n const {\n base, gasLimit, gasPrice, priority,\n } = parseFees(tx.fees)\n\n if (base === undefined) errors.push(new Error('fees.base must be defined and a valid number'))\n else if (base < minTransactionFees.base) errors.push(new Error(`fees.base must be >= ${minTransactionFees.base}`))\n\n if (gasLimit === undefined) errors.push(new Error('fees.gasLimit must be defined and a valid number'))\n else if (gasLimit < minTransactionFees.gasLimit) errors.push(new Error(`fees.gasLimit must be >= ${minTransactionFees.gasLimit}`))\n\n if (gasPrice === undefined) errors.push(new Error('fees.gasPrice must be defined and a valid number'))\n else if (gasPrice < minTransactionFees.gasPrice) errors.push(new Error(`fees.gasPrice must be >= ${minTransactionFees.gasPrice}`))\n\n if (priority === undefined) errors.push(new Error('fees.priority must be defined and a valid number'))\n else if (priority < minTransactionFees.priority) errors.push(new Error(`fees.priority must be >= ${minTransactionFees.priority}`))\n }\n } catch (e) {\n errors.push(new Error(`Failed TransactionGasValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n\nconst parseFees = (fees: TransactionFeesHex): Partial<TransactionFeesBigInt> => {\n const ret: Partial<TransactionFeesBigInt> = {}\n const {\n base, gasLimit, gasPrice, priority,\n } = fees\n if (base !== undefined) ret.base = AttoXL1(hexToBigInt(base))\n if (gasLimit !== undefined) ret.gasLimit = AttoXL1(hexToBigInt(gasLimit))\n if (gasPrice !== undefined) ret.gasPrice = AttoXL1(hexToBigInt(gasPrice))\n if (priority !== undefined) ret.priority = AttoXL1(hexToBigInt(priority))\n return ret\n}\n","import type { Promisable } from '@xylabs/promise'\nimport { TransactionBoundWitnessJsonSchema } from '@xyo-network/chain-schema'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport type { ValidateFunction } from 'ajv'\nimport { Ajv } from 'ajv'\n\nconst ajv = new Ajv({ allErrors: true, strict: true })\n\nlet validate: ValidateFunction<TransactionBoundWitness> | undefined\n\nexport const TransactionJsonSchemaValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (\n [tx]: HydratedTransaction,\n): Promisable<Error[]> => {\n const errors: Error[] = []\n try {\n if (validate === undefined) validate = ajv.compile(TransactionBoundWitnessJsonSchema)\n // see if you can export the super set\n if (!validate(PayloadBuilder.omitStorageMeta(tx))) {\n const error = new Error('failed JSON schema validation')\n error.cause = validate.errors\n errors.push(error)\n }\n } catch (ex) {\n errors.push(new Error('validation excepted'), ex as Error)\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type {\n HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\n\nexport const TransactionProtocolValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = async (\n [tx]: HydratedTransaction,\n chainId?: Address,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n if (chainId !== undefined && tx.chain !== chainId) {\n errors.push(new Error('invalid chain id'))\n }\n } catch (ex) {\n errors.push(new Error('validation excepted'), ex as Error)\n }\n return await Promise.resolve(errors)\n}\n"],"mappings":"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","names":["isAnyPayload","getPayloadsFromPayloadArray","payloads","hashes","map","hash","find","payload","_hash","_dataHash","BoundWitnessReferencesValidator","allowedSchemas","bw","payloadSet","errors","payload_hashes","length","push","Error","isAnyPayload","payloadHashIndex","indexOf","payloadDataHashIndex","payloadIndex","Math","max","declaredSchema","payload_schemas","schema","includes","ex","toArrayBuffer","BoundWitnessBuilder","BoundWitnessValidator","BoundWitnessSignaturesValidator","bw","errors","dataHash","BoundWitnessBuilder","results","Promise","all","addresses","map","address","index","BoundWitnessValidator","validateSignature","toArrayBuffer","$signatures","bwErrors","push","ex","Error","isAllowedBlockPayloadSchema","BlockAllowedPayloadSchemasValidator","block","errors","schema","payload_schemas","isAllowedBlockPayloadSchema","push","Error","e","message","String","isDefined","BoundWitnessSchema","BlockFieldsValidator","block","chainId","errors","isDefined","chain","toLowerCase","push","Error","txHashes","i","payload_hashes","length","payload_schemas","BoundWitnessSchema","Set","size","e","message","String","BlockBoundWitnessWithStorageMetaJsonSchema","Ajv","BlockJsonSchemaValidator","jsonSchema","BlockBoundWitnessWithStorageMetaJsonSchema","block","errors","ajv","Ajv","allErrors","strict","validate","compile","length","error","Error","cause","push","e","message","String","isHash","BlockPreviousHashValidator","block","errors","blockNumber","isHash","previous","push","Error","e","message","String","validateBlock","block","chainId","errors","validators","BoundWitnessSignaturesValidator","BlockFieldsValidator","BlockPreviousHashValidator","BlockJsonSchemaValidator","BlockAllowedPayloadSchemasValidator","push","Promise","all","map","validator","flat","ex","Error","BoundWitnessSchema","SchemaSchema","ChainStakeIntentSchema","HashSchema","TransferSchema","isTransactionBoundWitness","isElevatedFromBlock","payload","payloads","txs","filter","p","isTransactionBoundWitness","tx","payload_hashes","includes","_hash","transactionsFromHydratedBlock","validateElevatedFromBlock","payload","block","errors","txs","transactionsFromHydratedBlock","allTxPayloadHashes","Set","flatMap","tx","payload_hashes","has","_hash","push","Error","schema","e","message","String","transactionsFromHydratedBlock","validateElevatedFromTransaction","payload","block","errors","txs","transactionsFromHydratedBlock","length","hashes","flatMap","tx","payload_hashes","includes","_hash","push","Error","e","message","String","isStorageMeta","isTransactionBoundWitness","validateTransactionInBlock","payload","_block","errors","isTransactionBoundWitness","isStorageMeta","push","BoundWitnessSignaturesValidator","Error","e","message","String","isStorageMeta","validateTypedPayloadInBlock","payload","block","identityFunction","errors","isStorageMeta","isElevatedFromBlock","push","validateElevatedFromBlock","validateElevatedFromTransaction","Error","e","message","String","isChainStakeIntent","validateChainStakeIntentInBlock","payload","block","errors","push","validateTypedPayloadInBlock","isChainStakeIntent","e","Error","message","String","isHashPayload","validateHashInBlock","payload","block","errors","push","validateTypedPayloadInBlock","isHashPayload","e","Error","message","String","isSchemaPayload","validateSchemaInBlock","payload","block","errors","push","validateTypedPayloadInBlock","isSchemaPayload","e","Error","message","String","isTransfer","validateTransferInBlock","payload","block","errors","push","validateTypedPayloadInBlock","isTransfer","e","Error","message","String","payloadValidators","HashSchema","validateHashInBlock","TransferSchema","validateTransferInBlock","SchemaSchema","validateSchemaInBlock","ChainStakeIntentSchema","validateChainStakeIntentInBlock","BoundWitnessSchema","validateTransactionInBlock","validatePayloadInBlock","payload","block","errors","validator","schema","push","Error","e","message","String","PayloadsInBlockValidator","block","payloads","errors","payloadMap","payload","_hash","remainingPayloads","i","payload_hashes","length","hash","schema","payload_schemas","push","validatePayloadInBlock","Error","Object","keys","join","e","message","String","validateHydratedBlock","hydratedBlock","chainId","additionalValidators","errors","push","validateBlock","validators","BoundWitnessReferencesValidator","PayloadsInBlockValidator","Promise","all","map","v","flat","e","Error","message","String","hexToBigInt","netBalancesForPayloads","XYO_ZERO_ADDRESS","RequiredBalanceBlockStateValidator","block","chainId","services","errors","netBalances","netBalancesForPayloads","netBalanceAddresses","Object","keys","requiredBalances","address","previous","Error","reqBalance","entries","balance","hexToBigInt","accountBalance","getBalance","XYO_ZERO_ADDRESS","push","e","message","String","Promise","resolve","validateHydratedBlockState","hydratedBlock","chainId","services","additionalValidators","errors","push","validateHydratedBlock","validators","RequiredBalanceBlockStateValidator","Promise","all","map","v","flat","e","Error","message","String","isTransactionBoundWitness","TransactionDurationValidator","tx","errors","exp","nbf","push","Error","e","message","String","extractElevatedHashes","TransactionElevationValidator","tx","errors","extractElevatedHashes","push","Error","e","message","String","asAddress","addressesContains","TransactionFromValidator","tx","errors","from","asAddress","undefined","push","Error","addressesContains","e","message","String","hexToBigInt","AttoXL1","minTransactionFees","TransactionGasValidator","tx","errors","fees","undefined","push","Error","base","gasLimit","gasPrice","priority","parseFees","minTransactionFees","e","message","String","ret","AttoXL1","hexToBigInt","TransactionBoundWitnessJsonSchema","PayloadBuilder","Ajv","ajv","Ajv","allErrors","strict","validate","TransactionJsonSchemaValidator","tx","errors","undefined","compile","TransactionBoundWitnessJsonSchema","PayloadBuilder","omitStorageMeta","error","Error","cause","push","ex","TransactionProtocolValidator","tx","chainId","errors","undefined","chain","push","Error","ex","Promise","resolve","validateTransaction","tx","chainId","additionalValidators","isTransactionBoundWitness","Error","validators","TransactionProtocolValidator","TransactionJsonSchemaValidator","TransactionDurationValidator","TransactionFromValidator","TransactionGasValidator","TransactionElevationValidator","Promise","all","map","v","flat","e","message","String"]}
|
|
1
|
+
{"version":3,"sources":["../../src/block/validateBlock.ts","../../src/boundwitness/validators/BoundWitnessReferences.ts","../../src/boundwitness/validators/BoundWitnessSignatures.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/validateChainStakeIntentInBlock.ts","../../src/elevatedPayload/payloads/validateHashInBlock.ts","../../src/elevatedPayload/payloads/validateSchemaInBlock.ts","../../src/elevatedPayload/payloads/validateTransferInBlock.ts","../../src/hydratedBlockState/validateHydratedBlockState.ts","../../src/hydratedBlockState/validators/RequiredBalance.ts","../../src/transaction/validateTransaction.ts","../../src/transaction/validators/TransactionDurationValidator.ts","../../src/transaction/validators/TransactionElevationValidator.ts","../../src/transaction/validators/TransactionFromValidator.ts","../../src/transaction/validators/TransactionGasValidator.ts","../../src/transaction/validators/TransactionJsonSchemaValidator.ts","../../src/transaction/validators/TransactionProtocolValidator.ts"],"sourcesContent":["import type { Address } from '@xylabs/hex'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-protocol'\nimport { BlockValidationError } from '@xyo-network/xl1-protocol'\n\nimport { BoundWitnessSignaturesValidator } from '../boundwitness/index.ts'\nimport {\n BlockAllowedPayloadSchemasValidator,\n BlockFieldsValidator, BlockJsonSchemaValidator, BlockPreviousHashValidator,\n} from './validators/index.ts'\n\nexport const validateBlock: BlockValidatorFunction = async (\n block: BlockBoundWitness,\n chainId?: Address,\n): Promise<(BlockValidationError | Error)[]> => {\n const errors: Error[] = []\n try {\n const validators: BlockValidatorFunction[] = [\n BoundWitnessSignaturesValidator,\n BlockFieldsValidator,\n BlockPreviousHashValidator,\n BlockJsonSchemaValidator(),\n BlockAllowedPayloadSchemasValidator,\n ]\n errors.push(...(await Promise.all(\n validators.map(validator => validator(block, chainId)),\n )).flat())\n } catch (ex) {\n errors.push(new BlockValidationError(block, 'validation excepted'), ex as Error)\n }\n return errors\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport type {\n Payload,\n Schema,\n WithHashStorageMeta,\n} from '@xyo-network/payload-model'\nimport { isAnyPayload } from '@xyo-network/payload-model'\nimport type { HydratedBoundWitnessValidationFunction, HydratedBoundWitnessWithHashStorageMeta } from '@xyo-network/xl1-protocol'\nimport { HydratedBoundWitnessValidationError } from '@xyo-network/xl1-protocol'\n\nfunction getPayloadsFromPayloadArray(payloads: WithHashStorageMeta<Payload>[], hashes: Hash[]): (WithHashStorageMeta<Payload> | undefined)[] {\n return hashes.map(hash => payloads.find(payload => payload._hash === hash || payload._dataHash === hash))\n}\n\nexport const BoundWitnessReferencesValidator\n= <T extends BoundWitness = BoundWitness>(allowedSchemas?: Schema[]): HydratedBoundWitnessValidationFunction<T> => (\n [bw, payloadSet]: HydratedBoundWitnessWithHashStorageMeta<T>,\n): Promisable<(HydratedBoundWitnessValidationError | Error)[]> => {\n const errors: (HydratedBoundWitnessValidationError | Error)[] = []\n try {\n const payloads = getPayloadsFromPayloadArray(payloadSet, bw.payload_hashes)\n if (payloads.length !== bw.payload_hashes.length) {\n errors.push(new HydratedBoundWitnessValidationError([bw, payloadSet], 'unable to locate payloads'))\n }\n\n // check if payloads are valid and if their schemas match the declared schemas\n for (let payload of payloads) {\n if (isAnyPayload(payload)) {\n const payloadHashIndex = bw.payload_hashes.indexOf(payload._hash)\n const payloadDataHashIndex = bw.payload_hashes.indexOf(payload._dataHash)\n const payloadIndex = Math.max(payloadHashIndex, payloadDataHashIndex)\n if (payloadIndex === -1) {\n errors.push(new HydratedBoundWitnessValidationError([bw, payloadSet], 'payload hash not found'))\n }\n\n const declaredSchema = bw.payload_schemas[payloadIndex]\n if (declaredSchema !== payload.schema) {\n errors.push(new HydratedBoundWitnessValidationError([bw, payloadSet], 'mismatched schema'))\n }\n\n if (allowedSchemas && !allowedSchemas.includes(payload.schema)) {\n errors.push(new HydratedBoundWitnessValidationError([bw, payloadSet], `disallowed schema [${payload.schema}]`))\n }\n } else {\n errors.push(new HydratedBoundWitnessValidationError([bw, payloadSet], 'invalid payload'))\n }\n }\n } catch (ex) {\n errors.push(new HydratedBoundWitnessValidationError([bw, payloadSet], 'validation excepted'), ex as Error)\n }\n return errors\n}\n","import { toArrayBuffer } from '@xylabs/arraybuffer'\nimport type { Address } from '@xylabs/hex'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessValidator } from '@xyo-network/boundwitness-validator'\nimport type { BoundWitnessValidationFunction } from '@xyo-network/xl1-protocol'\nimport { BoundWitnessValidationError } from '@xyo-network/xl1-protocol'\n\nexport const BoundWitnessSignaturesValidator: BoundWitnessValidationFunction = async (\n bw: BoundWitness,\n) => {\n const errors: (BoundWitnessValidationError | Error)[] = []\n try {\n const dataHash = await BoundWitnessBuilder.dataHash(bw)\n const results: [Address, (Error | BoundWitnessValidationError)[]][] = await Promise.all(bw.addresses.map(async (address, index) => {\n return [address, await BoundWitnessValidator.validateSignature(toArrayBuffer(dataHash), toArrayBuffer(address), toArrayBuffer(bw.$signatures[index]))]\n }))\n for (const [, bwErrors] of results) {\n errors.push(...bwErrors)\n }\n } catch (ex) {\n errors.push(new BoundWitnessValidationError(bw, 'validation excepted'), ex as Error)\n }\n return errors\n}\n","import {\n type BlockBoundWitness, BlockValidationError, type BlockValidatorFunction, isAllowedBlockPayloadSchema,\n} from '@xyo-network/xl1-protocol'\n\nexport const BlockAllowedPayloadSchemasValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n) => {\n const errors: (BlockValidationError | Error)[] = []\n try {\n for (const schema of block.payload_schemas) {\n if (!isAllowedBlockPayloadSchema(schema)) {\n errors.push(new BlockValidationError(block, `payload schema not allowed in block: ${schema}`))\n }\n }\n } catch (e) {\n errors.push(new BlockValidationError(block, `Failed BlockAllowedPayloadSchemasValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Address, Hash } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport {\n type BlockBoundWitness, BlockValidationError, type BlockValidatorFunction,\n} from '@xyo-network/xl1-protocol'\n\nexport const BlockFieldsValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n chainId?: Address,\n) => {\n const errors: (BlockValidationError | Error)[] = []\n try {\n if (isDefined(chainId) && block.chain !== chainId.toLowerCase()) {\n errors.push(new BlockValidationError(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(block, `Duplicate Transaction Hashes: ${txHashes}`))\n }\n } catch (e) {\n errors.push(new BlockValidationError(block, `Failed BlockFieldsValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { BlockBoundWitnessWithStorageMetaJsonSchema } from '@xyo-network/chain-schema'\nimport {\n type BlockBoundWitness, BlockValidationError, type BlockValidatorFunction,\n} from '@xyo-network/xl1-protocol'\nimport type { AnySchema } from 'ajv'\nimport { Ajv } from 'ajv'\n\nexport const BlockJsonSchemaValidator = (jsonSchema: AnySchema = BlockBoundWitnessWithStorageMetaJsonSchema): BlockValidatorFunction => async (\n block: BlockBoundWitness,\n) => {\n const errors: (BlockValidationError | Error)[] = []\n try {\n const ajv = new Ajv({ allErrors: true, strict: true })\n // see if you can export the super set\n const validate = ajv.compile(jsonSchema)\n await validate(block)\n if ((validate.errors ?? []).length > 0) {\n const error = new BlockValidationError(block, 'failed JSON schema validation: ')\n errors.push(error, ...validate.errors?.map(e => new Error(` ${e.instancePath} ${e.message ?? ''}`)) ?? [])\n }\n } catch (e) {\n errors.push(new BlockValidationError(block, `Failed BlockJsonSchemaValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { isHash } from '@xylabs/hex'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-protocol'\nimport { BlockValidationError } from '@xyo-network/xl1-protocol'\n\nexport const BlockPreviousHashValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n) => {\n const errors: (BlockValidationError | Error)[] = []\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, '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, 'previous hash should not be set'))\n }\n } else {\n // we have a negative block number\n errors.push(new BlockValidationError(block, 'invalid block number'))\n }\n } catch (e) {\n errors.push(new BlockValidationError(block, `Failed BlockPreviousHashValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { HydratedBlock, HydratedBlockValidationFunction } from '@xyo-network/xl1-protocol'\nimport { HydratedBlockValidationError } from '@xyo-network/xl1-protocol'\n\nimport { validateBlock } from '../block/index.ts'\nimport { BoundWitnessReferencesValidator } from '../boundwitness/index.ts'\nimport { PayloadsInBlockValidator } from './validators/index.ts'\n\nexport const validateHydratedBlock: HydratedBlockValidationFunction = async (\n hydratedBlock: HydratedBlock,\n chainId?: Address,\n additionalValidators: HydratedBlockValidationFunction[] = [],\n): Promise<(HydratedBlockValidationError | Error)[]> => {\n const errors: Error[] = []\n try {\n errors.push(...await validateBlock(hydratedBlock[0], chainId))\n const validators: HydratedBlockValidationFunction[] = [\n BoundWitnessReferencesValidator(),\n PayloadsInBlockValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(hydratedBlock, chainId)))).flat())\n } catch (e) {\n errors.push(new HydratedBlockValidationError(hydratedBlock, `Failed validateHydratedBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'\nimport type {\n HydratedBlock,\n HydratedBlockValidationFunction,\n} from '@xyo-network/xl1-protocol'\nimport { HydratedBlockValidationError } from '@xyo-network/xl1-protocol'\n\nimport { validatePayloadInBlock } from '../../elevatedPayload/validatePayloadInBlock.ts'\n\nexport const PayloadsInBlockValidator: HydratedBlockValidationFunction = async (\n [block, payloads]: HydratedBlock,\n) => {\n const errors: (HydratedBlockValidationError | Error)[] = []\n try {\n const payloadMap: Partial<Record<Hash, WithHashStorageMeta<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 errors.push(...await validatePayloadInBlock(payload, [block, payloads]))\n delete remainingPayloads[hash]\n } else {\n errors.push(new HydratedBlockValidationError([block, payloads], `missing payload ${hash} ${schema}`))\n }\n }\n\n if (Object.keys(remainingPayloads).length > 0) {\n errors.push(new HydratedBlockValidationError([block, payloads], `extra payloads ${Object.keys(payloadMap).join(', ')}`))\n }\n } catch (e) {\n errors.push(new HydratedBlockValidationError([block, payloads], `Failed PayloadsInBlockValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n\n return errors\n}\n","import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema } from '@xyo-network/payload-model'\nimport { SchemaSchema } from '@xyo-network/schema-payload-plugin'\nimport type {\n HydratedBlock,\n InBlockPayloadValidationFunction,\n} from '@xyo-network/xl1-protocol'\nimport {\n ChainStakeIntentSchema, HashSchema, InBlockPayloadValidationError,\n TransferSchema,\n} from '@xyo-network/xl1-protocol'\n\nimport { validateTransactionInBlock } from './lib/index.ts'\nimport {\n validateChainStakeIntentInBlock, validateHashInBlock, validateSchemaInBlock, validateTransferInBlock,\n} from './payloads/index.ts'\n\nconst payloadValidators: Partial<Record<Schema, InBlockPayloadValidationFunction>> = {\n [HashSchema]: validateHashInBlock,\n [TransferSchema]: validateTransferInBlock,\n [SchemaSchema]: validateSchemaInBlock,\n [ChainStakeIntentSchema]: validateChainStakeIntentInBlock,\n [BoundWitnessSchema]: validateTransactionInBlock,\n}\n\nexport const validatePayloadInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n): Promise<(InBlockPayloadValidationError | Error)[]> => {\n const errors: (InBlockPayloadValidationError | Error)[] = []\n try {\n const validator = payloadValidators[payload.schema]\n if (validator) {\n errors.push(...await validator(payload, block))\n } else {\n errors.push(new InBlockPayloadValidationError(block, payload, `Unsupported payload schema: ${payload.schema}`))\n }\n } catch (e) {\n errors.push(new InBlockPayloadValidationError(block, payload, `Failed validatePayloadInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { type HydratedBlock, isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nexport const isElevatedFromBlock = (payload: WithStorageMeta<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 { Promisable } from '@xylabs/promise'\nimport { transactionsFromHydratedBlock } from '@xyo-network/chain-protocol'\nimport type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\n\nexport const validateElevatedFromBlock: InBlockPayloadValidationFunction = (\n payload,\n block: HydratedBlock,\n): Promisable<Error[]> => {\n const errors: Error[] = []\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 Error(`Transaction may not include block payload hash [${payload.schema}]: ${payload._hash}`))\n }\n } catch (e) {\n errors.push(new Error(`Failed validateElevatedFromBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/promise'\nimport { transactionsFromHydratedBlock } from '@xyo-network/chain-protocol'\nimport type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\n\nexport const validateElevatedFromTransaction: InBlockPayloadValidationFunction = (\n payload,\n block: HydratedBlock,\n): Promisable<Error[]> => {\n const errors: Error[] = []\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 Error('Transaction does not include payload'))\n }\n } else {\n errors.push(new Error('No Transactions in block'))\n }\n } catch (e) {\n errors.push(new Error(`Failed validateElevatedFromTransaction: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { isStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nimport { BoundWitnessSignaturesValidator } from '../../boundwitness/index.ts'\n\nexport const validateTransactionInBlock: InBlockPayloadValidationFunction = async (\n payload,\n _block: HydratedBlock,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n if (isTransactionBoundWitness(payload) && isStorageMeta(payload)) {\n errors.push(...await BoundWitnessSignaturesValidator(payload))\n } else {\n errors.push(new Error('Payload failed isTransactionBoundWitness or isStorageMeta'))\n }\n } catch (e) {\n errors.push(new Error(`Failed validateTransactionInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { IdentityFunction } from '@xyo-network/chain-protocol'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isStorageMeta } from '@xyo-network/payload-model'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\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 payload: Payload,\n block: HydratedBlock,\n identityFunction: IdentityFunction<T>,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n if (identityFunction(payload) && isStorageMeta(payload)) {\n if (isElevatedFromBlock(payload, block)) {\n errors.push(...await validateElevatedFromBlock(payload, block))\n } else {\n errors.push(...await validateElevatedFromTransaction(payload, block))\n }\n } else {\n errors.push(new Error('Payload failed identityFunction or isElevated or isStorageMeta'))\n }\n } catch (e) {\n errors.push(new Error(`Failed validateTypedPayloadInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n//\n","import type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\nimport { InBlockPayloadValidationError, isChainStakeIntent } from '@xyo-network/xl1-protocol'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateChainStakeIntentInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n): Promise<(InBlockPayloadValidationError | Error)[]> => {\n const errors: (InBlockPayloadValidationError | Error)[] = []\n try {\n errors.push(...await validateTypedPayloadInBlock(payload, block, isChainStakeIntent))\n } catch (e) {\n errors.push(new InBlockPayloadValidationError(block, payload, `Failed validateChainStakeIntentInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\nimport { InBlockPayloadValidationError, isHashPayload } from '@xyo-network/xl1-protocol'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateHashInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n): Promise<(InBlockPayloadValidationError | Error)[]> => {\n const errors: (InBlockPayloadValidationError | Error)[] = []\n try {\n errors.push(...await validateTypedPayloadInBlock(payload, block, isHashPayload))\n } catch (e) {\n errors.push(new InBlockPayloadValidationError(block, payload, `Failed validateHashInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { isSchemaPayload } from '@xyo-network/schema-payload-plugin'\nimport type { HydratedBlock, InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol'\nimport { InBlockPayloadValidationError } from '@xyo-network/xl1-protocol'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateSchemaInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n): Promise<(InBlockPayloadValidationError | Error)[]> => {\n const errors: Error[] = []\n try {\n errors.push(...await validateTypedPayloadInBlock(payload, block, isSchemaPayload))\n } catch (e) {\n errors.push(new InBlockPayloadValidationError(block, payload, `Failed validateSchemaInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type {\n HydratedBlock,\n InBlockPayloadValidationFunction,\n} from '@xyo-network/xl1-protocol'\nimport { InBlockPayloadValidationError, isTransfer } from '@xyo-network/xl1-protocol'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateTransferInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n): Promise<Error[]> => {\n const errors: (InBlockPayloadValidationError | Error)[] = []\n try {\n errors.push(...await validateTypedPayloadInBlock(payload, block, isTransfer))\n } catch (e) {\n errors.push(new InBlockPayloadValidationError(block, payload, `Failed validateTransferInBlock: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type {\n AccountBalanceService, HydratedBlock, HydratedBlockStateValidationFunction,\n} from '@xyo-network/xl1-protocol'\nimport { HydratedBlockStateValidationError } from '@xyo-network/xl1-protocol'\n\nimport { validateHydratedBlock } from '../hydratedBlock/index.ts'\nimport { RequiredBalanceBlockStateValidator } from './validators/index.ts'\n\nexport const validateHydratedBlockState: HydratedBlockStateValidationFunction = async (\n hydratedBlock: HydratedBlock,\n chainId: Address,\n services: { accountBalance: AccountBalanceService },\n additionalValidators: HydratedBlockStateValidationFunction[] = [],\n): Promise<(HydratedBlockStateValidationError | Error)[]> => {\n const errors: Error[] = []\n try {\n errors.push(...await validateHydratedBlock(hydratedBlock, chainId))\n const validators: HydratedBlockStateValidationFunction[] = [\n RequiredBalanceBlockStateValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(hydratedBlock, chainId, services)))).flat())\n } catch (e) {\n errors.push(new HydratedBlockStateValidationError(\n chainId,\n hydratedBlock,\n `Failed validateHydratedBlockState: ${e instanceof Error ? e.message : String(e)}`,\n ))\n }\n return errors\n}\n","import { type Address, hexToBigInt } from '@xylabs/hex'\nimport { netBalancesForPayloads } from '@xyo-network/chain-protocol'\nimport { XYO_ZERO_ADDRESS } from '@xyo-network/chain-utils'\nimport type {\n AccountBalanceService, HydratedBlock, HydratedBlockStateValidationFunction,\n} from '@xyo-network/xl1-protocol'\nimport { HydratedBlockStateValidationError } from '@xyo-network/xl1-protocol'\n\nexport const RequiredBalanceBlockStateValidator: HydratedBlockStateValidationFunction = async (\n block: HydratedBlock,\n chainId: Address,\n services: { accountBalance: AccountBalanceService },\n) => {\n const errors: (HydratedBlockStateValidationError | Error)[] = []\n try {\n // TODO: Filter by non-producer elevated payloads\n // to allow for transfers from ZERO address\n const netBalances = netBalancesForPayloads(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(chainId, block, 'Insufficient funds because first block')]\n\n for (const [address, reqBalance] of Object.entries(requiredBalances) as [Address, bigint][]) {\n const balance = hexToBigInt(services.accountBalance.getBalance(address))\n if (address !== XYO_ZERO_ADDRESS && reqBalance > balance) {\n errors.push(new HydratedBlockStateValidationError(\n chainId,\n block,\n `insufficient balance for ${address} ${balance} < ${requiredBalances[address]}`,\n ))\n }\n }\n } catch (e) {\n errors.push(new HydratedBlockStateValidationError(\n chainId,\n block,\n `Failed RequiredBalanceBlockStateValidator: ${e instanceof Error ? e.message : String(e)}`,\n ))\n }\n return await Promise.resolve(errors)\n}\n","import type { Address } from '@xylabs/hex'\nimport type { HydratedTransaction, HydratedTransactionValidationFunction } from '@xyo-network/xl1-protocol'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nimport {\n TransactionDurationValidator,\n TransactionElevationValidator, TransactionFromValidator, TransactionGasValidator, TransactionJsonSchemaValidator, TransactionProtocolValidator,\n} from './validators/index.ts'\n\nexport async function validateTransaction(\n tx: HydratedTransaction,\n chainId?: Address,\n additionalValidators: HydratedTransactionValidationFunction[] = [],\n) {\n try {\n if (!isTransactionBoundWitness(tx[0])) {\n return [new Error('failed isTransactionBoundWitness identity check')]\n }\n\n const validators: HydratedTransactionValidationFunction[] = [\n TransactionProtocolValidator,\n TransactionJsonSchemaValidator,\n TransactionDurationValidator,\n TransactionFromValidator,\n TransactionGasValidator,\n TransactionElevationValidator,\n ...additionalValidators,\n ]\n return (await Promise.all(validators.map(v => v(tx, chainId)))).flat()\n } catch (e) {\n return [(new Error(`Failed TransactionGasValidator: ${e instanceof Error ? e.message : String(e)}`))]\n }\n}\n","import type {\n HydratedTransaction, HydratedTransactionValidationFunction, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport { HydratedTransactionValidationError } from '@xyo-network/xl1-protocol'\n\nexport const TransactionDurationValidator: HydratedTransactionValidationFunction<TransactionBoundWitness> = (\n tx: HydratedTransaction,\n) => {\n const errors: (HydratedTransactionValidationError | Error)[] = []\n try {\n const { exp, nbf } = tx[0]\n if (nbf < 0) errors.push(new HydratedTransactionValidationError(tx, 'Transaction nbf must be positive'))\n\n if (exp < 0) errors.push(new HydratedTransactionValidationError(tx, 'Transaction exp must be positive'))\n if (exp <= nbf) errors.push(new HydratedTransactionValidationError(tx, 'Transaction exp must greater than nbf'))\n if (exp - nbf > 10_000) errors.push(new HydratedTransactionValidationError(tx, 'Transaction exp must not be too far in the future'))\n } catch (e) {\n errors.push(new HydratedTransactionValidationError(tx, `Failed TransactionDurationValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n\n return errors\n}\n","import { extractElevatedHashes } from '@xyo-network/chain-protocol'\nimport type {\n HydratedTransaction, HydratedTransactionValidationFunction, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport { HydratedTransactionValidationError } from '@xyo-network/xl1-protocol'\n\nexport const TransactionElevationValidator: HydratedTransactionValidationFunction<TransactionBoundWitness> = (\n tx: HydratedTransaction,\n) => {\n const errors: (HydratedTransactionValidationError | Error)[] = []\n try {\n try {\n extractElevatedHashes(tx)\n } catch {\n errors.push(new HydratedTransactionValidationError(tx, 'Hydrated transaction does not include all script hashes'))\n }\n } catch (e) {\n errors.push(new HydratedTransactionValidationError(tx, `Failed TransactionElevationValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { asAddress } from '@xylabs/hex'\nimport { addressesContains } from '@xyo-network/boundwitness-validator'\nimport type {\n HydratedTransaction, HydratedTransactionValidationFunction, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport { HydratedTransactionValidationError } from '@xyo-network/xl1-protocol'\n\nexport const TransactionFromValidator: HydratedTransactionValidationFunction<TransactionBoundWitness> = (\n tx: HydratedTransaction,\n) => {\n const errors: (HydratedTransactionValidationError | Error)[] = []\n try {\n const from = asAddress(tx[0].from)\n if (from === undefined)errors.push(new HydratedTransactionValidationError(tx, 'Transaction from is not a valid address'))\n else if (!addressesContains(tx[0], from)) errors.push(new HydratedTransactionValidationError(tx, 'Transaction from address must be listed in addresses'))\n } catch (e) {\n errors.push(new HydratedTransactionValidationError(tx, `Failed TransactionFromValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n","import { hexToBigInt } from '@xylabs/hex'\nimport type {\n HydratedTransaction,\n HydratedTransactionValidationFunction,\n TransactionBoundWitness, TransactionFeesBigInt, TransactionFeesHex,\n} from '@xyo-network/xl1-protocol'\nimport {\n AttoXL1,\n HydratedTransactionValidationError,\n minTransactionFees,\n} from '@xyo-network/xl1-protocol'\n\nexport const TransactionGasValidator: HydratedTransactionValidationFunction<TransactionBoundWitness> = (\n tx: HydratedTransaction,\n) => {\n const errors: (HydratedTransactionValidationError | Error)[] = []\n try {\n if (tx?.[0].fees === undefined) {\n errors.push(new HydratedTransactionValidationError(tx, 'Missing fees'))\n } else {\n const {\n base, gasLimit, gasPrice, priority,\n } = parseFees(tx[0].fees)\n\n if (base === undefined) errors.push(new HydratedTransactionValidationError(\n tx,\n 'fees.base must be defined and a valid number',\n ))\n else if (base < minTransactionFees.base) errors.push(new HydratedTransactionValidationError(\n tx,\n `fees.base must be >= ${minTransactionFees.base}`,\n ))\n\n if (gasLimit === undefined) errors.push(new HydratedTransactionValidationError(tx, 'fees.gasLimit must be defined and a valid number'))\n else if (gasLimit < minTransactionFees.gasLimit) errors.push(new HydratedTransactionValidationError(\n tx,\n `fees.gasLimit must be >= ${minTransactionFees.gasLimit}`,\n ))\n\n if (gasPrice === undefined) errors.push(\n new HydratedTransactionValidationError(tx, 'fees.gasPrice must be defined and a valid number'),\n )\n else if (gasPrice < minTransactionFees.gasPrice) errors.push(new HydratedTransactionValidationError(\n tx,\n `fees.gasPrice must be >= ${minTransactionFees.gasPrice}`,\n ))\n\n if (priority === undefined) errors.push(new HydratedTransactionValidationError(\n tx,\n 'fees.priority must be defined and a valid number',\n ))\n else if (priority < minTransactionFees.priority) errors.push(new HydratedTransactionValidationError(\n tx,\n `fees.priority must be >= ${minTransactionFees.priority}`,\n ))\n }\n } catch (e) {\n errors.push(new HydratedTransactionValidationError(tx, `Failed TransactionGasValidator: ${e instanceof Error ? e.message : String(e)}`))\n }\n return errors\n}\n\nconst parseFees = (fees: TransactionFeesHex): Partial<TransactionFeesBigInt> => {\n const ret: Partial<TransactionFeesBigInt> = {}\n const {\n base, gasLimit, gasPrice, priority,\n } = fees\n if (base !== undefined) ret.base = AttoXL1(hexToBigInt(base))\n if (gasLimit !== undefined) ret.gasLimit = AttoXL1(hexToBigInt(gasLimit))\n if (gasPrice !== undefined) ret.gasPrice = AttoXL1(hexToBigInt(gasPrice))\n if (priority !== undefined) ret.priority = AttoXL1(hexToBigInt(priority))\n return ret\n}\n","import { TransactionBoundWitnessJsonSchema } from '@xyo-network/chain-schema'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type {\n HydratedTransaction, HydratedTransactionValidationFunction, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport { HydratedTransactionValidationError } from '@xyo-network/xl1-protocol'\nimport type { ValidateFunction } from 'ajv'\nimport { Ajv } from 'ajv'\n\nconst ajv = new Ajv({ allErrors: true, strict: true })\n\nlet validate: ValidateFunction<TransactionBoundWitness> | undefined\n\nexport const TransactionJsonSchemaValidator: HydratedTransactionValidationFunction<TransactionBoundWitness> = (\n tx: HydratedTransaction,\n) => {\n const errors: (HydratedTransactionValidationError | Error)[] = []\n try {\n if (validate === undefined) validate = ajv.compile(TransactionBoundWitnessJsonSchema)\n // see if you can export the super set\n if (!validate(PayloadBuilder.omitStorageMeta(tx[0]))) {\n const error = new HydratedTransactionValidationError(tx, 'failed JSON schema validation')\n error.cause = validate.errors\n errors.push(error)\n }\n } catch (ex) {\n errors.push(new HydratedTransactionValidationError(tx, 'validation excepted'), ex as Error)\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type {\n HydratedTransaction, HydratedTransactionValidationFunction, TransactionBoundWitness,\n} from '@xyo-network/xl1-protocol'\nimport { HydratedTransactionValidationError } from '@xyo-network/xl1-protocol'\n\nexport const TransactionProtocolValidator: HydratedTransactionValidationFunction<TransactionBoundWitness> = async (\n tx: HydratedTransaction,\n chainId?: Address,\n) => {\n const errors: (HydratedTransactionValidationError | Error)[] = []\n try {\n if (chainId !== undefined && tx[0].chain !== chainId) {\n errors.push(new HydratedTransactionValidationError(tx, 'invalid chain id'))\n }\n } catch (ex) {\n errors.push(new HydratedTransactionValidationError(tx, 'validation excepted'), ex as Error)\n }\n return await Promise.resolve(errors)\n}\n"],"mappings":"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","names":["BlockValidationError","isAnyPayload","HydratedBoundWitnessValidationError","getPayloadsFromPayloadArray","payloads","hashes","map","hash","find","payload","_hash","_dataHash","BoundWitnessReferencesValidator","allowedSchemas","bw","payloadSet","errors","payload_hashes","length","push","HydratedBoundWitnessValidationError","isAnyPayload","payloadHashIndex","indexOf","payloadDataHashIndex","payloadIndex","Math","max","declaredSchema","payload_schemas","schema","includes","ex","toArrayBuffer","BoundWitnessBuilder","BoundWitnessValidator","BoundWitnessValidationError","BoundWitnessSignaturesValidator","bw","errors","dataHash","BoundWitnessBuilder","results","Promise","all","addresses","map","address","index","BoundWitnessValidator","validateSignature","toArrayBuffer","$signatures","bwErrors","push","ex","BoundWitnessValidationError","BlockValidationError","isAllowedBlockPayloadSchema","BlockAllowedPayloadSchemasValidator","block","errors","schema","payload_schemas","isAllowedBlockPayloadSchema","push","BlockValidationError","e","Error","message","String","isDefined","BoundWitnessSchema","BlockValidationError","BlockFieldsValidator","block","chainId","errors","isDefined","chain","toLowerCase","push","BlockValidationError","txHashes","i","payload_hashes","length","payload_schemas","BoundWitnessSchema","Set","size","e","Error","message","String","BlockBoundWitnessWithStorageMetaJsonSchema","BlockValidationError","Ajv","BlockJsonSchemaValidator","jsonSchema","BlockBoundWitnessWithStorageMetaJsonSchema","block","errors","ajv","Ajv","allErrors","strict","validate","compile","length","error","BlockValidationError","push","map","e","Error","instancePath","message","String","isHash","BlockValidationError","BlockPreviousHashValidator","block","errors","blockNumber","isHash","previous","push","BlockValidationError","e","Error","message","String","validateBlock","block","chainId","errors","validators","BoundWitnessSignaturesValidator","BlockFieldsValidator","BlockPreviousHashValidator","BlockJsonSchemaValidator","BlockAllowedPayloadSchemasValidator","push","Promise","all","map","validator","flat","ex","BlockValidationError","HydratedBlockValidationError","HydratedBlockValidationError","BoundWitnessSchema","SchemaSchema","ChainStakeIntentSchema","HashSchema","InBlockPayloadValidationError","TransferSchema","isTransactionBoundWitness","isElevatedFromBlock","payload","payloads","txs","filter","p","isTransactionBoundWitness","tx","payload_hashes","includes","_hash","transactionsFromHydratedBlock","validateElevatedFromBlock","payload","block","errors","txs","transactionsFromHydratedBlock","allTxPayloadHashes","Set","flatMap","tx","payload_hashes","has","_hash","push","Error","schema","e","message","String","transactionsFromHydratedBlock","validateElevatedFromTransaction","payload","block","errors","txs","transactionsFromHydratedBlock","length","hashes","flatMap","tx","payload_hashes","includes","_hash","push","Error","e","message","String","isStorageMeta","isTransactionBoundWitness","validateTransactionInBlock","payload","_block","errors","isTransactionBoundWitness","isStorageMeta","push","BoundWitnessSignaturesValidator","Error","e","message","String","isStorageMeta","validateTypedPayloadInBlock","payload","block","identityFunction","errors","isStorageMeta","isElevatedFromBlock","push","validateElevatedFromBlock","validateElevatedFromTransaction","Error","e","message","String","InBlockPayloadValidationError","isChainStakeIntent","validateChainStakeIntentInBlock","payload","block","errors","push","validateTypedPayloadInBlock","isChainStakeIntent","e","InBlockPayloadValidationError","Error","message","String","InBlockPayloadValidationError","isHashPayload","validateHashInBlock","payload","block","errors","push","validateTypedPayloadInBlock","isHashPayload","e","InBlockPayloadValidationError","Error","message","String","isSchemaPayload","InBlockPayloadValidationError","validateSchemaInBlock","payload","block","errors","push","validateTypedPayloadInBlock","isSchemaPayload","e","InBlockPayloadValidationError","Error","message","String","InBlockPayloadValidationError","isTransfer","validateTransferInBlock","payload","block","errors","push","validateTypedPayloadInBlock","isTransfer","e","InBlockPayloadValidationError","Error","message","String","payloadValidators","HashSchema","validateHashInBlock","TransferSchema","validateTransferInBlock","SchemaSchema","validateSchemaInBlock","ChainStakeIntentSchema","validateChainStakeIntentInBlock","BoundWitnessSchema","validateTransactionInBlock","validatePayloadInBlock","payload","block","errors","validator","schema","push","InBlockPayloadValidationError","e","Error","message","String","PayloadsInBlockValidator","block","payloads","errors","payloadMap","payload","_hash","remainingPayloads","i","payload_hashes","length","hash","schema","payload_schemas","push","validatePayloadInBlock","HydratedBlockValidationError","Object","keys","join","e","Error","message","String","validateHydratedBlock","hydratedBlock","chainId","additionalValidators","errors","push","validateBlock","validators","BoundWitnessReferencesValidator","PayloadsInBlockValidator","Promise","all","map","v","flat","e","HydratedBlockValidationError","Error","message","String","HydratedBlockStateValidationError","hexToBigInt","netBalancesForPayloads","XYO_ZERO_ADDRESS","HydratedBlockStateValidationError","RequiredBalanceBlockStateValidator","block","chainId","services","errors","netBalances","netBalancesForPayloads","netBalanceAddresses","Object","keys","requiredBalances","address","previous","HydratedBlockStateValidationError","reqBalance","entries","balance","hexToBigInt","accountBalance","getBalance","XYO_ZERO_ADDRESS","push","e","Error","message","String","Promise","resolve","validateHydratedBlockState","hydratedBlock","chainId","services","additionalValidators","errors","push","validateHydratedBlock","validators","RequiredBalanceBlockStateValidator","Promise","all","map","v","flat","e","HydratedBlockStateValidationError","Error","message","String","isTransactionBoundWitness","HydratedTransactionValidationError","TransactionDurationValidator","tx","errors","exp","nbf","push","HydratedTransactionValidationError","e","Error","message","String","extractElevatedHashes","HydratedTransactionValidationError","TransactionElevationValidator","tx","errors","extractElevatedHashes","push","HydratedTransactionValidationError","e","Error","message","String","asAddress","addressesContains","HydratedTransactionValidationError","TransactionFromValidator","tx","errors","from","asAddress","undefined","push","HydratedTransactionValidationError","addressesContains","e","Error","message","String","hexToBigInt","AttoXL1","HydratedTransactionValidationError","minTransactionFees","TransactionGasValidator","tx","errors","fees","undefined","push","HydratedTransactionValidationError","base","gasLimit","gasPrice","priority","parseFees","minTransactionFees","e","Error","message","String","ret","AttoXL1","hexToBigInt","TransactionBoundWitnessJsonSchema","PayloadBuilder","HydratedTransactionValidationError","Ajv","ajv","Ajv","allErrors","strict","validate","TransactionJsonSchemaValidator","tx","errors","undefined","compile","TransactionBoundWitnessJsonSchema","PayloadBuilder","omitStorageMeta","error","HydratedTransactionValidationError","cause","push","ex","HydratedTransactionValidationError","TransactionProtocolValidator","tx","chainId","errors","undefined","chain","push","HydratedTransactionValidationError","ex","Promise","resolve","validateTransaction","tx","chainId","additionalValidators","isTransactionBoundWitness","Error","validators","TransactionProtocolValidator","TransactionJsonSchemaValidator","TransactionDurationValidator","TransactionFromValidator","TransactionGasValidator","TransactionElevationValidator","Promise","all","map","v","flat","e","message","String"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateBlock.d.ts","sourceRoot":"","sources":["../../../src/block/validateBlock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"validateBlock.d.ts","sourceRoot":"","sources":["../../../src/block/validateBlock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAS1F,eAAO,MAAM,aAAa,EAAE,sBAoB3B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AllowedPayloadSchemas.d.ts","sourceRoot":"","sources":["../../../../src/block/validators/AllowedPayloadSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"AllowedPayloadSchemas.d.ts","sourceRoot":"","sources":["../../../../src/block/validators/AllowedPayloadSchemas.ts"],"names":[],"mappings":"AAAA,OAAO,EACyC,KAAK,sBAAsB,EAC1E,MAAM,2BAA2B,CAAA;AAElC,eAAO,MAAM,mCAAmC,EAAE,sBAcjD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Fields.d.ts","sourceRoot":"","sources":["../../../../src/block/validators/Fields.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Fields.d.ts","sourceRoot":"","sources":["../../../../src/block/validators/Fields.ts"],"names":[],"mappings":"AAGA,OAAO,EACyC,KAAK,sBAAsB,EAC1E,MAAM,2BAA2B,CAAA;AAElC,eAAO,MAAM,oBAAoB,EAAE,sBA0BlC,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type BlockValidatorFunction } from '@xyo-network/xl1-protocol';
|
|
2
2
|
import type { AnySchema } from 'ajv';
|
|
3
3
|
export declare const BlockJsonSchemaValidator: (jsonSchema?: AnySchema) => BlockValidatorFunction;
|
|
4
4
|
//# sourceMappingURL=JsonSchema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonSchema.d.ts","sourceRoot":"","sources":["../../../../src/block/validators/JsonSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"JsonSchema.d.ts","sourceRoot":"","sources":["../../../../src/block/validators/JsonSchema.ts"],"names":[],"mappings":"AACA,OAAO,EACyC,KAAK,sBAAsB,EAC1E,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAGpC,eAAO,MAAM,wBAAwB,GAAI,aAAY,SAAsD,KAAG,sBAiB7G,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PreviousHash.d.ts","sourceRoot":"","sources":["../../../../src/block/validators/PreviousHash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"PreviousHash.d.ts","sourceRoot":"","sources":["../../../../src/block/validators/PreviousHash.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AAG1F,eAAO,MAAM,0BAA0B,EAAE,sBAwBxC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoundWitnessReferences.d.ts","sourceRoot":"","sources":["../../../../src/boundwitness/validators/BoundWitnessReferences.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,KAAK,EAEV,MAAM,EAEP,MAAM,4BAA4B,CAAA;AAEnC,OAAO,KAAK,EAAE,sCAAsC,EAA2C,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"BoundWitnessReferences.d.ts","sourceRoot":"","sources":["../../../../src/boundwitness/validators/BoundWitnessReferences.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACnE,OAAO,KAAK,EAEV,MAAM,EAEP,MAAM,4BAA4B,CAAA;AAEnC,OAAO,KAAK,EAAE,sCAAsC,EAA2C,MAAM,2BAA2B,CAAA;AAOhI,eAAO,MAAM,+BAA+B,GACzC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,iBAAiB,MAAM,EAAE,KAAG,sCAAsC,CAAC,CAAC,CAoC7G,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BoundWitnessSignatures.d.ts","sourceRoot":"","sources":["../../../../src/boundwitness/validators/BoundWitnessSignatures.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"BoundWitnessSignatures.d.ts","sourceRoot":"","sources":["../../../../src/boundwitness/validators/BoundWitnessSignatures.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAA;AAG/E,eAAO,MAAM,+BAA+B,EAAE,8BAgB7C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateSchemaInBlock.d.ts","sourceRoot":"","sources":["../../../../src/elevatedPayload/payloads/validateSchemaInBlock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"validateSchemaInBlock.d.ts","sourceRoot":"","sources":["../../../../src/elevatedPayload/payloads/validateSchemaInBlock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,gCAAgC,EAAE,MAAM,2BAA2B,CAAA;AAKhG,eAAO,MAAM,qBAAqB,EAAE,gCAWnC,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-protocol';
|
|
2
2
|
export declare const validateTransferInBlock: InBlockPayloadValidationFunction;
|
|
3
3
|
//# sourceMappingURL=validateTransferInBlock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateTransferInBlock.d.ts","sourceRoot":"","sources":["../../../../src/elevatedPayload/payloads/validateTransferInBlock.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"validateTransferInBlock.d.ts","sourceRoot":"","sources":["../../../../src/elevatedPayload/payloads/validateTransferInBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gCAAgC,EACjC,MAAM,2BAA2B,CAAA;AAKlC,eAAO,MAAM,uBAAuB,EAAE,gCAWrC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validatePayloadInBlock.d.ts","sourceRoot":"","sources":["../../../src/elevatedPayload/validatePayloadInBlock.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,gCAAgC,EACjC,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"validatePayloadInBlock.d.ts","sourceRoot":"","sources":["../../../src/elevatedPayload/validatePayloadInBlock.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,gCAAgC,EACjC,MAAM,2BAA2B,CAAA;AAmBlC,eAAO,MAAM,sBAAsB,EAAE,gCAgBpC,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const validateHydratedBlock:
|
|
1
|
+
import type { HydratedBlockValidationFunction } from '@xyo-network/xl1-protocol';
|
|
2
|
+
export declare const validateHydratedBlock: HydratedBlockValidationFunction;
|
|
3
3
|
//# sourceMappingURL=validateHydratedBlock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateHydratedBlock.d.ts","sourceRoot":"","sources":["../../../src/hydratedBlock/validateHydratedBlock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,
|
|
1
|
+
{"version":3,"file":"validateHydratedBlock.d.ts","sourceRoot":"","sources":["../../../src/hydratedBlock/validateHydratedBlock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,+BAA+B,EAAE,MAAM,2BAA2B,CAAA;AAO/F,eAAO,MAAM,qBAAqB,EAAE,+BAkBnC,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const PayloadsInBlockValidator:
|
|
1
|
+
import type { HydratedBlockValidationFunction } from '@xyo-network/xl1-protocol';
|
|
2
|
+
export declare const PayloadsInBlockValidator: HydratedBlockValidationFunction;
|
|
3
3
|
//# sourceMappingURL=Payloads.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Payloads.d.ts","sourceRoot":"","sources":["../../../../src/hydratedBlock/validators/Payloads.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,
|
|
1
|
+
{"version":3,"file":"Payloads.d.ts","sourceRoot":"","sources":["../../../../src/hydratedBlock/validators/Payloads.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,+BAA+B,EAChC,MAAM,2BAA2B,CAAA;AAKlC,eAAO,MAAM,wBAAwB,EAAE,+BAgCtC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateHydratedBlockState.d.ts","sourceRoot":"","sources":["../../../src/hydratedBlockState/validateHydratedBlockState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAC4B,oCAAoC,EAC3E,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"validateHydratedBlockState.d.ts","sourceRoot":"","sources":["../../../src/hydratedBlockState/validateHydratedBlockState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAC4B,oCAAoC,EAC3E,MAAM,2BAA2B,CAAA;AAMlC,eAAO,MAAM,0BAA0B,EAAE,oCAsBxC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequiredBalance.d.ts","sourceRoot":"","sources":["../../../../src/hydratedBlockState/validators/RequiredBalance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAC4B,oCAAoC,EAC3E,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"RequiredBalance.d.ts","sourceRoot":"","sources":["../../../../src/hydratedBlockState/validators/RequiredBalance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAC4B,oCAAoC,EAC3E,MAAM,2BAA2B,CAAA;AAGlC,eAAO,MAAM,kCAAkC,EAAE,oCAsChD,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Address } from '@xylabs/hex';
|
|
2
|
-
import type {
|
|
3
|
-
export declare function validateTransaction(tx:
|
|
2
|
+
import type { HydratedTransaction, HydratedTransactionValidationFunction } from '@xyo-network/xl1-protocol';
|
|
3
|
+
export declare function validateTransaction(tx: HydratedTransaction, chainId?: Address, additionalValidators?: HydratedTransactionValidationFunction[]): Promise<(Error | import("@xyo-network/xl1-protocol").HydratedTransactionValidationError)[]>;
|
|
4
4
|
//# sourceMappingURL=validateTransaction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/validateTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"validateTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/validateTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,qCAAqC,EAAE,MAAM,2BAA2B,CAAA;AAQ3G,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,mBAAmB,EACvB,OAAO,CAAC,EAAE,OAAO,EACjB,oBAAoB,GAAE,qCAAqC,EAAO,+FAoBnE"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const TransactionDurationValidator:
|
|
1
|
+
import type { HydratedTransactionValidationFunction, TransactionBoundWitness } from '@xyo-network/xl1-protocol';
|
|
2
|
+
export declare const TransactionDurationValidator: HydratedTransactionValidationFunction<TransactionBoundWitness>;
|
|
3
3
|
//# sourceMappingURL=TransactionDurationValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionDurationValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionDurationValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACW,
|
|
1
|
+
{"version":3,"file":"TransactionDurationValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionDurationValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACW,qCAAqC,EAAE,uBAAuB,EACpF,MAAM,2BAA2B,CAAA;AAGlC,eAAO,MAAM,4BAA4B,EAAE,qCAAqC,CAAC,uBAAuB,CAgBvG,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const TransactionElevationValidator:
|
|
1
|
+
import type { HydratedTransactionValidationFunction, TransactionBoundWitness } from '@xyo-network/xl1-protocol';
|
|
2
|
+
export declare const TransactionElevationValidator: HydratedTransactionValidationFunction<TransactionBoundWitness>;
|
|
3
3
|
//# sourceMappingURL=TransactionElevationValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionElevationValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionElevationValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TransactionElevationValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionElevationValidator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACW,qCAAqC,EAAE,uBAAuB,EACpF,MAAM,2BAA2B,CAAA;AAGlC,eAAO,MAAM,6BAA6B,EAAE,qCAAqC,CAAC,uBAAuB,CAcxG,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const TransactionFromValidator:
|
|
1
|
+
import type { HydratedTransactionValidationFunction, TransactionBoundWitness } from '@xyo-network/xl1-protocol';
|
|
2
|
+
export declare const TransactionFromValidator: HydratedTransactionValidationFunction<TransactionBoundWitness>;
|
|
3
3
|
//# sourceMappingURL=TransactionFromValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionFromValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionFromValidator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACW,
|
|
1
|
+
{"version":3,"file":"TransactionFromValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionFromValidator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACW,qCAAqC,EAAE,uBAAuB,EACpF,MAAM,2BAA2B,CAAA;AAGlC,eAAO,MAAM,wBAAwB,EAAE,qCAAqC,CAAC,uBAAuB,CAYnG,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export declare const TransactionGasValidator:
|
|
1
|
+
import type { HydratedTransactionValidationFunction, TransactionBoundWitness } from '@xyo-network/xl1-protocol';
|
|
2
|
+
export declare const TransactionGasValidator: HydratedTransactionValidationFunction<TransactionBoundWitness>;
|
|
3
3
|
//# sourceMappingURL=TransactionGasValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionGasValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionGasValidator.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"TransactionGasValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionGasValidator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,qCAAqC,EACrC,uBAAuB,EACxB,MAAM,2BAA2B,CAAA;AAOlC,eAAO,MAAM,uBAAuB,EAAE,qCAAqC,CAAC,uBAAuB,CAgDlG,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const TransactionJsonSchemaValidator:
|
|
1
|
+
import type { HydratedTransactionValidationFunction, TransactionBoundWitness } from '@xyo-network/xl1-protocol';
|
|
2
|
+
export declare const TransactionJsonSchemaValidator: HydratedTransactionValidationFunction<TransactionBoundWitness>;
|
|
3
3
|
//# sourceMappingURL=TransactionJsonSchemaValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionJsonSchemaValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionJsonSchemaValidator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TransactionJsonSchemaValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionJsonSchemaValidator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACW,qCAAqC,EAAE,uBAAuB,EACpF,MAAM,2BAA2B,CAAA;AASlC,eAAO,MAAM,8BAA8B,EAAE,qCAAqC,CAAC,uBAAuB,CAgBzG,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const TransactionProtocolValidator:
|
|
1
|
+
import type { HydratedTransactionValidationFunction, TransactionBoundWitness } from '@xyo-network/xl1-protocol';
|
|
2
|
+
export declare const TransactionProtocolValidator: HydratedTransactionValidationFunction<TransactionBoundWitness>;
|
|
3
3
|
//# sourceMappingURL=TransactionProtocolValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionProtocolValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionProtocolValidator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACW,
|
|
1
|
+
{"version":3,"file":"TransactionProtocolValidator.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionProtocolValidator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACW,qCAAqC,EAAE,uBAAuB,EACpF,MAAM,2BAA2B,CAAA;AAGlC,eAAO,MAAM,4BAA4B,EAAE,qCAAqC,CAAC,uBAAuB,CAavG,CAAA"}
|
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.5.
|
|
4
|
+
"version": "1.5.31",
|
|
5
5
|
"description": "XYO Layer One SDK Validation",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -34,34 +34,34 @@
|
|
|
34
34
|
"deploy3": "echo Deploy3 not allowed!"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@xylabs/arraybuffer": "^4.11.
|
|
38
|
-
"@xylabs/hex": "^4.11.
|
|
39
|
-
"@xylabs/typeof": "^4.11.
|
|
40
|
-
"@xyo-network/boundwitness-builder": "^3.18.
|
|
41
|
-
"@xyo-network/boundwitness-model": "^3.18.
|
|
42
|
-
"@xyo-network/boundwitness-validator": "^3.18.
|
|
43
|
-
"@xyo-network/chain-protocol": "^1.5.
|
|
44
|
-
"@xyo-network/chain-schema": "^1.5.
|
|
45
|
-
"@xyo-network/chain-utils": "^1.5.
|
|
46
|
-
"@xyo-network/payload-builder": "^3.18.
|
|
47
|
-
"@xyo-network/payload-model": "^3.18.
|
|
48
|
-
"@xyo-network/schema-payload-plugin": "^3.18.
|
|
49
|
-
"@xyo-network/xl1-protocol": "^1.4.
|
|
37
|
+
"@xylabs/arraybuffer": "^4.11.20",
|
|
38
|
+
"@xylabs/hex": "^4.11.20",
|
|
39
|
+
"@xylabs/typeof": "^4.11.20",
|
|
40
|
+
"@xyo-network/boundwitness-builder": "^3.18.8",
|
|
41
|
+
"@xyo-network/boundwitness-model": "^3.18.8",
|
|
42
|
+
"@xyo-network/boundwitness-validator": "^3.18.8",
|
|
43
|
+
"@xyo-network/chain-protocol": "^1.5.31",
|
|
44
|
+
"@xyo-network/chain-schema": "^1.5.31",
|
|
45
|
+
"@xyo-network/chain-utils": "^1.5.31",
|
|
46
|
+
"@xyo-network/payload-builder": "^3.18.8",
|
|
47
|
+
"@xyo-network/payload-model": "^3.18.8",
|
|
48
|
+
"@xyo-network/schema-payload-plugin": "^3.18.8",
|
|
49
|
+
"@xyo-network/xl1-protocol": "^1.4.33",
|
|
50
50
|
"ajv": "^8.17.1"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@types/node": "^
|
|
54
|
-
"@xylabs/assert": "^4.11.
|
|
55
|
-
"@xylabs/promise": "^4.11.
|
|
53
|
+
"@types/node": "^24.0.1",
|
|
54
|
+
"@xylabs/assert": "^4.11.20",
|
|
55
|
+
"@xylabs/promise": "^4.11.20",
|
|
56
56
|
"@xylabs/ts-scripts-yarn3": "^6.5.8",
|
|
57
57
|
"@xylabs/tsconfig": "^6.5.8",
|
|
58
|
-
"@xyo-network/account": "^3.18.
|
|
59
|
-
"@xyo-network/account-model": "^3.18.
|
|
60
|
-
"@xyo-network/archivist-memory": "^3.18.
|
|
61
|
-
"@xyo-network/archivist-model": "^3.18.
|
|
62
|
-
"@xyo-network/wallet": "^3.18.
|
|
63
|
-
"@xyo-network/xl1-protocol-sdk": "^1.5.
|
|
64
|
-
"knip": "^5.
|
|
58
|
+
"@xyo-network/account": "^3.18.8",
|
|
59
|
+
"@xyo-network/account-model": "^3.18.8",
|
|
60
|
+
"@xyo-network/archivist-memory": "^3.18.8",
|
|
61
|
+
"@xyo-network/archivist-model": "^3.18.8",
|
|
62
|
+
"@xyo-network/wallet": "^3.18.8",
|
|
63
|
+
"@xyo-network/xl1-protocol-sdk": "^1.5.31",
|
|
64
|
+
"knip": "^5.61.0",
|
|
65
65
|
"typescript": "^5.8.3",
|
|
66
66
|
"vitest": "^3.2.3"
|
|
67
67
|
},
|