@xyo-network/chain-validation 1.20.28 → 1.20.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/neutral/block/validateBlock.d.ts.map +1 -1
- package/dist/neutral/block/validators/BoundWitness.d.ts +11 -0
- package/dist/neutral/block/validators/BoundWitness.d.ts.map +1 -0
- package/dist/neutral/block/validators/index.d.ts +1 -0
- package/dist/neutral/block/validators/index.d.ts.map +1 -1
- package/dist/neutral/hydratedTransactionState/index.d.ts +3 -0
- package/dist/neutral/hydratedTransactionState/index.d.ts.map +1 -0
- package/dist/neutral/hydratedTransactionState/validateHydratedTransactionState.d.ts +3 -0
- package/dist/neutral/hydratedTransactionState/validateHydratedTransactionState.d.ts.map +1 -0
- package/dist/neutral/hydratedTransactionState/validators/RequiredBalance.d.ts +3 -0
- package/dist/neutral/hydratedTransactionState/validators/RequiredBalance.d.ts.map +1 -0
- package/dist/neutral/hydratedTransactionState/validators/index.d.ts +2 -0
- package/dist/neutral/hydratedTransactionState/validators/index.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +1 -0
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +155 -66
- package/dist/neutral/index.mjs.map +1 -1
- package/package.json +45 -45
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateBlock.d.ts","sourceRoot":"","sources":["../../../src/block/validateBlock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAAE,sBAAsB,EAAE,OAAO,EACnD,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,
|
|
1
|
+
{"version":3,"file":"validateBlock.d.ts","sourceRoot":"","sources":["../../../src/block/validateBlock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EAAE,sBAAsB,EAAE,OAAO,EACnD,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAQ3D,eAAO,MAAM,aAAa,GACxB,SAAS,WAAW,EACpB,OAAO,iBAAiB,EACxB,UAAU,OAAO,EACjB,uBAAsB,sBAAsB,EAAO,KAClD,OAAO,CAAC,oBAAoB,EAAE,CAiBhC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BlockValidatorFunction } from '@xyo-network/xl1-sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Validates the block's BoundWitness wholistically by delegating to
|
|
4
|
+
* `BoundWitnessValidator.validate()`. Mirrors TransactionBoundWitnessValidator
|
|
5
|
+
* for blocks. Covers signatures (length parity + per-address elliptic-curve
|
|
6
|
+
* verification against the BW data hash), addresses uniqueness,
|
|
7
|
+
* payload_hashes/payload_schemas length parity, schemas, and top-level
|
|
8
|
+
* schema check.
|
|
9
|
+
*/
|
|
10
|
+
export declare const BlockBoundWitnessValidator: BlockValidatorFunction;
|
|
11
|
+
//# sourceMappingURL=BoundWitness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoundWitness.d.ts","sourceRoot":"","sources":["../../../../src/block/validators/BoundWitness.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAqB,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAmBrF;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,EAAE,sBAaxC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/block/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAA;AAC1C,cAAc,aAAa,CAAA;AAC3B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hydratedTransactionState/index.ts"],"names":[],"mappings":"AAAA,cAAc,uCAAuC,CAAA;AACrD,cAAc,uBAAuB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validateHydratedTransactionState.d.ts","sourceRoot":"","sources":["../../../src/hydratedTransactionState/validateHydratedTransactionState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,sBAAsB,CAAA;AAKtF,eAAO,MAAM,gCAAgC,EAAE,0CAqB9C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequiredBalance.d.ts","sourceRoot":"","sources":["../../../../src/hydratedTransactionState/validators/RequiredBalance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0CAA0C,EAAE,MAAM,sBAAsB,CAAA;AAUtF,eAAO,MAAM,wCAAwC,EAAE,0CAkDtD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hydratedTransactionState/validators/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
|
package/dist/neutral/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,+BAA+B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA;AACxC,cAAc,+BAA+B,CAAA;AAC7C,cAAc,qCAAqC,CAAA"}
|
package/dist/neutral/index.mjs
CHANGED
|
@@ -2,8 +2,8 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
|
|
4
4
|
// src/block/validateBlock.ts
|
|
5
|
-
import { ZERO_HASH as
|
|
6
|
-
import { BlockValidationError as
|
|
5
|
+
import { ZERO_HASH as ZERO_HASH6 } from "@xylabs/sdk-js";
|
|
6
|
+
import { BlockValidationError as BlockValidationError6 } from "@xyo-network/xl1-sdk";
|
|
7
7
|
|
|
8
8
|
// src/block/validators/AllowedPayloadSchemas.ts
|
|
9
9
|
import { ZERO_HASH } from "@xylabs/sdk-js";
|
|
@@ -22,15 +22,45 @@ var BlockAllowedPayloadSchemasValidator = /* @__PURE__ */ __name((context, block
|
|
|
22
22
|
return errors;
|
|
23
23
|
}, "BlockAllowedPayloadSchemasValidator");
|
|
24
24
|
|
|
25
|
+
// src/block/validators/BoundWitness.ts
|
|
26
|
+
import { ZERO_HASH as ZERO_HASH2 } from "@xylabs/sdk-js";
|
|
27
|
+
import { BoundWitnessValidator } from "@xyo-network/sdk-js";
|
|
28
|
+
import { BlockValidationError as BlockValidationError2 } from "@xyo-network/xl1-sdk";
|
|
29
|
+
var error = /* @__PURE__ */ __name((block, message) => new BlockValidationError2(block?._hash ?? ZERO_HASH2, block, message), "error");
|
|
30
|
+
var checkSignaturesShape = /* @__PURE__ */ __name((block) => {
|
|
31
|
+
const bw = block;
|
|
32
|
+
if (bw.$signatures === void 0) {
|
|
33
|
+
return Array.isArray(bw.signatures) ? [
|
|
34
|
+
error(block, "BoundWitness has `signatures` but expected `$signatures` (signatures must be in the meta-prefixed `$signatures` key)")
|
|
35
|
+
] : [
|
|
36
|
+
error(block, "BoundWitness is missing `$signatures`")
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
return [];
|
|
40
|
+
}, "checkSignaturesShape");
|
|
41
|
+
var BlockBoundWitnessValidator = /* @__PURE__ */ __name(async (_context, block) => {
|
|
42
|
+
try {
|
|
43
|
+
const shapeErrors = checkSignaturesShape(block);
|
|
44
|
+
if (shapeErrors.length > 0) return shapeErrors;
|
|
45
|
+
const bwValidator = new BoundWitnessValidator(block);
|
|
46
|
+
const bwErrors = await bwValidator.validate();
|
|
47
|
+
return bwErrors.map((e) => error(block, `BoundWitness validation: ${e.message}`));
|
|
48
|
+
} catch (ex) {
|
|
49
|
+
return [
|
|
50
|
+
error(block, `Failed BlockBoundWitnessValidator: ${String(ex)}`)
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
}, "BlockBoundWitnessValidator");
|
|
54
|
+
|
|
25
55
|
// src/block/validators/Fields.ts
|
|
26
|
-
import { isDefined, ZERO_HASH as
|
|
56
|
+
import { isDefined, ZERO_HASH as ZERO_HASH3 } from "@xylabs/sdk-js";
|
|
27
57
|
import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
|
|
28
|
-
import { BlockValidationError as
|
|
58
|
+
import { BlockValidationError as BlockValidationError3 } from "@xyo-network/xl1-sdk";
|
|
29
59
|
var BlockFieldsValidator = /* @__PURE__ */ __name((context, block, chainId) => {
|
|
30
60
|
const errors = [];
|
|
31
61
|
try {
|
|
32
62
|
if (isDefined(chainId) && block.chain !== chainId.toLowerCase()) {
|
|
33
|
-
errors.push(new
|
|
63
|
+
errors.push(new BlockValidationError3(block?._hash ?? ZERO_HASH3, block, "Invalid chain id"));
|
|
34
64
|
}
|
|
35
65
|
const txHashes = [];
|
|
36
66
|
for (let i = 0; i < block.payload_hashes.length; i++) {
|
|
@@ -39,17 +69,17 @@ var BlockFieldsValidator = /* @__PURE__ */ __name((context, block, chainId) => {
|
|
|
39
69
|
}
|
|
40
70
|
}
|
|
41
71
|
if (new Set(txHashes).size < txHashes.length) {
|
|
42
|
-
errors.push(new
|
|
72
|
+
errors.push(new BlockValidationError3(block?._hash ?? ZERO_HASH3, block, `Duplicate Transaction Hashes: ${txHashes}`));
|
|
43
73
|
}
|
|
44
74
|
} catch (ex) {
|
|
45
|
-
errors.push(new
|
|
75
|
+
errors.push(new BlockValidationError3(block?._hash ?? ZERO_HASH3, block, `validation excepted: ${ex}`, ex));
|
|
46
76
|
}
|
|
47
77
|
return errors;
|
|
48
78
|
}, "BlockFieldsValidator");
|
|
49
79
|
|
|
50
80
|
// src/block/validators/JsonSchema.ts
|
|
51
|
-
import { ZERO_HASH as
|
|
52
|
-
import { BlockBoundWitnessWithStorageMetaJsonSchema, BlockValidationError as
|
|
81
|
+
import { ZERO_HASH as ZERO_HASH4 } from "@xylabs/sdk-js";
|
|
82
|
+
import { BlockBoundWitnessWithStorageMetaJsonSchema, BlockValidationError as BlockValidationError4 } from "@xyo-network/xl1-sdk";
|
|
53
83
|
import { Ajv } from "ajv";
|
|
54
84
|
var BlockJsonSchemaValidator = /* @__PURE__ */ __name((jsonSchema = BlockBoundWitnessWithStorageMetaJsonSchema) => {
|
|
55
85
|
const ajv = new Ajv({
|
|
@@ -62,43 +92,43 @@ var BlockJsonSchemaValidator = /* @__PURE__ */ __name((jsonSchema = BlockBoundWi
|
|
|
62
92
|
try {
|
|
63
93
|
await validate(block);
|
|
64
94
|
if ((validate.errors ?? []).length > 0) {
|
|
65
|
-
const
|
|
95
|
+
const error2 = new BlockValidationError4(block?._hash ?? ZERO_HASH4, block, `failed JSON schema validation: ${ajv.errorsText(validate.errors, {
|
|
66
96
|
separator: "\n"
|
|
67
97
|
})}`);
|
|
68
|
-
|
|
69
|
-
errors.push(
|
|
98
|
+
error2.cause = validate.errors;
|
|
99
|
+
errors.push(error2);
|
|
70
100
|
}
|
|
71
101
|
} catch (ex) {
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
errors.push(
|
|
102
|
+
const error2 = new BlockValidationError4(block?._hash ?? ZERO_HASH4, block, `validation excepted: ${ex}`);
|
|
103
|
+
error2.cause = ex;
|
|
104
|
+
errors.push(error2);
|
|
75
105
|
}
|
|
76
106
|
return errors;
|
|
77
107
|
};
|
|
78
108
|
}, "BlockJsonSchemaValidator");
|
|
79
109
|
|
|
80
110
|
// src/block/validators/PreviousHash.ts
|
|
81
|
-
import { isHash, ZERO_HASH as
|
|
82
|
-
import { BlockValidationError as
|
|
111
|
+
import { isHash, ZERO_HASH as ZERO_HASH5 } from "@xylabs/sdk-js";
|
|
112
|
+
import { BlockValidationError as BlockValidationError5 } from "@xyo-network/xl1-sdk";
|
|
83
113
|
var BlockPreviousHashValidator = /* @__PURE__ */ __name((context, block) => {
|
|
84
114
|
const errors = [];
|
|
85
115
|
try {
|
|
86
116
|
const blockNumber = block.block;
|
|
87
117
|
if (blockNumber > 0n) {
|
|
88
118
|
if (!isHash(block.previous)) {
|
|
89
|
-
errors.push(new
|
|
119
|
+
errors.push(new BlockValidationError5(block?._hash ?? ZERO_HASH5, block, "previous hash is missing or invalid"));
|
|
90
120
|
}
|
|
91
121
|
} else if (blockNumber === 0) {
|
|
92
122
|
if (block.previous !== null) {
|
|
93
|
-
errors.push(new
|
|
123
|
+
errors.push(new BlockValidationError5(block?._hash ?? ZERO_HASH5, block, "previous hash should not be set"));
|
|
94
124
|
}
|
|
95
125
|
} else {
|
|
96
|
-
errors.push(new
|
|
126
|
+
errors.push(new BlockValidationError5(block?._hash ?? ZERO_HASH5, block, "invalid block number"));
|
|
97
127
|
}
|
|
98
128
|
} catch (ex) {
|
|
99
|
-
const
|
|
100
|
-
|
|
101
|
-
errors.push(
|
|
129
|
+
const error2 = new BlockValidationError5(block?._hash ?? ZERO_HASH5, block, `Failed BlockPreviousHashValidator: ${ex}`);
|
|
130
|
+
error2.cause = ex;
|
|
131
|
+
errors.push(error2);
|
|
102
132
|
}
|
|
103
133
|
return errors;
|
|
104
134
|
}, "BlockPreviousHashValidator");
|
|
@@ -107,11 +137,8 @@ var BlockPreviousHashValidator = /* @__PURE__ */ __name((context, block) => {
|
|
|
107
137
|
var validateBlock = /* @__PURE__ */ __name(async (context, block, chainId, additionalValidators = []) => {
|
|
108
138
|
const errors = [];
|
|
109
139
|
try {
|
|
110
|
-
const bwErrors = await BoundWitnessSignaturesValidator(block);
|
|
111
|
-
for (const bwError of bwErrors) {
|
|
112
|
-
errors.push(new BlockValidationError5(block?._hash ?? ZERO_HASH5, block, "BoundWitness validation failed", bwError));
|
|
113
|
-
}
|
|
114
140
|
const validators = [
|
|
141
|
+
BlockBoundWitnessValidator,
|
|
115
142
|
BlockFieldsValidator,
|
|
116
143
|
BlockPreviousHashValidator,
|
|
117
144
|
BlockAllowedPayloadSchemasValidator,
|
|
@@ -119,21 +146,21 @@ var validateBlock = /* @__PURE__ */ __name(async (context, block, chainId, addit
|
|
|
119
146
|
];
|
|
120
147
|
errors.push(...(await Promise.all(validators.map((validator) => validator(context, block, chainId)))).flat());
|
|
121
148
|
} catch (ex) {
|
|
122
|
-
errors.push(new
|
|
149
|
+
errors.push(new BlockValidationError6(block?._hash ?? ZERO_HASH6, block, "validation excepted", ex));
|
|
123
150
|
}
|
|
124
151
|
return errors;
|
|
125
152
|
}, "validateBlock");
|
|
126
153
|
|
|
127
154
|
// src/hydratedBlock/validateHydratedBlock.ts
|
|
128
|
-
import { ZERO_HASH as
|
|
155
|
+
import { ZERO_HASH as ZERO_HASH18 } from "@xylabs/sdk-js";
|
|
129
156
|
import { BoundWitnessReferencesValidator, HydratedBlockValidationError as HydratedBlockValidationError2 } from "@xyo-network/xl1-sdk";
|
|
130
157
|
|
|
131
158
|
// src/hydratedBlock/validators/Payloads.ts
|
|
132
|
-
import { ZERO_HASH as
|
|
159
|
+
import { ZERO_HASH as ZERO_HASH17 } from "@xylabs/sdk-js";
|
|
133
160
|
import { HydratedBlockValidationError } from "@xyo-network/xl1-sdk";
|
|
134
161
|
|
|
135
162
|
// src/elevatedPayload/validatePayloadInBlock.ts
|
|
136
|
-
import { ZERO_HASH as
|
|
163
|
+
import { ZERO_HASH as ZERO_HASH16 } from "@xylabs/sdk-js";
|
|
137
164
|
import { BoundWitnessSchema as BoundWitnessSchema2 } from "@xyo-network/boundwitness-model";
|
|
138
165
|
import { SchemaSchema } from "@xyo-network/sdk-js";
|
|
139
166
|
import { BridgeDestinationObservationSchema, BridgeIntentSchema, BridgeSourceObservationSchema, ChainStakeIntentSchema, HashSchema, InBlockPayloadValidationError as InBlockPayloadValidationError12, TimeSchema, TransferSchema } from "@xyo-network/xl1-sdk";
|
|
@@ -187,9 +214,9 @@ var validateElevatedFromTransaction = /* @__PURE__ */ __name((context, payload,
|
|
|
187
214
|
}, "validateElevatedFromTransaction");
|
|
188
215
|
|
|
189
216
|
// src/elevatedPayload/lib/validateTransactionInBlock.ts
|
|
190
|
-
import { ZERO_HASH as
|
|
217
|
+
import { ZERO_HASH as ZERO_HASH7 } from "@xylabs/sdk-js";
|
|
191
218
|
import { isHashMeta } from "@xyo-network/sdk-js";
|
|
192
|
-
import { BoundWitnessSignaturesValidator
|
|
219
|
+
import { BoundWitnessSignaturesValidator, InBlockPayloadValidationError as InBlockPayloadValidationError3, isTransactionBoundWitness as isTransactionBoundWitness2, validateTransaction } from "@xyo-network/xl1-sdk";
|
|
193
220
|
var validateTransactionInBlock = /* @__PURE__ */ __name(async (context, payload, block) => {
|
|
194
221
|
const errors = [];
|
|
195
222
|
try {
|
|
@@ -204,7 +231,7 @@ var validateTransactionInBlock = /* @__PURE__ */ __name(async (context, payload,
|
|
|
204
231
|
for (const txError of txErrors) {
|
|
205
232
|
errors.push(new InBlockPayloadValidationError3(payload._hash, block, payload, `TransactionValidation error: ${txError}`, txError));
|
|
206
233
|
}
|
|
207
|
-
const txSignatureErrors = await
|
|
234
|
+
const txSignatureErrors = await BoundWitnessSignaturesValidator(payload);
|
|
208
235
|
for (const txSignatureError of txSignatureErrors) {
|
|
209
236
|
errors.push(new InBlockPayloadValidationError3(payload._hash, block, payload, `BoundWitnessSignaturesValidator error: ${txSignatureError}`, txSignatureError));
|
|
210
237
|
}
|
|
@@ -212,7 +239,7 @@ var validateTransactionInBlock = /* @__PURE__ */ __name(async (context, payload,
|
|
|
212
239
|
errors.push(new InBlockPayloadValidationError3(payload._hash, block, payload, "Payload failed isTransactionBoundWitness or isHashMeta"));
|
|
213
240
|
}
|
|
214
241
|
} catch (ex) {
|
|
215
|
-
errors.push(new InBlockPayloadValidationError3(payload._hash ??
|
|
242
|
+
errors.push(new InBlockPayloadValidationError3(payload._hash ?? ZERO_HASH7, block, payload, `validation excepted: ${ex}`, ex));
|
|
216
243
|
}
|
|
217
244
|
return errors;
|
|
218
245
|
}, "validateTransactionInBlock");
|
|
@@ -238,7 +265,7 @@ var validateTypedPayloadInBlock = /* @__PURE__ */ __name(async (context, payload
|
|
|
238
265
|
}, "validateTypedPayloadInBlock");
|
|
239
266
|
|
|
240
267
|
// src/elevatedPayload/payloads/validateBridgeDestinationObservationInBlock.ts
|
|
241
|
-
import { ZERO_HASH as
|
|
268
|
+
import { ZERO_HASH as ZERO_HASH8 } from "@xylabs/sdk-js";
|
|
242
269
|
import { InBlockPayloadValidationError as InBlockPayloadValidationError4, isBridgeDestinationObservation } from "@xyo-network/xl1-sdk";
|
|
243
270
|
var validateBridgeDestinationObservationInBlock = /* @__PURE__ */ __name(async (context, payload, block) => {
|
|
244
271
|
const errors = [];
|
|
@@ -248,13 +275,13 @@ var validateBridgeDestinationObservationInBlock = /* @__PURE__ */ __name(async (
|
|
|
248
275
|
errors.push(new InBlockPayloadValidationError4(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
|
|
249
276
|
}
|
|
250
277
|
} catch (ex) {
|
|
251
|
-
errors.push(new InBlockPayloadValidationError4(block?.[0]?._hash ??
|
|
278
|
+
errors.push(new InBlockPayloadValidationError4(block?.[0]?._hash ?? ZERO_HASH8, block, payload, `Failed validateBridgeObservationInBlock: ${ex}`, ex));
|
|
252
279
|
}
|
|
253
280
|
return errors;
|
|
254
281
|
}, "validateBridgeDestinationObservationInBlock");
|
|
255
282
|
|
|
256
283
|
// src/elevatedPayload/payloads/validateBridgeIntentInBlock.ts
|
|
257
|
-
import { ZERO_HASH as
|
|
284
|
+
import { ZERO_HASH as ZERO_HASH9 } from "@xylabs/sdk-js";
|
|
258
285
|
import { InBlockPayloadValidationError as InBlockPayloadValidationError5, isBridgeIntent } from "@xyo-network/xl1-sdk";
|
|
259
286
|
var validateBridgeIntentInBlock = /* @__PURE__ */ __name(async (context, payload, block) => {
|
|
260
287
|
const errors = [];
|
|
@@ -264,13 +291,13 @@ var validateBridgeIntentInBlock = /* @__PURE__ */ __name(async (context, payload
|
|
|
264
291
|
errors.push(new InBlockPayloadValidationError5(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
|
|
265
292
|
}
|
|
266
293
|
} catch (ex) {
|
|
267
|
-
errors.push(new InBlockPayloadValidationError5(block?.[0]?._hash ??
|
|
294
|
+
errors.push(new InBlockPayloadValidationError5(block?.[0]?._hash ?? ZERO_HASH9, block, payload, `Failed validateBridgeIntentInBlock: ${ex}`, ex));
|
|
268
295
|
}
|
|
269
296
|
return errors;
|
|
270
297
|
}, "validateBridgeIntentInBlock");
|
|
271
298
|
|
|
272
299
|
// src/elevatedPayload/payloads/validateBridgeSourceObservationInBlock.ts
|
|
273
|
-
import { ZERO_HASH as
|
|
300
|
+
import { ZERO_HASH as ZERO_HASH10 } from "@xylabs/sdk-js";
|
|
274
301
|
import { InBlockPayloadValidationError as InBlockPayloadValidationError6, isBridgeSourceObservation } from "@xyo-network/xl1-sdk";
|
|
275
302
|
var validateBridgeSourceObservationInBlock = /* @__PURE__ */ __name(async (context, payload, block) => {
|
|
276
303
|
const errors = [];
|
|
@@ -280,13 +307,13 @@ var validateBridgeSourceObservationInBlock = /* @__PURE__ */ __name(async (conte
|
|
|
280
307
|
errors.push(new InBlockPayloadValidationError6(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
|
|
281
308
|
}
|
|
282
309
|
} catch (ex) {
|
|
283
|
-
errors.push(new InBlockPayloadValidationError6(block?.[0]?._hash ??
|
|
310
|
+
errors.push(new InBlockPayloadValidationError6(block?.[0]?._hash ?? ZERO_HASH10, block, payload, `Failed validateBridgeObservationInBlock: ${ex}`, ex));
|
|
284
311
|
}
|
|
285
312
|
return errors;
|
|
286
313
|
}, "validateBridgeSourceObservationInBlock");
|
|
287
314
|
|
|
288
315
|
// src/elevatedPayload/payloads/validateChainStakeIntentInBlock.ts
|
|
289
|
-
import { ZERO_HASH as
|
|
316
|
+
import { ZERO_HASH as ZERO_HASH11 } from "@xylabs/sdk-js";
|
|
290
317
|
import { InBlockPayloadValidationError as InBlockPayloadValidationError7, isChainStakeIntent } from "@xyo-network/xl1-sdk";
|
|
291
318
|
var validateChainStakeIntentInBlock = /* @__PURE__ */ __name(async (context, payload, block) => {
|
|
292
319
|
const errors = [];
|
|
@@ -296,13 +323,13 @@ var validateChainStakeIntentInBlock = /* @__PURE__ */ __name(async (context, pay
|
|
|
296
323
|
errors.push(new InBlockPayloadValidationError7(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
|
|
297
324
|
}
|
|
298
325
|
} catch (ex) {
|
|
299
|
-
errors.push(new InBlockPayloadValidationError7(block[0]?._hash ??
|
|
326
|
+
errors.push(new InBlockPayloadValidationError7(block[0]?._hash ?? ZERO_HASH11, block, payload, `validation excepted: ${ex}`, ex));
|
|
300
327
|
}
|
|
301
328
|
return errors;
|
|
302
329
|
}, "validateChainStakeIntentInBlock");
|
|
303
330
|
|
|
304
331
|
// src/elevatedPayload/payloads/validateHashInBlock.ts
|
|
305
|
-
import { ZERO_HASH as
|
|
332
|
+
import { ZERO_HASH as ZERO_HASH12 } from "@xylabs/sdk-js";
|
|
306
333
|
import { InBlockPayloadValidationError as InBlockPayloadValidationError8, isHashPayload } from "@xyo-network/xl1-sdk";
|
|
307
334
|
var validateHashInBlock = /* @__PURE__ */ __name(async (context, payload, block) => {
|
|
308
335
|
const errors = [];
|
|
@@ -312,13 +339,13 @@ var validateHashInBlock = /* @__PURE__ */ __name(async (context, payload, block)
|
|
|
312
339
|
errors.push(new InBlockPayloadValidationError8(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
|
|
313
340
|
}
|
|
314
341
|
} catch (ex) {
|
|
315
|
-
errors.push(new InBlockPayloadValidationError8(block?.[0]?._hash ??
|
|
342
|
+
errors.push(new InBlockPayloadValidationError8(block?.[0]?._hash ?? ZERO_HASH12, block, payload, `validation excepted: ${ex}`, ex));
|
|
316
343
|
}
|
|
317
344
|
return errors;
|
|
318
345
|
}, "validateHashInBlock");
|
|
319
346
|
|
|
320
347
|
// src/elevatedPayload/payloads/validateSchemaInBlock.ts
|
|
321
|
-
import { ZERO_HASH as
|
|
348
|
+
import { ZERO_HASH as ZERO_HASH13 } from "@xylabs/sdk-js";
|
|
322
349
|
import { isSchemaPayload } from "@xyo-network/sdk-js";
|
|
323
350
|
import { InBlockPayloadValidationError as InBlockPayloadValidationError9 } from "@xyo-network/xl1-sdk";
|
|
324
351
|
var validateSchemaInBlock = /* @__PURE__ */ __name(async (context, payload, block) => {
|
|
@@ -329,13 +356,13 @@ var validateSchemaInBlock = /* @__PURE__ */ __name(async (context, payload, bloc
|
|
|
329
356
|
errors.push(new InBlockPayloadValidationError9(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
|
|
330
357
|
}
|
|
331
358
|
} catch (ex) {
|
|
332
|
-
errors.push(new InBlockPayloadValidationError9(block?.[0]?._hash ??
|
|
359
|
+
errors.push(new InBlockPayloadValidationError9(block?.[0]?._hash ?? ZERO_HASH13, block, payload, `Failed validateSchemaInBlock: ${ex}`, ex));
|
|
333
360
|
}
|
|
334
361
|
return errors;
|
|
335
362
|
}, "validateSchemaInBlock");
|
|
336
363
|
|
|
337
364
|
// src/elevatedPayload/payloads/validateTimeInBlock.ts
|
|
338
|
-
import { ZERO_HASH as
|
|
365
|
+
import { ZERO_HASH as ZERO_HASH14 } from "@xylabs/sdk-js";
|
|
339
366
|
import { InBlockPayloadValidationError as InBlockPayloadValidationError10, isTimePayload } from "@xyo-network/xl1-sdk";
|
|
340
367
|
var validateTimeInBlock = /* @__PURE__ */ __name(async (context, payload, block) => {
|
|
341
368
|
const errors = [];
|
|
@@ -345,13 +372,13 @@ var validateTimeInBlock = /* @__PURE__ */ __name(async (context, payload, block)
|
|
|
345
372
|
errors.push(new InBlockPayloadValidationError10(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
|
|
346
373
|
}
|
|
347
374
|
} catch (ex) {
|
|
348
|
-
errors.push(new InBlockPayloadValidationError10(block?.[0]?._hash ??
|
|
375
|
+
errors.push(new InBlockPayloadValidationError10(block?.[0]?._hash ?? ZERO_HASH14, block, payload, `Failed validateTimeInBlock: ${ex}`, ex));
|
|
349
376
|
}
|
|
350
377
|
return errors;
|
|
351
378
|
}, "validateTimeInBlock");
|
|
352
379
|
|
|
353
380
|
// src/elevatedPayload/payloads/validateTransferInBlock.ts
|
|
354
|
-
import { ZERO_HASH as
|
|
381
|
+
import { ZERO_HASH as ZERO_HASH15 } from "@xylabs/sdk-js";
|
|
355
382
|
import { InBlockPayloadValidationError as InBlockPayloadValidationError11, isTransfer } from "@xyo-network/xl1-sdk";
|
|
356
383
|
var validateTransferInBlock = /* @__PURE__ */ __name(async (context, payload, block) => {
|
|
357
384
|
const errors = [];
|
|
@@ -361,7 +388,7 @@ var validateTransferInBlock = /* @__PURE__ */ __name(async (context, payload, bl
|
|
|
361
388
|
errors.push(new InBlockPayloadValidationError11(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError));
|
|
362
389
|
}
|
|
363
390
|
} catch (ex) {
|
|
364
|
-
errors.push(new InBlockPayloadValidationError11(block?.[0]?._hash ??
|
|
391
|
+
errors.push(new InBlockPayloadValidationError11(block?.[0]?._hash ?? ZERO_HASH15, block, payload, `Failed validateTransferInBlock: ${ex}`, ex));
|
|
365
392
|
}
|
|
366
393
|
return errors;
|
|
367
394
|
}, "validateTransferInBlock");
|
|
@@ -385,11 +412,11 @@ var validatePayloadInBlock = /* @__PURE__ */ __name(async (context, payload, blo
|
|
|
385
412
|
if (validator) {
|
|
386
413
|
errors.push(...await validator(context, payload, block));
|
|
387
414
|
} else {
|
|
388
|
-
errors.push(new InBlockPayloadValidationError12(block?.[0]?._hash ??
|
|
415
|
+
errors.push(new InBlockPayloadValidationError12(block?.[0]?._hash ?? ZERO_HASH16, block, payload, `Unsupported payload schema: ${payload.schema}`));
|
|
389
416
|
}
|
|
390
417
|
} catch (ex) {
|
|
391
|
-
const
|
|
392
|
-
errors.push(
|
|
418
|
+
const error2 = new InBlockPayloadValidationError12(block?.[0]?._hash ?? ZERO_HASH16, block, payload, `validation excepted: ${ex}`, ex);
|
|
419
|
+
errors.push(error2);
|
|
393
420
|
}
|
|
394
421
|
return errors;
|
|
395
422
|
}, "validatePayloadInBlock");
|
|
@@ -415,27 +442,27 @@ var PayloadsInBlockValidator = /* @__PURE__ */ __name(async (context, [block, pa
|
|
|
415
442
|
payloads
|
|
416
443
|
]);
|
|
417
444
|
for (const payloadInBlockError of payloadInBlockErrors) {
|
|
418
|
-
errors.push(new HydratedBlockValidationError(block?._hash ??
|
|
445
|
+
errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH17, [
|
|
419
446
|
block,
|
|
420
447
|
payloads
|
|
421
448
|
], `validatePayloadInBlock error: ${payloadInBlockError}`, payloadInBlockError));
|
|
422
449
|
}
|
|
423
450
|
delete remainingPayloads[hash];
|
|
424
451
|
} else {
|
|
425
|
-
errors.push(new HydratedBlockValidationError(block?._hash ??
|
|
452
|
+
errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH17, [
|
|
426
453
|
block,
|
|
427
454
|
payloads
|
|
428
455
|
], `missing payload ${hash} ${schema}`));
|
|
429
456
|
}
|
|
430
457
|
}
|
|
431
458
|
if (Object.keys(remainingPayloads).length > 0) {
|
|
432
|
-
errors.push(new HydratedBlockValidationError(block?._hash ??
|
|
459
|
+
errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH17, [
|
|
433
460
|
block,
|
|
434
461
|
payloads
|
|
435
462
|
], `extra payloads ${Object.keys(payloadMap).join(", ")}`));
|
|
436
463
|
}
|
|
437
464
|
} catch (ex) {
|
|
438
|
-
errors.push(new HydratedBlockValidationError(block?._hash ??
|
|
465
|
+
errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH17, [
|
|
439
466
|
block,
|
|
440
467
|
payloads
|
|
441
468
|
], `Failed PayloadsInBlockValidator: ${ex}`, ex));
|
|
@@ -461,17 +488,17 @@ var validateHydratedBlock = /* @__PURE__ */ __name(async (context, hydratedBlock
|
|
|
461
488
|
];
|
|
462
489
|
errors.push(...(await Promise.all(validators.map((v) => v(context, hydratedBlock, chainIdAtBlockNumber)))).flat());
|
|
463
490
|
} catch (ex) {
|
|
464
|
-
errors.push(new HydratedBlockValidationError2(hydratedBlock?.[0]?._hash ??
|
|
491
|
+
errors.push(new HydratedBlockValidationError2(hydratedBlock?.[0]?._hash ?? ZERO_HASH18, hydratedBlock, `Failed validateHydratedBlock: ${ex}`, ex));
|
|
465
492
|
}
|
|
466
493
|
return errors;
|
|
467
494
|
}, "validateHydratedBlock");
|
|
468
495
|
|
|
469
496
|
// src/hydratedBlockState/validateHydratedBlockState.ts
|
|
470
|
-
import { spanRootAsync as spanRootAsync2, ZERO_HASH as
|
|
497
|
+
import { spanRootAsync as spanRootAsync2, ZERO_HASH as ZERO_HASH20 } from "@xylabs/sdk-js";
|
|
471
498
|
import { HydratedBlockStateValidationError as HydratedBlockStateValidationError2 } from "@xyo-network/xl1-sdk";
|
|
472
499
|
|
|
473
500
|
// src/hydratedBlockState/validators/RequiredBalance.ts
|
|
474
|
-
import { spanRootAsync, ZERO_HASH as
|
|
501
|
+
import { spanRootAsync, ZERO_HASH as ZERO_HASH19 } from "@xylabs/sdk-js";
|
|
475
502
|
import { AttoXL1, HydratedBlockStateValidationError, netBalancesForPayloads, XYO_ZERO_ADDRESS } from "@xyo-network/xl1-sdk";
|
|
476
503
|
var RequiredBalanceBlockStateValidator = /* @__PURE__ */ __name(async (context, block) => {
|
|
477
504
|
return await spanRootAsync("RequiredBalanceBlockStateValidator", async () => {
|
|
@@ -490,7 +517,7 @@ var RequiredBalanceBlockStateValidator = /* @__PURE__ */ __name(async (context,
|
|
|
490
517
|
}
|
|
491
518
|
const previous = block[0].previous;
|
|
492
519
|
if (previous === null) return [
|
|
493
|
-
new HydratedBlockStateValidationError(block?.[0]?._hash ??
|
|
520
|
+
new HydratedBlockStateValidationError(block?.[0]?._hash ?? ZERO_HASH19, "00", block, "Insufficient funds because first block")
|
|
494
521
|
];
|
|
495
522
|
chainId = await context.chainIdAtBlockNumber(block[0].block);
|
|
496
523
|
await spanRootAsync("RequiredBalanceBlockStateValidator|balancesLoop", async () => {
|
|
@@ -502,12 +529,12 @@ var RequiredBalanceBlockStateValidator = /* @__PURE__ */ __name(async (context,
|
|
|
502
529
|
});
|
|
503
530
|
const balance = result[address] ?? AttoXL1(0n);
|
|
504
531
|
if (address !== XYO_ZERO_ADDRESS && reqBalance > balance) {
|
|
505
|
-
errors.push(new HydratedBlockStateValidationError(block?.[0]?._hash ??
|
|
532
|
+
errors.push(new HydratedBlockStateValidationError(block?.[0]?._hash ?? ZERO_HASH19, chainId, block, `insufficient balance for ${address} ${balance} < ${requiredBalances[address]}`));
|
|
506
533
|
}
|
|
507
534
|
}
|
|
508
535
|
}, context);
|
|
509
536
|
} catch (ex) {
|
|
510
|
-
errors.push(new HydratedBlockStateValidationError(block?.[0]?._hash ??
|
|
537
|
+
errors.push(new HydratedBlockStateValidationError(block?.[0]?._hash ?? ZERO_HASH19, chainId, block, `Failed RequiredBalanceBlockStateValidator: ${ex}`, ex));
|
|
511
538
|
}
|
|
512
539
|
return await Promise.resolve(errors);
|
|
513
540
|
}, context);
|
|
@@ -530,20 +557,82 @@ var validateHydratedBlockState = /* @__PURE__ */ __name(async (context, hydrated
|
|
|
530
557
|
];
|
|
531
558
|
errors.push(...(await Promise.all(validators.map((v) => v(context, hydratedBlock)))).flat());
|
|
532
559
|
} catch (ex) {
|
|
533
|
-
errors.push(new HydratedBlockStateValidationError2(hydratedBlock?.[0]?._hash ??
|
|
560
|
+
errors.push(new HydratedBlockStateValidationError2(hydratedBlock?.[0]?._hash ?? ZERO_HASH20, chainId ?? "00", hydratedBlock, `Failed validateHydratedBlockState: ${ex}`, ex));
|
|
534
561
|
}
|
|
535
562
|
return errors;
|
|
536
563
|
}, context);
|
|
537
564
|
}, "validateHydratedBlockState");
|
|
565
|
+
|
|
566
|
+
// src/hydratedTransactionState/validateHydratedTransactionState.ts
|
|
567
|
+
import { spanRootAsync as spanRootAsync4, ZERO_HASH as ZERO_HASH22 } from "@xylabs/sdk-js";
|
|
568
|
+
import { HydratedTransactionValidationError as HydratedTransactionValidationError2 } from "@xyo-network/xl1-sdk";
|
|
569
|
+
|
|
570
|
+
// src/hydratedTransactionState/validators/RequiredBalance.ts
|
|
571
|
+
import { spanRootAsync as spanRootAsync3, ZERO_HASH as ZERO_HASH21 } from "@xylabs/sdk-js";
|
|
572
|
+
import { AttoXL1 as AttoXL12, HydratedTransactionValidationError, HydratedTransactionWrapper, netBalancesForPayloads as netBalancesForPayloads2, transactionRequiredGas, XYO_ZERO_ADDRESS as XYO_ZERO_ADDRESS2 } from "@xyo-network/xl1-sdk";
|
|
573
|
+
var RequiredBalanceTransactionStateValidator = /* @__PURE__ */ __name(async (context, tx) => {
|
|
574
|
+
return await spanRootAsync3("RequiredBalanceTransactionStateValidator", async () => {
|
|
575
|
+
const errors = [];
|
|
576
|
+
try {
|
|
577
|
+
const netBalances = netBalancesForPayloads2({
|
|
578
|
+
singletons: {}
|
|
579
|
+
}, tx[1]);
|
|
580
|
+
const wrapper = await HydratedTransactionWrapper.parse(tx);
|
|
581
|
+
const from = wrapper.boundWitness.from;
|
|
582
|
+
const gasCost = transactionRequiredGas(tx) * wrapper.fees.gasPrice;
|
|
583
|
+
const baseCost = wrapper.fees.base;
|
|
584
|
+
netBalances[from] = (netBalances[from] ?? 0n) - gasCost - baseCost;
|
|
585
|
+
const requiredBalances = {};
|
|
586
|
+
for (const [address, net] of Object.entries(netBalances)) {
|
|
587
|
+
if (net < 0n) requiredBalances[address] = -net;
|
|
588
|
+
}
|
|
589
|
+
const requiredAddresses = Object.keys(requiredBalances);
|
|
590
|
+
if (requiredAddresses.length === 0) return errors;
|
|
591
|
+
const headBlock = (await context.blockViewer.currentBlock())[0];
|
|
592
|
+
const balances = await context.accountBalanceViewer.accountBalances(requiredAddresses, {
|
|
593
|
+
head: headBlock._hash
|
|
594
|
+
});
|
|
595
|
+
for (const address of requiredAddresses) {
|
|
596
|
+
const reqBalance = requiredBalances[address];
|
|
597
|
+
const balance = balances[address] ?? AttoXL12(0n);
|
|
598
|
+
if (address !== XYO_ZERO_ADDRESS2 && reqBalance > balance) {
|
|
599
|
+
errors.push(new HydratedTransactionValidationError(tx?.[0]?._hash ?? ZERO_HASH21, tx, `insufficient balance for ${address} ${balance} < ${reqBalance}`));
|
|
600
|
+
}
|
|
601
|
+
}
|
|
602
|
+
} catch (ex) {
|
|
603
|
+
errors.push(new HydratedTransactionValidationError(tx?.[0]?._hash ?? ZERO_HASH21, tx, `Failed RequiredBalanceTransactionStateValidator: ${ex}`, ex));
|
|
604
|
+
}
|
|
605
|
+
return errors;
|
|
606
|
+
}, context);
|
|
607
|
+
}, "RequiredBalanceTransactionStateValidator");
|
|
608
|
+
|
|
609
|
+
// src/hydratedTransactionState/validateHydratedTransactionState.ts
|
|
610
|
+
var validateHydratedTransactionState = /* @__PURE__ */ __name(async (context, tx) => {
|
|
611
|
+
return await spanRootAsync4("validateHydratedTransactionState", async () => {
|
|
612
|
+
const errors = [];
|
|
613
|
+
try {
|
|
614
|
+
const validators = [
|
|
615
|
+
RequiredBalanceTransactionStateValidator
|
|
616
|
+
];
|
|
617
|
+
errors.push(...(await Promise.all(validators.map((v) => v(context, tx)))).flat());
|
|
618
|
+
} catch (ex) {
|
|
619
|
+
errors.push(new HydratedTransactionValidationError2(tx?.[0]?._hash ?? ZERO_HASH22, tx, `Failed validateHydratedTransactionState: ${ex}`, ex));
|
|
620
|
+
}
|
|
621
|
+
return errors;
|
|
622
|
+
}, context);
|
|
623
|
+
}, "validateHydratedTransactionState");
|
|
538
624
|
export {
|
|
539
625
|
BlockAllowedPayloadSchemasValidator,
|
|
626
|
+
BlockBoundWitnessValidator,
|
|
540
627
|
BlockFieldsValidator,
|
|
541
628
|
BlockJsonSchemaValidator,
|
|
542
629
|
BlockPreviousHashValidator,
|
|
543
630
|
PayloadsInBlockValidator,
|
|
544
631
|
RequiredBalanceBlockStateValidator,
|
|
632
|
+
RequiredBalanceTransactionStateValidator,
|
|
545
633
|
validateBlock,
|
|
546
634
|
validateHydratedBlock,
|
|
547
|
-
validateHydratedBlockState
|
|
635
|
+
validateHydratedBlockState,
|
|
636
|
+
validateHydratedTransactionState
|
|
548
637
|
};
|
|
549
638
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/block/validateBlock.ts","../../src/block/validators/AllowedPayloadSchemas.ts","../../src/block/validators/Fields.ts","../../src/block/validators/JsonSchema.ts","../../src/block/validators/PreviousHash.ts","../../src/hydratedBlock/validateHydratedBlock.ts","../../src/hydratedBlock/validators/Payloads.ts","../../src/elevatedPayload/validatePayloadInBlock.ts","../../src/elevatedPayload/lib/isElevatedFromBlock.ts","../../src/elevatedPayload/lib/validateElevatedFromBlock.ts","../../src/elevatedPayload/lib/validateElevatedFromTransaction.ts","../../src/elevatedPayload/lib/validateTransactionInBlock.ts","../../src/elevatedPayload/lib/validateTypedPayloadInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeDestinationObservationInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeIntentInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeSourceObservationInBlock.ts","../../src/elevatedPayload/payloads/validateChainStakeIntentInBlock.ts","../../src/elevatedPayload/payloads/validateHashInBlock.ts","../../src/elevatedPayload/payloads/validateSchemaInBlock.ts","../../src/elevatedPayload/payloads/validateTimeInBlock.ts","../../src/elevatedPayload/payloads/validateTransferInBlock.ts","../../src/hydratedBlockState/validateHydratedBlockState.ts","../../src/hydratedBlockState/validators/RequiredBalance.ts"],"sourcesContent":["import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext,\n BlockBoundWitness, BlockValidatorFunction, ChainId,\n} from '@xyo-network/xl1-sdk'\nimport { BlockValidationError, BoundWitnessSignaturesValidator } from '@xyo-network/xl1-sdk'\n\nimport {\n BlockAllowedPayloadSchemasValidator,\n BlockFieldsValidator, BlockPreviousHashValidator,\n} from './validators/index.ts'\n\nexport const validateBlock = async (\n context: BaseContext,\n block: BlockBoundWitness,\n chainId?: ChainId,\n additionalValidators: BlockValidatorFunction[] = [],\n): Promise<BlockValidationError[]> => {\n const errors: BlockValidationError[] = []\n try {\n const bwErrors = await BoundWitnessSignaturesValidator(block)\n for (const bwError of bwErrors) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'BoundWitness validation failed', bwError))\n }\n const validators: BlockValidatorFunction[] = [\n BlockFieldsValidator,\n BlockPreviousHashValidator,\n BlockAllowedPayloadSchemasValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(\n validators.map(validator => validator(context, block, chainId)),\n )).flat())\n } catch (ex) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'validation excepted', ex))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-sdk'\nimport {\n BlockValidationError,\n isAllowedBlockPayloadSchema,\n} from '@xyo-network/xl1-sdk'\n\nexport const BlockAllowedPayloadSchemasValidator: BlockValidatorFunction = (\n context,\n block,\n) => {\n const errors: BlockValidationError[] = []\n try {\n for (const schema of block.payload_schemas) {\n if (!isAllowedBlockPayloadSchema(schema)) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `payload schema not allowed in block: ${schema}`,\n ))\n }\n }\n } catch (ex) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import type { Hash } from '@xylabs/sdk-js'\nimport { isDefined, ZERO_HASH } from '@xylabs/sdk-js'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext,\n BlockBoundWitness, BlockValidatorFunction, ChainId,\n} from '@xyo-network/xl1-sdk'\nimport { BlockValidationError } from '@xyo-network/xl1-sdk'\n\nexport const BlockFieldsValidator: BlockValidatorFunction = (\n context: BaseContext,\n block: BlockBoundWitness,\n chainId?: ChainId,\n) => {\n const errors: BlockValidationError[] = []\n try {\n if (isDefined(chainId) && block.chain !== chainId.toLowerCase()) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'Invalid chain id'))\n }\n\n // get transaction hashes\n const txHashes: Hash[] = []\n for (let i = 0; i < block.payload_hashes.length; i++) {\n if (block.payload_schemas[i] === BoundWitnessSchema) {\n txHashes.push(block.payload_hashes[i])\n }\n }\n\n // check if transaction hashes are unique\n if (new Set(txHashes).size < txHashes.length) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `Duplicate Transaction Hashes: ${txHashes}`,\n ))\n }\n } catch (ex) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext, BlockBoundWitness, BlockValidatorFunction,\n} from '@xyo-network/xl1-sdk'\nimport { BlockBoundWitnessWithStorageMetaJsonSchema, BlockValidationError } from '@xyo-network/xl1-sdk'\nimport type { AnySchema } from 'ajv'\nimport { Ajv } from 'ajv'\n\nexport const BlockJsonSchemaValidator = (jsonSchema: AnySchema = BlockBoundWitnessWithStorageMetaJsonSchema): BlockValidatorFunction => {\n const ajv = new Ajv({ allErrors: true, strict: true })\n const validate = ajv.compile(jsonSchema)\n return async (\n context: BaseContext,\n block: BlockBoundWitness,\n ) => {\n const errors: BlockValidationError[] = []\n try {\n await validate(block)\n if ((validate.errors ?? []).length > 0) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `failed JSON schema validation: ${ajv.errorsText(validate.errors, { separator: '\\n' })}`,\n )\n error.cause = validate.errors\n errors.push(error)\n }\n } catch (ex) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n )\n error.cause = ex\n errors.push(error)\n }\n return errors\n }\n}\n","import { isHash, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-sdk'\nimport { BlockValidationError } from '@xyo-network/xl1-sdk'\n\nexport const BlockPreviousHashValidator: BlockValidatorFunction = (\n context,\n block,\n) => {\n const errors: BlockValidationError[] = []\n try {\n const blockNumber = block.block\n if (blockNumber > 0n) {\n // if this is not the first block, validate previous hashes\n if (!isHash(block.previous)) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'previous hash is missing or invalid'))\n }\n } else if (blockNumber === 0) {\n // if this is the first block, validate previous hashes\n if (block.previous !== null) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'previous hash should not be set'))\n }\n } else {\n // we have a negative block number\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'invalid block number'))\n }\n } catch (ex) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `Failed BlockPreviousHashValidator: ${ex}`,\n )\n error.cause = ex\n errors.push(error)\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport { ZERO_HASH } from '@xylabs/sdk-js'\nimport type {\n BaseContext,\n BlockValidatorFunction, ChainId, HydratedBlockValidationFunction, HydratedBlockWithHashMeta,\n XL1BlockNumber,\n} from '@xyo-network/xl1-sdk'\nimport { BoundWitnessReferencesValidator, HydratedBlockValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateBlock } from '../block/index.ts'\nimport { PayloadsInBlockValidator } from './validators/index.ts'\n\nexport const validateHydratedBlock = async (\n context: BaseContext,\n hydratedBlock: HydratedBlockWithHashMeta,\n chainIdAtBlockNumber?: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,\n additionalValidators: HydratedBlockValidationFunction[] = [],\n additionalBlockValidators: BlockValidatorFunction[] = [],\n) => {\n const errors: HydratedBlockValidationError[] = []\n try {\n const validateBlockErrors = await validateBlock(\n context,\n hydratedBlock[0],\n chainIdAtBlockNumber ? await chainIdAtBlockNumber(hydratedBlock[0].block) : undefined,\n additionalBlockValidators,\n )\n for (const validateBlockError of validateBlockErrors) {\n errors.push(new HydratedBlockValidationError(hydratedBlock[0]._hash, hydratedBlock, `validateBlock error: ${validateBlockError}`, validateBlockError))\n }\n const bwRefErrors = await BoundWitnessReferencesValidator()(hydratedBlock)\n for (const bwRefError of bwRefErrors) {\n errors.push(new HydratedBlockValidationError(hydratedBlock[0]._hash, hydratedBlock, `boundwitness reference error: ${bwRefError}`, bwRefError))\n }\n const validators: HydratedBlockValidationFunction[] = [\n PayloadsInBlockValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(context, hydratedBlock, chainIdAtBlockNumber)))).flat())\n } catch (ex) {\n errors.push(new HydratedBlockValidationError(\n hydratedBlock?.[0]?._hash ?? ZERO_HASH,\n hydratedBlock,\n `Failed validateHydratedBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { type Hash, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { Payload, WithHashMeta } from '@xyo-network/sdk-js'\nimport type { HydratedBlockValidationFunction } from '@xyo-network/xl1-sdk'\nimport { HydratedBlockValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validatePayloadInBlock } from '../../elevatedPayload/index.ts'\n\nexport const PayloadsInBlockValidator: HydratedBlockValidationFunction = async (\n context,\n [block, payloads],\n) => {\n const errors: HydratedBlockValidationError[] = []\n try {\n const payloadMap: Partial<Record<Hash, WithHashMeta<Payload>>> = {}\n for (const payload of payloads) {\n payloadMap[payload._hash] = payload\n }\n\n const remainingPayloads = { ...payloadMap }\n\n for (let i = 0; i < block.payload_hashes.length; i++) {\n const hash = block.payload_hashes[i]\n const schema = block.payload_schemas[i]\n const payload = payloadMap[hash]\n if (payload) {\n const payloadInBlockErrors = await validatePayloadInBlock(context, payload, [block, payloads])\n for (const payloadInBlockError of payloadInBlockErrors) {\n errors.push(new HydratedBlockValidationError(\n block?._hash ?? ZERO_HASH,\n [block, payloads],\n `validatePayloadInBlock error: ${payloadInBlockError}`,\n payloadInBlockError,\n ))\n }\n delete remainingPayloads[hash]\n } else {\n errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH, [block, payloads], `missing payload ${hash} ${schema}`))\n }\n }\n\n if (Object.keys(remainingPayloads).length > 0) {\n errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH, [block, payloads], `extra payloads ${Object.keys(payloadMap).join(', ')}`))\n }\n } catch (ex) {\n errors.push(new HydratedBlockValidationError(\n block?._hash ?? ZERO_HASH,\n [block, payloads],\n `Failed PayloadsInBlockValidator: ${ex}`,\n ex,\n ))\n }\n\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema } from '@xyo-network/sdk-js'\nimport { SchemaSchema } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n BridgeDestinationObservationSchema, BridgeIntentSchema, BridgeSourceObservationSchema, ChainStakeIntentSchema, HashSchema, InBlockPayloadValidationError,\n TimeSchema, TransferSchema,\n} from '@xyo-network/xl1-sdk'\n\nimport { validateTransactionInBlock } from './lib/index.ts'\nimport {\n validateBridgeDestinationObservationInBlock, validateBridgeIntentInBlock, validateBridgeSourceObservationInBlock, validateChainStakeIntentInBlock,\n validateHashInBlock, validateSchemaInBlock, validateTimeInBlock, validateTransferInBlock,\n} from './payloads/index.ts'\n\nconst payloadValidators: Partial<Record<Schema, InBlockPayloadValidationFunction>> = {\n [BoundWitnessSchema]: validateTransactionInBlock,\n [BridgeDestinationObservationSchema]: validateBridgeDestinationObservationInBlock,\n [BridgeIntentSchema]: validateBridgeIntentInBlock,\n [BridgeSourceObservationSchema]: validateBridgeSourceObservationInBlock,\n [ChainStakeIntentSchema]: validateChainStakeIntentInBlock,\n [HashSchema]: validateHashInBlock,\n [SchemaSchema]: validateSchemaInBlock,\n [TimeSchema]: validateTimeInBlock,\n [TransferSchema]: validateTransferInBlock,\n}\n\nexport const validatePayloadInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n): Promise<InBlockPayloadValidationError[]> => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const validator = payloadValidators[payload.schema]\n if (validator) {\n errors.push(...await validator(context, payload, block))\n } else {\n errors.push(new InBlockPayloadValidationError((block?.[0])?._hash ?? ZERO_HASH, block, payload, `Unsupported payload schema: ${payload.schema}`))\n }\n } catch (ex) {\n const error = new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n ex,\n )\n errors.push(error)\n }\n return errors\n}\n","import type { Payload, WithHashMeta } from '@xyo-network/sdk-js'\nimport { type HydratedBlock, isTransactionBoundWitness } from '@xyo-network/xl1-sdk'\n\nexport const isElevatedFromBlock = (payload: WithHashMeta<Payload>, [, payloads]: HydratedBlock): boolean => {\n const txs = payloads.filter(p => isTransactionBoundWitness(p))\n for (const tx of txs) {\n if (tx.payload_hashes.includes(payload._hash)) {\n return false\n }\n }\n return true\n}\n","import type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, transactionsFromHydratedBlock } from '@xyo-network/xl1-sdk'\n\nexport const validateElevatedFromBlock: InBlockPayloadValidationFunction = (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const txs = transactionsFromHydratedBlock(block)\n const allTxPayloadHashes = new Set(txs.flatMap(tx => tx.payload_hashes))\n if (allTxPayloadHashes.has(payload._hash)) {\n errors.push(new InBlockPayloadValidationError(\n block[0]?._hash,\n block,\n payload,\n `Transaction may not include block payload hash [${payload.schema}]: ${payload._hash}`,\n ))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(block[0]?._hash, block, payload, `validation excepted: ${ex}`, ex))\n }\n return errors\n}\n","import type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, transactionsFromHydratedBlock } from '@xyo-network/xl1-sdk'\n\nexport const validateElevatedFromTransaction: InBlockPayloadValidationFunction = (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const txs = transactionsFromHydratedBlock(block)\n if (txs.length > 0) {\n const hashes = txs.flatMap(tx => tx.payload_hashes)\n if (!hashes.includes(payload._hash)) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'Transaction does not include payload'))\n }\n } else {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'No Transactions in block'))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `Failed validateElevatedFromTransaction: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { isHashMeta } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n BoundWitnessSignaturesValidator, InBlockPayloadValidationError, isTransactionBoundWitness, validateTransaction,\n} from '@xyo-network/xl1-sdk'\n\nexport const validateTransactionInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n): Promise<InBlockPayloadValidationError[]> => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n if (isTransactionBoundWitness(payload) && isHashMeta(payload)) {\n const txErrors = await validateTransaction({ ...context, chainId: block[0].chain }, [payload, block[1]])\n for (const txError of txErrors) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `TransactionValidation error: ${txError}`,\n txError,\n ))\n }\n const txSignatureErrors = await BoundWitnessSignaturesValidator(payload)\n for (const txSignatureError of txSignatureErrors) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `BoundWitnessSignaturesValidator error: ${txSignatureError}`,\n txSignatureError,\n ))\n }\n } else {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'Payload failed isTransactionBoundWitness or isHashMeta'))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(payload._hash ?? ZERO_HASH, block, payload, `validation excepted: ${ex}`, ex))\n }\n return errors\n}\n","import type { IdentityFunction } from '@xylabs/sdk-js'\nimport type { Payload } from '@xyo-network/sdk-js'\nimport { isHashMeta } from '@xyo-network/sdk-js'\nimport type { HydratedBlockWithHashMeta, InBlockPayloadValidationFunctionContext } from '@xyo-network/xl1-sdk'\n\nimport { isElevatedFromBlock } from './isElevatedFromBlock.ts'\nimport { validateElevatedFromBlock } from './validateElevatedFromBlock.ts'\nimport { validateElevatedFromTransaction } from './validateElevatedFromTransaction.ts'\n\nexport const validateTypedPayloadInBlock = async <T extends Payload>(\n context: InBlockPayloadValidationFunctionContext,\n payload: Payload,\n block: HydratedBlockWithHashMeta,\n identityFunction: IdentityFunction<T>,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n if (identityFunction(payload) && isHashMeta(payload)) {\n if (isElevatedFromBlock(payload, block)) {\n errors.push(...await validateElevatedFromBlock(context, payload, block))\n } else {\n errors.push(...await validateElevatedFromTransaction(context, payload, block))\n }\n } else {\n errors.push(new Error('Payload failed identityFunction or isElevated or isStorageMeta'))\n }\n } catch (ex) {\n errors.push(new Error(`Failed validateTypedPayloadInBlock: ${ex}`))\n }\n return errors\n}\n//\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeDestinationObservation } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeDestinationObservationInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeDestinationObservation)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeObservationInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeIntent } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeIntentInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeIntent)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeIntentInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeSourceObservation } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeSourceObservationInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeSourceObservation)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeObservationInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isChainStakeIntent } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateChainStakeIntentInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isChainStakeIntent)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n block[0]?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isHashPayload } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateHashInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: (InBlockPayloadValidationError)[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isHashPayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { isSchemaPayload } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateSchemaInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isSchemaPayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateSchemaInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isTimePayload } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateTimeInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isTimePayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateTimeInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isTransfer } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateTransferInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isTransfer)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateTransferInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { spanRootAsync, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { ChainId, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport { HydratedBlockStateValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateHydratedBlock } from '../hydratedBlock/index.ts'\nimport { RequiredBalanceBlockStateValidator } from './validators/index.ts'\n\nexport const validateHydratedBlockState: HydratedBlockStateValidationFunction = async (\n context,\n hydratedBlock,\n additionalValidators = [],\n) => {\n return await spanRootAsync('validateHydratedBlockState', async () => {\n const errors: HydratedBlockStateValidationError[] = []\n let chainId: ChainId | undefined\n try {\n chainId = await context.chainIdAtBlockNumber(hydratedBlock[0].block)\n const validateHydratedBlockErrors = await validateHydratedBlock(context, hydratedBlock, context.chainIdAtBlockNumber)\n for (const validateHydratedBlockError of validateHydratedBlockErrors) {\n errors.push(new HydratedBlockStateValidationError(\n hydratedBlock[0]._hash,\n chainId,\n hydratedBlock,\n `validateBlock error: ${validateHydratedBlockError}`,\n validateHydratedBlockError,\n ))\n }\n const validators: HydratedBlockStateValidationFunction[] = [\n RequiredBalanceBlockStateValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(context, hydratedBlock)))).flat())\n } catch (ex) {\n errors.push(new HydratedBlockStateValidationError(\n hydratedBlock?.[0]?._hash ?? ZERO_HASH,\n chainId ?? '00' as ChainId,\n hydratedBlock,\n `Failed validateHydratedBlockState: ${ex}`,\n ex,\n ))\n }\n return errors\n }, context)\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport { spanRootAsync, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { ChainId, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n AttoXL1, HydratedBlockStateValidationError, netBalancesForPayloads, XYO_ZERO_ADDRESS,\n} from '@xyo-network/xl1-sdk'\n\nexport const RequiredBalanceBlockStateValidator: HydratedBlockStateValidationFunction = async (\n context,\n block,\n) => {\n return await spanRootAsync('RequiredBalanceBlockStateValidator', async () => {\n const errors: HydratedBlockStateValidationError[] = []\n let chainId = '00' as ChainId\n try {\n // TODO: Filter by non-producer elevated payloads\n // to allow for transfers from ZERO address\n const netBalances = netBalancesForPayloads({ singletons: {} }, (block[1]))\n const netBalanceAddresses = Object.keys(netBalances) as Address[]\n const requiredBalances: Record<Address, bigint> = {}\n for (const address of netBalanceAddresses) {\n if (netBalances[address] < 0n) {\n requiredBalances[address] = -netBalances[address]\n }\n }\n const previous = block[0].previous\n if (previous === null) return [new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n '00' as ChainId,\n block,\n 'Insufficient funds because first block',\n )]\n chainId = await context.chainIdAtBlockNumber(block[0].block)\n await spanRootAsync('RequiredBalanceBlockStateValidator|balancesLoop', async () => {\n for (const [address, reqBalance] of Object.entries(requiredBalances) as [Address, bigint][]) {\n const result = await context.accountBalance.accountBalances([address], { head: previous })\n const balance = result[address] ?? AttoXL1(0n)\n if (address !== XYO_ZERO_ADDRESS && reqBalance > balance) {\n errors.push(new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n chainId,\n block,\n `insufficient balance for ${address} ${balance} < ${requiredBalances[address]}`,\n ))\n }\n }\n }, context)\n } catch (ex) {\n errors.push(new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n chainId,\n block,\n `Failed RequiredBalanceBlockStateValidator: ${ex}`,\n ex,\n ))\n }\n return await Promise.resolve(errors)\n }, context)\n}\n"],"mappings":"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","names":["ZERO_HASH","BlockValidationError","BoundWitnessSignaturesValidator","ZERO_HASH","BlockValidationError","isAllowedBlockPayloadSchema","BlockAllowedPayloadSchemasValidator","context","block","errors","schema","payload_schemas","isAllowedBlockPayloadSchema","push","BlockValidationError","_hash","ZERO_HASH","ex","isDefined","ZERO_HASH","BoundWitnessSchema","BlockValidationError","BlockFieldsValidator","context","block","chainId","errors","isDefined","chain","toLowerCase","push","BlockValidationError","_hash","ZERO_HASH","txHashes","i","payload_hashes","length","payload_schemas","BoundWitnessSchema","Set","size","ex","ZERO_HASH","BlockBoundWitnessWithStorageMetaJsonSchema","BlockValidationError","Ajv","BlockJsonSchemaValidator","jsonSchema","BlockBoundWitnessWithStorageMetaJsonSchema","ajv","Ajv","allErrors","strict","validate","compile","context","block","errors","length","error","BlockValidationError","_hash","ZERO_HASH","errorsText","separator","cause","push","ex","isHash","ZERO_HASH","BlockValidationError","BlockPreviousHashValidator","context","block","errors","blockNumber","isHash","previous","push","BlockValidationError","_hash","ZERO_HASH","ex","error","cause","validateBlock","context","block","chainId","additionalValidators","errors","bwErrors","BoundWitnessSignaturesValidator","bwError","push","BlockValidationError","_hash","ZERO_HASH","validators","BlockFieldsValidator","BlockPreviousHashValidator","BlockAllowedPayloadSchemasValidator","Promise","all","map","validator","flat","ex","ZERO_HASH","BoundWitnessReferencesValidator","HydratedBlockValidationError","ZERO_HASH","HydratedBlockValidationError","ZERO_HASH","BoundWitnessSchema","SchemaSchema","BridgeDestinationObservationSchema","BridgeIntentSchema","BridgeSourceObservationSchema","ChainStakeIntentSchema","HashSchema","InBlockPayloadValidationError","TimeSchema","TransferSchema","isTransactionBoundWitness","isElevatedFromBlock","payload","payloads","txs","filter","p","isTransactionBoundWitness","tx","payload_hashes","includes","_hash","InBlockPayloadValidationError","transactionsFromHydratedBlock","validateElevatedFromBlock","context","payload","block","errors","txs","transactionsFromHydratedBlock","allTxPayloadHashes","Set","flatMap","tx","payload_hashes","has","_hash","push","InBlockPayloadValidationError","schema","ex","InBlockPayloadValidationError","transactionsFromHydratedBlock","validateElevatedFromTransaction","context","payload","block","errors","txs","transactionsFromHydratedBlock","length","hashes","flatMap","tx","payload_hashes","includes","_hash","push","InBlockPayloadValidationError","ex","ZERO_HASH","isHashMeta","BoundWitnessSignaturesValidator","InBlockPayloadValidationError","isTransactionBoundWitness","validateTransaction","validateTransactionInBlock","context","payload","block","errors","isTransactionBoundWitness","isHashMeta","txErrors","validateTransaction","chainId","chain","txError","push","InBlockPayloadValidationError","_hash","txSignatureErrors","BoundWitnessSignaturesValidator","txSignatureError","ex","ZERO_HASH","isHashMeta","validateTypedPayloadInBlock","context","payload","block","identityFunction","errors","isHashMeta","isElevatedFromBlock","push","validateElevatedFromBlock","validateElevatedFromTransaction","Error","ex","ZERO_HASH","InBlockPayloadValidationError","isBridgeDestinationObservation","validateBridgeDestinationObservationInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeDestinationObservation","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isBridgeIntent","validateBridgeIntentInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeIntent","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isBridgeSourceObservation","validateBridgeSourceObservationInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeSourceObservation","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isChainStakeIntent","validateChainStakeIntentInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isChainStakeIntent","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isHashPayload","validateHashInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isHashPayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","isSchemaPayload","InBlockPayloadValidationError","validateSchemaInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isSchemaPayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isTimePayload","validateTimeInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isTimePayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isTransfer","validateTransferInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isTransfer","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","payloadValidators","BoundWitnessSchema","validateTransactionInBlock","BridgeDestinationObservationSchema","validateBridgeDestinationObservationInBlock","BridgeIntentSchema","validateBridgeIntentInBlock","BridgeSourceObservationSchema","validateBridgeSourceObservationInBlock","ChainStakeIntentSchema","validateChainStakeIntentInBlock","HashSchema","validateHashInBlock","SchemaSchema","validateSchemaInBlock","TimeSchema","validateTimeInBlock","TransferSchema","validateTransferInBlock","validatePayloadInBlock","context","payload","block","errors","validator","schema","push","InBlockPayloadValidationError","_hash","ZERO_HASH","ex","error","PayloadsInBlockValidator","context","block","payloads","errors","payloadMap","payload","_hash","remainingPayloads","i","payload_hashes","length","hash","schema","payload_schemas","payloadInBlockErrors","validatePayloadInBlock","payloadInBlockError","push","HydratedBlockValidationError","ZERO_HASH","Object","keys","join","ex","validateHydratedBlock","context","hydratedBlock","chainIdAtBlockNumber","additionalValidators","additionalBlockValidators","errors","validateBlockErrors","validateBlock","block","undefined","validateBlockError","push","HydratedBlockValidationError","_hash","bwRefErrors","BoundWitnessReferencesValidator","bwRefError","validators","PayloadsInBlockValidator","Promise","all","map","v","flat","ex","ZERO_HASH","spanRootAsync","ZERO_HASH","HydratedBlockStateValidationError","spanRootAsync","ZERO_HASH","AttoXL1","HydratedBlockStateValidationError","netBalancesForPayloads","XYO_ZERO_ADDRESS","RequiredBalanceBlockStateValidator","context","block","spanRootAsync","errors","chainId","netBalances","netBalancesForPayloads","singletons","netBalanceAddresses","Object","keys","requiredBalances","address","previous","HydratedBlockStateValidationError","_hash","ZERO_HASH","chainIdAtBlockNumber","reqBalance","entries","result","accountBalance","accountBalances","head","balance","AttoXL1","XYO_ZERO_ADDRESS","push","ex","Promise","resolve","validateHydratedBlockState","context","hydratedBlock","additionalValidators","spanRootAsync","errors","chainId","chainIdAtBlockNumber","block","validateHydratedBlockErrors","validateHydratedBlock","validateHydratedBlockError","push","HydratedBlockStateValidationError","_hash","validators","RequiredBalanceBlockStateValidator","Promise","all","map","v","flat","ex","ZERO_HASH"]}
|
|
1
|
+
{"version":3,"sources":["../../src/block/validateBlock.ts","../../src/block/validators/AllowedPayloadSchemas.ts","../../src/block/validators/BoundWitness.ts","../../src/block/validators/Fields.ts","../../src/block/validators/JsonSchema.ts","../../src/block/validators/PreviousHash.ts","../../src/hydratedBlock/validateHydratedBlock.ts","../../src/hydratedBlock/validators/Payloads.ts","../../src/elevatedPayload/validatePayloadInBlock.ts","../../src/elevatedPayload/lib/isElevatedFromBlock.ts","../../src/elevatedPayload/lib/validateElevatedFromBlock.ts","../../src/elevatedPayload/lib/validateElevatedFromTransaction.ts","../../src/elevatedPayload/lib/validateTransactionInBlock.ts","../../src/elevatedPayload/lib/validateTypedPayloadInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeDestinationObservationInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeIntentInBlock.ts","../../src/elevatedPayload/payloads/validateBridgeSourceObservationInBlock.ts","../../src/elevatedPayload/payloads/validateChainStakeIntentInBlock.ts","../../src/elevatedPayload/payloads/validateHashInBlock.ts","../../src/elevatedPayload/payloads/validateSchemaInBlock.ts","../../src/elevatedPayload/payloads/validateTimeInBlock.ts","../../src/elevatedPayload/payloads/validateTransferInBlock.ts","../../src/hydratedBlockState/validateHydratedBlockState.ts","../../src/hydratedBlockState/validators/RequiredBalance.ts","../../src/hydratedTransactionState/validateHydratedTransactionState.ts","../../src/hydratedTransactionState/validators/RequiredBalance.ts"],"sourcesContent":["import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext,\n BlockBoundWitness, BlockValidatorFunction, ChainId,\n} from '@xyo-network/xl1-sdk'\nimport { BlockValidationError } from '@xyo-network/xl1-sdk'\n\nimport {\n BlockAllowedPayloadSchemasValidator,\n BlockBoundWitnessValidator,\n BlockFieldsValidator, BlockPreviousHashValidator,\n} from './validators/index.ts'\n\nexport const validateBlock = async (\n context: BaseContext,\n block: BlockBoundWitness,\n chainId?: ChainId,\n additionalValidators: BlockValidatorFunction[] = [],\n): Promise<BlockValidationError[]> => {\n const errors: BlockValidationError[] = []\n try {\n const validators: BlockValidatorFunction[] = [\n BlockBoundWitnessValidator,\n BlockFieldsValidator,\n BlockPreviousHashValidator,\n BlockAllowedPayloadSchemasValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(\n validators.map(validator => validator(context, block, chainId)),\n )).flat())\n } catch (ex) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'validation excepted', ex))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-sdk'\nimport {\n BlockValidationError,\n isAllowedBlockPayloadSchema,\n} from '@xyo-network/xl1-sdk'\n\nexport const BlockAllowedPayloadSchemasValidator: BlockValidatorFunction = (\n context,\n block,\n) => {\n const errors: BlockValidationError[] = []\n try {\n for (const schema of block.payload_schemas) {\n if (!isAllowedBlockPayloadSchema(schema)) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `payload schema not allowed in block: ${schema}`,\n ))\n }\n }\n } catch (ex) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport { BoundWitnessValidator } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-sdk'\nimport { BlockValidationError } from '@xyo-network/xl1-sdk'\n\nconst error = (block: BlockBoundWitness, message: string): BlockValidationError =>\n new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, message)\n\n// Friendly pre-check for the same wallet/producer bug surfaced on the\n// transaction side: signatures emitted under `signatures` instead of\n// `$signatures`. Mirrors TransactionBoundWitnessValidator.\nconst checkSignaturesShape = (block: BlockBoundWitness): BlockValidationError[] => {\n const bw = block as unknown as Record<string, unknown>\n if (bw.$signatures === undefined) {\n return Array.isArray(bw.signatures)\n ? [error(block, 'BoundWitness has `signatures` but expected `$signatures` (signatures must be in the meta-prefixed `$signatures` key)')]\n : [error(block, 'BoundWitness is missing `$signatures`')]\n }\n return []\n}\n\n/**\n * Validates the block's BoundWitness wholistically by delegating to\n * `BoundWitnessValidator.validate()`. Mirrors TransactionBoundWitnessValidator\n * for blocks. Covers signatures (length parity + per-address elliptic-curve\n * verification against the BW data hash), addresses uniqueness,\n * payload_hashes/payload_schemas length parity, schemas, and top-level\n * schema check.\n */\nexport const BlockBoundWitnessValidator: BlockValidatorFunction = async (\n _context,\n block,\n) => {\n try {\n const shapeErrors = checkSignaturesShape(block)\n if (shapeErrors.length > 0) return shapeErrors\n const bwValidator = new BoundWitnessValidator(block)\n const bwErrors = await bwValidator.validate()\n return bwErrors.map(e => error(block, `BoundWitness validation: ${e.message}`))\n } catch (ex) {\n return [error(block, `Failed BlockBoundWitnessValidator: ${String(ex)}`)]\n }\n}\n","import type { Hash } from '@xylabs/sdk-js'\nimport { isDefined, ZERO_HASH } from '@xylabs/sdk-js'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext,\n BlockBoundWitness, BlockValidatorFunction, ChainId,\n} from '@xyo-network/xl1-sdk'\nimport { BlockValidationError } from '@xyo-network/xl1-sdk'\n\nexport const BlockFieldsValidator: BlockValidatorFunction = (\n context: BaseContext,\n block: BlockBoundWitness,\n chainId?: ChainId,\n) => {\n const errors: BlockValidationError[] = []\n try {\n if (isDefined(chainId) && block.chain !== chainId.toLowerCase()) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'Invalid chain id'))\n }\n\n // get transaction hashes\n const txHashes: Hash[] = []\n for (let i = 0; i < block.payload_hashes.length; i++) {\n if (block.payload_schemas[i] === BoundWitnessSchema) {\n txHashes.push(block.payload_hashes[i])\n }\n }\n\n // check if transaction hashes are unique\n if (new Set(txHashes).size < txHashes.length) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `Duplicate Transaction Hashes: ${txHashes}`,\n ))\n }\n } catch (ex) {\n errors.push(new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type {\n BaseContext, BlockBoundWitness, BlockValidatorFunction,\n} from '@xyo-network/xl1-sdk'\nimport { BlockBoundWitnessWithStorageMetaJsonSchema, BlockValidationError } from '@xyo-network/xl1-sdk'\nimport type { AnySchema } from 'ajv'\nimport { Ajv } from 'ajv'\n\nexport const BlockJsonSchemaValidator = (jsonSchema: AnySchema = BlockBoundWitnessWithStorageMetaJsonSchema): BlockValidatorFunction => {\n const ajv = new Ajv({ allErrors: true, strict: true })\n const validate = ajv.compile(jsonSchema)\n return async (\n context: BaseContext,\n block: BlockBoundWitness,\n ) => {\n const errors: BlockValidationError[] = []\n try {\n await validate(block)\n if ((validate.errors ?? []).length > 0) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `failed JSON schema validation: ${ajv.errorsText(validate.errors, { separator: '\\n' })}`,\n )\n error.cause = validate.errors\n errors.push(error)\n }\n } catch (ex) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `validation excepted: ${ex}`,\n )\n error.cause = ex\n errors.push(error)\n }\n return errors\n }\n}\n","import { isHash, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { WithStorageMeta } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-sdk'\nimport { BlockValidationError } from '@xyo-network/xl1-sdk'\n\nexport const BlockPreviousHashValidator: BlockValidatorFunction = (\n context,\n block,\n) => {\n const errors: BlockValidationError[] = []\n try {\n const blockNumber = block.block\n if (blockNumber > 0n) {\n // if this is not the first block, validate previous hashes\n if (!isHash(block.previous)) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'previous hash is missing or invalid'))\n }\n } else if (blockNumber === 0) {\n // if this is the first block, validate previous hashes\n if (block.previous !== null) {\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'previous hash should not be set'))\n }\n } else {\n // we have a negative block number\n errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'invalid block number'))\n }\n } catch (ex) {\n const error = new BlockValidationError(\n (block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,\n block,\n `Failed BlockPreviousHashValidator: ${ex}`,\n )\n error.cause = ex\n errors.push(error)\n }\n return errors\n}\n","import type { Promisable } from '@xylabs/sdk-js'\nimport { ZERO_HASH } from '@xylabs/sdk-js'\nimport type {\n BaseContext,\n BlockValidatorFunction, ChainId, HydratedBlockValidationFunction, HydratedBlockWithHashMeta,\n XL1BlockNumber,\n} from '@xyo-network/xl1-sdk'\nimport { BoundWitnessReferencesValidator, HydratedBlockValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateBlock } from '../block/index.ts'\nimport { PayloadsInBlockValidator } from './validators/index.ts'\n\nexport const validateHydratedBlock = async (\n context: BaseContext,\n hydratedBlock: HydratedBlockWithHashMeta,\n chainIdAtBlockNumber?: (blockNumber: XL1BlockNumber) => Promisable<ChainId>,\n additionalValidators: HydratedBlockValidationFunction[] = [],\n additionalBlockValidators: BlockValidatorFunction[] = [],\n) => {\n const errors: HydratedBlockValidationError[] = []\n try {\n const validateBlockErrors = await validateBlock(\n context,\n hydratedBlock[0],\n chainIdAtBlockNumber ? await chainIdAtBlockNumber(hydratedBlock[0].block) : undefined,\n additionalBlockValidators,\n )\n for (const validateBlockError of validateBlockErrors) {\n errors.push(new HydratedBlockValidationError(hydratedBlock[0]._hash, hydratedBlock, `validateBlock error: ${validateBlockError}`, validateBlockError))\n }\n const bwRefErrors = await BoundWitnessReferencesValidator()(hydratedBlock)\n for (const bwRefError of bwRefErrors) {\n errors.push(new HydratedBlockValidationError(hydratedBlock[0]._hash, hydratedBlock, `boundwitness reference error: ${bwRefError}`, bwRefError))\n }\n const validators: HydratedBlockValidationFunction[] = [\n PayloadsInBlockValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(context, hydratedBlock, chainIdAtBlockNumber)))).flat())\n } catch (ex) {\n errors.push(new HydratedBlockValidationError(\n hydratedBlock?.[0]?._hash ?? ZERO_HASH,\n hydratedBlock,\n `Failed validateHydratedBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { type Hash, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { Payload, WithHashMeta } from '@xyo-network/sdk-js'\nimport type { HydratedBlockValidationFunction } from '@xyo-network/xl1-sdk'\nimport { HydratedBlockValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validatePayloadInBlock } from '../../elevatedPayload/index.ts'\n\nexport const PayloadsInBlockValidator: HydratedBlockValidationFunction = async (\n context,\n [block, payloads],\n) => {\n const errors: HydratedBlockValidationError[] = []\n try {\n const payloadMap: Partial<Record<Hash, WithHashMeta<Payload>>> = {}\n for (const payload of payloads) {\n payloadMap[payload._hash] = payload\n }\n\n const remainingPayloads = { ...payloadMap }\n\n for (let i = 0; i < block.payload_hashes.length; i++) {\n const hash = block.payload_hashes[i]\n const schema = block.payload_schemas[i]\n const payload = payloadMap[hash]\n if (payload) {\n const payloadInBlockErrors = await validatePayloadInBlock(context, payload, [block, payloads])\n for (const payloadInBlockError of payloadInBlockErrors) {\n errors.push(new HydratedBlockValidationError(\n block?._hash ?? ZERO_HASH,\n [block, payloads],\n `validatePayloadInBlock error: ${payloadInBlockError}`,\n payloadInBlockError,\n ))\n }\n delete remainingPayloads[hash]\n } else {\n errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH, [block, payloads], `missing payload ${hash} ${schema}`))\n }\n }\n\n if (Object.keys(remainingPayloads).length > 0) {\n errors.push(new HydratedBlockValidationError(block?._hash ?? ZERO_HASH, [block, payloads], `extra payloads ${Object.keys(payloadMap).join(', ')}`))\n }\n } catch (ex) {\n errors.push(new HydratedBlockValidationError(\n block?._hash ?? ZERO_HASH,\n [block, payloads],\n `Failed PayloadsInBlockValidator: ${ex}`,\n ex,\n ))\n }\n\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { Schema } from '@xyo-network/sdk-js'\nimport { SchemaSchema } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n BridgeDestinationObservationSchema, BridgeIntentSchema, BridgeSourceObservationSchema, ChainStakeIntentSchema, HashSchema, InBlockPayloadValidationError,\n TimeSchema, TransferSchema,\n} from '@xyo-network/xl1-sdk'\n\nimport { validateTransactionInBlock } from './lib/index.ts'\nimport {\n validateBridgeDestinationObservationInBlock, validateBridgeIntentInBlock, validateBridgeSourceObservationInBlock, validateChainStakeIntentInBlock,\n validateHashInBlock, validateSchemaInBlock, validateTimeInBlock, validateTransferInBlock,\n} from './payloads/index.ts'\n\nconst payloadValidators: Partial<Record<Schema, InBlockPayloadValidationFunction>> = {\n [BoundWitnessSchema]: validateTransactionInBlock,\n [BridgeDestinationObservationSchema]: validateBridgeDestinationObservationInBlock,\n [BridgeIntentSchema]: validateBridgeIntentInBlock,\n [BridgeSourceObservationSchema]: validateBridgeSourceObservationInBlock,\n [ChainStakeIntentSchema]: validateChainStakeIntentInBlock,\n [HashSchema]: validateHashInBlock,\n [SchemaSchema]: validateSchemaInBlock,\n [TimeSchema]: validateTimeInBlock,\n [TransferSchema]: validateTransferInBlock,\n}\n\nexport const validatePayloadInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n): Promise<InBlockPayloadValidationError[]> => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const validator = payloadValidators[payload.schema]\n if (validator) {\n errors.push(...await validator(context, payload, block))\n } else {\n errors.push(new InBlockPayloadValidationError((block?.[0])?._hash ?? ZERO_HASH, block, payload, `Unsupported payload schema: ${payload.schema}`))\n }\n } catch (ex) {\n const error = new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n ex,\n )\n errors.push(error)\n }\n return errors\n}\n","import type { Payload, WithHashMeta } from '@xyo-network/sdk-js'\nimport { type HydratedBlock, isTransactionBoundWitness } from '@xyo-network/xl1-sdk'\n\nexport const isElevatedFromBlock = (payload: WithHashMeta<Payload>, [, payloads]: HydratedBlock): boolean => {\n const txs = payloads.filter(p => isTransactionBoundWitness(p))\n for (const tx of txs) {\n if (tx.payload_hashes.includes(payload._hash)) {\n return false\n }\n }\n return true\n}\n","import type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, transactionsFromHydratedBlock } from '@xyo-network/xl1-sdk'\n\nexport const validateElevatedFromBlock: InBlockPayloadValidationFunction = (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const txs = transactionsFromHydratedBlock(block)\n const allTxPayloadHashes = new Set(txs.flatMap(tx => tx.payload_hashes))\n if (allTxPayloadHashes.has(payload._hash)) {\n errors.push(new InBlockPayloadValidationError(\n block[0]?._hash,\n block,\n payload,\n `Transaction may not include block payload hash [${payload.schema}]: ${payload._hash}`,\n ))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(block[0]?._hash, block, payload, `validation excepted: ${ex}`, ex))\n }\n return errors\n}\n","import type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, transactionsFromHydratedBlock } from '@xyo-network/xl1-sdk'\n\nexport const validateElevatedFromTransaction: InBlockPayloadValidationFunction = (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const txs = transactionsFromHydratedBlock(block)\n if (txs.length > 0) {\n const hashes = txs.flatMap(tx => tx.payload_hashes)\n if (!hashes.includes(payload._hash)) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'Transaction does not include payload'))\n }\n } else {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'No Transactions in block'))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `Failed validateElevatedFromTransaction: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { isHashMeta } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n BoundWitnessSignaturesValidator, InBlockPayloadValidationError, isTransactionBoundWitness, validateTransaction,\n} from '@xyo-network/xl1-sdk'\n\nexport const validateTransactionInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n): Promise<InBlockPayloadValidationError[]> => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n if (isTransactionBoundWitness(payload) && isHashMeta(payload)) {\n const txErrors = await validateTransaction({ ...context, chainId: block[0].chain }, [payload, block[1]])\n for (const txError of txErrors) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `TransactionValidation error: ${txError}`,\n txError,\n ))\n }\n const txSignatureErrors = await BoundWitnessSignaturesValidator(payload)\n for (const txSignatureError of txSignatureErrors) {\n errors.push(new InBlockPayloadValidationError(\n payload._hash,\n block,\n payload,\n `BoundWitnessSignaturesValidator error: ${txSignatureError}`,\n txSignatureError,\n ))\n }\n } else {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, 'Payload failed isTransactionBoundWitness or isHashMeta'))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(payload._hash ?? ZERO_HASH, block, payload, `validation excepted: ${ex}`, ex))\n }\n return errors\n}\n","import type { IdentityFunction } from '@xylabs/sdk-js'\nimport type { Payload } from '@xyo-network/sdk-js'\nimport { isHashMeta } from '@xyo-network/sdk-js'\nimport type { HydratedBlockWithHashMeta, InBlockPayloadValidationFunctionContext } from '@xyo-network/xl1-sdk'\n\nimport { isElevatedFromBlock } from './isElevatedFromBlock.ts'\nimport { validateElevatedFromBlock } from './validateElevatedFromBlock.ts'\nimport { validateElevatedFromTransaction } from './validateElevatedFromTransaction.ts'\n\nexport const validateTypedPayloadInBlock = async <T extends Payload>(\n context: InBlockPayloadValidationFunctionContext,\n payload: Payload,\n block: HydratedBlockWithHashMeta,\n identityFunction: IdentityFunction<T>,\n): Promise<Error[]> => {\n const errors: Error[] = []\n try {\n if (identityFunction(payload) && isHashMeta(payload)) {\n if (isElevatedFromBlock(payload, block)) {\n errors.push(...await validateElevatedFromBlock(context, payload, block))\n } else {\n errors.push(...await validateElevatedFromTransaction(context, payload, block))\n }\n } else {\n errors.push(new Error('Payload failed identityFunction or isElevated or isStorageMeta'))\n }\n } catch (ex) {\n errors.push(new Error(`Failed validateTypedPayloadInBlock: ${ex}`))\n }\n return errors\n}\n//\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeDestinationObservation } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeDestinationObservationInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeDestinationObservation)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeObservationInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeIntent } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeIntentInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeIntent)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeIntentInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isBridgeSourceObservation } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateBridgeSourceObservationInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isBridgeSourceObservation)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateBridgeObservationInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isChainStakeIntent } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateChainStakeIntentInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isChainStakeIntent)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n block[0]?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isHashPayload } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateHashInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: (InBlockPayloadValidationError)[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isHashPayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `validation excepted: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport { isSchemaPayload } from '@xyo-network/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateSchemaInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isSchemaPayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateSchemaInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isTimePayload } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateTimeInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isTimePayload)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateTimeInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { ZERO_HASH } from '@xylabs/sdk-js'\nimport type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'\nimport { InBlockPayloadValidationError, isTransfer } from '@xyo-network/xl1-sdk'\n\nimport { validateTypedPayloadInBlock } from '../lib/index.ts'\n\nexport const validateTransferInBlock: InBlockPayloadValidationFunction = async (\n context,\n payload,\n block,\n) => {\n const errors: InBlockPayloadValidationError[] = []\n try {\n const typedErrors = await validateTypedPayloadInBlock(context, payload, block, isTransfer)\n for (const typedError of typedErrors) {\n errors.push(new InBlockPayloadValidationError(payload._hash, block, payload, `validateTypedPayloadInBlock error: ${typedError}`, typedError))\n }\n } catch (ex) {\n errors.push(new InBlockPayloadValidationError(\n (block?.[0])?._hash ?? ZERO_HASH,\n block,\n payload,\n `Failed validateTransferInBlock: ${ex}`,\n ex,\n ))\n }\n return errors\n}\n","import { spanRootAsync, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { ChainId, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport { HydratedBlockStateValidationError } from '@xyo-network/xl1-sdk'\n\nimport { validateHydratedBlock } from '../hydratedBlock/index.ts'\nimport { RequiredBalanceBlockStateValidator } from './validators/index.ts'\n\nexport const validateHydratedBlockState: HydratedBlockStateValidationFunction = async (\n context,\n hydratedBlock,\n additionalValidators = [],\n) => {\n return await spanRootAsync('validateHydratedBlockState', async () => {\n const errors: HydratedBlockStateValidationError[] = []\n let chainId: ChainId | undefined\n try {\n chainId = await context.chainIdAtBlockNumber(hydratedBlock[0].block)\n const validateHydratedBlockErrors = await validateHydratedBlock(context, hydratedBlock, context.chainIdAtBlockNumber)\n for (const validateHydratedBlockError of validateHydratedBlockErrors) {\n errors.push(new HydratedBlockStateValidationError(\n hydratedBlock[0]._hash,\n chainId,\n hydratedBlock,\n `validateBlock error: ${validateHydratedBlockError}`,\n validateHydratedBlockError,\n ))\n }\n const validators: HydratedBlockStateValidationFunction[] = [\n RequiredBalanceBlockStateValidator,\n ...additionalValidators,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(context, hydratedBlock)))).flat())\n } catch (ex) {\n errors.push(new HydratedBlockStateValidationError(\n hydratedBlock?.[0]?._hash ?? ZERO_HASH,\n chainId ?? '00' as ChainId,\n hydratedBlock,\n `Failed validateHydratedBlockState: ${ex}`,\n ex,\n ))\n }\n return errors\n }, context)\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport { spanRootAsync, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { ChainId, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n AttoXL1, HydratedBlockStateValidationError, netBalancesForPayloads, XYO_ZERO_ADDRESS,\n} from '@xyo-network/xl1-sdk'\n\nexport const RequiredBalanceBlockStateValidator: HydratedBlockStateValidationFunction = async (\n context,\n block,\n) => {\n return await spanRootAsync('RequiredBalanceBlockStateValidator', async () => {\n const errors: HydratedBlockStateValidationError[] = []\n let chainId = '00' as ChainId\n try {\n // TODO: Filter by non-producer elevated payloads\n // to allow for transfers from ZERO address\n const netBalances = netBalancesForPayloads({ singletons: {} }, (block[1]))\n const netBalanceAddresses = Object.keys(netBalances) as Address[]\n const requiredBalances: Record<Address, bigint> = {}\n for (const address of netBalanceAddresses) {\n if (netBalances[address] < 0n) {\n requiredBalances[address] = -netBalances[address]\n }\n }\n const previous = block[0].previous\n if (previous === null) return [new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n '00' as ChainId,\n block,\n 'Insufficient funds because first block',\n )]\n chainId = await context.chainIdAtBlockNumber(block[0].block)\n await spanRootAsync('RequiredBalanceBlockStateValidator|balancesLoop', async () => {\n for (const [address, reqBalance] of Object.entries(requiredBalances) as [Address, bigint][]) {\n const result = await context.accountBalance.accountBalances([address], { head: previous })\n const balance = result[address] ?? AttoXL1(0n)\n if (address !== XYO_ZERO_ADDRESS && reqBalance > balance) {\n errors.push(new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n chainId,\n block,\n `insufficient balance for ${address} ${balance} < ${requiredBalances[address]}`,\n ))\n }\n }\n }, context)\n } catch (ex) {\n errors.push(new HydratedBlockStateValidationError(\n block?.[0]?._hash ?? ZERO_HASH,\n chainId,\n block,\n `Failed RequiredBalanceBlockStateValidator: ${ex}`,\n ex,\n ))\n }\n return await Promise.resolve(errors)\n }, context)\n}\n","import { spanRootAsync, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { HydratedTransactionStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport { HydratedTransactionValidationError } from '@xyo-network/xl1-sdk'\n\nimport { RequiredBalanceTransactionStateValidator } from './validators/index.ts'\n\nexport const validateHydratedTransactionState: HydratedTransactionStateValidationFunction = async (\n context,\n tx,\n) => {\n return await spanRootAsync('validateHydratedTransactionState', async () => {\n const errors: HydratedTransactionValidationError[] = []\n try {\n const validators: HydratedTransactionStateValidationFunction[] = [\n RequiredBalanceTransactionStateValidator,\n ]\n errors.push(...(await Promise.all(validators.map(v => v(context, tx)))).flat())\n } catch (ex) {\n errors.push(new HydratedTransactionValidationError(\n tx?.[0]?._hash ?? ZERO_HASH,\n tx,\n `Failed validateHydratedTransactionState: ${ex}`,\n ex,\n ))\n }\n return errors\n }, context)\n}\n","import type { Address } from '@xylabs/sdk-js'\nimport { spanRootAsync, ZERO_HASH } from '@xylabs/sdk-js'\nimport type { HydratedTransactionStateValidationFunction } from '@xyo-network/xl1-sdk'\nimport {\n AttoXL1,\n HydratedTransactionValidationError,\n HydratedTransactionWrapper,\n netBalancesForPayloads,\n transactionRequiredGas,\n XYO_ZERO_ADDRESS,\n} from '@xyo-network/xl1-sdk'\n\nexport const RequiredBalanceTransactionStateValidator: HydratedTransactionStateValidationFunction = async (\n context,\n tx,\n) => {\n return await spanRootAsync('RequiredBalanceTransactionStateValidator', async () => {\n const errors: HydratedTransactionValidationError[] = []\n try {\n const netBalances = netBalancesForPayloads({ singletons: {} }, tx[1])\n\n const wrapper = await HydratedTransactionWrapper.parse(tx)\n const from = wrapper.boundWitness.from as Address\n const gasCost = transactionRequiredGas(tx) * wrapper.fees.gasPrice\n const baseCost = wrapper.fees.base\n netBalances[from] = (netBalances[from] ?? 0n) - gasCost - baseCost\n\n const requiredBalances: Record<Address, bigint> = {}\n for (const [address, net] of Object.entries(netBalances) as [Address, bigint][]) {\n if (net < 0n) requiredBalances[address] = -net\n }\n\n const requiredAddresses = Object.keys(requiredBalances) as Address[]\n if (requiredAddresses.length === 0) return errors\n\n const headBlock = (await context.blockViewer.currentBlock())[0]\n const balances = await context.accountBalanceViewer.accountBalances(\n requiredAddresses,\n { head: headBlock._hash },\n )\n\n for (const address of requiredAddresses) {\n const reqBalance = requiredBalances[address]\n const balance = balances[address] ?? AttoXL1(0n)\n if (address !== XYO_ZERO_ADDRESS && reqBalance > balance) {\n errors.push(new HydratedTransactionValidationError(\n tx?.[0]?._hash ?? ZERO_HASH,\n tx,\n `insufficient balance for ${address} ${balance} < ${reqBalance}`,\n ))\n }\n }\n } catch (ex) {\n errors.push(new HydratedTransactionValidationError(\n tx?.[0]?._hash ?? ZERO_HASH,\n tx,\n `Failed RequiredBalanceTransactionStateValidator: ${ex}`,\n ex,\n ))\n }\n return errors\n }, context)\n}\n"],"mappings":"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","names":["ZERO_HASH","BlockValidationError","ZERO_HASH","BlockValidationError","isAllowedBlockPayloadSchema","BlockAllowedPayloadSchemasValidator","context","block","errors","schema","payload_schemas","isAllowedBlockPayloadSchema","push","BlockValidationError","_hash","ZERO_HASH","ex","ZERO_HASH","BoundWitnessValidator","BlockValidationError","error","block","message","BlockValidationError","_hash","ZERO_HASH","checkSignaturesShape","bw","$signatures","undefined","Array","isArray","signatures","BlockBoundWitnessValidator","_context","shapeErrors","length","bwValidator","BoundWitnessValidator","bwErrors","validate","map","e","ex","String","isDefined","ZERO_HASH","BoundWitnessSchema","BlockValidationError","BlockFieldsValidator","context","block","chainId","errors","isDefined","chain","toLowerCase","push","BlockValidationError","_hash","ZERO_HASH","txHashes","i","payload_hashes","length","payload_schemas","BoundWitnessSchema","Set","size","ex","ZERO_HASH","BlockBoundWitnessWithStorageMetaJsonSchema","BlockValidationError","Ajv","BlockJsonSchemaValidator","jsonSchema","BlockBoundWitnessWithStorageMetaJsonSchema","ajv","Ajv","allErrors","strict","validate","compile","context","block","errors","length","error","BlockValidationError","_hash","ZERO_HASH","errorsText","separator","cause","push","ex","isHash","ZERO_HASH","BlockValidationError","BlockPreviousHashValidator","context","block","errors","blockNumber","isHash","previous","push","BlockValidationError","_hash","ZERO_HASH","ex","error","cause","validateBlock","context","block","chainId","additionalValidators","errors","validators","BlockBoundWitnessValidator","BlockFieldsValidator","BlockPreviousHashValidator","BlockAllowedPayloadSchemasValidator","push","Promise","all","map","validator","flat","ex","BlockValidationError","_hash","ZERO_HASH","ZERO_HASH","BoundWitnessReferencesValidator","HydratedBlockValidationError","ZERO_HASH","HydratedBlockValidationError","ZERO_HASH","BoundWitnessSchema","SchemaSchema","BridgeDestinationObservationSchema","BridgeIntentSchema","BridgeSourceObservationSchema","ChainStakeIntentSchema","HashSchema","InBlockPayloadValidationError","TimeSchema","TransferSchema","isTransactionBoundWitness","isElevatedFromBlock","payload","payloads","txs","filter","p","isTransactionBoundWitness","tx","payload_hashes","includes","_hash","InBlockPayloadValidationError","transactionsFromHydratedBlock","validateElevatedFromBlock","context","payload","block","errors","txs","transactionsFromHydratedBlock","allTxPayloadHashes","Set","flatMap","tx","payload_hashes","has","_hash","push","InBlockPayloadValidationError","schema","ex","InBlockPayloadValidationError","transactionsFromHydratedBlock","validateElevatedFromTransaction","context","payload","block","errors","txs","transactionsFromHydratedBlock","length","hashes","flatMap","tx","payload_hashes","includes","_hash","push","InBlockPayloadValidationError","ex","ZERO_HASH","isHashMeta","BoundWitnessSignaturesValidator","InBlockPayloadValidationError","isTransactionBoundWitness","validateTransaction","validateTransactionInBlock","context","payload","block","errors","isTransactionBoundWitness","isHashMeta","txErrors","validateTransaction","chainId","chain","txError","push","InBlockPayloadValidationError","_hash","txSignatureErrors","BoundWitnessSignaturesValidator","txSignatureError","ex","ZERO_HASH","isHashMeta","validateTypedPayloadInBlock","context","payload","block","identityFunction","errors","isHashMeta","isElevatedFromBlock","push","validateElevatedFromBlock","validateElevatedFromTransaction","Error","ex","ZERO_HASH","InBlockPayloadValidationError","isBridgeDestinationObservation","validateBridgeDestinationObservationInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeDestinationObservation","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isBridgeIntent","validateBridgeIntentInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeIntent","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isBridgeSourceObservation","validateBridgeSourceObservationInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isBridgeSourceObservation","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isChainStakeIntent","validateChainStakeIntentInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isChainStakeIntent","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isHashPayload","validateHashInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isHashPayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","isSchemaPayload","InBlockPayloadValidationError","validateSchemaInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isSchemaPayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isTimePayload","validateTimeInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isTimePayload","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","ZERO_HASH","InBlockPayloadValidationError","isTransfer","validateTransferInBlock","context","payload","block","errors","typedErrors","validateTypedPayloadInBlock","isTransfer","typedError","push","InBlockPayloadValidationError","_hash","ex","ZERO_HASH","payloadValidators","BoundWitnessSchema","validateTransactionInBlock","BridgeDestinationObservationSchema","validateBridgeDestinationObservationInBlock","BridgeIntentSchema","validateBridgeIntentInBlock","BridgeSourceObservationSchema","validateBridgeSourceObservationInBlock","ChainStakeIntentSchema","validateChainStakeIntentInBlock","HashSchema","validateHashInBlock","SchemaSchema","validateSchemaInBlock","TimeSchema","validateTimeInBlock","TransferSchema","validateTransferInBlock","validatePayloadInBlock","context","payload","block","errors","validator","schema","push","InBlockPayloadValidationError","_hash","ZERO_HASH","ex","error","PayloadsInBlockValidator","context","block","payloads","errors","payloadMap","payload","_hash","remainingPayloads","i","payload_hashes","length","hash","schema","payload_schemas","payloadInBlockErrors","validatePayloadInBlock","payloadInBlockError","push","HydratedBlockValidationError","ZERO_HASH","Object","keys","join","ex","validateHydratedBlock","context","hydratedBlock","chainIdAtBlockNumber","additionalValidators","additionalBlockValidators","errors","validateBlockErrors","validateBlock","block","undefined","validateBlockError","push","HydratedBlockValidationError","_hash","bwRefErrors","BoundWitnessReferencesValidator","bwRefError","validators","PayloadsInBlockValidator","Promise","all","map","v","flat","ex","ZERO_HASH","spanRootAsync","ZERO_HASH","HydratedBlockStateValidationError","spanRootAsync","ZERO_HASH","AttoXL1","HydratedBlockStateValidationError","netBalancesForPayloads","XYO_ZERO_ADDRESS","RequiredBalanceBlockStateValidator","context","block","spanRootAsync","errors","chainId","netBalances","netBalancesForPayloads","singletons","netBalanceAddresses","Object","keys","requiredBalances","address","previous","HydratedBlockStateValidationError","_hash","ZERO_HASH","chainIdAtBlockNumber","reqBalance","entries","result","accountBalance","accountBalances","head","balance","AttoXL1","XYO_ZERO_ADDRESS","push","ex","Promise","resolve","validateHydratedBlockState","context","hydratedBlock","additionalValidators","spanRootAsync","errors","chainId","chainIdAtBlockNumber","block","validateHydratedBlockErrors","validateHydratedBlock","validateHydratedBlockError","push","HydratedBlockStateValidationError","_hash","validators","RequiredBalanceBlockStateValidator","Promise","all","map","v","flat","ex","ZERO_HASH","spanRootAsync","ZERO_HASH","HydratedTransactionValidationError","spanRootAsync","ZERO_HASH","AttoXL1","HydratedTransactionValidationError","HydratedTransactionWrapper","netBalancesForPayloads","transactionRequiredGas","XYO_ZERO_ADDRESS","RequiredBalanceTransactionStateValidator","context","tx","spanRootAsync","errors","netBalances","netBalancesForPayloads","singletons","wrapper","HydratedTransactionWrapper","parse","from","boundWitness","gasCost","transactionRequiredGas","fees","gasPrice","baseCost","base","requiredBalances","address","net","Object","entries","requiredAddresses","keys","length","headBlock","blockViewer","currentBlock","balances","accountBalanceViewer","accountBalances","head","_hash","reqBalance","balance","AttoXL1","XYO_ZERO_ADDRESS","push","HydratedTransactionValidationError","ZERO_HASH","ex","validateHydratedTransactionState","context","tx","spanRootAsync","errors","validators","RequiredBalanceTransactionStateValidator","push","Promise","all","map","v","flat","ex","HydratedTransactionValidationError","_hash","ZERO_HASH"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/chain-validation",
|
|
4
|
-
"version": "1.20.
|
|
4
|
+
"version": "1.20.29",
|
|
5
5
|
"description": "XYO Layer One SDK Validation",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -40,15 +40,15 @@
|
|
|
40
40
|
"@metamask/providers": "^22.1.1",
|
|
41
41
|
"@metamask/utils": "~11.11.0",
|
|
42
42
|
"@opentelemetry/api": "^1.9.1",
|
|
43
|
-
"@opentelemetry/sdk-trace-base": "^2.7.
|
|
43
|
+
"@opentelemetry/sdk-trace-base": "^2.7.1",
|
|
44
44
|
"@scure/base": "~2.2.0",
|
|
45
45
|
"@scure/bip39": "~2.2.0",
|
|
46
46
|
"@types/node": "^25.6.0",
|
|
47
47
|
"@xylabs/geo": "^5.0.101",
|
|
48
48
|
"@xylabs/sdk-js": "^5.0.101",
|
|
49
49
|
"@xylabs/threads": "~5.0.101",
|
|
50
|
-
"@xylabs/toolchain": "~7.
|
|
51
|
-
"@xylabs/tsconfig": "~7.
|
|
50
|
+
"@xylabs/toolchain": "~7.12.3",
|
|
51
|
+
"@xylabs/tsconfig": "~7.12.3",
|
|
52
52
|
"@xyo-network/account": "~5.5.2",
|
|
53
53
|
"@xyo-network/account-model": "~5.5.2",
|
|
54
54
|
"@xyo-network/api": "~5.5.2",
|
|
@@ -69,8 +69,8 @@
|
|
|
69
69
|
"@xyo-network/sdk-protocol-js": "~5.5.2",
|
|
70
70
|
"@xyo-network/wallet": "~5.5.2",
|
|
71
71
|
"@xyo-network/wallet-model": "^5.5.2",
|
|
72
|
-
"@xyo-network/xl1-sdk": "^1.26.
|
|
73
|
-
"ajv": "^8.
|
|
72
|
+
"@xyo-network/xl1-sdk": "^1.26.44",
|
|
73
|
+
"ajv": "^8.20.0",
|
|
74
74
|
"async-mutex": "^0.5.0",
|
|
75
75
|
"axios": "^1.15.2",
|
|
76
76
|
"bn.js": "^5.2.3",
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
"hash-wasm": "~4.12.0",
|
|
85
85
|
"idb": "^8.0.3",
|
|
86
86
|
"lru-cache": "^11.3.5",
|
|
87
|
-
"mapbox-gl": "^3.
|
|
87
|
+
"mapbox-gl": "^3.23.0",
|
|
88
88
|
"observable-fns": "~0.6.1",
|
|
89
89
|
"pako": "^2.1.0",
|
|
90
90
|
"store2": "~2.14.4",
|
|
@@ -94,63 +94,63 @@
|
|
|
94
94
|
"vitest": "^4.1.5",
|
|
95
95
|
"wasm-feature-detect": "~1.8.0",
|
|
96
96
|
"webextension-polyfill": "^0.12.0",
|
|
97
|
-
"zod": "
|
|
98
|
-
"@xyo-network/chain-protocol": "~1.20.
|
|
99
|
-
"@xyo-network/chain-protocol
|
|
97
|
+
"zod": "~4.4.2",
|
|
98
|
+
"@xyo-network/chain-protocol-test": "~1.20.29",
|
|
99
|
+
"@xyo-network/chain-protocol": "~1.20.29"
|
|
100
100
|
},
|
|
101
101
|
"peerDependencies": {
|
|
102
|
-
"@bitauth/libauth": ">=3.0.0 <
|
|
102
|
+
"@bitauth/libauth": ">=3.0.0 <3.1",
|
|
103
103
|
"@metamask/json-rpc-engine": ">=10.2.4 <11",
|
|
104
104
|
"@metamask/providers": ">=22.1.1 <23",
|
|
105
|
-
"@metamask/utils": ">=11.11.0 <12",
|
|
105
|
+
"@metamask/utils": ">=11.11.0 <11.12",
|
|
106
106
|
"@opentelemetry/api": ">=1.9.1 <2",
|
|
107
|
-
"@opentelemetry/sdk-trace-base": ">=2.7.
|
|
108
|
-
"@scure/base": ">=2.2.0 <3",
|
|
109
|
-
"@scure/bip39": ">=2.2.0 <3",
|
|
107
|
+
"@opentelemetry/sdk-trace-base": ">=2.7.1 <3",
|
|
108
|
+
"@scure/base": ">=2.2.0 <2.3",
|
|
109
|
+
"@scure/bip39": ">=2.2.0 <2.3",
|
|
110
110
|
"@xylabs/geo": ">=5.0.101 <6",
|
|
111
111
|
"@xylabs/sdk-js": ">=5.0.101 <6",
|
|
112
|
-
"@xylabs/threads": ">=5.0.101 <
|
|
113
|
-
"@xyo-network/account": ">=5.5.2 <6",
|
|
114
|
-
"@xyo-network/account-model": ">=5.5.2 <6",
|
|
115
|
-
"@xyo-network/api": ">=5.5.2 <6",
|
|
116
|
-
"@xyo-network/api-models": ">=5.5.2 <6",
|
|
117
|
-
"@xyo-network/boundwitness-builder": ">=5.5.2 <6",
|
|
118
|
-
"@xyo-network/boundwitness-model": ">=5.5.2 <6",
|
|
119
|
-
"@xyo-network/boundwitness-validator": ">=5.5.2 <6",
|
|
120
|
-
"@xyo-network/boundwitness-wrapper": ">=5.5.2 <6",
|
|
121
|
-
"@xyo-network/config-payload-plugin": ">=5.5.2 <6",
|
|
122
|
-
"@xyo-network/huri": ">=5.5.2 <6",
|
|
123
|
-
"@xyo-network/manifest-model": ">=5.5.2 <6",
|
|
124
|
-
"@xyo-network/payload-builder": ">=5.5.2 <6",
|
|
125
|
-
"@xyo-network/payload-model": ">=5.5.2 <6",
|
|
126
|
-
"@xyo-network/payload-plugin": ">=5.5.2 <6",
|
|
127
|
-
"@xyo-network/payload-wrapper": ">=5.5.2 <6",
|
|
128
|
-
"@xyo-network/query-payload-plugin": ">=5.5.2 <6",
|
|
112
|
+
"@xylabs/threads": ">=5.0.101 <5.1",
|
|
113
|
+
"@xyo-network/account": ">=5.5.2 <5.6",
|
|
114
|
+
"@xyo-network/account-model": ">=5.5.2 <5.6",
|
|
115
|
+
"@xyo-network/api": ">=5.5.2 <5.6",
|
|
116
|
+
"@xyo-network/api-models": ">=5.5.2 <5.6",
|
|
117
|
+
"@xyo-network/boundwitness-builder": ">=5.5.2 <5.6",
|
|
118
|
+
"@xyo-network/boundwitness-model": ">=5.5.2 <5.6",
|
|
119
|
+
"@xyo-network/boundwitness-validator": ">=5.5.2 <5.6",
|
|
120
|
+
"@xyo-network/boundwitness-wrapper": ">=5.5.2 <5.6",
|
|
121
|
+
"@xyo-network/config-payload-plugin": ">=5.5.2 <5.6",
|
|
122
|
+
"@xyo-network/huri": ">=5.5.2 <5.6",
|
|
123
|
+
"@xyo-network/manifest-model": ">=5.5.2 <5.6",
|
|
124
|
+
"@xyo-network/payload-builder": ">=5.5.2 <5.6",
|
|
125
|
+
"@xyo-network/payload-model": ">=5.5.2 <5.6",
|
|
126
|
+
"@xyo-network/payload-plugin": ">=5.5.2 <5.6",
|
|
127
|
+
"@xyo-network/payload-wrapper": ">=5.5.2 <5.6",
|
|
128
|
+
"@xyo-network/query-payload-plugin": ">=5.5.2 <5.6",
|
|
129
129
|
"@xyo-network/sdk-js": ">=5.5.6 <6",
|
|
130
|
-
"@xyo-network/sdk-protocol-js": ">=5.5.2 <6",
|
|
131
|
-
"@xyo-network/wallet": ">=5.5.2 <6",
|
|
130
|
+
"@xyo-network/sdk-protocol-js": ">=5.5.2 <5.6",
|
|
131
|
+
"@xyo-network/wallet": ">=5.5.2 <5.6",
|
|
132
132
|
"@xyo-network/wallet-model": ">=5.5.2 <6",
|
|
133
|
-
"@xyo-network/xl1-sdk": ">=1.26.
|
|
134
|
-
"ajv": ">=8.
|
|
133
|
+
"@xyo-network/xl1-sdk": ">=1.26.44 <2",
|
|
134
|
+
"ajv": ">=8.20.0 <9",
|
|
135
135
|
"async-mutex": ">=0.5.0 <1",
|
|
136
136
|
"axios": ">=1.15.2 <2",
|
|
137
137
|
"bn.js": ">=5.2.3 <6",
|
|
138
138
|
"buffer": ">=6.0.3 <7",
|
|
139
139
|
"chalk": ">=5.6.2 <6",
|
|
140
140
|
"cosmiconfig": ">=9.0.1 <10",
|
|
141
|
-
"debug": ">=4.4.3 <5",
|
|
141
|
+
"debug": ">=4.4.3 <4.5",
|
|
142
142
|
"ethers": ">=6.16.0 <7",
|
|
143
|
-
"hash-wasm": ">=4.12.0 <
|
|
143
|
+
"hash-wasm": ">=4.12.0 <4.13",
|
|
144
144
|
"idb": ">=8.0.3 <9",
|
|
145
145
|
"lru-cache": ">=11.3.5 <12",
|
|
146
|
-
"mapbox-gl": ">=3.
|
|
147
|
-
"observable-fns": ">=0.6.1 <
|
|
146
|
+
"mapbox-gl": ">=3.23.0 <4",
|
|
147
|
+
"observable-fns": ">=0.6.1 <0.7",
|
|
148
148
|
"pako": ">=2.1.0 <3",
|
|
149
|
-
"store2": ">=2.14.4 <
|
|
150
|
-
"typescript": ">=5.9.3 <
|
|
151
|
-
"uuid": ">=14.0.0 <
|
|
152
|
-
"wasm-feature-detect": ">=1.8.0 <
|
|
153
|
-
"zod": ">=4.
|
|
149
|
+
"store2": ">=2.14.4 <2.15",
|
|
150
|
+
"typescript": ">=5.9.3 <5.10",
|
|
151
|
+
"uuid": ">=14.0.0 <14.1",
|
|
152
|
+
"wasm-feature-detect": ">=1.8.0 <1.9",
|
|
153
|
+
"zod": ">=4.4.2 <4.5"
|
|
154
154
|
},
|
|
155
155
|
"engines": {
|
|
156
156
|
"node": ">=24"
|