@xyo-network/chain-validation 1.1.5 → 1.1.7

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.
Files changed (43) hide show
  1. package/dist/neutral/index.mjs +5 -5
  2. package/dist/neutral/index.mjs.map +1 -1
  3. package/dist/types/block/BlockValidationFunction.d.ts +1 -1
  4. package/dist/types/block/BlockValidationFunction.d.ts.map +1 -1
  5. package/dist/types/elevatedPayload/InBlockPayloadValidationFunction.d.ts +1 -1
  6. package/dist/types/elevatedPayload/InBlockPayloadValidationFunction.d.ts.map +1 -1
  7. package/dist/types/hydratedBlock/HydratedBlockValidationFunction.d.ts +1 -1
  8. package/dist/types/hydratedBlock/HydratedBlockValidationFunction.d.ts.map +1 -1
  9. package/dist/types/hydratedBlockState/validateHydratedBlockState.d.ts +1 -1
  10. package/dist/types/hydratedBlockState/validateHydratedBlockState.d.ts.map +1 -1
  11. package/dist/types/hydratedBlockState/validators/RequiredBalance.d.ts +1 -1
  12. package/dist/types/hydratedBlockState/validators/RequiredBalance.d.ts.map +1 -1
  13. package/dist/types/transaction/validateTransaction.d.ts +1 -1
  14. package/dist/types/transaction/validateTransaction.d.ts.map +1 -1
  15. package/dist/types/transaction/validators/TransactionElevation.d.ts +1 -1
  16. package/dist/types/transaction/validators/TransactionElevation.d.ts.map +1 -1
  17. package/dist/types/transaction/validators/TransactionJsonSchema.d.ts +1 -1
  18. package/dist/types/transaction/validators/TransactionJsonSchema.d.ts.map +1 -1
  19. package/dist/types/transaction/validators/TransactionProtocol.d.ts +1 -1
  20. package/dist/types/transaction/validators/TransactionProtocol.d.ts.map +1 -1
  21. package/package.json +4 -4
  22. package/src/block/BlockValidationFunction.ts +1 -1
  23. package/src/block/validateBlock.ts +1 -1
  24. package/src/block/validators/AllowedPayloadSchemas.ts +1 -1
  25. package/src/block/validators/Fields.ts +1 -1
  26. package/src/block/validators/JsonSchema.ts +1 -1
  27. package/src/block/validators/PreviousHash.ts +1 -1
  28. package/src/elevatedPayload/InBlockPayloadValidationFunction.ts +1 -1
  29. package/src/elevatedPayload/validateChainStakeIntentInBlock.ts +2 -2
  30. package/src/elevatedPayload/validateElevatedInBlock.ts +1 -1
  31. package/src/elevatedPayload/validateElevatedInTransaction.ts +1 -1
  32. package/src/elevatedPayload/validateSchemaInBlock.ts +1 -1
  33. package/src/elevatedPayload/validateTransactionInBlock.ts +2 -2
  34. package/src/elevatedPayload/validateTransferInBlock.ts +2 -2
  35. package/src/hydratedBlock/HydratedBlockValidationFunction.ts +1 -1
  36. package/src/hydratedBlock/validateHydratedBlock.ts +1 -1
  37. package/src/hydratedBlock/validators/Payloads.ts +5 -5
  38. package/src/hydratedBlockState/validateHydratedBlockState.ts +1 -1
  39. package/src/hydratedBlockState/validators/RequiredBalance.ts +1 -1
  40. package/src/transaction/validateTransaction.ts +2 -2
  41. package/src/transaction/validators/TransactionElevation.ts +1 -1
  42. package/src/transaction/validators/TransactionJsonSchema.ts +2 -2
  43. package/src/transaction/validators/TransactionProtocol.ts +1 -1
@@ -143,11 +143,11 @@ var validateBlock = /* @__PURE__ */ __name(async (block, chainId) => {
143
143
 
144
144
  // src/hydratedBlock/validators/Payloads.ts
145
145
  import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
146
- import { ChainStakeIntentSchema, TransferSchema } from "@xyo-network/chain-model";
147
146
  import { SchemaSchema } from "@xyo-network/schema-payload-plugin";
147
+ import { ChainStakeIntentSchema, TransferSchema } from "@xyo-network/xl1-model";
148
148
 
149
149
  // src/elevatedPayload/validateChainStakeIntentInBlock.ts
150
- import { isChainStakeIntent } from "@xyo-network/chain-model";
150
+ import { isChainStakeIntent } from "@xyo-network/xl1-model";
151
151
 
152
152
  // src/elevatedPayload/validateElevatedInBlock.ts
153
153
  import { transactionPayloadsFromHydratedBlock } from "@xyo-network/chain-protocol";
@@ -210,7 +210,7 @@ var validateSchemaInBlock = /* @__PURE__ */ __name(async (payload, block, chainI
210
210
  }, "validateSchemaInBlock");
211
211
 
212
212
  // src/elevatedPayload/validateTransactionInBlock.ts
213
- import { isTransactionBoundWitness } from "@xyo-network/chain-model";
213
+ import { isTransactionBoundWitness } from "@xyo-network/xl1-model";
214
214
  var validateTransactionInBlock = /* @__PURE__ */ __name(async (payload, _block) => {
215
215
  const errors = [];
216
216
  if (isTransactionBoundWitness(payload)) {
@@ -222,7 +222,7 @@ var validateTransactionInBlock = /* @__PURE__ */ __name(async (payload, _block)
222
222
  }, "validateTransactionInBlock");
223
223
 
224
224
  // src/elevatedPayload/validateTransferInBlock.ts
225
- import { isTransfer } from "@xyo-network/chain-model";
225
+ import { isTransfer } from "@xyo-network/xl1-model";
226
226
  var validateTransferInBlock = /* @__PURE__ */ __name(async (payload, block, chainId) => {
227
227
  const errors = [];
228
228
  if (!isTransfer(payload)) {
@@ -336,7 +336,7 @@ var validateHydratedBlockState = /* @__PURE__ */ __name(async (hydratedBlock, ch
336
336
  }, "validateHydratedBlockState");
337
337
 
338
338
  // src/transaction/validateTransaction.ts
339
- import { isTransactionBoundWitness as isTransactionBoundWitness2 } from "@xyo-network/chain-model";
339
+ import { isTransactionBoundWitness as isTransactionBoundWitness2 } from "@xyo-network/xl1-model";
340
340
 
341
341
  // src/transaction/validators/TransactionElevation.ts
342
342
  import { exists } from "@xylabs/exists";
@@ -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/hydratedBlock/validators/Payloads.ts","../../src/elevatedPayload/validateChainStakeIntentInBlock.ts","../../src/elevatedPayload/validateElevatedInBlock.ts","../../src/elevatedPayload/validateElevatedInTransaction.ts","../../src/elevatedPayload/validateSchemaInBlock.ts","../../src/elevatedPayload/validateTransactionInBlock.ts","../../src/elevatedPayload/validateTransferInBlock.ts","../../src/hydratedBlock/validateHydratedBlock.ts","../../src/hydratedBlockState/validators/RequiredBalance.ts","../../src/hydratedBlockState/validateHydratedBlockState.ts","../../src/transaction/validateTransaction.ts","../../src/transaction/validators/TransactionElevation.ts","../../src/transaction/validators/TransactionJsonSchema.ts","../../src/transaction/validators/TransactionProtocol.ts"],"sourcesContent":["import type { Hash } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { HydratedBoundWitnessWithStorageMeta } from '@xyo-network/archivist-model'\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'\n\nimport type { HydratedBoundWitnessValidationFunction } from '../HydratedBoundWitnessValidationFunction.ts'\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]: HydratedBoundWitnessWithStorageMeta<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'\n\nimport type { BoundWitnessValidationFunction } from '../BoundWitnessValidationFunction.ts'\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 type { BlockBoundWitness } from '@xyo-network/chain-model'\nimport { isAllowedBlockPayloadSchema } from '@xyo-network/chain-protocol'\n\nimport type { BlockValidatorFunction } from '../BlockValidationFunction.ts'\n\nexport const BlockAllowedPayloadSchemasValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n) => {\n const errors: Error[] = []\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 return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { BlockBoundWitness } from '@xyo-network/chain-model'\n\nimport type { BlockValidatorFunction } from '../BlockValidationFunction.ts'\n\nexport const BlockFieldsValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n chainId?: Address,\n) => {\n const errors: Error[] = []\n if (chainId && block.chain !== chainId.toLowerCase()) {\n errors.push(new Error('invalid chain id'))\n }\n return errors\n}\n","import type { BlockBoundWitness } from '@xyo-network/chain-model'\nimport { BlockBoundWitnessWithStorageMetaJsonSchema } from '@xyo-network/chain-schema'\nimport type { AnySchema } from 'ajv'\nimport { Ajv } from 'ajv'\n\nimport type { BlockValidatorFunction } from '../BlockValidationFunction.ts'\n\nexport const BlockJsonSchemaValidator = (jsonSchema: AnySchema = BlockBoundWitnessWithStorageMetaJsonSchema): BlockValidatorFunction => async (\n block: BlockBoundWitness,\n) => {\n const errors: Error[] = []\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(block)) {\n const error = new Error('failed JSON schema validation')\n error.cause = validate.errors\n errors.push(error)\n }\n return errors\n}\n","import { isHash } from '@xylabs/hex'\nimport type { BlockBoundWitness } from '@xyo-network/chain-model'\n\nimport type { BlockValidatorFunction } from '../BlockValidationFunction.ts'\n\nexport const BlockPreviousHashValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n) => {\n const errors: Error[] = []\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 return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { BlockBoundWitness } from '@xyo-network/chain-model'\n\nimport { BoundWitnessSignaturesValidator } from '../boundwitness/index.ts'\nimport type { BlockValidatorFunction } from './BlockValidationFunction.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 try {\n const validators: BlockValidatorFunction[] = [\n BoundWitnessSignaturesValidator,\n BlockFieldsValidator,\n BlockPreviousHashValidator,\n BlockJsonSchemaValidator(),\n BlockAllowedPayloadSchemasValidator,\n ]\n const errors = (await Promise.all(\n validators.map(validator => validator(block, chainId)),\n )).flat()\n return errors\n } catch (ex) {\n return [new Error('validation excepted'), ex as Error]\n }\n}\n","import type { Address, Hash } from '@xylabs/hex'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport {\n ChainStakeIntentSchema,\n type FromFields,\n type HydratedBlock,\n TransferSchema,\n} from '@xyo-network/chain-model'\nimport type {\n Payload, Schema, WithHashStorageMeta,\n} from '@xyo-network/payload-model'\nimport { SchemaSchema } from '@xyo-network/schema-payload-plugin'\n\nimport type { InBlockPayloadValidationFunction } from '../../elevatedPayload/index.ts'\nimport {\n validateChainStakeIntentInBlock, validateSchemaInBlock, validateTransactionInBlock,\n validateTransferInBlock,\n} from '../../elevatedPayload/index.ts'\nimport type { HydratedBlockValidatorFunction } from '../HydratedBlockValidationFunction.ts'\n\nexport const PayloadsInBlockValidator: HydratedBlockValidatorFunction = async (\n [block, payloads]: HydratedBlock,\n chainId: Address,\n) => {\n const errors: Error[] = []\n\n const validators: Record<Schema, InBlockPayloadValidationFunction> = {\n [TransferSchema]: validateTransferInBlock,\n [ChainStakeIntentSchema]: validateChainStakeIntentInBlock,\n [BoundWitnessSchema]: (payload) => {\n // TODO: Fix first block check with dual step singing\n console.error('TODO: Fix first block check with dual step singing')\n return block.block === 0 ? [] : validateTransactionInBlock(payload, [block, payloads], chainId)\n },\n [SchemaSchema]: validateSchemaInBlock,\n }\n const allowedSchemas = Object.keys(validators)\n\n const payloadMap: Record<Hash, WithHashStorageMeta<Payload & FromFields>> = {}\n for (const payload of payloads) {\n payloadMap[payload._hash] = payload\n }\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 if (payloadMap[hash]) {\n if (allowedSchemas.includes(schema)) {\n errors.push(...(await validators[schema](payloadMap[hash], [block, payloads], chainId)))\n } else {\n errors.push(new Error(`invalid payload schema ${hash} ${schema}`))\n }\n delete payloadMap[hash]\n } else {\n errors.push(new Error(`missing payload ${hash} ${schema}`))\n }\n }\n\n if (Object.keys(payloadMap).length > 0) {\n errors.push(new Error(`extra payloads ${Object.keys(payloadMap).join(', ')}`))\n }\n\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { HydratedBlock } from '@xyo-network/chain-model'\nimport { isChainStakeIntent } from '@xyo-network/chain-model'\n\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\nimport { validateElevatedInBlock } from './validateElevatedInBlock.ts'\nimport { validateElevatedInTransaction } from './validateElevatedInTransaction.ts'\n\nexport const validateChainStakeIntentInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n chainId: Address,\n): Promise<Error[]> => {\n const errors: Error[] = []\n if (!isChainStakeIntent(payload)) {\n errors.push(new Error('Payload is not a chain stake intent'))\n }\n\n if (!block[0].payload_hashes.includes(payload._hash)) {\n errors.push(new Error('ChainStakeIntent not included in block'))\n }\n\n if (block[0].addresses.includes(payload.from)) {\n errors.push(...await validateElevatedInBlock(payload, block, chainId))\n } else {\n errors.push(...await validateElevatedInTransaction(payload, block, chainId))\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/promise'\nimport type { HydratedBlock } from '@xyo-network/chain-model'\nimport { transactionPayloadsFromHydratedBlock } from '@xyo-network/chain-protocol'\n\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\n\nexport const validateElevatedInBlock: InBlockPayloadValidationFunction = (\n payload,\n block: HydratedBlock,\n): Promisable<Error[]> => {\n const errors: Error[] = []\n const txPayloadHashes = new Set(transactionPayloadsFromHydratedBlock(block).map(tx => tx._hash))\n if (txPayloadHashes.has(payload._hash)) {\n errors.push(new Error(`Transaction may not include block payload hash [${payload.schema}]: ${payload._hash}`))\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/promise'\nimport type { HydratedBlock } from '@xyo-network/chain-model'\nimport { transactionsFromHydratedBlock } from '@xyo-network/chain-protocol'\n\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\n\nexport const validateElevatedInTransaction: InBlockPayloadValidationFunction = (\n payload,\n block: HydratedBlock,\n): Promisable<Error[]> => {\n const errors: Error[] = []\n const txs = transactionsFromHydratedBlock(block)\n const fromTxs = txs.filter(tx => tx.addresses.includes(payload.from))\n if (fromTxs.length > 0) {\n const hashes = fromTxs.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(`Missing transaction for from address ${payload.from} [${payload.schema}]`))\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { HydratedBlock } from '@xyo-network/chain-model'\nimport { isSchemaPayload } from '@xyo-network/schema-payload-plugin'\n\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\nimport { validateElevatedInBlock } from './validateElevatedInBlock.ts'\nimport { validateElevatedInTransaction } from './validateElevatedInTransaction.ts'\n\nexport const validateSchemaInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n chainId: Address,\n): Promise<Error[]> => {\n const errors: Error[] = []\n if (!isSchemaPayload(payload)) {\n errors.push(new Error('Payload is not a schema'))\n }\n if (payload.from === chainId || block[0].addresses.includes(payload.from)) {\n errors.push(...await validateElevatedInBlock(payload, block, chainId))\n } else {\n errors.push(...await validateElevatedInTransaction(payload, block, chainId))\n }\n return errors\n}\n","import type { HydratedBlock } from '@xyo-network/chain-model'\nimport { isTransactionBoundWitness } from '@xyo-network/chain-model'\n\nimport { BoundWitnessSignaturesValidator } from '../boundwitness/index.ts'\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\n\nexport const validateTransactionInBlock: InBlockPayloadValidationFunction = async (\n payload,\n _block: HydratedBlock,\n): Promise<Error[]> => {\n const errors: Error[] = []\n if (isTransactionBoundWitness(payload)) {\n errors.push(...await BoundWitnessSignaturesValidator(payload))\n } else {\n errors.push(new Error('Payload is not a transaction'))\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { HydratedBlock } from '@xyo-network/chain-model'\nimport { isTransfer } from '@xyo-network/chain-model'\n\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\nimport { validateElevatedInBlock } from './validateElevatedInBlock.ts'\nimport { validateElevatedInTransaction } from './validateElevatedInTransaction.ts'\n\nexport const validateTransferInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n chainId: Address,\n): Promise<Error[]> => {\n const errors: Error[] = []\n if (!isTransfer(payload)) {\n errors.push(new Error('Payload is not a transfer'))\n }\n if (payload.from === chainId || block[0].addresses.includes(payload.from)) {\n errors.push(...await validateElevatedInBlock(payload, block, chainId))\n } else {\n errors.push(...await validateElevatedInTransaction(payload, block, chainId))\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { HydratedBlock } from '@xyo-network/chain-model'\n\nimport { validateBlock } from '../block/index.ts'\nimport { BoundWitnessReferencesValidator } from '../boundwitness/index.ts'\nimport type { HydratedBlockValidatorFunction } from './HydratedBlockValidationFunction.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[] = await validateBlock(hydratedBlock[0], chainId)\n const validators: HydratedBlockValidatorFunction[] = [BoundWitnessReferencesValidator(), PayloadsInBlockValidator, ...additionalValidators]\n return [...errors, ...(await Promise.all(validators.map(v => v(hydratedBlock, chainId)))).flat()]\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport type { HydratedBlock, HydratedBlockStateValidatorFunction } from '@xyo-network/chain-model'\nimport {\n analyzeChain, BalanceAnalyzer, isChainSummaryBalances, netBalancesForPayloads,\n} from '@xyo-network/chain-protocol'\n\nexport const RequiredBalanceBlockStateValidator: HydratedBlockStateValidatorFunction = async (\n block: HydratedBlock,\n chainId: Address,\n archivist: ReadArchivist,\n) => {\n const errors: Error[] = []\n\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 if (!block[0].previous) return [new Error('Insufficient funds because first block')]\n const results = await analyzeChain(\n archivist,\n [new BalanceAnalyzer(Object.keys(requiredBalances) as Address[], Object.values(requiredBalances)),\n ],\n block[0].previous,\n )\n const summaryBalances = assertEx(results.find(isChainSummaryBalances), () => new Error('missing summary balances'))\n\n for (const [address, reqBalance] of Object.entries(requiredBalances) as [Address, bigint][]) {\n const balance = BigInt(`0x${summaryBalances.balances[address] ?? '00'}`)\n if (reqBalance > balance) {\n errors.push(new Error(`insufficient balance for ${address} ${balance} < ${requiredBalances[address]}`))\n }\n }\n\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport type { HydratedBlock, HydratedBlockStateValidatorFunction } from '@xyo-network/chain-model'\n\nimport { validateHydratedBlock } from '../hydratedBlock/index.ts'\nimport { RequiredBalanceBlockStateValidator } from './validators/index.ts'\n\nexport const validateHydratedBlockState: HydratedBlockStateValidatorFunction = async (\n hydratedBlock: HydratedBlock,\n chainId: Address,\n archivist: ReadArchivist,\n additionalValidators: HydratedBlockStateValidatorFunction[] = [],\n): Promise<Error[]> => {\n const errors: Error[] = await validateHydratedBlock(hydratedBlock, chainId)\n const validators: HydratedBlockStateValidatorFunction[] = [RequiredBalanceBlockStateValidator, ...additionalValidators]\n return [...errors, ...(await Promise.all(validators.map(v => v(hydratedBlock, chainId, archivist)))).flat()]\n}\n","import type {\n ChainIdentification, HydratedTransactionValidatorFunction,\n HydratedTransactionWithStorageMeta,\n} from '@xyo-network/chain-model'\nimport { isTransactionBoundWitness } from '@xyo-network/chain-model'\n\nimport { BoundWitnessReferencesValidator } from '../boundwitness/index.ts'\nimport {\n TransactionElevationValidator, TransactionJsonSchemaValidator, TransactionProtocolValidator,\n} from './validators/index.ts'\n\nexport async function validateTransaction(\n tx: HydratedTransactionWithStorageMeta,\n chainIdentification: ChainIdentification,\n additionalValidators: HydratedTransactionValidatorFunction[] = [],\n): Promise<Error[]> {\n if (!isTransactionBoundWitness(tx)) {\n return [new Error('failed isTransactionBoundWitness identity check')]\n }\n\n const validators: HydratedTransactionValidatorFunction[] = [\n TransactionProtocolValidator,\n TransactionJsonSchemaValidator,\n TransactionElevationValidator,\n BoundWitnessReferencesValidator(),\n ...additionalValidators,\n ]\n return (await Promise.all(validators.map(v => v(tx, chainIdentification)))).flat()\n}\n","import { exists } from '@xylabs/exists'\nimport type { Promisable } from '@xylabs/promise'\nimport type {\n HydratedTransactionValidatorFunction, HydratedTransactionWithStorageMeta, TransactionBoundWitness,\n} from '@xyo-network/chain-model'\n\nexport const TransactionElevationValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (\n [tx, txPayloads]: HydratedTransactionWithStorageMeta,\n): Promisable<Error[]> => {\n const errors: Error[] = []\n try {\n const elevatedHashes = (tx.$operations ?? [])\n .filter(operation => operation[0] === 'elevate')\n\n const elevatedPayloads = elevatedHashes\n .map(([,hash]) => txPayloads.find(p => p._hash === hash)).filter(exists)\n\n if (elevatedPayloads.length < elevatedHashes.length) {\n errors.push(new Error('missing elevated payload'))\n }\n if (elevatedPayloads.length > elevatedHashes.length) {\n errors.push(new Error('extra elevated payload'))\n }\n } catch (ex) {\n errors.push(new Error('validation excepted'), ex as Error)\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/promise'\nimport type {\n HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,\n} from '@xyo-network/chain-model'\nimport { TransactionBoundWitnessJsonSchema } from '@xyo-network/chain-schema'\nimport { Ajv } from 'ajv'\n\nexport const TransactionJsonSchemaValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (\n [tx]: HydratedTransaction,\n): Promisable<Error[]> => {\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(TransactionBoundWitnessJsonSchema)\n if (!validate(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 { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type {\n ChainIdentification, HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,\n} from '@xyo-network/chain-model'\n\nexport const TransactionProtocolValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = async (\n [tx]: HydratedTransaction,\n chainIdentification?: ChainIdentification,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n if (!await BoundWitnessWrapper.parse(tx).getValid()) {\n errors.push(new Error('failed basic boundwitness parse'))\n }\n if (chainIdentification && tx.chain !== chainIdentification.id) {\n errors.push(new Error('invalid chain id'))\n }\n if (tx.nonce.length !== tx.addresses.length) {\n errors.push(new Error('invalid nonce length'))\n }\n } catch (ex) {\n errors.push(new Error('validation excepted'), ex as Error)\n }\n return 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","BlockFieldsValidator","block","chainId","errors","chain","toLowerCase","push","Error","BlockBoundWitnessWithStorageMetaJsonSchema","Ajv","BlockJsonSchemaValidator","jsonSchema","BlockBoundWitnessWithStorageMetaJsonSchema","block","errors","ajv","Ajv","allErrors","strict","validate","compile","error","Error","cause","push","isHash","BlockPreviousHashValidator","block","errors","blockNumber","isHash","previous","push","Error","validateBlock","block","chainId","validators","BoundWitnessSignaturesValidator","BlockFieldsValidator","BlockPreviousHashValidator","BlockJsonSchemaValidator","BlockAllowedPayloadSchemasValidator","errors","Promise","all","map","validator","flat","ex","Error","BoundWitnessSchema","ChainStakeIntentSchema","TransferSchema","SchemaSchema","isChainStakeIntent","transactionPayloadsFromHydratedBlock","validateElevatedInBlock","payload","block","errors","txPayloadHashes","Set","transactionPayloadsFromHydratedBlock","map","tx","_hash","has","push","Error","schema","transactionsFromHydratedBlock","validateElevatedInTransaction","payload","block","errors","txs","transactionsFromHydratedBlock","fromTxs","filter","tx","addresses","includes","from","length","hashes","flatMap","payload_hashes","_hash","push","Error","schema","validateChainStakeIntentInBlock","payload","block","chainId","errors","isChainStakeIntent","push","Error","payload_hashes","includes","_hash","addresses","from","validateElevatedInBlock","validateElevatedInTransaction","isSchemaPayload","validateSchemaInBlock","payload","block","chainId","errors","isSchemaPayload","push","Error","from","addresses","includes","validateElevatedInBlock","validateElevatedInTransaction","isTransactionBoundWitness","validateTransactionInBlock","payload","_block","errors","isTransactionBoundWitness","push","BoundWitnessSignaturesValidator","Error","isTransfer","validateTransferInBlock","payload","block","chainId","errors","isTransfer","push","Error","from","addresses","includes","validateElevatedInBlock","validateElevatedInTransaction","PayloadsInBlockValidator","block","payloads","chainId","errors","validators","TransferSchema","validateTransferInBlock","ChainStakeIntentSchema","validateChainStakeIntentInBlock","BoundWitnessSchema","payload","console","error","validateTransactionInBlock","SchemaSchema","validateSchemaInBlock","allowedSchemas","Object","keys","payloadMap","_hash","i","payload_hashes","length","hash","schema","payload_schemas","includes","push","Error","join","validateHydratedBlock","hydratedBlock","chainId","additionalValidators","errors","validateBlock","validators","BoundWitnessReferencesValidator","PayloadsInBlockValidator","Promise","all","map","v","flat","assertEx","analyzeChain","BalanceAnalyzer","isChainSummaryBalances","netBalancesForPayloads","RequiredBalanceBlockStateValidator","block","chainId","archivist","errors","netBalances","netBalancesForPayloads","netBalanceAddresses","Object","keys","requiredBalances","address","previous","Error","results","analyzeChain","BalanceAnalyzer","values","summaryBalances","assertEx","find","isChainSummaryBalances","reqBalance","entries","balance","BigInt","balances","push","validateHydratedBlockState","hydratedBlock","chainId","archivist","additionalValidators","errors","validateHydratedBlock","validators","RequiredBalanceBlockStateValidator","Promise","all","map","v","flat","isTransactionBoundWitness","exists","TransactionElevationValidator","tx","txPayloads","errors","elevatedHashes","$operations","filter","operation","elevatedPayloads","map","hash","find","p","_hash","exists","length","push","Error","ex","TransactionBoundWitnessJsonSchema","Ajv","TransactionJsonSchemaValidator","tx","errors","ajv","Ajv","allErrors","strict","validate","compile","TransactionBoundWitnessJsonSchema","error","Error","cause","push","ex","BoundWitnessWrapper","TransactionProtocolValidator","tx","chainIdentification","errors","BoundWitnessWrapper","parse","getValid","push","Error","chain","id","nonce","length","addresses","ex","validateTransaction","tx","chainIdentification","additionalValidators","isTransactionBoundWitness","Error","validators","TransactionProtocolValidator","TransactionJsonSchemaValidator","TransactionElevationValidator","BoundWitnessReferencesValidator","Promise","all","map","v","flat"]}
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/hydratedBlock/validators/Payloads.ts","../../src/elevatedPayload/validateChainStakeIntentInBlock.ts","../../src/elevatedPayload/validateElevatedInBlock.ts","../../src/elevatedPayload/validateElevatedInTransaction.ts","../../src/elevatedPayload/validateSchemaInBlock.ts","../../src/elevatedPayload/validateTransactionInBlock.ts","../../src/elevatedPayload/validateTransferInBlock.ts","../../src/hydratedBlock/validateHydratedBlock.ts","../../src/hydratedBlockState/validators/RequiredBalance.ts","../../src/hydratedBlockState/validateHydratedBlockState.ts","../../src/transaction/validateTransaction.ts","../../src/transaction/validators/TransactionElevation.ts","../../src/transaction/validators/TransactionJsonSchema.ts","../../src/transaction/validators/TransactionProtocol.ts"],"sourcesContent":["import type { Hash } from '@xylabs/hex'\nimport type { Promisable } from '@xylabs/promise'\nimport type { HydratedBoundWitnessWithStorageMeta } from '@xyo-network/archivist-model'\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'\n\nimport type { HydratedBoundWitnessValidationFunction } from '../HydratedBoundWitnessValidationFunction.ts'\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]: HydratedBoundWitnessWithStorageMeta<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'\n\nimport type { BoundWitnessValidationFunction } from '../BoundWitnessValidationFunction.ts'\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 { isAllowedBlockPayloadSchema } from '@xyo-network/chain-protocol'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-model'\n\nimport type { BlockValidatorFunction } from '../BlockValidationFunction.ts'\n\nexport const BlockAllowedPayloadSchemasValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n) => {\n const errors: Error[] = []\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 return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-model'\n\nimport type { BlockValidatorFunction } from '../BlockValidationFunction.ts'\n\nexport const BlockFieldsValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n chainId?: Address,\n) => {\n const errors: Error[] = []\n if (chainId && block.chain !== chainId.toLowerCase()) {\n errors.push(new Error('invalid chain id'))\n }\n return errors\n}\n","import { BlockBoundWitnessWithStorageMetaJsonSchema } from '@xyo-network/chain-schema'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-model'\nimport type { AnySchema } from 'ajv'\nimport { Ajv } from 'ajv'\n\nimport type { BlockValidatorFunction } from '../BlockValidationFunction.ts'\n\nexport const BlockJsonSchemaValidator = (jsonSchema: AnySchema = BlockBoundWitnessWithStorageMetaJsonSchema): BlockValidatorFunction => async (\n block: BlockBoundWitness,\n) => {\n const errors: Error[] = []\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(block)) {\n const error = new Error('failed JSON schema validation')\n error.cause = validate.errors\n errors.push(error)\n }\n return errors\n}\n","import { isHash } from '@xylabs/hex'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-model'\n\nimport type { BlockValidatorFunction } from '../BlockValidationFunction.ts'\n\nexport const BlockPreviousHashValidator: BlockValidatorFunction = (\n block: BlockBoundWitness,\n) => {\n const errors: Error[] = []\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 return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-model'\n\nimport { BoundWitnessSignaturesValidator } from '../boundwitness/index.ts'\nimport type { BlockValidatorFunction } from './BlockValidationFunction.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 try {\n const validators: BlockValidatorFunction[] = [\n BoundWitnessSignaturesValidator,\n BlockFieldsValidator,\n BlockPreviousHashValidator,\n BlockJsonSchemaValidator(),\n BlockAllowedPayloadSchemasValidator,\n ]\n const errors = (await Promise.all(\n validators.map(validator => validator(block, chainId)),\n )).flat()\n return errors\n } catch (ex) {\n return [new Error('validation excepted'), ex as Error]\n }\n}\n","import type { Address, Hash } from '@xylabs/hex'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type {\n Payload, Schema, WithHashStorageMeta,\n} from '@xyo-network/payload-model'\nimport { SchemaSchema } from '@xyo-network/schema-payload-plugin'\nimport {\n ChainStakeIntentSchema,\n type FromFields,\n type HydratedBlock,\n TransferSchema,\n} from '@xyo-network/xl1-model'\n\nimport type { InBlockPayloadValidationFunction } from '../../elevatedPayload/index.ts'\nimport {\n validateChainStakeIntentInBlock, validateSchemaInBlock, validateTransactionInBlock,\n validateTransferInBlock,\n} from '../../elevatedPayload/index.ts'\nimport type { HydratedBlockValidatorFunction } from '../HydratedBlockValidationFunction.ts'\n\nexport const PayloadsInBlockValidator: HydratedBlockValidatorFunction = async (\n [block, payloads]: HydratedBlock,\n chainId: Address,\n) => {\n const errors: Error[] = []\n\n const validators: Record<Schema, InBlockPayloadValidationFunction> = {\n [TransferSchema]: validateTransferInBlock,\n [ChainStakeIntentSchema]: validateChainStakeIntentInBlock,\n [BoundWitnessSchema]: (payload) => {\n // TODO: Fix first block check with dual step singing\n console.error('TODO: Fix first block check with dual step singing')\n return block.block === 0 ? [] : validateTransactionInBlock(payload, [block, payloads], chainId)\n },\n [SchemaSchema]: validateSchemaInBlock,\n }\n const allowedSchemas = Object.keys(validators)\n\n const payloadMap: Record<Hash, WithHashStorageMeta<Payload & FromFields>> = {}\n for (const payload of payloads) {\n payloadMap[payload._hash] = payload\n }\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 if (payloadMap[hash]) {\n if (allowedSchemas.includes(schema)) {\n errors.push(...(await validators[schema](payloadMap[hash], [block, payloads], chainId)))\n } else {\n errors.push(new Error(`invalid payload schema ${hash} ${schema}`))\n }\n delete payloadMap[hash]\n } else {\n errors.push(new Error(`missing payload ${hash} ${schema}`))\n }\n }\n\n if (Object.keys(payloadMap).length > 0) {\n errors.push(new Error(`extra payloads ${Object.keys(payloadMap).join(', ')}`))\n }\n\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { HydratedBlock } from '@xyo-network/xl1-model'\nimport { isChainStakeIntent } from '@xyo-network/xl1-model'\n\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\nimport { validateElevatedInBlock } from './validateElevatedInBlock.ts'\nimport { validateElevatedInTransaction } from './validateElevatedInTransaction.ts'\n\nexport const validateChainStakeIntentInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n chainId: Address,\n): Promise<Error[]> => {\n const errors: Error[] = []\n if (!isChainStakeIntent(payload)) {\n errors.push(new Error('Payload is not a chain stake intent'))\n }\n\n if (!block[0].payload_hashes.includes(payload._hash)) {\n errors.push(new Error('ChainStakeIntent not included in block'))\n }\n\n if (block[0].addresses.includes(payload.from)) {\n errors.push(...await validateElevatedInBlock(payload, block, chainId))\n } else {\n errors.push(...await validateElevatedInTransaction(payload, block, chainId))\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/promise'\nimport { transactionPayloadsFromHydratedBlock } from '@xyo-network/chain-protocol'\nimport type { HydratedBlock } from '@xyo-network/xl1-model'\n\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\n\nexport const validateElevatedInBlock: InBlockPayloadValidationFunction = (\n payload,\n block: HydratedBlock,\n): Promisable<Error[]> => {\n const errors: Error[] = []\n const txPayloadHashes = new Set(transactionPayloadsFromHydratedBlock(block).map(tx => tx._hash))\n if (txPayloadHashes.has(payload._hash)) {\n errors.push(new Error(`Transaction may not include block payload hash [${payload.schema}]: ${payload._hash}`))\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/promise'\nimport { transactionsFromHydratedBlock } from '@xyo-network/chain-protocol'\nimport type { HydratedBlock } from '@xyo-network/xl1-model'\n\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\n\nexport const validateElevatedInTransaction: InBlockPayloadValidationFunction = (\n payload,\n block: HydratedBlock,\n): Promisable<Error[]> => {\n const errors: Error[] = []\n const txs = transactionsFromHydratedBlock(block)\n const fromTxs = txs.filter(tx => tx.addresses.includes(payload.from))\n if (fromTxs.length > 0) {\n const hashes = fromTxs.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(`Missing transaction for from address ${payload.from} [${payload.schema}]`))\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport { isSchemaPayload } from '@xyo-network/schema-payload-plugin'\nimport type { HydratedBlock } from '@xyo-network/xl1-model'\n\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\nimport { validateElevatedInBlock } from './validateElevatedInBlock.ts'\nimport { validateElevatedInTransaction } from './validateElevatedInTransaction.ts'\n\nexport const validateSchemaInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n chainId: Address,\n): Promise<Error[]> => {\n const errors: Error[] = []\n if (!isSchemaPayload(payload)) {\n errors.push(new Error('Payload is not a schema'))\n }\n if (payload.from === chainId || block[0].addresses.includes(payload.from)) {\n errors.push(...await validateElevatedInBlock(payload, block, chainId))\n } else {\n errors.push(...await validateElevatedInTransaction(payload, block, chainId))\n }\n return errors\n}\n","import type { HydratedBlock } from '@xyo-network/xl1-model'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-model'\n\nimport { BoundWitnessSignaturesValidator } from '../boundwitness/index.ts'\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\n\nexport const validateTransactionInBlock: InBlockPayloadValidationFunction = async (\n payload,\n _block: HydratedBlock,\n): Promise<Error[]> => {\n const errors: Error[] = []\n if (isTransactionBoundWitness(payload)) {\n errors.push(...await BoundWitnessSignaturesValidator(payload))\n } else {\n errors.push(new Error('Payload is not a transaction'))\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { HydratedBlock } from '@xyo-network/xl1-model'\nimport { isTransfer } from '@xyo-network/xl1-model'\n\nimport type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'\nimport { validateElevatedInBlock } from './validateElevatedInBlock.ts'\nimport { validateElevatedInTransaction } from './validateElevatedInTransaction.ts'\n\nexport const validateTransferInBlock: InBlockPayloadValidationFunction = async (\n payload,\n block: HydratedBlock,\n chainId: Address,\n): Promise<Error[]> => {\n const errors: Error[] = []\n if (!isTransfer(payload)) {\n errors.push(new Error('Payload is not a transfer'))\n }\n if (payload.from === chainId || block[0].addresses.includes(payload.from)) {\n errors.push(...await validateElevatedInBlock(payload, block, chainId))\n } else {\n errors.push(...await validateElevatedInTransaction(payload, block, chainId))\n }\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { HydratedBlock } from '@xyo-network/xl1-model'\n\nimport { validateBlock } from '../block/index.ts'\nimport { BoundWitnessReferencesValidator } from '../boundwitness/index.ts'\nimport type { HydratedBlockValidatorFunction } from './HydratedBlockValidationFunction.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[] = await validateBlock(hydratedBlock[0], chainId)\n const validators: HydratedBlockValidatorFunction[] = [BoundWitnessReferencesValidator(), PayloadsInBlockValidator, ...additionalValidators]\n return [...errors, ...(await Promise.all(validators.map(v => v(hydratedBlock, chainId)))).flat()]\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Address } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport {\n analyzeChain, BalanceAnalyzer, isChainSummaryBalances, netBalancesForPayloads,\n} from '@xyo-network/chain-protocol'\nimport type { HydratedBlock, HydratedBlockStateValidatorFunction } from '@xyo-network/xl1-model'\n\nexport const RequiredBalanceBlockStateValidator: HydratedBlockStateValidatorFunction = async (\n block: HydratedBlock,\n chainId: Address,\n archivist: ReadArchivist,\n) => {\n const errors: Error[] = []\n\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 if (!block[0].previous) return [new Error('Insufficient funds because first block')]\n const results = await analyzeChain(\n archivist,\n [new BalanceAnalyzer(Object.keys(requiredBalances) as Address[], Object.values(requiredBalances)),\n ],\n block[0].previous,\n )\n const summaryBalances = assertEx(results.find(isChainSummaryBalances), () => new Error('missing summary balances'))\n\n for (const [address, reqBalance] of Object.entries(requiredBalances) as [Address, bigint][]) {\n const balance = BigInt(`0x${summaryBalances.balances[address] ?? '00'}`)\n if (reqBalance > balance) {\n errors.push(new Error(`insufficient balance for ${address} ${balance} < ${requiredBalances[address]}`))\n }\n }\n\n return errors\n}\n","import type { Address } from '@xylabs/hex'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport type { HydratedBlock, HydratedBlockStateValidatorFunction } from '@xyo-network/xl1-model'\n\nimport { validateHydratedBlock } from '../hydratedBlock/index.ts'\nimport { RequiredBalanceBlockStateValidator } from './validators/index.ts'\n\nexport const validateHydratedBlockState: HydratedBlockStateValidatorFunction = async (\n hydratedBlock: HydratedBlock,\n chainId: Address,\n archivist: ReadArchivist,\n additionalValidators: HydratedBlockStateValidatorFunction[] = [],\n): Promise<Error[]> => {\n const errors: Error[] = await validateHydratedBlock(hydratedBlock, chainId)\n const validators: HydratedBlockStateValidatorFunction[] = [RequiredBalanceBlockStateValidator, ...additionalValidators]\n return [...errors, ...(await Promise.all(validators.map(v => v(hydratedBlock, chainId, archivist)))).flat()]\n}\n","import type {\n ChainIdentification, HydratedTransactionValidatorFunction,\n HydratedTransactionWithStorageMeta,\n} from '@xyo-network/xl1-model'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-model'\n\nimport { BoundWitnessReferencesValidator } from '../boundwitness/index.ts'\nimport {\n TransactionElevationValidator, TransactionJsonSchemaValidator, TransactionProtocolValidator,\n} from './validators/index.ts'\n\nexport async function validateTransaction(\n tx: HydratedTransactionWithStorageMeta,\n chainIdentification: ChainIdentification,\n additionalValidators: HydratedTransactionValidatorFunction[] = [],\n): Promise<Error[]> {\n if (!isTransactionBoundWitness(tx)) {\n return [new Error('failed isTransactionBoundWitness identity check')]\n }\n\n const validators: HydratedTransactionValidatorFunction[] = [\n TransactionProtocolValidator,\n TransactionJsonSchemaValidator,\n TransactionElevationValidator,\n BoundWitnessReferencesValidator(),\n ...additionalValidators,\n ]\n return (await Promise.all(validators.map(v => v(tx, chainIdentification)))).flat()\n}\n","import { exists } from '@xylabs/exists'\nimport type { Promisable } from '@xylabs/promise'\nimport type {\n HydratedTransactionValidatorFunction, HydratedTransactionWithStorageMeta, TransactionBoundWitness,\n} from '@xyo-network/xl1-model'\n\nexport const TransactionElevationValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (\n [tx, txPayloads]: HydratedTransactionWithStorageMeta,\n): Promisable<Error[]> => {\n const errors: Error[] = []\n try {\n const elevatedHashes = (tx.$operations ?? [])\n .filter(operation => operation[0] === 'elevate')\n\n const elevatedPayloads = elevatedHashes\n .map(([,hash]) => txPayloads.find(p => p._hash === hash)).filter(exists)\n\n if (elevatedPayloads.length < elevatedHashes.length) {\n errors.push(new Error('missing elevated payload'))\n }\n if (elevatedPayloads.length > elevatedHashes.length) {\n errors.push(new Error('extra elevated payload'))\n }\n } catch (ex) {\n errors.push(new Error('validation excepted'), ex as Error)\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/promise'\nimport { TransactionBoundWitnessJsonSchema } from '@xyo-network/chain-schema'\nimport type {\n HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,\n} from '@xyo-network/xl1-model'\nimport { Ajv } from 'ajv'\n\nexport const TransactionJsonSchemaValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (\n [tx]: HydratedTransaction,\n): Promisable<Error[]> => {\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(TransactionBoundWitnessJsonSchema)\n if (!validate(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 { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'\nimport type {\n ChainIdentification, HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,\n} from '@xyo-network/xl1-model'\n\nexport const TransactionProtocolValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = async (\n [tx]: HydratedTransaction,\n chainIdentification?: ChainIdentification,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n if (!await BoundWitnessWrapper.parse(tx).getValid()) {\n errors.push(new Error('failed basic boundwitness parse'))\n }\n if (chainIdentification && tx.chain !== chainIdentification.id) {\n errors.push(new Error('invalid chain id'))\n }\n if (tx.nonce.length !== tx.addresses.length) {\n errors.push(new Error('invalid nonce length'))\n }\n } catch (ex) {\n errors.push(new Error('validation excepted'), ex as Error)\n }\n return 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","BlockFieldsValidator","block","chainId","errors","chain","toLowerCase","push","Error","BlockBoundWitnessWithStorageMetaJsonSchema","Ajv","BlockJsonSchemaValidator","jsonSchema","BlockBoundWitnessWithStorageMetaJsonSchema","block","errors","ajv","Ajv","allErrors","strict","validate","compile","error","Error","cause","push","isHash","BlockPreviousHashValidator","block","errors","blockNumber","isHash","previous","push","Error","validateBlock","block","chainId","validators","BoundWitnessSignaturesValidator","BlockFieldsValidator","BlockPreviousHashValidator","BlockJsonSchemaValidator","BlockAllowedPayloadSchemasValidator","errors","Promise","all","map","validator","flat","ex","Error","BoundWitnessSchema","SchemaSchema","ChainStakeIntentSchema","TransferSchema","isChainStakeIntent","transactionPayloadsFromHydratedBlock","validateElevatedInBlock","payload","block","errors","txPayloadHashes","Set","transactionPayloadsFromHydratedBlock","map","tx","_hash","has","push","Error","schema","transactionsFromHydratedBlock","validateElevatedInTransaction","payload","block","errors","txs","transactionsFromHydratedBlock","fromTxs","filter","tx","addresses","includes","from","length","hashes","flatMap","payload_hashes","_hash","push","Error","schema","validateChainStakeIntentInBlock","payload","block","chainId","errors","isChainStakeIntent","push","Error","payload_hashes","includes","_hash","addresses","from","validateElevatedInBlock","validateElevatedInTransaction","isSchemaPayload","validateSchemaInBlock","payload","block","chainId","errors","isSchemaPayload","push","Error","from","addresses","includes","validateElevatedInBlock","validateElevatedInTransaction","isTransactionBoundWitness","validateTransactionInBlock","payload","_block","errors","isTransactionBoundWitness","push","BoundWitnessSignaturesValidator","Error","isTransfer","validateTransferInBlock","payload","block","chainId","errors","isTransfer","push","Error","from","addresses","includes","validateElevatedInBlock","validateElevatedInTransaction","PayloadsInBlockValidator","block","payloads","chainId","errors","validators","TransferSchema","validateTransferInBlock","ChainStakeIntentSchema","validateChainStakeIntentInBlock","BoundWitnessSchema","payload","console","error","validateTransactionInBlock","SchemaSchema","validateSchemaInBlock","allowedSchemas","Object","keys","payloadMap","_hash","i","payload_hashes","length","hash","schema","payload_schemas","includes","push","Error","join","validateHydratedBlock","hydratedBlock","chainId","additionalValidators","errors","validateBlock","validators","BoundWitnessReferencesValidator","PayloadsInBlockValidator","Promise","all","map","v","flat","assertEx","analyzeChain","BalanceAnalyzer","isChainSummaryBalances","netBalancesForPayloads","RequiredBalanceBlockStateValidator","block","chainId","archivist","errors","netBalances","netBalancesForPayloads","netBalanceAddresses","Object","keys","requiredBalances","address","previous","Error","results","analyzeChain","BalanceAnalyzer","values","summaryBalances","assertEx","find","isChainSummaryBalances","reqBalance","entries","balance","BigInt","balances","push","validateHydratedBlockState","hydratedBlock","chainId","archivist","additionalValidators","errors","validateHydratedBlock","validators","RequiredBalanceBlockStateValidator","Promise","all","map","v","flat","isTransactionBoundWitness","exists","TransactionElevationValidator","tx","txPayloads","errors","elevatedHashes","$operations","filter","operation","elevatedPayloads","map","hash","find","p","_hash","exists","length","push","Error","ex","TransactionBoundWitnessJsonSchema","Ajv","TransactionJsonSchemaValidator","tx","errors","ajv","Ajv","allErrors","strict","validate","compile","TransactionBoundWitnessJsonSchema","error","Error","cause","push","ex","BoundWitnessWrapper","TransactionProtocolValidator","tx","chainIdentification","errors","BoundWitnessWrapper","parse","getValid","push","Error","chain","id","nonce","length","addresses","ex","validateTransaction","tx","chainIdentification","additionalValidators","isTransactionBoundWitness","Error","validators","TransactionProtocolValidator","TransactionJsonSchemaValidator","TransactionElevationValidator","BoundWitnessReferencesValidator","Promise","all","map","v","flat"]}
@@ -1,5 +1,5 @@
1
1
  import type { Address } from '@xylabs/hex';
2
2
  import type { Promisable } from '@xylabs/promise';
3
- import type { BlockBoundWitness } from '@xyo-network/chain-model';
3
+ import type { BlockBoundWitness } from '@xyo-network/xl1-model';
4
4
  export type BlockValidatorFunction = (block: BlockBoundWitness, chainId?: Address) => Promisable<Error[]>;
5
5
  //# sourceMappingURL=BlockValidationFunction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockValidationFunction.d.ts","sourceRoot":"","sources":["../../../src/block/BlockValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,MAAM,MAAM,sBAAsB,GAAG,CACnC,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,OAAO,KACd,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"BlockValidationFunction.d.ts","sourceRoot":"","sources":["../../../src/block/BlockValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAE/D,MAAM,MAAM,sBAAsB,GAAG,CACnC,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,OAAO,KACd,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { Address } from '@xylabs/hex';
2
2
  import type { Promisable } from '@xylabs/promise';
3
- import type { FromFields, HydratedBlock } from '@xyo-network/chain-model';
4
3
  import type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model';
4
+ import type { FromFields, HydratedBlock } from '@xyo-network/xl1-model';
5
5
  export type InBlockPayloadValidationFunction = (payload: WithHashStorageMeta<Payload<FromFields>>, block: HydratedBlock, chainId: Address) => Promisable<Error[]>;
6
6
  //# sourceMappingURL=InBlockPayloadValidationFunction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"InBlockPayloadValidationFunction.d.ts","sourceRoot":"","sources":["../../../src/elevatedPayload/InBlockPayloadValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAE9E,MAAM,MAAM,gCAAgC,GAAG,CAC7C,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,KACtF,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"InBlockPayloadValidationFunction.d.ts","sourceRoot":"","sources":["../../../src/elevatedPayload/InBlockPayloadValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAEvE,MAAM,MAAM,gCAAgC,GAAG,CAC7C,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,KACtF,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import type { Address } from '@xylabs/hex';
2
2
  import type { Promisable } from '@xylabs/promise';
3
- import type { HydratedBlock } from '@xyo-network/chain-model';
3
+ import type { HydratedBlock } from '@xyo-network/xl1-model';
4
4
  export type HydratedBlockValidatorFunction = (hydratedBlock: HydratedBlock, chainId: Address) => Promisable<Error[]>;
5
5
  //# sourceMappingURL=HydratedBlockValidationFunction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HydratedBlockValidationFunction.d.ts","sourceRoot":"","sources":["../../../src/hydratedBlock/HydratedBlockValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAE7D,MAAM,MAAM,8BAA8B,GAAG,CAC3C,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,KACb,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"HydratedBlockValidationFunction.d.ts","sourceRoot":"","sources":["../../../src/hydratedBlock/HydratedBlockValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAE3D,MAAM,MAAM,8BAA8B,GAAG,CAC3C,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,KACb,UAAU,CAAC,KAAK,EAAE,CAAC,CAAA"}
@@ -1,3 +1,3 @@
1
- import type { HydratedBlockStateValidatorFunction } from '@xyo-network/chain-model';
1
+ import type { HydratedBlockStateValidatorFunction } from '@xyo-network/xl1-model';
2
2
  export declare const validateHydratedBlockState: HydratedBlockStateValidatorFunction;
3
3
  //# sourceMappingURL=validateHydratedBlockState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validateHydratedBlockState.d.ts","sourceRoot":"","sources":["../../../src/hydratedBlockState/validateHydratedBlockState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,mCAAmC,EAAE,MAAM,0BAA0B,CAAA;AAKlG,eAAO,MAAM,0BAA0B,EAAE,mCASxC,CAAA"}
1
+ {"version":3,"file":"validateHydratedBlockState.d.ts","sourceRoot":"","sources":["../../../src/hydratedBlockState/validateHydratedBlockState.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAiB,mCAAmC,EAAE,MAAM,wBAAwB,CAAA;AAKhG,eAAO,MAAM,0BAA0B,EAAE,mCASxC,CAAA"}
@@ -1,3 +1,3 @@
1
- import type { HydratedBlockStateValidatorFunction } from '@xyo-network/chain-model';
1
+ import type { HydratedBlockStateValidatorFunction } from '@xyo-network/xl1-model';
2
2
  export declare const RequiredBalanceBlockStateValidator: HydratedBlockStateValidatorFunction;
3
3
  //# sourceMappingURL=RequiredBalance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"RequiredBalance.d.ts","sourceRoot":"","sources":["../../../../src/hydratedBlockState/validators/RequiredBalance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,mCAAmC,EAAE,MAAM,0BAA0B,CAAA;AAKlG,eAAO,MAAM,kCAAkC,EAAE,mCAgChD,CAAA"}
1
+ {"version":3,"file":"RequiredBalance.d.ts","sourceRoot":"","sources":["../../../../src/hydratedBlockState/validators/RequiredBalance.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAiB,mCAAmC,EAAE,MAAM,wBAAwB,CAAA;AAEhG,eAAO,MAAM,kCAAkC,EAAE,mCAgChD,CAAA"}
@@ -1,3 +1,3 @@
1
- import type { ChainIdentification, HydratedTransactionValidatorFunction, HydratedTransactionWithStorageMeta } from '@xyo-network/chain-model';
1
+ import type { ChainIdentification, HydratedTransactionValidatorFunction, HydratedTransactionWithStorageMeta } from '@xyo-network/xl1-model';
2
2
  export declare function validateTransaction(tx: HydratedTransactionWithStorageMeta, chainIdentification: ChainIdentification, additionalValidators?: HydratedTransactionValidatorFunction[]): Promise<Error[]>;
3
3
  //# 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,EACV,mBAAmB,EAAE,oCAAoC,EACzD,kCAAkC,EACnC,MAAM,0BAA0B,CAAA;AAQjC,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,kCAAkC,EACtC,mBAAmB,EAAE,mBAAmB,EACxC,oBAAoB,GAAE,oCAAoC,EAAO,GAChE,OAAO,CAAC,KAAK,EAAE,CAAC,CAalB"}
1
+ {"version":3,"file":"validateTransaction.d.ts","sourceRoot":"","sources":["../../../src/transaction/validateTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAAE,oCAAoC,EACzD,kCAAkC,EACnC,MAAM,wBAAwB,CAAA;AAQ/B,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,kCAAkC,EACtC,mBAAmB,EAAE,mBAAmB,EACxC,oBAAoB,GAAE,oCAAoC,EAAO,GAChE,OAAO,CAAC,KAAK,EAAE,CAAC,CAalB"}
@@ -1,3 +1,3 @@
1
- import type { HydratedTransactionValidatorFunction, TransactionBoundWitness } from '@xyo-network/chain-model';
1
+ import type { HydratedTransactionValidatorFunction, TransactionBoundWitness } from '@xyo-network/xl1-model';
2
2
  export declare const TransactionElevationValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness>;
3
3
  //# sourceMappingURL=TransactionElevation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionElevation.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionElevation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oCAAoC,EAAsC,uBAAuB,EAClG,MAAM,0BAA0B,CAAA;AAEjC,eAAO,MAAM,6BAA6B,EAAE,oCAAoC,CAAC,uBAAuB,CAqBvG,CAAA"}
1
+ {"version":3,"file":"TransactionElevation.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionElevation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,oCAAoC,EAAsC,uBAAuB,EAClG,MAAM,wBAAwB,CAAA;AAE/B,eAAO,MAAM,6BAA6B,EAAE,oCAAoC,CAAC,uBAAuB,CAqBvG,CAAA"}
@@ -1,3 +1,3 @@
1
- import type { HydratedTransactionValidatorFunction, TransactionBoundWitness } from '@xyo-network/chain-model';
1
+ import type { HydratedTransactionValidatorFunction, TransactionBoundWitness } from '@xyo-network/xl1-model';
2
2
  export declare const TransactionJsonSchemaValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness>;
3
3
  //# sourceMappingURL=TransactionJsonSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionJsonSchema.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionJsonSchema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACW,oCAAoC,EAAE,uBAAuB,EACnF,MAAM,0BAA0B,CAAA;AAIjC,eAAO,MAAM,8BAA8B,EAAE,oCAAoC,CAAC,uBAAuB,CAiBxG,CAAA"}
1
+ {"version":3,"file":"TransactionJsonSchema.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionJsonSchema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACW,oCAAoC,EAAE,uBAAuB,EACnF,MAAM,wBAAwB,CAAA;AAG/B,eAAO,MAAM,8BAA8B,EAAE,oCAAoC,CAAC,uBAAuB,CAiBxG,CAAA"}
@@ -1,3 +1,3 @@
1
- import type { HydratedTransactionValidatorFunction, TransactionBoundWitness } from '@xyo-network/chain-model';
1
+ import type { HydratedTransactionValidatorFunction, TransactionBoundWitness } from '@xyo-network/xl1-model';
2
2
  export declare const TransactionProtocolValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness>;
3
3
  //# sourceMappingURL=TransactionProtocol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TransactionProtocol.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionProtocol.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACgC,oCAAoC,EAAE,uBAAuB,EACxG,MAAM,0BAA0B,CAAA;AAEjC,eAAO,MAAM,4BAA4B,EAAE,oCAAoC,CAAC,uBAAuB,CAmBtG,CAAA"}
1
+ {"version":3,"file":"TransactionProtocol.d.ts","sourceRoot":"","sources":["../../../../src/transaction/validators/TransactionProtocol.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACgC,oCAAoC,EAAE,uBAAuB,EACxG,MAAM,wBAAwB,CAAA;AAE/B,eAAO,MAAM,4BAA4B,EAAE,oCAAoC,CAAC,uBAAuB,CAmBtG,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.1.5",
4
+ "version": "1.1.7",
5
5
  "description": "XYO Layer One SDK Validation",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -44,11 +44,11 @@
44
44
  "@xyo-network/boundwitness-model": "^3.12.0",
45
45
  "@xyo-network/boundwitness-validator": "^3.12.0",
46
46
  "@xyo-network/boundwitness-wrapper": "^3.12.0",
47
- "@xyo-network/chain-model": "^1.1.5",
48
- "@xyo-network/chain-protocol": "^1.1.5",
49
- "@xyo-network/chain-schema": "^1.1.5",
47
+ "@xyo-network/chain-protocol": "^1.1.7",
48
+ "@xyo-network/chain-schema": "^1.1.7",
50
49
  "@xyo-network/payload-model": "^3.12.0",
51
50
  "@xyo-network/schema-payload-plugin": "^3.12.0",
51
+ "@xyo-network/xl1-model": "^1.1.7",
52
52
  "ajv": "^8.17.1"
53
53
  },
54
54
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  import type { Address } from '@xylabs/hex'
2
2
  import type { Promisable } from '@xylabs/promise'
3
- import type { BlockBoundWitness } from '@xyo-network/chain-model'
3
+ import type { BlockBoundWitness } from '@xyo-network/xl1-model'
4
4
 
5
5
  export type BlockValidatorFunction = (
6
6
  block: BlockBoundWitness,
@@ -1,5 +1,5 @@
1
1
  import type { Address } from '@xylabs/hex'
2
- import type { BlockBoundWitness } from '@xyo-network/chain-model'
2
+ import type { BlockBoundWitness } from '@xyo-network/xl1-model'
3
3
 
4
4
  import { BoundWitnessSignaturesValidator } from '../boundwitness/index.ts'
5
5
  import type { BlockValidatorFunction } from './BlockValidationFunction.ts'
@@ -1,5 +1,5 @@
1
- import type { BlockBoundWitness } from '@xyo-network/chain-model'
2
1
  import { isAllowedBlockPayloadSchema } from '@xyo-network/chain-protocol'
2
+ import type { BlockBoundWitness } from '@xyo-network/xl1-model'
3
3
 
4
4
  import type { BlockValidatorFunction } from '../BlockValidationFunction.ts'
5
5
 
@@ -1,5 +1,5 @@
1
1
  import type { Address } from '@xylabs/hex'
2
- import type { BlockBoundWitness } from '@xyo-network/chain-model'
2
+ import type { BlockBoundWitness } from '@xyo-network/xl1-model'
3
3
 
4
4
  import type { BlockValidatorFunction } from '../BlockValidationFunction.ts'
5
5
 
@@ -1,5 +1,5 @@
1
- import type { BlockBoundWitness } from '@xyo-network/chain-model'
2
1
  import { BlockBoundWitnessWithStorageMetaJsonSchema } from '@xyo-network/chain-schema'
2
+ import type { BlockBoundWitness } from '@xyo-network/xl1-model'
3
3
  import type { AnySchema } from 'ajv'
4
4
  import { Ajv } from 'ajv'
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { isHash } from '@xylabs/hex'
2
- import type { BlockBoundWitness } from '@xyo-network/chain-model'
2
+ import type { BlockBoundWitness } from '@xyo-network/xl1-model'
3
3
 
4
4
  import type { BlockValidatorFunction } from '../BlockValidationFunction.ts'
5
5
 
@@ -1,7 +1,7 @@
1
1
  import type { Address } from '@xylabs/hex'
2
2
  import type { Promisable } from '@xylabs/promise'
3
- import type { FromFields, HydratedBlock } from '@xyo-network/chain-model'
4
3
  import type { Payload, WithHashStorageMeta } from '@xyo-network/payload-model'
4
+ import type { FromFields, HydratedBlock } from '@xyo-network/xl1-model'
5
5
 
6
6
  export type InBlockPayloadValidationFunction = (
7
7
  payload: WithHashStorageMeta<Payload<FromFields>>, block: HydratedBlock, chainId: Address
@@ -1,6 +1,6 @@
1
1
  import type { Address } from '@xylabs/hex'
2
- import type { HydratedBlock } from '@xyo-network/chain-model'
3
- import { isChainStakeIntent } from '@xyo-network/chain-model'
2
+ import type { HydratedBlock } from '@xyo-network/xl1-model'
3
+ import { isChainStakeIntent } from '@xyo-network/xl1-model'
4
4
 
5
5
  import type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'
6
6
  import { validateElevatedInBlock } from './validateElevatedInBlock.ts'
@@ -1,6 +1,6 @@
1
1
  import type { Promisable } from '@xylabs/promise'
2
- import type { HydratedBlock } from '@xyo-network/chain-model'
3
2
  import { transactionPayloadsFromHydratedBlock } from '@xyo-network/chain-protocol'
3
+ import type { HydratedBlock } from '@xyo-network/xl1-model'
4
4
 
5
5
  import type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'
6
6
 
@@ -1,6 +1,6 @@
1
1
  import type { Promisable } from '@xylabs/promise'
2
- import type { HydratedBlock } from '@xyo-network/chain-model'
3
2
  import { transactionsFromHydratedBlock } from '@xyo-network/chain-protocol'
3
+ import type { HydratedBlock } from '@xyo-network/xl1-model'
4
4
 
5
5
  import type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'
6
6
 
@@ -1,6 +1,6 @@
1
1
  import type { Address } from '@xylabs/hex'
2
- import type { HydratedBlock } from '@xyo-network/chain-model'
3
2
  import { isSchemaPayload } from '@xyo-network/schema-payload-plugin'
3
+ import type { HydratedBlock } from '@xyo-network/xl1-model'
4
4
 
5
5
  import type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'
6
6
  import { validateElevatedInBlock } from './validateElevatedInBlock.ts'
@@ -1,5 +1,5 @@
1
- import type { HydratedBlock } from '@xyo-network/chain-model'
2
- import { isTransactionBoundWitness } from '@xyo-network/chain-model'
1
+ import type { HydratedBlock } from '@xyo-network/xl1-model'
2
+ import { isTransactionBoundWitness } from '@xyo-network/xl1-model'
3
3
 
4
4
  import { BoundWitnessSignaturesValidator } from '../boundwitness/index.ts'
5
5
  import type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'
@@ -1,6 +1,6 @@
1
1
  import type { Address } from '@xylabs/hex'
2
- import type { HydratedBlock } from '@xyo-network/chain-model'
3
- import { isTransfer } from '@xyo-network/chain-model'
2
+ import type { HydratedBlock } from '@xyo-network/xl1-model'
3
+ import { isTransfer } from '@xyo-network/xl1-model'
4
4
 
5
5
  import type { InBlockPayloadValidationFunction } from './InBlockPayloadValidationFunction.ts'
6
6
  import { validateElevatedInBlock } from './validateElevatedInBlock.ts'
@@ -1,6 +1,6 @@
1
1
  import type { Address } from '@xylabs/hex'
2
2
  import type { Promisable } from '@xylabs/promise'
3
- import type { HydratedBlock } from '@xyo-network/chain-model'
3
+ import type { HydratedBlock } from '@xyo-network/xl1-model'
4
4
 
5
5
  export type HydratedBlockValidatorFunction = (
6
6
  hydratedBlock: HydratedBlock,
@@ -1,5 +1,5 @@
1
1
  import type { Address } from '@xylabs/hex'
2
- import type { HydratedBlock } from '@xyo-network/chain-model'
2
+ import type { HydratedBlock } from '@xyo-network/xl1-model'
3
3
 
4
4
  import { validateBlock } from '../block/index.ts'
5
5
  import { BoundWitnessReferencesValidator } from '../boundwitness/index.ts'
@@ -1,15 +1,15 @@
1
1
  import type { Address, Hash } from '@xylabs/hex'
2
2
  import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'
3
+ import type {
4
+ Payload, Schema, WithHashStorageMeta,
5
+ } from '@xyo-network/payload-model'
6
+ import { SchemaSchema } from '@xyo-network/schema-payload-plugin'
3
7
  import {
4
8
  ChainStakeIntentSchema,
5
9
  type FromFields,
6
10
  type HydratedBlock,
7
11
  TransferSchema,
8
- } from '@xyo-network/chain-model'
9
- import type {
10
- Payload, Schema, WithHashStorageMeta,
11
- } from '@xyo-network/payload-model'
12
- import { SchemaSchema } from '@xyo-network/schema-payload-plugin'
12
+ } from '@xyo-network/xl1-model'
13
13
 
14
14
  import type { InBlockPayloadValidationFunction } from '../../elevatedPayload/index.ts'
15
15
  import {
@@ -1,6 +1,6 @@
1
1
  import type { Address } from '@xylabs/hex'
2
2
  import type { ReadArchivist } from '@xyo-network/archivist-model'
3
- import type { HydratedBlock, HydratedBlockStateValidatorFunction } from '@xyo-network/chain-model'
3
+ import type { HydratedBlock, HydratedBlockStateValidatorFunction } from '@xyo-network/xl1-model'
4
4
 
5
5
  import { validateHydratedBlock } from '../hydratedBlock/index.ts'
6
6
  import { RequiredBalanceBlockStateValidator } from './validators/index.ts'
@@ -1,10 +1,10 @@
1
1
  import { assertEx } from '@xylabs/assert'
2
2
  import type { Address } from '@xylabs/hex'
3
3
  import type { ReadArchivist } from '@xyo-network/archivist-model'
4
- import type { HydratedBlock, HydratedBlockStateValidatorFunction } from '@xyo-network/chain-model'
5
4
  import {
6
5
  analyzeChain, BalanceAnalyzer, isChainSummaryBalances, netBalancesForPayloads,
7
6
  } from '@xyo-network/chain-protocol'
7
+ import type { HydratedBlock, HydratedBlockStateValidatorFunction } from '@xyo-network/xl1-model'
8
8
 
9
9
  export const RequiredBalanceBlockStateValidator: HydratedBlockStateValidatorFunction = async (
10
10
  block: HydratedBlock,
@@ -1,8 +1,8 @@
1
1
  import type {
2
2
  ChainIdentification, HydratedTransactionValidatorFunction,
3
3
  HydratedTransactionWithStorageMeta,
4
- } from '@xyo-network/chain-model'
5
- import { isTransactionBoundWitness } from '@xyo-network/chain-model'
4
+ } from '@xyo-network/xl1-model'
5
+ import { isTransactionBoundWitness } from '@xyo-network/xl1-model'
6
6
 
7
7
  import { BoundWitnessReferencesValidator } from '../boundwitness/index.ts'
8
8
  import {
@@ -2,7 +2,7 @@ import { exists } from '@xylabs/exists'
2
2
  import type { Promisable } from '@xylabs/promise'
3
3
  import type {
4
4
  HydratedTransactionValidatorFunction, HydratedTransactionWithStorageMeta, TransactionBoundWitness,
5
- } from '@xyo-network/chain-model'
5
+ } from '@xyo-network/xl1-model'
6
6
 
7
7
  export const TransactionElevationValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (
8
8
  [tx, txPayloads]: HydratedTransactionWithStorageMeta,
@@ -1,8 +1,8 @@
1
1
  import type { Promisable } from '@xylabs/promise'
2
+ import { TransactionBoundWitnessJsonSchema } from '@xyo-network/chain-schema'
2
3
  import type {
3
4
  HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,
4
- } from '@xyo-network/chain-model'
5
- import { TransactionBoundWitnessJsonSchema } from '@xyo-network/chain-schema'
5
+ } from '@xyo-network/xl1-model'
6
6
  import { Ajv } from 'ajv'
7
7
 
8
8
  export const TransactionJsonSchemaValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (
@@ -1,7 +1,7 @@
1
1
  import { BoundWitnessWrapper } from '@xyo-network/boundwitness-wrapper'
2
2
  import type {
3
3
  ChainIdentification, HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,
4
- } from '@xyo-network/chain-model'
4
+ } from '@xyo-network/xl1-model'
5
5
 
6
6
  export const TransactionProtocolValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = async (
7
7
  [tx]: HydratedTransaction,