@xyo-network/chain-validation 1.5.30 → 1.5.32

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 (59) hide show
  1. package/dist/neutral/index.mjs +126 -76
  2. package/dist/neutral/index.mjs.map +1 -1
  3. package/dist/types/block/validateBlock.d.ts.map +1 -1
  4. package/dist/types/block/validators/AllowedPayloadSchemas.d.ts.map +1 -1
  5. package/dist/types/block/validators/Fields.d.ts +1 -1
  6. package/dist/types/block/validators/Fields.d.ts.map +1 -1
  7. package/dist/types/block/validators/JsonSchema.d.ts +1 -1
  8. package/dist/types/block/validators/JsonSchema.d.ts.map +1 -1
  9. package/dist/types/block/validators/PreviousHash.d.ts.map +1 -1
  10. package/dist/types/boundwitness/validators/BoundWitnessReferences.d.ts.map +1 -1
  11. package/dist/types/boundwitness/validators/BoundWitnessSignatures.d.ts.map +1 -1
  12. package/dist/types/elevatedPayload/payloads/validateSchemaInBlock.d.ts.map +1 -1
  13. package/dist/types/elevatedPayload/payloads/validateTransferInBlock.d.ts +1 -1
  14. package/dist/types/elevatedPayload/payloads/validateTransferInBlock.d.ts.map +1 -1
  15. package/dist/types/elevatedPayload/validatePayloadInBlock.d.ts.map +1 -1
  16. package/dist/types/hydratedBlock/validateHydratedBlock.d.ts +2 -2
  17. package/dist/types/hydratedBlock/validateHydratedBlock.d.ts.map +1 -1
  18. package/dist/types/hydratedBlock/validators/Payloads.d.ts +2 -2
  19. package/dist/types/hydratedBlock/validators/Payloads.d.ts.map +1 -1
  20. package/dist/types/hydratedBlockState/validateHydratedBlockState.d.ts.map +1 -1
  21. package/dist/types/hydratedBlockState/validators/RequiredBalance.d.ts.map +1 -1
  22. package/dist/types/transaction/validateTransaction.d.ts +2 -2
  23. package/dist/types/transaction/validateTransaction.d.ts.map +1 -1
  24. package/dist/types/transaction/validators/TransactionDurationValidator.d.ts +2 -2
  25. package/dist/types/transaction/validators/TransactionDurationValidator.d.ts.map +1 -1
  26. package/dist/types/transaction/validators/TransactionElevationValidator.d.ts +2 -2
  27. package/dist/types/transaction/validators/TransactionElevationValidator.d.ts.map +1 -1
  28. package/dist/types/transaction/validators/TransactionFromValidator.d.ts +2 -2
  29. package/dist/types/transaction/validators/TransactionFromValidator.d.ts.map +1 -1
  30. package/dist/types/transaction/validators/TransactionGasValidator.d.ts +2 -2
  31. package/dist/types/transaction/validators/TransactionGasValidator.d.ts.map +1 -1
  32. package/dist/types/transaction/validators/TransactionJsonSchemaValidator.d.ts +2 -2
  33. package/dist/types/transaction/validators/TransactionJsonSchemaValidator.d.ts.map +1 -1
  34. package/dist/types/transaction/validators/TransactionProtocolValidator.d.ts +2 -2
  35. package/dist/types/transaction/validators/TransactionProtocolValidator.d.ts.map +1 -1
  36. package/package.json +6 -6
  37. package/src/block/validateBlock.ts +3 -2
  38. package/src/block/validators/AllowedPayloadSchemas.ts +4 -4
  39. package/src/block/validators/Fields.ts +7 -5
  40. package/src/block/validators/JsonSchema.ts +7 -6
  41. package/src/block/validators/PreviousHash.ts +6 -5
  42. package/src/boundwitness/validators/BoundWitnessReferences.ts +9 -8
  43. package/src/boundwitness/validators/BoundWitnessSignatures.ts +5 -4
  44. package/src/elevatedPayload/payloads/validateChainStakeIntentInBlock.ts +4 -4
  45. package/src/elevatedPayload/payloads/validateHashInBlock.ts +4 -4
  46. package/src/elevatedPayload/payloads/validateSchemaInBlock.ts +3 -2
  47. package/src/elevatedPayload/payloads/validateTransferInBlock.ts +6 -4
  48. package/src/elevatedPayload/validatePayloadInBlock.ts +6 -5
  49. package/src/hydratedBlock/validateHydratedBlock.ts +7 -6
  50. package/src/hydratedBlock/validators/Payloads.ts +7 -6
  51. package/src/hydratedBlockState/validateHydratedBlockState.ts +7 -2
  52. package/src/hydratedBlockState/validators/RequiredBalance.ts +13 -4
  53. package/src/transaction/validateTransaction.ts +5 -5
  54. package/src/transaction/validators/TransactionDurationValidator.ts +12 -11
  55. package/src/transaction/validators/TransactionElevationValidator.ts +8 -8
  56. package/src/transaction/validators/TransactionFromValidator.ts +10 -9
  57. package/src/transaction/validators/TransactionGasValidator.ts +42 -18
  58. package/src/transaction/validators/TransactionJsonSchemaValidator.ts +9 -9
  59. package/src/transaction/validators/TransactionProtocolValidator.ts +9 -8
@@ -1,37 +1,61 @@
1
1
  import { hexToBigInt } from '@xylabs/hex'
2
+ import type {
3
+ HydratedTransaction,
4
+ HydratedTransactionValidationFunction,
5
+ TransactionBoundWitness, TransactionFeesBigInt, TransactionFeesHex,
6
+ } from '@xyo-network/xl1-protocol'
2
7
  import {
3
8
  AttoXL1,
4
- type HydratedTransaction, type HydratedTransactionValidatorFunction,
9
+ HydratedTransactionValidationError,
5
10
  minTransactionFees,
6
- type TransactionBoundWitness, type TransactionFeesBigInt, type TransactionFeesHex,
7
11
  } from '@xyo-network/xl1-protocol'
8
12
 
9
- export const TransactionGasValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (
10
- [tx]: HydratedTransaction,
11
- ): Error[] => {
12
- const errors: Error[] = []
13
+ export const TransactionGasValidator: HydratedTransactionValidationFunction<TransactionBoundWitness> = (
14
+ tx: HydratedTransaction,
15
+ ) => {
16
+ const errors: (HydratedTransactionValidationError | Error)[] = []
13
17
  try {
14
- if (tx?.fees === undefined) {
15
- errors.push(new Error('Missing fees'))
18
+ if (tx?.[0].fees === undefined) {
19
+ errors.push(new HydratedTransactionValidationError(tx, 'Missing fees'))
16
20
  } else {
17
21
  const {
18
22
  base, gasLimit, gasPrice, priority,
19
- } = parseFees(tx.fees)
23
+ } = parseFees(tx[0].fees)
20
24
 
21
- if (base === undefined) errors.push(new Error('fees.base must be defined and a valid number'))
22
- else if (base < minTransactionFees.base) errors.push(new Error(`fees.base must be >= ${minTransactionFees.base}`))
25
+ if (base === undefined) errors.push(new HydratedTransactionValidationError(
26
+ tx,
27
+ 'fees.base must be defined and a valid number',
28
+ ))
29
+ else if (base < minTransactionFees.base) errors.push(new HydratedTransactionValidationError(
30
+ tx,
31
+ `fees.base must be >= ${minTransactionFees.base}`,
32
+ ))
23
33
 
24
- if (gasLimit === undefined) errors.push(new Error('fees.gasLimit must be defined and a valid number'))
25
- else if (gasLimit < minTransactionFees.gasLimit) errors.push(new Error(`fees.gasLimit must be >= ${minTransactionFees.gasLimit}`))
34
+ if (gasLimit === undefined) errors.push(new HydratedTransactionValidationError(tx, 'fees.gasLimit must be defined and a valid number'))
35
+ else if (gasLimit < minTransactionFees.gasLimit) errors.push(new HydratedTransactionValidationError(
36
+ tx,
37
+ `fees.gasLimit must be >= ${minTransactionFees.gasLimit}`,
38
+ ))
26
39
 
27
- if (gasPrice === undefined) errors.push(new Error('fees.gasPrice must be defined and a valid number'))
28
- else if (gasPrice < minTransactionFees.gasPrice) errors.push(new Error(`fees.gasPrice must be >= ${minTransactionFees.gasPrice}`))
40
+ if (gasPrice === undefined) errors.push(
41
+ new HydratedTransactionValidationError(tx, 'fees.gasPrice must be defined and a valid number'),
42
+ )
43
+ else if (gasPrice < minTransactionFees.gasPrice) errors.push(new HydratedTransactionValidationError(
44
+ tx,
45
+ `fees.gasPrice must be >= ${minTransactionFees.gasPrice}`,
46
+ ))
29
47
 
30
- if (priority === undefined) errors.push(new Error('fees.priority must be defined and a valid number'))
31
- else if (priority < minTransactionFees.priority) errors.push(new Error(`fees.priority must be >= ${minTransactionFees.priority}`))
48
+ if (priority === undefined) errors.push(new HydratedTransactionValidationError(
49
+ tx,
50
+ 'fees.priority must be defined and a valid number',
51
+ ))
52
+ else if (priority < minTransactionFees.priority) errors.push(new HydratedTransactionValidationError(
53
+ tx,
54
+ `fees.priority must be >= ${minTransactionFees.priority}`,
55
+ ))
32
56
  }
33
57
  } catch (e) {
34
- errors.push(new Error(`Failed TransactionGasValidator: ${e instanceof Error ? e.message : String(e)}`))
58
+ errors.push(new HydratedTransactionValidationError(tx, `Failed TransactionGasValidator: ${e instanceof Error ? e.message : String(e)}`))
35
59
  }
36
60
  return errors
37
61
  }
@@ -1,9 +1,9 @@
1
- import type { Promisable } from '@xylabs/promise'
2
1
  import { TransactionBoundWitnessJsonSchema } from '@xyo-network/chain-schema'
3
2
  import { PayloadBuilder } from '@xyo-network/payload-builder'
4
3
  import type {
5
- HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,
4
+ HydratedTransaction, HydratedTransactionValidationFunction, TransactionBoundWitness,
6
5
  } from '@xyo-network/xl1-protocol'
6
+ import { HydratedTransactionValidationError } from '@xyo-network/xl1-protocol'
7
7
  import type { ValidateFunction } from 'ajv'
8
8
  import { Ajv } from 'ajv'
9
9
 
@@ -11,20 +11,20 @@ const ajv = new Ajv({ allErrors: true, strict: true })
11
11
 
12
12
  let validate: ValidateFunction<TransactionBoundWitness> | undefined
13
13
 
14
- export const TransactionJsonSchemaValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = (
15
- [tx]: HydratedTransaction,
16
- ): Promisable<Error[]> => {
17
- const errors: Error[] = []
14
+ export const TransactionJsonSchemaValidator: HydratedTransactionValidationFunction<TransactionBoundWitness> = (
15
+ tx: HydratedTransaction,
16
+ ) => {
17
+ const errors: (HydratedTransactionValidationError | Error)[] = []
18
18
  try {
19
19
  if (validate === undefined) validate = ajv.compile(TransactionBoundWitnessJsonSchema)
20
20
  // see if you can export the super set
21
- if (!validate(PayloadBuilder.omitStorageMeta(tx))) {
22
- const error = new Error('failed JSON schema validation')
21
+ if (!validate(PayloadBuilder.omitStorageMeta(tx[0]))) {
22
+ const error = new HydratedTransactionValidationError(tx, 'failed JSON schema validation')
23
23
  error.cause = validate.errors
24
24
  errors.push(error)
25
25
  }
26
26
  } catch (ex) {
27
- errors.push(new Error('validation excepted'), ex as Error)
27
+ errors.push(new HydratedTransactionValidationError(tx, 'validation excepted'), ex as Error)
28
28
  }
29
29
  return errors
30
30
  }
@@ -1,19 +1,20 @@
1
1
  import type { Address } from '@xylabs/hex'
2
2
  import type {
3
- HydratedTransaction, HydratedTransactionValidatorFunction, TransactionBoundWitness,
3
+ HydratedTransaction, HydratedTransactionValidationFunction, TransactionBoundWitness,
4
4
  } from '@xyo-network/xl1-protocol'
5
+ import { HydratedTransactionValidationError } from '@xyo-network/xl1-protocol'
5
6
 
6
- export const TransactionProtocolValidator: HydratedTransactionValidatorFunction<TransactionBoundWitness> = async (
7
- [tx]: HydratedTransaction,
7
+ export const TransactionProtocolValidator: HydratedTransactionValidationFunction<TransactionBoundWitness> = async (
8
+ tx: HydratedTransaction,
8
9
  chainId?: Address,
9
- ): Promise<Error[]> => {
10
- const errors: Error[] = []
10
+ ) => {
11
+ const errors: (HydratedTransactionValidationError | Error)[] = []
11
12
  try {
12
- if (chainId !== undefined && tx.chain !== chainId) {
13
- errors.push(new Error('invalid chain id'))
13
+ if (chainId !== undefined && tx[0].chain !== chainId) {
14
+ errors.push(new HydratedTransactionValidationError(tx, 'invalid chain id'))
14
15
  }
15
16
  } catch (ex) {
16
- errors.push(new Error('validation excepted'), ex as Error)
17
+ errors.push(new HydratedTransactionValidationError(tx, 'validation excepted'), ex as Error)
17
18
  }
18
19
  return await Promise.resolve(errors)
19
20
  }