@xyo-network/chain-sdk 5.3.1 → 5.3.2

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 (82) hide show
  1. package/dist/browser/modules/analyze/ChainHeadSelector.d.ts +47 -8
  2. package/dist/browser/modules/analyze/ChainHeadSelector.d.ts.map +1 -1
  3. package/dist/browser/modules/analyze/blockTime.d.ts +92 -0
  4. package/dist/browser/modules/analyze/blockTime.d.ts.map +1 -0
  5. package/dist/browser/modules/analyze/index.d.ts +1 -0
  6. package/dist/browser/modules/analyze/index.d.ts.map +1 -1
  7. package/dist/browser/modules/modules/diviners/index.d.ts +0 -1
  8. package/dist/browser/modules/modules/diviners/index.d.ts.map +1 -1
  9. package/dist/browser/modules/protocol/block/buildBlock.d.ts.map +1 -1
  10. package/dist/browser/modules/protocol/block/createProducerChainStakeIntentTransaction.d.ts +15 -2
  11. package/dist/browser/modules/protocol/block/createProducerChainStakeIntentTransaction.d.ts.map +1 -1
  12. package/dist/browser/modules/services/implementation/processPendingBlocks.d.ts +8 -3
  13. package/dist/browser/modules/services/implementation/processPendingBlocks.d.ts.map +1 -1
  14. package/dist/browser/modules/services/simple/block/runner/SimpleBlockRunner.d.ts +20 -1
  15. package/dist/browser/modules/services/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -1
  16. package/dist/browser/modules/validation/block/validators/index.d.ts +0 -1
  17. package/dist/browser/modules/validation/block/validators/index.d.ts.map +1 -1
  18. package/dist/browser/modules/validation/elevatedPayload/payloads/validateClaimInBlock.d.ts.map +1 -1
  19. package/dist/browser/modules/wrappers/block/HydratedBlock.d.ts.map +1 -1
  20. package/dist/neutral/analyze.mjs +166 -10
  21. package/dist/neutral/analyze.mjs.map +3 -3
  22. package/dist/neutral/modules/analyze/ChainHeadSelector.d.ts +47 -8
  23. package/dist/neutral/modules/analyze/ChainHeadSelector.d.ts.map +1 -1
  24. package/dist/neutral/modules/analyze/blockTime.d.ts +92 -0
  25. package/dist/neutral/modules/analyze/blockTime.d.ts.map +1 -0
  26. package/dist/neutral/modules/analyze/index.d.ts +1 -0
  27. package/dist/neutral/modules/analyze/index.d.ts.map +1 -1
  28. package/dist/neutral/modules/modules/diviners/index.d.ts +0 -1
  29. package/dist/neutral/modules/modules/diviners/index.d.ts.map +1 -1
  30. package/dist/neutral/modules/protocol/block/buildBlock.d.ts.map +1 -1
  31. package/dist/neutral/modules/protocol/block/createProducerChainStakeIntentTransaction.d.ts +15 -2
  32. package/dist/neutral/modules/protocol/block/createProducerChainStakeIntentTransaction.d.ts.map +1 -1
  33. package/dist/neutral/modules/services/implementation/processPendingBlocks.d.ts +8 -3
  34. package/dist/neutral/modules/services/implementation/processPendingBlocks.d.ts.map +1 -1
  35. package/dist/neutral/modules/services/simple/block/runner/SimpleBlockRunner.d.ts +20 -1
  36. package/dist/neutral/modules/services/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -1
  37. package/dist/neutral/modules/validation/block/validators/index.d.ts +0 -1
  38. package/dist/neutral/modules/validation/block/validators/index.d.ts.map +1 -1
  39. package/dist/neutral/modules/validation/elevatedPayload/payloads/validateClaimInBlock.d.ts.map +1 -1
  40. package/dist/neutral/modules/wrappers/block/HydratedBlock.d.ts.map +1 -1
  41. package/dist/neutral/modules.mjs +25 -100
  42. package/dist/neutral/modules.mjs.map +4 -4
  43. package/dist/neutral/protocol.mjs +1 -1
  44. package/dist/neutral/protocol.mjs.map +2 -2
  45. package/dist/neutral/services.mjs +40 -9
  46. package/dist/neutral/services.mjs.map +2 -2
  47. package/dist/neutral/validation.mjs +84 -106
  48. package/dist/neutral/validation.mjs.map +4 -4
  49. package/dist/neutral/wrappers.mjs +2 -1
  50. package/dist/neutral/wrappers.mjs.map +2 -2
  51. package/dist/node/modules/analyze/ChainHeadSelector.d.ts +47 -8
  52. package/dist/node/modules/analyze/ChainHeadSelector.d.ts.map +1 -1
  53. package/dist/node/modules/analyze/blockTime.d.ts +92 -0
  54. package/dist/node/modules/analyze/blockTime.d.ts.map +1 -0
  55. package/dist/node/modules/analyze/index.d.ts +1 -0
  56. package/dist/node/modules/analyze/index.d.ts.map +1 -1
  57. package/dist/node/modules/modules/diviners/index.d.ts +0 -1
  58. package/dist/node/modules/modules/diviners/index.d.ts.map +1 -1
  59. package/dist/node/modules/protocol/block/buildBlock.d.ts.map +1 -1
  60. package/dist/node/modules/protocol/block/createProducerChainStakeIntentTransaction.d.ts +15 -2
  61. package/dist/node/modules/protocol/block/createProducerChainStakeIntentTransaction.d.ts.map +1 -1
  62. package/dist/node/modules/services/implementation/processPendingBlocks.d.ts +8 -3
  63. package/dist/node/modules/services/implementation/processPendingBlocks.d.ts.map +1 -1
  64. package/dist/node/modules/services/simple/block/runner/SimpleBlockRunner.d.ts +20 -1
  65. package/dist/node/modules/services/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -1
  66. package/dist/node/modules/validation/block/validators/index.d.ts +0 -1
  67. package/dist/node/modules/validation/block/validators/index.d.ts.map +1 -1
  68. package/dist/node/modules/validation/elevatedPayload/payloads/validateClaimInBlock.d.ts.map +1 -1
  69. package/dist/node/modules/wrappers/block/HydratedBlock.d.ts.map +1 -1
  70. package/package.json +18 -19
  71. package/dist/browser/modules/modules/diviners/BlockValidationDiviner.d.ts +0 -38
  72. package/dist/browser/modules/modules/diviners/BlockValidationDiviner.d.ts.map +0 -1
  73. package/dist/browser/modules/validation/block/validators/JsonSchema.d.ts +0 -4
  74. package/dist/browser/modules/validation/block/validators/JsonSchema.d.ts.map +0 -1
  75. package/dist/neutral/modules/modules/diviners/BlockValidationDiviner.d.ts +0 -38
  76. package/dist/neutral/modules/modules/diviners/BlockValidationDiviner.d.ts.map +0 -1
  77. package/dist/neutral/modules/validation/block/validators/JsonSchema.d.ts +0 -4
  78. package/dist/neutral/modules/validation/block/validators/JsonSchema.d.ts.map +0 -1
  79. package/dist/node/modules/modules/diviners/BlockValidationDiviner.d.ts +0 -38
  80. package/dist/node/modules/modules/diviners/BlockValidationDiviner.d.ts.map +0 -1
  81. package/dist/node/modules/validation/block/validators/JsonSchema.d.ts +0 -4
  82. package/dist/node/modules/validation/block/validators/JsonSchema.d.ts.map +0 -1
@@ -0,0 +1,92 @@
1
+ import type { Hash, Promisable } from '@ariestools/sdk';
2
+ import type { XyoAddress } from '@xyo-network/sdk';
3
+ import type { HydratedBlock, SignedHydratedBlockWithHashMeta, TimePayload } from '@xyo-network/xl1-sdk';
4
+ /**
5
+ * How far ahead of this observer's clock a candidate's signed epoch may sit before it is refused.
6
+ *
7
+ * Producers and finalizers keep their own clocks, and a candidate reaches the finalizer some time
8
+ * after it was signed, so a strict "not after now" would refuse honest blocks from any producer
9
+ * whose clock runs slightly ahead. The allowance is what keeps this a defense against far-future
10
+ * claims rather than a lockout for imperfect NTP.
11
+ */
12
+ export declare const DEFAULT_MAX_CLOCK_SKEW_MS = 30000;
13
+ /**
14
+ * How many EVM blocks past this observer's EVM head a candidate's anchor may sit before it is refused.
15
+ *
16
+ * Two nodes reading the tip through different RPC providers routinely disagree by a block for a
17
+ * few seconds, and that disagreement is about the observers, not the producer.
18
+ */
19
+ export declare const DEFAULT_MAX_EVM_LEAD_BLOCKS = 2;
20
+ /** The time rules, named so a rejection says which one a candidate failed. */
21
+ export declare const BlockTimeRuleIds: readonly ["time-present", "epoch-after-parent", "epoch-not-future", "anchor-monotonic", "anchor-not-ahead"];
22
+ /** One of the time rules. */
23
+ export type BlockTimeRuleId = typeof BlockTimeRuleIds[number];
24
+ /** What an observer knows about the present, resolved to numbers a rule can compare against. */
25
+ export interface BlockTimeBounds {
26
+ /** The observer's EVM head; absent skips the anchor upper bound. */
27
+ evmHead?: number;
28
+ /** The observer's wall clock, in epoch milliseconds. */
29
+ now: number;
30
+ }
31
+ /** Tolerances the observer-relative rules apply. */
32
+ export interface BlockTimeRuleOptions {
33
+ /** Defaults to {@link DEFAULT_MAX_CLOCK_SKEW_MS}. */
34
+ maxClockSkewMs?: number;
35
+ /** Defaults to {@link DEFAULT_MAX_EVM_LEAD_BLOCKS}. */
36
+ maxEvmLeadBlocks?: number;
37
+ }
38
+ /**
39
+ * How a head selector reaches the present: readers rather than values, because a selection pass
40
+ * resolves them once, lazily, and only when a candidate makes the corresponding claim.
41
+ */
42
+ export interface BlockTimeRuleParams extends BlockTimeRuleOptions {
43
+ /** Reads the observer's EVM head; absent, or answering undefined, skips the anchor upper bound. */
44
+ evmHead?: () => Promisable<number | undefined>;
45
+ /** The observer's wall clock. Injectable for tests. */
46
+ now?: () => number;
47
+ /** Told once per distinct candidate a rule refused. */
48
+ onRejection?: (rejection: BlockTimeRejection) => void;
49
+ }
50
+ /** A candidate a time rule refused, with enough context to explain it. */
51
+ export interface BlockTimeRejection {
52
+ /** The candidate's height. */
53
+ block: number;
54
+ /** What specifically was wrong. */
55
+ detail: string;
56
+ /** The candidate's hash. */
57
+ hash: Hash;
58
+ /** Who produced it. */
59
+ producer?: XyoAddress;
60
+ /** Which rule. */
61
+ rule: BlockTimeRuleId;
62
+ }
63
+ /** The signed time payload a block carries, when it has one. */
64
+ export declare function timePayloadOfBlock(block: HydratedBlock): TimePayload | undefined;
65
+ /**
66
+ * The epoch a block's signed time payload claims, in milliseconds.
67
+ *
68
+ * Deliberately no fallback to the unsigned `$epoch` meta (unlike `epochOfBlock` in xl1-sdk, which
69
+ * reads history): everything here gates on the answer, and a gate must not accept a claim the
70
+ * producer never signed.
71
+ */
72
+ export declare function signedEpochOfBlock(block: HydratedBlock): number | undefined;
73
+ /** The EVM height a block's signed time payload claims, when it claims one. */
74
+ export declare function evmAnchorOfBlock(block: HydratedBlock): number | undefined;
75
+ /**
76
+ * Checks a candidate's signed time claims against its parent and against the observer.
77
+ *
78
+ * Every rule reads the candidate's own signed time payload, the one statement about a block's
79
+ * timing its producer cannot alter after signing. The parent-relative rules are deterministic:
80
+ * two finalizers holding the same pair reach the same verdict whenever they ask. The
81
+ * observer-relative rules are not, and are tolerant on purpose. They exist to refuse claims no
82
+ * honest clock or EVM view could have produced, not to arbitrate between two nodes' slightly
83
+ * different ideas of the present. That is also why they belong in head selection rather than in
84
+ * protocol validation: whether a block is valid must not depend on who looked, or when.
85
+ * @param candidate The block under consideration
86
+ * @param parent The block it builds on, when known; absent skips the parent-relative rules
87
+ * @param bounds What the observer knows about the present
88
+ * @param options Tolerances for the observer-relative rules
89
+ * @returns The first rule the candidate failed, or undefined when every rule holds
90
+ */
91
+ export declare function evaluateBlockTime(candidate: SignedHydratedBlockWithHashMeta, parent: HydratedBlock | undefined, bounds: BlockTimeBounds, options?: BlockTimeRuleOptions): BlockTimeRejection | undefined;
92
+ //# sourceMappingURL=blockTime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockTime.d.ts","sourceRoot":"","sources":["../../../../src/modules/analyze/blockTime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EACV,aAAa,EAAE,+BAA+B,EAAE,WAAW,EAC5D,MAAM,sBAAsB,CAAA;AAG7B;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,QAAS,CAAA;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,IAAI,CAAA;AAE5C,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB,6GAEnB,CAAA;AAEV,6BAA6B;AAC7B,MAAM,MAAM,eAAe,GAAG,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAA;AAE7D,gGAAgG;AAChG,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wDAAwD;IACxD,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,oDAAoD;AACpD,MAAM,WAAW,oBAAoB;IACnC,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;IAC/D,mGAAmG;IACnG,OAAO,CAAC,EAAE,MAAM,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;IAC9C,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,uDAAuD;IACvD,WAAW,CAAC,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,IAAI,CAAA;CACtD;AAED,0EAA0E;AAC1E,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,4BAA4B;IAC5B,IAAI,EAAE,IAAI,CAAA;IACV,uBAAuB;IACvB,QAAQ,CAAC,EAAE,UAAU,CAAA;IACrB,kBAAkB;IAClB,IAAI,EAAE,eAAe,CAAA;CACtB;AAID,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,GAAG,SAAS,CAEhF;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAE3E;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAEzE;AA6CD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,+BAA+B,EAC1C,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE,oBAAyB,GACjC,kBAAkB,GAAG,SAAS,CAiBhC"}
@@ -1,6 +1,7 @@
1
1
  export * from './admission.js';
2
2
  export * from './analyzeChain.js';
3
3
  export * from './BalanceAnalyzer/index.js';
4
+ export * from './blockTime.js';
4
5
  export * from './ChainFinalizer.js';
5
6
  export * from './ChainHeadSelector.js';
6
7
  export * from './producer/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/analyze/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/analyze/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,6BAA6B,CAAA"}
@@ -1,4 +1,3 @@
1
1
  export * from './BlockReward/index.js';
2
- export * from './BlockValidationDiviner.js';
3
2
  export * from './HeadValidationDiviner.js';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/modules/diviners/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,4BAA4B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/modules/diviners/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,cAAc,4BAA4B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildBlock.d.ts","sourceRoot":"","sources":["../../../../../src/modules/protocol/block/buildBlock.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACS,+BAA+B,EACnD,MAAM,sBAAsB,CAAA;AAY7B,OAAO,EACL,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAA;AA6B/B,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAsErG"}
1
+ {"version":3,"file":"buildBlock.d.ts","sourceRoot":"","sources":["../../../../../src/modules/protocol/block/buildBlock.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACS,+BAA+B,EACnD,MAAM,sBAAsB,CAAA;AAY7B,OAAO,EACL,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAA;AA6B/B,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAuErG"}
@@ -1,7 +1,20 @@
1
1
  import type { Address } from '@ariestools/sdk';
2
2
  import type { AccountInstance } from '@xyo-network/sdk';
3
- import type { ChainId, ChainStakeIntent, HydratedTransactionWithHashMeta, XL1BlockNumber } from '@xyo-network/xl1-sdk';
4
- export declare function createProducerChainStakeIntent(from: Address, exp: number, nbf?: number): Promise<import("@xyo-network/sdk").WithHashMeta<ChainStakeIntent>>;
3
+ import type { ChainId, HydratedTransactionWithHashMeta, XL1BlockNumber } from '@xyo-network/xl1-sdk';
4
+ export declare function createProducerChainStakeIntent(from: Address, exp: number, nbf?: number): Promise<import("@xyo-network/sdk").WithHashMeta<{
5
+ schema: "network.xyo.chain.stake.intent" & {
6
+ readonly __schema: true;
7
+ };
8
+ exp: number;
9
+ from: import("@xyo-network/sdk").XyoQuantAddress | (Lowercase<string> & {
10
+ readonly __hex: true;
11
+ } & {
12
+ readonly __address: true;
13
+ });
14
+ intent: "producer";
15
+ nbf: number;
16
+ $version?: number | undefined;
17
+ }>>;
5
18
  export declare function createProducerChainStakeIntentTransaction(chain: ChainId, signers: AccountInstance[] | undefined, producer: Address, exp: XL1BlockNumber, nbf?: 0 & {
6
19
  readonly __blockNumber: true;
7
20
  } & {
@@ -1 +1 @@
1
- {"version":3,"file":"createProducerChainStakeIntentTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/modules/protocol/block/createProducerChainStakeIntentTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,KAAK,EACV,OAAO,EACP,gBAAgB,EAChB,+BAA+B,EAC/B,cAAc,EACf,MAAM,sBAAsB,CAAA;AAM7B,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,SAAI,sEAQvF;AAED,wBAAsB,yCAAyC,CAC7D,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,eAAe,EAAE,YAAK,EAC/B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,cAAc,EACnB,GAAG;;;;CAA4B,EAC/B,IAAI;;;;;CAAyB,GAC5B,OAAO,CAAC,+BAA+B,CAAC,CAc1C"}
1
+ {"version":3,"file":"createProducerChainStakeIntentTransaction.d.ts","sourceRoot":"","sources":["../../../../../src/modules/protocol/block/createProducerChainStakeIntentTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,KAAK,EACV,OAAO,EAEP,+BAA+B,EAC/B,cAAc,EACf,MAAM,sBAAsB,CAAA;AAM7B,wBAAsB,8BAA8B,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,SAAI;;;;;;;;;;;;;IAQvF;AAED,wBAAsB,yCAAyC,CAC7D,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,eAAe,EAAE,YAAK,EAC/B,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,cAAc,EACnB,GAAG;;;;CAA4B,EAC/B,IAAI;;;;;CAAyB,GAC5B,OAAO,CAAC,+BAA+B,CAAC,CAc1C"}
@@ -1,7 +1,7 @@
1
1
  import type { Address, Logger } from '@ariestools/sdk';
2
2
  import type { AccountInstance } from '@xyo-network/sdk';
3
3
  import type { BaseContext, BlockValidationViewer, BlockViewer, DeadLetterQueueRunner, FinalizationRunner, MempoolViewer } from '@xyo-network/xl1-sdk';
4
- import type { AdmissionMode, AdmissionShadowReport, ProducerEligibilityEvaluator } from '../../analyze/index.js';
4
+ import type { AdmissionMode, AdmissionShadowReport, BlockTimeRuleParams, ProducerEligibilityEvaluator } from '../../analyze/index.js';
5
5
  interface ProcessPendingBlocksParams {
6
6
  /** How candidates are admitted; defaults to the allow-list the chain runs on today. */
7
7
  admission?: AdmissionMode;
@@ -29,8 +29,13 @@ interface ProcessPendingBlocksParams {
29
29
  observer?: AccountInstance;
30
30
  /** Where to publish what both admission gates concluded, in shadow posture. */
31
31
  publishAdmissionShadow?: (report: AdmissionShadowReport) => Promise<void>;
32
+ /**
33
+ * What this node knows about the present, against which every candidate's signed time claims
34
+ * are bounded by the head selector. Undefined disables the time rules.
35
+ */
36
+ timeRules?: BlockTimeRuleParams;
32
37
  }
33
- export declare function processPendingBlocks({ blockValidationViewer, blockViewer, context, logger, mempoolViewer, finalizationRunner, allowedProducers, backoffMs, heartbeatInterval, minCandidates, deadLetterQueueRunner, observer, admission, eligibility, publishAdmissionShadow, }: ProcessPendingBlocksParams): Promise<[{
38
+ export declare function processPendingBlocks({ blockValidationViewer, blockViewer, context, logger, mempoolViewer, finalizationRunner, allowedProducers, backoffMs, heartbeatInterval, minCandidates, deadLetterQueueRunner, observer, admission, eligibility, publishAdmissionShadow, timeRules, }: ProcessPendingBlocksParams): Promise<[{
34
39
  schema: "network.xyo.boundwitness" & {
35
40
  readonly __schema: true;
36
41
  };
@@ -46,7 +51,6 @@ export declare function processPendingBlocks({ blockValidationViewer, blockViewe
46
51
  block: import("@xyo-network/xl1-sdk").XL1BlockNumber;
47
52
  chain: import("@ariestools/sdk").BrandedHex;
48
53
  previous: import("@ariestools/sdk").BrandedHash | null;
49
- $epoch: number;
50
54
  _hash: import("@ariestools/sdk").BrandedHash;
51
55
  _dataHash: import("@ariestools/sdk").BrandedHash;
52
56
  $destination?: import("@xyo-network/sdk").XyoQuantAddress | (Lowercase<string> & {
@@ -58,6 +62,7 @@ export declare function processPendingBlocks({ blockValidationViewer, blockViewe
58
62
  protocol?: number | undefined;
59
63
  step_hashes?: import("@ariestools/sdk").BrandedHash[] | undefined;
60
64
  supersedes?: import("@ariestools/sdk").BrandedHash | undefined;
65
+ $epoch?: number | undefined;
61
66
  $version?: 1000000 | undefined;
62
67
  }, {
63
68
  [x: string]: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"processPendingBlocks.d.ts","sourceRoot":"","sources":["../../../../../src/modules/services/implementation/processPendingBlocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EACV,WAAW,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,kBAAkB,EAA6B,aAAa,EACrI,MAAM,sBAAsB,CAAA;AAK7B,OAAO,KAAK,EACV,aAAa,EAAE,qBAAqB,EAAE,4BAA4B,EACnE,MAAM,UAAU,CAAA;AAKjB,UAAU,0BAA0B;IAClC,uFAAuF;IACvF,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,WAAW,CAAA;IACpB,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,uEAAuE;IACvE,WAAW,CAAC,EAAE,4BAA4B,CAAA;IAC1C,kBAAkB,EAAE,kBAAkB,CAAA;IACtC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,aAAa,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1E;AAgCD,wBAAsB,oBAAoB,CAAC,EACzC,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EACtL,SAAS,EAAE,WAAW,EAAE,sBAAsB,GAC/C,EAAE,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA4E5B"}
1
+ {"version":3,"file":"processPendingBlocks.d.ts","sourceRoot":"","sources":["../../../../../src/modules/services/implementation/processPendingBlocks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAEtD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,KAAK,EACV,WAAW,EAAE,qBAAqB,EAAE,WAAW,EAAE,qBAAqB,EAAE,kBAAkB,EAA6B,aAAa,EACrI,MAAM,sBAAsB,CAAA;AAK7B,OAAO,KAAK,EACV,aAAa,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,4BAA4B,EACxF,MAAM,UAAU,CAAA;AAKjB,UAAU,0BAA0B;IAClC,uFAAuF;IACvF,SAAS,CAAC,EAAE,aAAa,CAAA;IACzB,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAA;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,WAAW,CAAA;IACpB,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IAC7C,uEAAuE;IACvE,WAAW,CAAC,EAAE,4BAA4B,CAAA;IAC1C,kBAAkB,EAAE,kBAAkB,CAAA;IACtC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,aAAa,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE;;;OAGG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAA;CAChC;AAgCD,wBAAsB,oBAAoB,CAAC,EACzC,qBAAqB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,aAAa,EAAE,qBAAqB,EAAE,QAAQ,EACtL,SAAS,EAAE,WAAW,EAAE,sBAAsB,EAAE,SAAS,GAC1D,EAAE,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA6E5B"}
@@ -75,6 +75,7 @@ export declare class SimpleBlockRunner extends AbstractCreatableProvider<SimpleB
75
75
  private _blockValidationViewer?;
76
76
  private _chainParamsViewer?;
77
77
  private _finalizationViewer?;
78
+ private _headEpochCache?;
78
79
  private _lastRejectedBuildAt;
79
80
  /** Cache of the last candidate this runner signed; the mempool is the source of truth. */
80
81
  private _lastSignedCandidate?;
@@ -143,7 +144,6 @@ export declare class SimpleBlockRunner extends AbstractCreatableProvider<SimpleB
143
144
  block: import("@xyo-network/xl1-sdk").XL1BlockNumber;
144
145
  chain: import("@ariestools/sdk").BrandedHex;
145
146
  previous: import("@ariestools/sdk").BrandedHash | null;
146
- $epoch: number;
147
147
  _hash: import("@ariestools/sdk").BrandedHash;
148
148
  _dataHash: import("@ariestools/sdk").BrandedHash;
149
149
  $destination?: import("@xyo-network/sdk").XyoQuantAddress | (Lowercase<string> & {
@@ -155,6 +155,7 @@ export declare class SimpleBlockRunner extends AbstractCreatableProvider<SimpleB
155
155
  protocol?: number | undefined;
156
156
  step_hashes?: import("@ariestools/sdk").BrandedHash[] | undefined;
157
157
  supersedes?: import("@ariestools/sdk").BrandedHash | undefined;
158
+ $epoch?: number | undefined;
158
159
  $version?: 1000000 | undefined;
159
160
  }, {
160
161
  [x: string]: unknown;
@@ -183,8 +184,26 @@ export declare class SimpleBlockRunner extends AbstractCreatableProvider<SimpleB
183
184
  private evictStaleExclusions;
184
185
  private filterByFunded;
185
186
  private generateTimePayload;
187
+ /**
188
+ * The head's signed epoch, read once per head.
189
+ *
190
+ * It comes from the head's own time payload, by way of the time sync viewer, rather than from the
191
+ * unsigned `$epoch` meta on the bound witness: the finalizer paces heartbeats by the signed
192
+ * epoch, and a producer pacing itself by anything else would drift from what qualifies. The
193
+ * viewer may be remote, and a head lasts many ticks, so the answer is cached until the head moves.
194
+ * A read failure is not cached — the next tick asks again — and reads as "no epoch", which errs
195
+ * toward heartbeating rather than toward silence.
196
+ * @param head The current head block
197
+ * @returns The head's signed epoch, or undefined when the head carries none or it could not be read
198
+ */
199
+ private headEpoch;
186
200
  /**
187
201
  * Check if a heartbeat block is required based on network activity.
202
+ *
203
+ * A head with no signed epoch — the genesis block, or a head that predates the time payload —
204
+ * cannot be aged, and the chain needs a block to establish its clock, so a heartbeat is due at
205
+ * once rather than never. The finalizer's pacing agrees: it only paces against a head that has
206
+ * a signed epoch.
188
207
  * @param head The current head block
189
208
  * @returns True if a heartbeat is required, false otherwise
190
209
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SimpleBlockRunner.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/services/simple/block/runner/SimpleBlockRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SimpleBlockRunner.d.ts","sourceRoot":"","sources":["../../../../../../../src/modules/services/simple/block/runner/SimpleBlockRunner.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  export * from './AllowedPayloadSchemas.js';
2
2
  export * from './BoundWitness.js';
3
3
  export * from './Fields.js';
4
- export * from './JsonSchema.js';
5
4
  export * from './PreviousHash.js';
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/validation/block/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/validation/block/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mBAAmB,CAAA;AACjC,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"validateClaimInBlock.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/validation/elevatedPayload/payloads/validateClaimInBlock.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACwB,gCAAgC,EAEnE,MAAM,sBAAsB,CAAA;AAsH7B,gGAAgG;AAChG,eAAO,MAAM,oBAAoB,EAAE,gCAsClC,CAAA"}
1
+ {"version":3,"file":"validateClaimInBlock.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/validation/elevatedPayload/payloads/validateClaimInBlock.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACwB,gCAAgC,EAEnE,MAAM,sBAAsB,CAAA;AA2I7B,gGAAgG;AAChG,eAAO,MAAM,oBAAoB,EAAE,gCAqClC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"HydratedBlock.d.ts","sourceRoot":"","sources":["../../../../../src/modules/wrappers/block/HydratedBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,KAAK,EACV,oBAAoB,EACpB,WAAW,EACX,qBAAqB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,iBAAiB,EAEjG,MAAM,sBAAsB,CAAA;AAiB7B,qBAAa,oBAAoB,CAAC,CAAC,SAAS,yBAAyB,CAAE,YAAW,qBAAqB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACzJ,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;IACxD,SAAS,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAK;IAC7D,SAAS,CAAC,OAAO,EAAE,WAAW,CAAA;IAC9B,SAAS,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,CAAK;IAC/D,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,eAAe,CAA0B;IAEjD,SAAS,aAAa,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW;IAKrG,IAAI,KAAK,kDAER;IAED,IAAI,YAAY,uBAEf;IAED,IAAI,KAAK,IAAI,GAAG,CAEf;IAED,IAAI,WAAW,YAEd;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAE7B;IAED,IAAI,MAAM,IAAI,MAAM,CAGnB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,UAAU,IAAI,iBAAiB,EAAE,CAEpC;IAED,IAAI,UAAU,IAAI,IAAI,EAAE,CAEvB;IAED,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,IAAI,YAAY,IAAI,2BAA2B,EAAE,CAEhD;WAEY,KAAK,CAAC,CAAC,SAAS,yBAAyB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAKnH,OAAO,CAAC,KAAK,EAAE,MAAM;IAIrB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIvD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,2BAA2B,GAAG,SAAS;IAI7D,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAI5B,aAAa,CAAC,QAAQ,EAAE;QAAE,cAAc,EAAE,oBAAoB,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;cAMzE,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAkB5H"}
1
+ {"version":3,"file":"HydratedBlock.d.ts","sourceRoot":"","sources":["../../../../../src/modules/wrappers/block/HydratedBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,KAAK,EACV,oBAAoB,EACpB,WAAW,EACX,qBAAqB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,iBAAiB,EAEjG,MAAM,sBAAsB,CAAA;AAe7B,qBAAa,oBAAoB,CAAC,CAAC,SAAS,yBAAyB,CAAE,YAAW,qBAAqB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;IACzJ,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;IACxD,SAAS,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAK;IAC7D,SAAS,CAAC,OAAO,EAAE,WAAW,CAAA;IAC9B,SAAS,CAAC,iBAAiB,EAAE,2BAA2B,EAAE,CAAK;IAC/D,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,eAAe,CAA0B;IAEjD,SAAS,aAAa,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW;IAKrG,IAAI,KAAK,kDAER;IAED,IAAI,YAAY,uBAEf;IAED,IAAI,KAAK,IAAI,GAAG,CAEf;IAED,IAAI,WAAW,YAEd;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAE7B;IAED,IAAI,MAAM,IAAI,MAAM,CAGnB;IAED,IAAI,cAAc,IAAI,MAAM,CAE3B;IAED,IAAI,UAAU,IAAI,iBAAiB,EAAE,CAEpC;IAED,IAAI,UAAU,IAAI,IAAI,EAAE,CAEvB;IAED,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAED,IAAI,YAAY,IAAI,2BAA2B,EAAE,CAEhD;WAEY,KAAK,CAAC,CAAC,SAAS,yBAAyB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,UAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAKnH,OAAO,CAAC,KAAK,EAAE,MAAM;IAIrB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIvD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,2BAA2B,GAAG,SAAS;IAI7D,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;IAK5B,aAAa,CAAC,QAAQ,EAAE;QAAE,cAAc,EAAE,oBAAoB,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;cAOzE,KAAK,CAAC,QAAQ,UAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAkB5H"}
@@ -132,96 +132,23 @@ var countDecimalPlaces = (num) => {
132
132
  return decimalIndex === -1 ? 0 : numStr.length - decimalIndex - 1;
133
133
  };
134
134
 
135
- // src/modules/modules/diviners/BlockValidationDiviner.ts
135
+ // src/modules/modules/diviners/HeadValidationDiviner.ts
136
136
  import {
137
137
  assertEx as assertEx2,
138
- exists as exists2,
139
- isString
138
+ isDefined as isDefined2,
139
+ toAddress
140
140
  } from "@ariestools/sdk";
141
141
  import {
142
142
  AbstractDiviner as AbstractDiviner2,
143
143
  asArchivistInstance,
144
144
  asSchema as asSchema4,
145
- creatableModule as creatableModule2,
146
- PayloadBuilder as PayloadBuilder2
147
- } from "@xyo-network/sdk";
148
- import { asBlockBoundWitness, hydrateBlock } from "@xyo-network/xl1-sdk";
149
- import { BlockJsonSchemaValidator, validateHydratedBlock } from "#validation";
150
- var BlockValidationDivinerConfigSchema = asSchema4("network.xyo.diviner.chain.block.validation.config", true);
151
- var BlockValidationDiviner = class extends AbstractDiviner2 {
152
- _inArchivist;
153
- _outArchivist;
154
- get chainId() {
155
- return assertEx2(this.config.chainId, () => "Missing chainId");
156
- }
157
- get context() {
158
- return assertEx2(this.params.context, () => "Missing context");
159
- }
160
- async resolveInArchivist() {
161
- const resolvedModule = assertEx2(
162
- await this.resolve(assertEx2(this.config.inArchivist, () => "Missing inArchivist")),
163
- () => `Unable to resolve inArchivist [${this.config.inArchivist}]`
164
- );
165
- const resolvedArchivist = assertEx2(asArchivistInstance(resolvedModule), () => "Invalid inArchivist resolved");
166
- this._inArchivist = resolvedArchivist;
167
- return this._inArchivist;
168
- }
169
- async resolveOutArchivist() {
170
- const resolvedModule = assertEx2(
171
- await this.resolve(assertEx2(this.config.outArchivist, () => "Missing outArchivist")),
172
- () => `Unable to resolve outArchivist [${this.config.outArchivist}]`
173
- );
174
- const resolvedArchivist = assertEx2(asArchivistInstance(resolvedModule), () => "Invalid outArchivist resolved");
175
- this._outArchivist = resolvedArchivist;
176
- return this._outArchivist;
177
- }
178
- async divineHandler(payloads) {
179
- const inArchivist = await this.resolveInArchivist();
180
- const inMap = inArchivist;
181
- const blocks = (payloads ?? []).map((b) => asBlockBoundWitness(b)).filter(exists2);
182
- const validationResults = await Promise.all(blocks.map(async (block) => {
183
- const blockHash = await PayloadBuilder2.hash(block);
184
- const hydratedBlock = await hydrateBlock({
185
- ...this.context,
186
- chainMap: inMap,
187
- caches: this.context.caches ?? {}
188
- }, blockHash);
189
- const validationErrors = await validateHydratedBlock(this.context, hydratedBlock, () => this.chainId, [], [BlockJsonSchemaValidator()]);
190
- return validationErrors.length === 0 ? block : void 0;
191
- }));
192
- const results = validationResults.filter(exists2);
193
- if (isString(this.config.outArchivist)) {
194
- const outArchivist = await this.resolveOutArchivist();
195
- if (results?.length > 0) {
196
- await outArchivist.insert(results);
197
- }
198
- }
199
- return results;
200
- }
201
- };
202
- __publicField(BlockValidationDiviner, "configSchemas", [...__superGet(BlockValidationDiviner, BlockValidationDiviner, "configSchemas"), BlockValidationDivinerConfigSchema]);
203
- __publicField(BlockValidationDiviner, "targetSchema", BlockValidationDivinerConfigSchema);
204
- BlockValidationDiviner = __decorateClass([
205
- creatableModule2()
206
- ], BlockValidationDiviner);
207
-
208
- // src/modules/modules/diviners/HeadValidationDiviner.ts
209
- import {
210
- assertEx as assertEx3,
211
- isDefined as isDefined2,
212
- toAddress
213
- } from "@ariestools/sdk";
214
- import {
215
- AbstractDiviner as AbstractDiviner3,
216
- asArchivistInstance as asArchivistInstance2,
217
- asSchema as asSchema5,
218
- creatableModule as creatableModule3
145
+ creatableModule as creatableModule2
219
146
  } from "@xyo-network/sdk";
220
147
  import { flattenHydratedBlock } from "@xyo-network/xl1-sdk";
221
148
  import { Mutex } from "async-mutex";
222
149
  import { ChainHeadSelector } from "#analyze";
223
- var HeadValidationDivinerConfigSchema = asSchema5("network.xyo.diviner.chain.head.validation.config", true);
224
- var HeadValidationDiviner = class extends AbstractDiviner3 {
150
+ var HeadValidationDivinerConfigSchema = asSchema4("network.xyo.diviner.chain.head.validation.config", true);
151
+ var HeadValidationDiviner = class extends AbstractDiviner2 {
225
152
  _context;
226
153
  _headValidationDivinerHeadUpdateTotal;
227
154
  _headSelector;
@@ -232,19 +159,19 @@ var HeadValidationDiviner = class extends AbstractDiviner3 {
232
159
  return this.params.allowedProducers ?? this.config.allowedProducers ?? [];
233
160
  }
234
161
  get blockViewer() {
235
- return assertEx3(this.params.blockViewer, () => "Missing block viewer");
162
+ return assertEx2(this.params.blockViewer, () => "Missing block viewer");
236
163
  }
237
164
  get chainId() {
238
- return assertEx3(this.params.chainId ?? this.config.chainId, () => "Missing chain information");
165
+ return assertEx2(this.params.chainId ?? this.config.chainId, () => "Missing chain information");
239
166
  }
240
167
  get context() {
241
168
  return this._context;
242
169
  }
243
170
  get headSelector() {
244
- return assertEx3(this._headSelector, () => "Missing head selector");
171
+ return assertEx2(this._headSelector, () => "Missing head selector");
245
172
  }
246
173
  get mempoolViewer() {
247
- return assertEx3(this.params.mempoolViewer, () => "Missing mempool viewer");
174
+ return assertEx2(this.params.mempoolViewer, () => "Missing mempool viewer");
248
175
  }
249
176
  async createHandler() {
250
177
  await super.createHandler();
@@ -263,11 +190,11 @@ var HeadValidationDiviner = class extends AbstractDiviner3 {
263
190
  }
264
191
  async resolveOutArchivist() {
265
192
  if (this._outArchivist) return this._outArchivist;
266
- const resolvedModule = assertEx3(
267
- await this.resolve(assertEx3(this.config.outArchivist, () => "Missing outArchivist")),
193
+ const resolvedModule = assertEx2(
194
+ await this.resolve(assertEx2(this.config.outArchivist, () => "Missing outArchivist")),
268
195
  () => `Unable to resolve outArchivist [${this.config.outArchivist}]`
269
196
  );
270
- const resolvedArchivist = assertEx3(asArchivistInstance2(resolvedModule), () => "Invalid outArchivist resolved");
197
+ const resolvedArchivist = assertEx2(asArchivistInstance(resolvedModule), () => "Invalid outArchivist resolved");
271
198
  this._outArchivist = resolvedArchivist;
272
199
  return this._outArchivist;
273
200
  }
@@ -281,7 +208,7 @@ var HeadValidationDiviner = class extends AbstractDiviner3 {
281
208
  if (isDefined2(bestHeadChain)) {
282
209
  const outArchivist = await this.resolveOutArchivist();
283
210
  const oldHeadBlock = this._startingHead?.[0];
284
- const newHydratedHeadBlock = assertEx3(bestHeadChain.at(-1), () => "Missing best head block [HeadValidationDiviner]");
211
+ const newHydratedHeadBlock = assertEx2(bestHeadChain.at(-1), () => "Missing best head block [HeadValidationDiviner]");
285
212
  const newHeadBlock = newHydratedHeadBlock[0];
286
213
  let finalizedBlocksAttributes = [];
287
214
  this.logger?.debug("Validating new HeadBlock head from (block) ", oldHeadBlock?.block, "to", newHeadBlock.block);
@@ -321,24 +248,24 @@ var HeadValidationDiviner = class extends AbstractDiviner3 {
321
248
  __publicField(HeadValidationDiviner, "configSchemas", [...__superGet(HeadValidationDiviner, HeadValidationDiviner, "configSchemas"), HeadValidationDivinerConfigSchema]);
322
249
  __publicField(HeadValidationDiviner, "targetSchema", HeadValidationDivinerConfigSchema);
323
250
  HeadValidationDiviner = __decorateClass([
324
- creatableModule3()
251
+ creatableModule2()
325
252
  ], HeadValidationDiviner);
326
253
 
327
254
  // src/modules/modules/witnesses/ArchivistNextWitness.ts
328
- import { assertEx as assertEx4 } from "@ariestools/sdk";
255
+ import { assertEx as assertEx3 } from "@ariestools/sdk";
329
256
  import {
330
257
  AbstractWitness,
331
- asArchivistInstance as asArchivistInstance3,
332
- asSchema as asSchema6
258
+ asArchivistInstance as asArchivistInstance2,
259
+ asSchema as asSchema5
333
260
  } from "@xyo-network/sdk";
334
- var ArchivistNextWitnessConfigSchema = asSchema6("network.xyo.witness.archivist.next.config", true);
261
+ var ArchivistNextWitnessConfigSchema = asSchema5("network.xyo.witness.archivist.next.config", true);
335
262
  var ArchivistNextWitness = class extends AbstractWitness {
336
263
  static configSchemas = [...super.configSchemas, ArchivistNextWitnessConfigSchema];
337
264
  static defaultConfigSchema = ArchivistNextWitnessConfigSchema;
338
265
  _cursor;
339
266
  async getSourceArchivist() {
340
- return assertEx4(asArchivistInstance3(
341
- await this.resolve(assertEx4(this.config.sourceArchivist, () => "Missing sourceArchivist"))
267
+ return assertEx3(asArchivistInstance2(
268
+ await this.resolve(assertEx3(this.config.sourceArchivist, () => "Missing sourceArchivist"))
342
269
  ), () => "Invalid sourceArchivist");
343
270
  }
344
271
  async observeHandler() {
@@ -355,10 +282,10 @@ var ArchivistNextWitness = class extends AbstractWitness {
355
282
  // src/modules/modules/witnesses/NetworkStake/NetworkStake.ts
356
283
  import { AsObjectFactory as AsObjectFactory2 } from "@ariestools/sdk";
357
284
  import {
358
- asSchema as asSchema7,
285
+ asSchema as asSchema6,
359
286
  isPayloadOfSchemaType as isPayloadOfSchemaType2
360
287
  } from "@xyo-network/sdk";
361
- var WeightedNetworkStakeSchema = asSchema7("network.xyo.witness.chain.stake.network.weighted", true);
288
+ var WeightedNetworkStakeSchema = asSchema6("network.xyo.witness.chain.stake.network.weighted", true);
362
289
  var isWeightedNetworkStake = isPayloadOfSchemaType2(WeightedNetworkStakeSchema);
363
290
  var asWeightedNetworkStakePayload = AsObjectFactory2.create(isWeightedNetworkStake);
364
291
  var asWeightedNetworkStakePayloadWithStorageMeta = AsObjectFactory2.create(isWeightedNetworkStake);
@@ -366,10 +293,10 @@ var asWeightedNetworkStakePayloadWithStorageMeta = AsObjectFactory2.create(isWei
366
293
  // src/modules/modules/witnesses/NetworkStake/NetworkStakeObserve.ts
367
294
  import { AsObjectFactory as AsObjectFactory3 } from "@ariestools/sdk";
368
295
  import {
369
- asSchema as asSchema8,
296
+ asSchema as asSchema7,
370
297
  isPayloadOfSchemaType as isPayloadOfSchemaType3
371
298
  } from "@xyo-network/sdk";
372
- var NetworkStakeObserveSchema = asSchema8("network.xyo.witness.chain.stake.network.observe", true);
299
+ var NetworkStakeObserveSchema = asSchema7("network.xyo.witness.chain.stake.network.observe", true);
373
300
  var isNetworkStakeObserve = isPayloadOfSchemaType3(NetworkStakeObserveSchema);
374
301
  var asNetworkStakeObservePayload = AsObjectFactory3.create(isNetworkStakeObserve);
375
302
  var asNetworkStakeObservePayloadWithStorageMeta = AsObjectFactory3.create(isNetworkStakeObserve);
@@ -379,8 +306,6 @@ export {
379
306
  BlockRewardDiviner,
380
307
  BlockRewardDivinerConfigSchema,
381
308
  BlockRewardSchema,
382
- BlockValidationDiviner,
383
- BlockValidationDivinerConfigSchema,
384
309
  FixedPercentageBlockRewardDiviner,
385
310
  FixedPercentageBlockRewardDivinerConfigSchema,
386
311
  HeadValidationDiviner,