@xyo-network/chain-sdk 5.2.4 → 5.3.0

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 (24) hide show
  1. package/dist/browser/modules/validation/elevatedPayload/lib/findElevatingTransaction.d.ts.map +1 -1
  2. package/dist/browser/modules/validation/elevatedPayload/lib/validateTransactionInBlock.d.ts.map +1 -1
  3. package/dist/browser/modules/validation/elevatedPayload/payloads/index.d.ts +1 -0
  4. package/dist/browser/modules/validation/elevatedPayload/payloads/index.d.ts.map +1 -1
  5. package/dist/browser/modules/validation/elevatedPayload/payloads/validateClaimInBlock.d.ts +4 -0
  6. package/dist/browser/modules/validation/elevatedPayload/payloads/validateClaimInBlock.d.ts.map +1 -0
  7. package/dist/browser/modules/validation/elevatedPayload/validatePayloadInBlock.d.ts.map +1 -1
  8. package/dist/neutral/modules/validation/elevatedPayload/lib/findElevatingTransaction.d.ts.map +1 -1
  9. package/dist/neutral/modules/validation/elevatedPayload/lib/validateTransactionInBlock.d.ts.map +1 -1
  10. package/dist/neutral/modules/validation/elevatedPayload/payloads/index.d.ts +1 -0
  11. package/dist/neutral/modules/validation/elevatedPayload/payloads/index.d.ts.map +1 -1
  12. package/dist/neutral/modules/validation/elevatedPayload/payloads/validateClaimInBlock.d.ts +4 -0
  13. package/dist/neutral/modules/validation/elevatedPayload/payloads/validateClaimInBlock.d.ts.map +1 -0
  14. package/dist/neutral/modules/validation/elevatedPayload/validatePayloadInBlock.d.ts.map +1 -1
  15. package/dist/neutral/validation.mjs +209 -82
  16. package/dist/neutral/validation.mjs.map +4 -4
  17. package/dist/node/modules/validation/elevatedPayload/lib/findElevatingTransaction.d.ts.map +1 -1
  18. package/dist/node/modules/validation/elevatedPayload/lib/validateTransactionInBlock.d.ts.map +1 -1
  19. package/dist/node/modules/validation/elevatedPayload/payloads/index.d.ts +1 -0
  20. package/dist/node/modules/validation/elevatedPayload/payloads/index.d.ts.map +1 -1
  21. package/dist/node/modules/validation/elevatedPayload/payloads/validateClaimInBlock.d.ts +4 -0
  22. package/dist/node/modules/validation/elevatedPayload/payloads/validateClaimInBlock.d.ts.map +1 -0
  23. package/dist/node/modules/validation/elevatedPayload/validatePayloadInBlock.d.ts.map +1 -1
  24. package/package.json +5 -5
@@ -95,8 +95,8 @@ import { ZERO_HASH as ZERO_HASH4 } from "@ariestools/sdk";
95
95
  import { BlockBoundWitnessWithStorageMetaJsonSchema, BlockValidationError as BlockValidationError4 } from "@xyo-network/xl1-sdk";
96
96
  import { Ajv } from "ajv";
97
97
  var BlockJsonSchemaValidator = (jsonSchema = BlockBoundWitnessWithStorageMetaJsonSchema) => {
98
- const ajv = new Ajv({ allErrors: true, strict: true });
99
- const validate = ajv.compile(jsonSchema);
98
+ const ajv2 = new Ajv({ allErrors: true, strict: true });
99
+ const validate = ajv2.compile(jsonSchema);
100
100
  return async (context, block) => {
101
101
  const errors = [];
102
102
  try {
@@ -105,7 +105,7 @@ var BlockJsonSchemaValidator = (jsonSchema = BlockBoundWitnessWithStorageMetaJso
105
105
  const error2 = new BlockValidationError4(
106
106
  block?._hash ?? ZERO_HASH4,
107
107
  block,
108
- `failed JSON schema validation: ${ajv.errorsText(validate.errors, { separator: "\n" })}`
108
+ `failed JSON schema validation: ${ajv2.errorsText(validate.errors, { separator: "\n" })}`
109
109
  );
110
110
  error2.cause = validate.errors;
111
111
  errors.push(error2);
@@ -174,23 +174,24 @@ var validateBlock = async (context, block, chainId, additionalValidators = []) =
174
174
  };
175
175
 
176
176
  // src/modules/validation/hydratedBlock/validateHydratedBlock.ts
177
- import { ZERO_HASH as ZERO_HASH24 } from "@ariestools/sdk";
177
+ import { ZERO_HASH as ZERO_HASH25 } from "@ariestools/sdk";
178
178
  import { BoundWitnessReferencesValidator, HydratedBlockValidationError as HydratedBlockValidationError3 } from "@xyo-network/xl1-sdk";
179
179
 
180
180
  // src/modules/validation/hydratedBlock/validators/Payloads.ts
181
- import { ZERO_HASH as ZERO_HASH22 } from "@ariestools/sdk";
181
+ import { ZERO_HASH as ZERO_HASH23 } from "@ariestools/sdk";
182
182
  import { HydratedBlockValidationError } from "@xyo-network/xl1-sdk";
183
183
 
184
184
  // src/modules/validation/elevatedPayload/validatePayloadInBlock.ts
185
- import { ZERO_HASH as ZERO_HASH21 } from "@ariestools/sdk";
185
+ import { ZERO_HASH as ZERO_HASH22 } from "@ariestools/sdk";
186
186
  import { BoundWitnessSchema as BoundWitnessSchema2, SchemaSchema } from "@xyo-network/sdk";
187
187
  import {
188
188
  BridgeDestinationObservationSchema,
189
189
  BridgeIntentSchema,
190
190
  BridgeSourceObservationSchema,
191
191
  ChainStakeIntentSchema,
192
+ ClaimSchema as ClaimSchema2,
192
193
  HashSchema,
193
- InBlockPayloadValidationError as InBlockPayloadValidationError17,
194
+ InBlockPayloadValidationError as InBlockPayloadValidationError18,
194
195
  SlashAdjudicationSchema,
195
196
  SlashChallengeSchema,
196
197
  SlashCommitSchema,
@@ -201,9 +202,10 @@ import {
201
202
  } from "@xyo-network/xl1-sdk";
202
203
 
203
204
  // src/modules/validation/elevatedPayload/lib/findElevatingTransaction.ts
204
- import { isTransactionBoundWitnessWithHashMeta } from "@xyo-network/xl1-sdk";
205
+ import { ELEVATE_OPCODE, isTransactionBoundWitnessWithHashMeta } from "@xyo-network/xl1-sdk";
205
206
  function findElevatingTransaction(payload, [, payloads]) {
206
- return payloads.filter((candidate) => isTransactionBoundWitnessWithHashMeta(candidate)).find((tx) => tx.payload_hashes.includes(payload._hash));
207
+ const elevateOperation = `${ELEVATE_OPCODE}|${payload._hash}`;
208
+ return payloads.filter((candidate) => isTransactionBoundWitnessWithHashMeta(candidate)).find((tx) => tx.payload_hashes.includes(payload._hash) && tx.script?.includes(elevateOperation) === true);
207
209
  }
208
210
 
209
211
  // src/modules/validation/elevatedPayload/lib/isElevatedFromBlock.ts
@@ -303,7 +305,11 @@ var validateTransactionInBlock = async (context, payload, block) => {
303
305
  const errors = [];
304
306
  try {
305
307
  if (isTransactionBoundWitness2(payload) && isHashMeta2(payload)) {
306
- const txErrors = await validateTransaction({ ...context, chainId: block[0].chain }, [payload, block[1]]);
308
+ const transactionPayloads = [...new Set(payload.payload_hashes)].flatMap((hash) => {
309
+ const referencedPayload = block[1].find((candidate) => isHashMeta2(candidate) && (candidate._hash === hash || candidate._dataHash === hash));
310
+ return referencedPayload === void 0 ? [] : [referencedPayload];
311
+ });
312
+ const txErrors = await validateTransaction({ ...context, chainId: block[0].chain }, [payload, transactionPayloads]);
307
313
  for (const txError of txErrors) {
308
314
  errors.push(new InBlockPayloadValidationError3(
309
315
  payload._hash,
@@ -440,19 +446,139 @@ var validateChainStakeIntentInBlock = async (context, payload, block) => {
440
446
  return errors;
441
447
  };
442
448
 
443
- // src/modules/validation/elevatedPayload/payloads/validateHashInBlock.ts
449
+ // src/modules/validation/elevatedPayload/payloads/validateClaimInBlock.ts
444
450
  import { ZERO_HASH as ZERO_HASH12 } from "@ariestools/sdk";
445
- import { InBlockPayloadValidationError as InBlockPayloadValidationError8, isHashPayload } from "@xyo-network/xl1-sdk";
451
+ import { PayloadBuilder } from "@xyo-network/sdk";
452
+ import {
453
+ ClaimPayloadJsonSchema,
454
+ ClaimSchema,
455
+ ELEVATE_OPCODE as ELEVATE_OPCODE2,
456
+ InBlockPayloadValidationError as InBlockPayloadValidationError8,
457
+ isClaimPayload,
458
+ isTransactionBoundWitnessWithHashMeta as isTransactionBoundWitnessWithHashMeta2
459
+ } from "@xyo-network/xl1-sdk";
460
+ import { Ajv as Ajv2 } from "ajv";
461
+ var ajv = new Ajv2({ allErrors: true, strict: true });
462
+ var validateClaimJsonSchema = ajv.compile(ClaimPayloadJsonSchema);
463
+ function claimError(payload, block, message, cause) {
464
+ return new InBlockPayloadValidationError8(
465
+ payload._hash ?? block[0]?._hash ?? ZERO_HASH12,
466
+ block,
467
+ payload,
468
+ message,
469
+ cause
470
+ );
471
+ }
472
+ function indexesOf(values, value) {
473
+ const indexes = [];
474
+ for (const [index, candidate] of values.entries()) {
475
+ if (candidate === value) indexes.push(index);
476
+ }
477
+ return indexes;
478
+ }
479
+ function validateClaimSchemaPairs(payload, block, transaction) {
480
+ const carrier = transaction ?? block[0];
481
+ const carrierName = transaction === void 0 ? "Block" : `Transaction ${transaction._hash}`;
482
+ const indexes = indexesOf(carrier.payload_hashes, payload._hash);
483
+ if (indexes.length === 0) {
484
+ return [claimError(payload, block, `${carrierName} does not commit Claim root hash ${payload._hash}`)];
485
+ }
486
+ if (indexes.some((index) => carrier.payload_schemas[index] !== ClaimSchema)) {
487
+ return [claimError(payload, block, `${carrierName} does not pair every Claim root hash with ${ClaimSchema}`)];
488
+ }
489
+ return [];
490
+ }
491
+ function claimElevationAttempts(payload, [, payloads]) {
492
+ const exactOperation = `${ELEVATE_OPCODE2}|${payload._hash}`;
493
+ const operationPrefix = `${exactOperation}|`;
494
+ const transactions = payloads.filter((candidate) => isTransactionBoundWitnessWithHashMeta2(candidate));
495
+ return transactions.flatMap((transaction) => {
496
+ const operations = transaction.script ?? [];
497
+ const validOperationCount = operations.filter((operation) => operation === exactOperation).length;
498
+ const malformedOperations = operations.filter((operation) => operation.startsWith(operationPrefix));
499
+ return validOperationCount === 0 && malformedOperations.length === 0 ? [] : [{
500
+ malformedOperations,
501
+ transaction,
502
+ validOperationCount
503
+ }];
504
+ });
505
+ }
506
+ function validateElevatingTransaction(claim, payload, block, attempt) {
507
+ const errors = [];
508
+ const {
509
+ malformedOperations,
510
+ transaction,
511
+ validOperationCount
512
+ } = attempt;
513
+ if (malformedOperations.length > 0) {
514
+ errors.push(claimError(
515
+ payload,
516
+ block,
517
+ `Transaction ${transaction._hash} contains malformed Claim elevation operations: ${malformedOperations.join(", ")}`
518
+ ));
519
+ }
520
+ if (validOperationCount > 1) {
521
+ errors.push(claimError(payload, block, `Transaction ${transaction._hash} contains duplicate Claim elevation operations`));
522
+ }
523
+ if (validOperationCount !== 1) return errors;
524
+ errors.push(...validateClaimSchemaPairs(payload, block, transaction));
525
+ if (!transaction.addresses.includes(claim.source)) {
526
+ errors.push(claimError(payload, block, `Claim source ${claim.source} is not a signer of transaction ${transaction._hash}`));
527
+ }
528
+ const committedHashes = new Set(transaction.payload_hashes);
529
+ const missingHashes = claim.hashes.filter((hash) => !committedHashes.has(hash));
530
+ if (missingHashes.length > 0) {
531
+ errors.push(claimError(
532
+ payload,
533
+ block,
534
+ `Transaction ${transaction._hash} does not commit every Claim hash: ${missingHashes.join(", ")}`
535
+ ));
536
+ }
537
+ return errors;
538
+ }
539
+ var validateClaimInBlock = async (_context, payload, block) => {
540
+ try {
541
+ const canonicalPayload = PayloadBuilder.omitStorageMeta(payload);
542
+ if (canonicalPayload.schema !== ClaimSchema || !isClaimPayload(canonicalPayload)) {
543
+ return [claimError(payload, block, "Claim failed its complete payload identity check")];
544
+ }
545
+ const isStrictClaim = validateClaimJsonSchema(canonicalPayload);
546
+ if (!isStrictClaim) {
547
+ const details = ajv.errorsText(validateClaimJsonSchema.errors, { separator: "; " });
548
+ return [claimError(payload, block, `Claim failed strict JSON schema validation: ${details}`, validateClaimJsonSchema.errors)];
549
+ }
550
+ const canonicalHash = await PayloadBuilder.hash(canonicalPayload);
551
+ if (canonicalHash !== payload._hash) {
552
+ return [claimError(payload, block, `Claim canonical root hash ${canonicalHash} does not match asserted hash ${payload._hash}`)];
553
+ }
554
+ const errors = validateClaimSchemaPairs(payload, block);
555
+ const attempts = claimElevationAttempts(payload, block);
556
+ const exactAttempts = attempts.filter((attempt) => attempt.validOperationCount > 0);
557
+ for (const attempt of attempts) {
558
+ errors.push(...validateElevatingTransaction(canonicalPayload, payload, block, attempt));
559
+ }
560
+ if (exactAttempts.length === 0) {
561
+ errors.push(claimError(payload, block, "Claim must be elevated from a transaction with an exact elevate operation"));
562
+ }
563
+ return errors;
564
+ } catch (ex) {
565
+ return [claimError(payload, block, `Failed validateClaimInBlock: ${String(ex)}`, ex)];
566
+ }
567
+ };
568
+
569
+ // src/modules/validation/elevatedPayload/payloads/validateHashInBlock.ts
570
+ import { ZERO_HASH as ZERO_HASH13 } from "@ariestools/sdk";
571
+ import { InBlockPayloadValidationError as InBlockPayloadValidationError9, isHashPayload } from "@xyo-network/xl1-sdk";
446
572
  var validateHashInBlock = async (context, payload, block) => {
447
573
  const errors = [];
448
574
  try {
449
575
  const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isHashPayload);
450
576
  for (const typedError of typedErrors) {
451
- errors.push(new InBlockPayloadValidationError8(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
577
+ errors.push(new InBlockPayloadValidationError9(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
452
578
  }
453
579
  } catch (ex) {
454
- errors.push(new InBlockPayloadValidationError8(
455
- block?.[0]?._hash ?? ZERO_HASH12,
580
+ errors.push(new InBlockPayloadValidationError9(
581
+ block?.[0]?._hash ?? ZERO_HASH13,
456
582
  block,
457
583
  payload,
458
584
  `validation excepted: ${String(ex)}`,
@@ -463,19 +589,19 @@ var validateHashInBlock = async (context, payload, block) => {
463
589
  };
464
590
 
465
591
  // src/modules/validation/elevatedPayload/payloads/validateSchemaInBlock.ts
466
- import { ZERO_HASH as ZERO_HASH13 } from "@ariestools/sdk";
592
+ import { ZERO_HASH as ZERO_HASH14 } from "@ariestools/sdk";
467
593
  import { isSchemaPayload } from "@xyo-network/sdk";
468
- import { InBlockPayloadValidationError as InBlockPayloadValidationError9 } from "@xyo-network/xl1-sdk";
594
+ import { InBlockPayloadValidationError as InBlockPayloadValidationError10 } from "@xyo-network/xl1-sdk";
469
595
  var validateSchemaInBlock = async (context, payload, block) => {
470
596
  const errors = [];
471
597
  try {
472
598
  const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isSchemaPayload);
473
599
  for (const typedError of typedErrors) {
474
- errors.push(new InBlockPayloadValidationError9(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
600
+ errors.push(new InBlockPayloadValidationError10(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
475
601
  }
476
602
  } catch (ex) {
477
- errors.push(new InBlockPayloadValidationError9(
478
- block?.[0]?._hash ?? ZERO_HASH13,
603
+ errors.push(new InBlockPayloadValidationError10(
604
+ block?.[0]?._hash ?? ZERO_HASH14,
479
605
  block,
480
606
  payload,
481
607
  `Failed validateSchemaInBlock: ${String(ex)}`,
@@ -486,21 +612,21 @@ var validateSchemaInBlock = async (context, payload, block) => {
486
612
  };
487
613
 
488
614
  // src/modules/validation/elevatedPayload/payloads/validateSlashAdjudicationInBlock.ts
489
- import { ZERO_HASH as ZERO_HASH14 } from "@ariestools/sdk";
490
- import { InBlockPayloadValidationError as InBlockPayloadValidationError10, isSlashAdjudication } from "@xyo-network/xl1-sdk";
615
+ import { ZERO_HASH as ZERO_HASH15 } from "@ariestools/sdk";
616
+ import { InBlockPayloadValidationError as InBlockPayloadValidationError11, isSlashAdjudication } from "@xyo-network/xl1-sdk";
491
617
  var validateSlashAdjudicationInBlock = async (context, payload, block) => {
492
618
  const errors = [];
493
619
  try {
494
620
  const { errors: sharedErrors, params } = await validateSlashPayloadInBlock(context, payload, block, isSlashAdjudication, (adjudication) => adjudication.from, "slash adjudication");
495
621
  for (const sharedError of sharedErrors) {
496
- errors.push(new InBlockPayloadValidationError10(payload._hash, block, payload, sharedError.message, sharedError));
622
+ errors.push(new InBlockPayloadValidationError11(payload._hash, block, payload, sharedError.message, sharedError));
497
623
  }
498
624
  if (sharedErrors.length === 0 && isSlashAdjudication(payload) && (params?.arbiter === void 0 || payload.from !== params.arbiter)) {
499
- errors.push(new InBlockPayloadValidationError10(payload._hash, block, payload, "slash adjudication from must equal the register arbiter"));
625
+ errors.push(new InBlockPayloadValidationError11(payload._hash, block, payload, "slash adjudication from must equal the register arbiter"));
500
626
  }
501
627
  } catch (ex) {
502
- errors.push(new InBlockPayloadValidationError10(
503
- block[0]?._hash ?? ZERO_HASH14,
628
+ errors.push(new InBlockPayloadValidationError11(
629
+ block[0]?._hash ?? ZERO_HASH15,
504
630
  block,
505
631
  payload,
506
632
  `validation excepted: ${String(ex)}`,
@@ -511,18 +637,18 @@ var validateSlashAdjudicationInBlock = async (context, payload, block) => {
511
637
  };
512
638
 
513
639
  // src/modules/validation/elevatedPayload/payloads/validateSlashChallengeInBlock.ts
514
- import { ZERO_HASH as ZERO_HASH15 } from "@ariestools/sdk";
515
- import { InBlockPayloadValidationError as InBlockPayloadValidationError11, isSlashChallenge } from "@xyo-network/xl1-sdk";
640
+ import { ZERO_HASH as ZERO_HASH16 } from "@ariestools/sdk";
641
+ import { InBlockPayloadValidationError as InBlockPayloadValidationError12, isSlashChallenge } from "@xyo-network/xl1-sdk";
516
642
  var validateSlashChallengeInBlock = async (context, payload, block) => {
517
643
  const errors = [];
518
644
  try {
519
645
  const { errors: sharedErrors } = await validateSlashPayloadInBlock(context, payload, block, isSlashChallenge, (subject) => subject.from, "slash challenge");
520
646
  for (const sharedError of sharedErrors) {
521
- errors.push(new InBlockPayloadValidationError11(payload._hash, block, payload, sharedError.message, sharedError));
647
+ errors.push(new InBlockPayloadValidationError12(payload._hash, block, payload, sharedError.message, sharedError));
522
648
  }
523
649
  } catch (ex) {
524
- errors.push(new InBlockPayloadValidationError11(
525
- block[0]?._hash ?? ZERO_HASH15,
650
+ errors.push(new InBlockPayloadValidationError12(
651
+ block[0]?._hash ?? ZERO_HASH16,
526
652
  block,
527
653
  payload,
528
654
  `validation excepted: ${String(ex)}`,
@@ -533,10 +659,10 @@ var validateSlashChallengeInBlock = async (context, payload, block) => {
533
659
  };
534
660
 
535
661
  // src/modules/validation/elevatedPayload/payloads/validateSlashCommitInBlock.ts
536
- import { ZERO_HASH as ZERO_HASH16 } from "@ariestools/sdk";
662
+ import { ZERO_HASH as ZERO_HASH17 } from "@ariestools/sdk";
537
663
  import {
538
664
  derivedReceiveAddress,
539
- InBlockPayloadValidationError as InBlockPayloadValidationError12,
665
+ InBlockPayloadValidationError as InBlockPayloadValidationError13,
540
666
  isRuleActiveAt,
541
667
  isSlashCommit,
542
668
  isTransferPayload
@@ -561,7 +687,7 @@ var validateSlashCommitInBlock = async (context, payload, block) => {
561
687
  transaction
562
688
  } = await validateSlashPayloadInBlock(context, payload, block, isSlashCommit, (commit) => commit.from, "slash commit");
563
689
  for (const sharedError of sharedErrors) {
564
- errors.push(new InBlockPayloadValidationError12(payload._hash, block, payload, sharedError.message, sharedError));
690
+ errors.push(new InBlockPayloadValidationError13(payload._hash, block, payload, sharedError.message, sharedError));
565
691
  }
566
692
  if (sharedErrors.length > 0 || params === void 0 || transaction === void 0 || !isSlashCommit(payload)) {
567
693
  return errors;
@@ -571,7 +697,7 @@ var validateSlashCommitInBlock = async (context, payload, block) => {
571
697
  const required = toAmount(params.reporterDepositAtto ?? "0x0");
572
698
  const deposited = depositedInTransaction(payload, transaction, block[1]);
573
699
  if (deposited < required) {
574
- errors.push(new InBlockPayloadValidationError12(
700
+ errors.push(new InBlockPayloadValidationError13(
575
701
  payload._hash,
576
702
  block,
577
703
  payload,
@@ -580,8 +706,8 @@ var validateSlashCommitInBlock = async (context, payload, block) => {
580
706
  }
581
707
  }
582
708
  } catch (ex) {
583
- errors.push(new InBlockPayloadValidationError12(
584
- block[0]?._hash ?? ZERO_HASH16,
709
+ errors.push(new InBlockPayloadValidationError13(
710
+ block[0]?._hash ?? ZERO_HASH17,
585
711
  block,
586
712
  payload,
587
713
  `validation excepted: ${String(ex)}`,
@@ -592,18 +718,18 @@ var validateSlashCommitInBlock = async (context, payload, block) => {
592
718
  };
593
719
 
594
720
  // src/modules/validation/elevatedPayload/payloads/validateSlashEvidenceInBlock.ts
595
- import { ZERO_HASH as ZERO_HASH17 } from "@ariestools/sdk";
596
- import { InBlockPayloadValidationError as InBlockPayloadValidationError13, isSlashEvidence } from "@xyo-network/xl1-sdk";
721
+ import { ZERO_HASH as ZERO_HASH18 } from "@ariestools/sdk";
722
+ import { InBlockPayloadValidationError as InBlockPayloadValidationError14, isSlashEvidence } from "@xyo-network/xl1-sdk";
597
723
  var validateSlashEvidenceInBlock = async (context, payload, block) => {
598
724
  const errors = [];
599
725
  try {
600
726
  const { errors: sharedErrors } = await validateSlashPayloadInBlock(context, payload, block, isSlashEvidence, (subject) => subject.from, "slash evidence");
601
727
  for (const sharedError of sharedErrors) {
602
- errors.push(new InBlockPayloadValidationError13(payload._hash, block, payload, sharedError.message, sharedError));
728
+ errors.push(new InBlockPayloadValidationError14(payload._hash, block, payload, sharedError.message, sharedError));
603
729
  }
604
730
  } catch (ex) {
605
- errors.push(new InBlockPayloadValidationError13(
606
- block[0]?._hash ?? ZERO_HASH17,
731
+ errors.push(new InBlockPayloadValidationError14(
732
+ block[0]?._hash ?? ZERO_HASH18,
607
733
  block,
608
734
  payload,
609
735
  `validation excepted: ${String(ex)}`,
@@ -614,10 +740,10 @@ var validateSlashEvidenceInBlock = async (context, payload, block) => {
614
740
  };
615
741
 
616
742
  // src/modules/validation/elevatedPayload/payloads/validateSlashRequestInBlock.ts
617
- import { ZERO_HASH as ZERO_HASH18 } from "@ariestools/sdk";
618
- import { PayloadBuilder } from "@xyo-network/sdk";
743
+ import { ZERO_HASH as ZERO_HASH19 } from "@ariestools/sdk";
744
+ import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/sdk";
619
745
  import {
620
- InBlockPayloadValidationError as InBlockPayloadValidationError14,
746
+ InBlockPayloadValidationError as InBlockPayloadValidationError15,
621
747
  isRuleObservedAt,
622
748
  isSlashEvidence as isSlashEvidence2,
623
749
  isSlashRequest,
@@ -626,7 +752,7 @@ import {
626
752
  async function carriedArtifactHashes(transaction, payloads) {
627
753
  const inTransaction = new Set(transaction.payload_hashes);
628
754
  const artifacts = payloads.filter((candidate) => inTransaction.has(candidate._hash)).filter((candidate) => isSlashEvidence2(candidate)).flatMap((container) => container.artifacts);
629
- return new Set(await Promise.all(artifacts.map((artifact) => PayloadBuilder.dataHash(artifact))));
755
+ return new Set(await Promise.all(artifacts.map((artifact) => PayloadBuilder2.dataHash(artifact))));
630
756
  }
631
757
  async function evidenceResolutionErrors(context, request, carried, height) {
632
758
  const missing = request.evidence.filter((hash) => !carried.has(hash));
@@ -643,7 +769,7 @@ function isOffenseReportable(params, request) {
643
769
  }
644
770
  var validateSlashRequestInBlock = async (context, payload, block) => {
645
771
  const errors = [];
646
- const fail = (message) => errors.push(new InBlockPayloadValidationError14(payload._hash, block, payload, message));
772
+ const fail = (message) => errors.push(new InBlockPayloadValidationError15(payload._hash, block, payload, message));
647
773
  try {
648
774
  const {
649
775
  errors: sharedErrors,
@@ -651,7 +777,7 @@ var validateSlashRequestInBlock = async (context, payload, block) => {
651
777
  transaction
652
778
  } = await validateSlashPayloadInBlock(context, payload, block, isSlashRequest, (request) => request.from, "slash request");
653
779
  for (const sharedError of sharedErrors) {
654
- errors.push(new InBlockPayloadValidationError14(payload._hash, block, payload, sharedError.message, sharedError));
780
+ errors.push(new InBlockPayloadValidationError15(payload._hash, block, payload, sharedError.message, sharedError));
655
781
  }
656
782
  if (sharedErrors.length > 0 || params === void 0 || transaction === void 0 || !isSlashRequest(payload)) {
657
783
  return errors;
@@ -664,8 +790,8 @@ var validateSlashRequestInBlock = async (context, payload, block) => {
664
790
  fail(problem);
665
791
  }
666
792
  } catch (ex) {
667
- errors.push(new InBlockPayloadValidationError14(
668
- block[0]?._hash ?? ZERO_HASH18,
793
+ errors.push(new InBlockPayloadValidationError15(
794
+ block[0]?._hash ?? ZERO_HASH19,
669
795
  block,
670
796
  payload,
671
797
  `validation excepted: ${String(ex)}`,
@@ -676,18 +802,18 @@ var validateSlashRequestInBlock = async (context, payload, block) => {
676
802
  };
677
803
 
678
804
  // src/modules/validation/elevatedPayload/payloads/validateTimeInBlock.ts
679
- import { ZERO_HASH as ZERO_HASH19 } from "@ariestools/sdk";
680
- import { InBlockPayloadValidationError as InBlockPayloadValidationError15, isTimePayload } from "@xyo-network/xl1-sdk";
805
+ import { ZERO_HASH as ZERO_HASH20 } from "@ariestools/sdk";
806
+ import { InBlockPayloadValidationError as InBlockPayloadValidationError16, isTimePayload } from "@xyo-network/xl1-sdk";
681
807
  var validateTimeInBlock = async (context, payload, block) => {
682
808
  const errors = [];
683
809
  try {
684
810
  const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isTimePayload);
685
811
  for (const typedError of typedErrors) {
686
- errors.push(new InBlockPayloadValidationError15(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
812
+ errors.push(new InBlockPayloadValidationError16(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
687
813
  }
688
814
  } catch (ex) {
689
- errors.push(new InBlockPayloadValidationError15(
690
- block?.[0]?._hash ?? ZERO_HASH19,
815
+ errors.push(new InBlockPayloadValidationError16(
816
+ block?.[0]?._hash ?? ZERO_HASH20,
691
817
  block,
692
818
  payload,
693
819
  `Failed validateTimeInBlock: ${String(ex)}`,
@@ -698,18 +824,18 @@ var validateTimeInBlock = async (context, payload, block) => {
698
824
  };
699
825
 
700
826
  // src/modules/validation/elevatedPayload/payloads/validateTransferInBlock.ts
701
- import { ZERO_HASH as ZERO_HASH20 } from "@ariestools/sdk";
702
- import { InBlockPayloadValidationError as InBlockPayloadValidationError16, isTransferPayload as isTransferPayload2 } from "@xyo-network/xl1-sdk";
827
+ import { ZERO_HASH as ZERO_HASH21 } from "@ariestools/sdk";
828
+ import { InBlockPayloadValidationError as InBlockPayloadValidationError17, isTransferPayload as isTransferPayload2 } from "@xyo-network/xl1-sdk";
703
829
  var validateTransferInBlock = async (context, payload, block) => {
704
830
  const errors = [];
705
831
  try {
706
832
  const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isTransferPayload2);
707
833
  for (const typedError of typedErrors) {
708
- errors.push(new InBlockPayloadValidationError16(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
834
+ errors.push(new InBlockPayloadValidationError17(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
709
835
  }
710
836
  } catch (ex) {
711
- errors.push(new InBlockPayloadValidationError16(
712
- block?.[0]?._hash ?? ZERO_HASH20,
837
+ errors.push(new InBlockPayloadValidationError17(
838
+ block?.[0]?._hash ?? ZERO_HASH21,
713
839
  block,
714
840
  payload,
715
841
  `Failed validateTransferInBlock: ${String(ex)}`,
@@ -726,6 +852,7 @@ var payloadValidators = {
726
852
  [BridgeIntentSchema]: validateBridgeIntentInBlock,
727
853
  [BridgeSourceObservationSchema]: validateBridgeSourceObservationInBlock,
728
854
  [ChainStakeIntentSchema]: validateChainStakeIntentInBlock,
855
+ [ClaimSchema2]: validateClaimInBlock,
729
856
  [HashSchema]: validateHashInBlock,
730
857
  [SchemaSchema]: validateSchemaInBlock,
731
858
  [SlashAdjudicationSchema]: validateSlashAdjudicationInBlock,
@@ -743,11 +870,11 @@ var validatePayloadInBlock = async (context, payload, block) => {
743
870
  if (validator) {
744
871
  errors.push(...await validator(context, payload, block));
745
872
  } else {
746
- errors.push(new InBlockPayloadValidationError17(block?.[0]?._hash ?? ZERO_HASH21, block, payload, `Unsupported payload schema: ${payload.schema}`));
873
+ errors.push(new InBlockPayloadValidationError18(block?.[0]?._hash ?? ZERO_HASH22, block, payload, `Unsupported payload schema: ${payload.schema}`));
747
874
  }
748
875
  } catch (ex) {
749
- const error2 = new InBlockPayloadValidationError17(
750
- block?.[0]?._hash ?? ZERO_HASH21,
876
+ const error2 = new InBlockPayloadValidationError18(
877
+ block?.[0]?._hash ?? ZERO_HASH22,
751
878
  block,
752
879
  payload,
753
880
  `validation excepted: ${String(ex)}`,
@@ -776,7 +903,7 @@ var PayloadsInBlockValidator = async (context, [block, payloads]) => {
776
903
  const payloadInBlockErrors = await validatePayloadInBlock(context, payload, [block, payloads]);
777
904
  for (const payloadInBlockError of payloadInBlockErrors) {
778
905
  errors.push(new HydratedBlockValidationError(
779
- block?._hash ?? ZERO_HASH22,
906
+ block?._hash ?? ZERO_HASH23,
780
907
  [block, payloads],
781
908
  `validatePayloadInBlock error: ${payloadInBlockError}`,
782
909
  payloadInBlockError
@@ -784,15 +911,15 @@ var PayloadsInBlockValidator = async (context, [block, payloads]) => {
784
911
  }
785
912
  delete remainingPayloads[propertyKey];
786
913
  } else {
787
- errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH22, [block, payloads], `missing payload ${propertyKey} ${schema}`));
914
+ errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH23, [block, payloads], `missing payload ${propertyKey} ${schema}`));
788
915
  }
789
916
  }
790
917
  if (Object.keys(remainingPayloads).length > 0) {
791
- errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH22, [block, payloads], `extra payloads ${Object.keys(payloadMap).join(", ")}`));
918
+ errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH23, [block, payloads], `extra payloads ${Object.keys(payloadMap).join(", ")}`));
792
919
  }
793
920
  } catch (ex) {
794
921
  errors.push(new HydratedBlockValidationError(
795
- block?._hash ?? ZERO_HASH22,
922
+ block?._hash ?? ZERO_HASH23,
796
923
  [block, payloads],
797
924
  `Failed PayloadsInBlockValidator: ${String(ex)}`,
798
925
  ex
@@ -802,7 +929,7 @@ var PayloadsInBlockValidator = async (context, [block, payloads]) => {
802
929
  };
803
930
 
804
931
  // src/modules/validation/hydratedBlock/validators/TransactionTransfersInBlock.ts
805
- import { ZERO_HASH as ZERO_HASH23 } from "@ariestools/sdk";
932
+ import { ZERO_HASH as ZERO_HASH24 } from "@ariestools/sdk";
806
933
  import { isHashMeta as isHashMeta4 } from "@xyo-network/sdk";
807
934
  import { HydratedBlockValidationError as HydratedBlockValidationError2, isTransactionBoundWitness as isTransactionBoundWitness3 } from "@xyo-network/xl1-sdk";
808
935
  function TransactionTransfersInBlockValidatorFactory(transfersValidator) {
@@ -820,7 +947,7 @@ function TransactionTransfersInBlockValidatorFactory(transfersValidator) {
820
947
  }
821
948
  } catch (ex) {
822
949
  errors.push(new HydratedBlockValidationError2(
823
- block?._hash ?? ZERO_HASH23,
950
+ block?._hash ?? ZERO_HASH24,
824
951
  hydratedBlock,
825
952
  `Failed TransactionTransfersInBlockValidator: ${String(ex)}`,
826
953
  ex
@@ -856,7 +983,7 @@ var validateHydratedBlock = async (context, hydratedBlock, chainIdAtBlockNumber,
856
983
  }
857
984
  } catch (ex) {
858
985
  errors.push(new HydratedBlockValidationError3(
859
- hydratedBlock?.[0]?._hash ?? ZERO_HASH24,
986
+ hydratedBlock?.[0]?._hash ?? ZERO_HASH25,
860
987
  hydratedBlock,
861
988
  `Failed validateHydratedBlock: ${String(ex)}`,
862
989
  ex
@@ -866,11 +993,11 @@ var validateHydratedBlock = async (context, hydratedBlock, chainIdAtBlockNumber,
866
993
  };
867
994
 
868
995
  // src/modules/validation/hydratedBlockState/validateHydratedBlockState.ts
869
- import { spanRootAsync as spanRootAsync2, ZERO_HASH as ZERO_HASH26 } from "@ariestools/sdk";
996
+ import { spanRootAsync as spanRootAsync2, ZERO_HASH as ZERO_HASH27 } from "@ariestools/sdk";
870
997
  import { HydratedBlockStateValidationError as HydratedBlockStateValidationError2 } from "@xyo-network/xl1-sdk";
871
998
 
872
999
  // src/modules/validation/hydratedBlockState/validators/RequiredBalance.ts
873
- import { spanRootAsync, ZERO_HASH as ZERO_HASH25 } from "@ariestools/sdk";
1000
+ import { spanRootAsync, ZERO_HASH as ZERO_HASH26 } from "@ariestools/sdk";
874
1001
  import {
875
1002
  AttoXL1,
876
1003
  HydratedBlockStateValidationError,
@@ -904,7 +1031,7 @@ var RequiredBalanceBlockStateValidator = async (context, block) => {
904
1031
  }
905
1032
  const previous = block[0].previous;
906
1033
  if (previous === null) return [new HydratedBlockStateValidationError(
907
- block?.[0]?._hash ?? ZERO_HASH25,
1034
+ block?.[0]?._hash ?? ZERO_HASH26,
908
1035
  "00",
909
1036
  block,
910
1037
  "Insufficient funds because first block"
@@ -918,7 +1045,7 @@ var RequiredBalanceBlockStateValidator = async (context, block) => {
918
1045
  if (address !== XYO_ZERO_ADDRESS && reqBalance > balance) {
919
1046
  const offendingTransactionHashes = offendingTransactionHashesForAddress(block, address);
920
1047
  errors.push(new HydratedBlockStateValidationError(
921
- block?.[0]?._hash ?? ZERO_HASH25,
1048
+ block?.[0]?._hash ?? ZERO_HASH26,
922
1049
  chainId,
923
1050
  block,
924
1051
  `insufficient balance for ${address} ${balance} < ${reqBalance}`,
@@ -930,7 +1057,7 @@ var RequiredBalanceBlockStateValidator = async (context, block) => {
930
1057
  }, context);
931
1058
  } catch (ex) {
932
1059
  errors.push(new HydratedBlockStateValidationError(
933
- block?.[0]?._hash ?? ZERO_HASH25,
1060
+ block?.[0]?._hash ?? ZERO_HASH26,
934
1061
  chainId,
935
1062
  block,
936
1063
  `Failed RequiredBalanceBlockStateValidator: ${String(ex)}`,
@@ -967,7 +1094,7 @@ var validateHydratedBlockState = async (context, hydratedBlock, additionalValida
967
1094
  }
968
1095
  } catch (ex) {
969
1096
  errors.push(new HydratedBlockStateValidationError2(
970
- hydratedBlock?.[0]?._hash ?? ZERO_HASH26,
1097
+ hydratedBlock?.[0]?._hash ?? ZERO_HASH27,
971
1098
  chainId ?? "00",
972
1099
  hydratedBlock,
973
1100
  `Failed validateHydratedBlockState: ${String(ex)}`,
@@ -979,11 +1106,11 @@ var validateHydratedBlockState = async (context, hydratedBlock, additionalValida
979
1106
  };
980
1107
 
981
1108
  // src/modules/validation/hydratedTransactionState/validateHydratedTransactionState.ts
982
- import { spanRootAsync as spanRootAsync4, ZERO_HASH as ZERO_HASH28 } from "@ariestools/sdk";
1109
+ import { spanRootAsync as spanRootAsync4, ZERO_HASH as ZERO_HASH29 } from "@ariestools/sdk";
983
1110
  import { HydratedTransactionValidationError as HydratedTransactionValidationError2 } from "@xyo-network/xl1-sdk";
984
1111
 
985
1112
  // src/modules/validation/hydratedTransactionState/validators/RequiredBalance.ts
986
- import { spanRootAsync as spanRootAsync3, ZERO_HASH as ZERO_HASH27 } from "@ariestools/sdk";
1113
+ import { spanRootAsync as spanRootAsync3, ZERO_HASH as ZERO_HASH28 } from "@ariestools/sdk";
987
1114
  import {
988
1115
  AttoXL1 as AttoXL12,
989
1116
  HydratedTransactionValidationError,
@@ -1008,7 +1135,7 @@ async function balanceShortfallErrors(context, tx, requiredBalances) {
1008
1135
  const balance = balancesByKey[propertyKey] ?? AttoXL12(0n);
1009
1136
  if (address !== XYO_ZERO_ADDRESS2 && reqBalance > balance) {
1010
1137
  errors.push(new HydratedTransactionValidationError(
1011
- tx?.[0]?._hash ?? ZERO_HASH27,
1138
+ tx?.[0]?._hash ?? ZERO_HASH28,
1012
1139
  tx,
1013
1140
  `insufficient balance for ${address} ${balance} < ${reqBalance}`
1014
1141
  ));
@@ -1026,7 +1153,7 @@ var RequiredBalanceTransactionStateValidator = async (context, tx) => {
1026
1153
  const gasRequired = transactionRequiredGas(tx);
1027
1154
  if (wrapper.fees.gasLimit < gasRequired) {
1028
1155
  errors.push(new HydratedTransactionValidationError(
1029
- tx?.[0]?._hash ?? ZERO_HASH27,
1156
+ tx?.[0]?._hash ?? ZERO_HASH28,
1030
1157
  tx,
1031
1158
  `fees.gasLimit ${wrapper.fees.gasLimit} < required gas ${gasRequired}`
1032
1159
  ));
@@ -1044,7 +1171,7 @@ var RequiredBalanceTransactionStateValidator = async (context, tx) => {
1044
1171
  errors.push(...await balanceShortfallErrors(context, tx, requiredBalances));
1045
1172
  } catch (ex) {
1046
1173
  errors.push(new HydratedTransactionValidationError(
1047
- tx?.[0]?._hash ?? ZERO_HASH27,
1174
+ tx?.[0]?._hash ?? ZERO_HASH28,
1048
1175
  tx,
1049
1176
  `Failed RequiredBalanceTransactionStateValidator: ${String(ex)}`,
1050
1177
  ex
@@ -1067,7 +1194,7 @@ var validateHydratedTransactionState = async (context, tx) => {
1067
1194
  }
1068
1195
  } catch (ex) {
1069
1196
  errors.push(new HydratedTransactionValidationError2(
1070
- tx?.[0]?._hash ?? ZERO_HASH28,
1197
+ tx?.[0]?._hash ?? ZERO_HASH29,
1071
1198
  tx,
1072
1199
  `Failed validateHydratedTransactionState: ${String(ex)}`,
1073
1200
  ex