@xyo-network/chain-validation 1.20.15 → 1.20.17
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/README.md +9 -200
- package/package.json +116 -24
- package/src/block/index.ts +0 -2
- package/src/block/validateBlock.ts +0 -39
- package/src/block/validators/AllowedPayloadSchemas.ts +0 -33
- package/src/block/validators/Fields.ts +0 -47
- package/src/block/validators/JsonSchema.ts +0 -40
- package/src/block/validators/PreviousHash.ts +0 -37
- package/src/block/validators/index.ts +0 -4
- package/src/elevatedPayload/index.ts +0 -1
- package/src/elevatedPayload/lib/index.ts +0 -6
- package/src/elevatedPayload/lib/isElevatedFromBlock.ts +0 -12
- package/src/elevatedPayload/lib/validateElevatedFromBlock.ts +0 -25
- package/src/elevatedPayload/lib/validateElevatedFromTransaction.ts +0 -30
- package/src/elevatedPayload/lib/validateIncludedInBlock.ts +0 -14
- package/src/elevatedPayload/lib/validateTransactionInBlock.ts +0 -43
- package/src/elevatedPayload/lib/validateTypedPayloadInBlock.ts +0 -32
- package/src/elevatedPayload/payloads/index.ts +0 -8
- package/src/elevatedPayload/payloads/validateBridgeDestinationObservationInBlock.ts +0 -28
- package/src/elevatedPayload/payloads/validateBridgeIntentInBlock.ts +0 -28
- package/src/elevatedPayload/payloads/validateBridgeSourceObservationInBlock.ts +0 -28
- package/src/elevatedPayload/payloads/validateChainStakeIntentInBlock.ts +0 -28
- package/src/elevatedPayload/payloads/validateHashInBlock.ts +0 -28
- package/src/elevatedPayload/payloads/validateSchemaInBlock.ts +0 -29
- package/src/elevatedPayload/payloads/validateTimeInBlock.ts +0 -28
- package/src/elevatedPayload/payloads/validateTransferInBlock.ts +0 -28
- package/src/elevatedPayload/validatePayloadInBlock.ts +0 -53
- package/src/hydratedBlock/index.ts +0 -2
- package/src/hydratedBlock/validateHydratedBlock.ts +0 -49
- package/src/hydratedBlock/validators/Payloads.ts +0 -54
- package/src/hydratedBlock/validators/index.ts +0 -1
- package/src/hydratedBlockState/index.ts +0 -2
- package/src/hydratedBlockState/validateHydratedBlockState.ts +0 -44
- package/src/hydratedBlockState/validators/RequiredBalance.ts +0 -59
- package/src/hydratedBlockState/validators/index.ts +0 -1
- package/src/index.ts +0 -3
package/README.md
CHANGED
|
@@ -1,215 +1,24 @@
|
|
|
1
1
|
# @xyo-network/chain-validation
|
|
2
2
|
|
|
3
|
-
[![
|
|
3
|
+
[![npm][npm-badge]][npm-link]
|
|
4
|
+
[![license][license-badge]][license-link]
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
[![npm-downloads-badge][]][npm-link]
|
|
7
|
-
[![jsdelivr-badge][]][jsdelivr-link]
|
|
8
|
-
[![npm-license-badge][]](LICENSE)
|
|
9
|
-
[![socket-badge][]][socket-link]
|
|
6
|
+
> XYO Layer One SDK Validation
|
|
10
7
|
|
|
11
|
-
|
|
8
|
+
## Install
|
|
12
9
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## Reference
|
|
16
|
-
|
|
17
|
-
**@xyo-network/chain-validation**
|
|
18
|
-
|
|
19
|
-
***
|
|
20
|
-
|
|
21
|
-
## Variables
|
|
22
|
-
|
|
23
|
-
- [BlockAllowedPayloadSchemasValidator](#variables/BlockAllowedPayloadSchemasValidator)
|
|
24
|
-
- [BlockFieldsValidator](#variables/BlockFieldsValidator)
|
|
25
|
-
- [BlockPreviousHashValidator](#variables/BlockPreviousHashValidator)
|
|
26
|
-
- [PayloadsInBlockValidator](#variables/PayloadsInBlockValidator)
|
|
27
|
-
- [validateHydratedBlockState](#variables/validateHydratedBlockState)
|
|
28
|
-
- [RequiredBalanceBlockStateValidator](#variables/RequiredBalanceBlockStateValidator)
|
|
29
|
-
|
|
30
|
-
## Functions
|
|
31
|
-
|
|
32
|
-
- [validateBlock](#functions/validateBlock)
|
|
33
|
-
- [BlockJsonSchemaValidator](#functions/BlockJsonSchemaValidator)
|
|
34
|
-
- [validateHydratedBlock](#functions/validateHydratedBlock)
|
|
35
|
-
|
|
36
|
-
### functions
|
|
37
|
-
|
|
38
|
-
### <a id="BlockJsonSchemaValidator"></a>BlockJsonSchemaValidator
|
|
39
|
-
|
|
40
|
-
[**@xyo-network/chain-validation**](#../README)
|
|
41
|
-
|
|
42
|
-
***
|
|
43
|
-
|
|
44
|
-
```ts
|
|
45
|
-
function BlockJsonSchemaValidator(jsonSchema): BlockValidatorFunction;
|
|
10
|
+
```sh
|
|
11
|
+
{{pm}} add {{name}}
|
|
46
12
|
```
|
|
47
13
|
|
|
48
|
-
## Parameters
|
|
49
|
-
|
|
50
|
-
### jsonSchema
|
|
51
|
-
|
|
52
|
-
`AnySchema` = `BlockBoundWitnessWithStorageMetaJsonSchema`
|
|
53
|
-
|
|
54
|
-
## Returns
|
|
55
|
-
|
|
56
|
-
`BlockValidatorFunction`
|
|
57
|
-
|
|
58
|
-
### <a id="validateBlock"></a>validateBlock
|
|
59
|
-
|
|
60
|
-
[**@xyo-network/chain-validation**](#../README)
|
|
61
|
-
|
|
62
|
-
***
|
|
63
|
-
|
|
64
|
-
```ts
|
|
65
|
-
function validateBlock(
|
|
66
|
-
block,
|
|
67
|
-
chainId?,
|
|
68
|
-
additionalValidators?): Promise<BlockValidationError[]>;
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
## Parameters
|
|
72
|
-
|
|
73
|
-
### block
|
|
74
|
-
|
|
75
|
-
`BlockBoundWitness`
|
|
76
|
-
|
|
77
|
-
### chainId?
|
|
78
|
-
|
|
79
|
-
`ChainId`
|
|
80
|
-
|
|
81
|
-
### additionalValidators?
|
|
82
|
-
|
|
83
|
-
`BlockValidatorFunction`[] = `[]`
|
|
84
|
-
|
|
85
|
-
## Returns
|
|
86
|
-
|
|
87
|
-
`Promise`\<`BlockValidationError`[]\>
|
|
88
|
-
|
|
89
|
-
### <a id="validateHydratedBlock"></a>validateHydratedBlock
|
|
90
|
-
|
|
91
|
-
[**@xyo-network/chain-validation**](#../README)
|
|
92
|
-
|
|
93
|
-
***
|
|
94
|
-
|
|
95
|
-
```ts
|
|
96
|
-
function validateHydratedBlock(
|
|
97
|
-
hydratedBlock,
|
|
98
|
-
chainId?,
|
|
99
|
-
additionalValidators?,
|
|
100
|
-
additionalBlockValidators?): Promise<HydratedBlockValidationError[]>;
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
## Parameters
|
|
104
|
-
|
|
105
|
-
### hydratedBlock
|
|
106
|
-
|
|
107
|
-
`HydratedBlock`
|
|
108
|
-
|
|
109
|
-
### chainId?
|
|
110
|
-
|
|
111
|
-
`ChainId`
|
|
112
|
-
|
|
113
|
-
### additionalValidators?
|
|
114
|
-
|
|
115
|
-
`HydratedBlockValidationFunction`[] = `[]`
|
|
116
|
-
|
|
117
|
-
### additionalBlockValidators?
|
|
118
|
-
|
|
119
|
-
`BlockValidatorFunction`[] = `[]`
|
|
120
|
-
|
|
121
|
-
## Returns
|
|
122
|
-
|
|
123
|
-
`Promise`\<`HydratedBlockValidationError`[]\>
|
|
124
|
-
|
|
125
|
-
### variables
|
|
126
|
-
|
|
127
|
-
### <a id="BlockAllowedPayloadSchemasValidator"></a>BlockAllowedPayloadSchemasValidator
|
|
128
|
-
|
|
129
|
-
[**@xyo-network/chain-validation**](#../README)
|
|
130
|
-
|
|
131
|
-
***
|
|
132
|
-
|
|
133
|
-
```ts
|
|
134
|
-
const BlockAllowedPayloadSchemasValidator: BlockValidatorFunction;
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
### <a id="BlockFieldsValidator"></a>BlockFieldsValidator
|
|
138
|
-
|
|
139
|
-
[**@xyo-network/chain-validation**](#../README)
|
|
140
|
-
|
|
141
|
-
***
|
|
142
|
-
|
|
143
|
-
```ts
|
|
144
|
-
const BlockFieldsValidator: BlockValidatorFunction;
|
|
145
|
-
```
|
|
146
|
-
|
|
147
|
-
### <a id="BlockPreviousHashValidator"></a>BlockPreviousHashValidator
|
|
148
|
-
|
|
149
|
-
[**@xyo-network/chain-validation**](#../README)
|
|
150
|
-
|
|
151
|
-
***
|
|
152
|
-
|
|
153
|
-
```ts
|
|
154
|
-
const BlockPreviousHashValidator: BlockValidatorFunction;
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
### <a id="PayloadsInBlockValidator"></a>PayloadsInBlockValidator
|
|
158
|
-
|
|
159
|
-
[**@xyo-network/chain-validation**](#../README)
|
|
160
|
-
|
|
161
|
-
***
|
|
162
|
-
|
|
163
|
-
```ts
|
|
164
|
-
const PayloadsInBlockValidator: HydratedBlockValidationFunction;
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
### <a id="RequiredBalanceBlockStateValidator"></a>RequiredBalanceBlockStateValidator
|
|
168
|
-
|
|
169
|
-
[**@xyo-network/chain-validation**](#../README)
|
|
170
|
-
|
|
171
|
-
***
|
|
172
|
-
|
|
173
|
-
```ts
|
|
174
|
-
const RequiredBalanceBlockStateValidator: HydratedBlockStateValidationFunction;
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### <a id="validateHydratedBlockState"></a>validateHydratedBlockState
|
|
178
|
-
|
|
179
|
-
[**@xyo-network/chain-validation**](#../README)
|
|
180
|
-
|
|
181
|
-
***
|
|
182
|
-
|
|
183
|
-
```ts
|
|
184
|
-
const validateHydratedBlockState: HydratedBlockStateValidationFunction;
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
## Maintainers
|
|
189
|
-
|
|
190
|
-
- [Arie Trouw](https://github.com/arietrouw) ([arietrouw.com](https://arietrouw.com))
|
|
191
|
-
- [Matt Jones](https://github.com/jonesmac)
|
|
192
|
-
- [Joel Carter](https://github.com/JoelBCarter)
|
|
193
|
-
- [Jordan Trouw](https://github.com/jordantrouw)
|
|
194
14
|
|
|
195
15
|
## License
|
|
196
16
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
## Credits
|
|
17
|
+
See the [LICENSE](LICENSE) file for license rights and limitations (LGPL-3.0-only).
|
|
200
18
|
|
|
201
|
-
[Made with 🔥 and ❄️ by XYO](https://xyo.network)
|
|
202
19
|
|
|
203
|
-
[logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
|
|
204
20
|
|
|
205
21
|
[npm-badge]: https://img.shields.io/npm/v/@xyo-network/chain-validation.svg
|
|
206
22
|
[npm-link]: https://www.npmjs.com/package/@xyo-network/chain-validation
|
|
207
|
-
|
|
208
|
-
[
|
|
209
|
-
[npm-license-badge]: https://img.shields.io/npm/l/@xyo-network/chain-validation
|
|
210
|
-
|
|
211
|
-
[jsdelivr-badge]: https://data.jsdelivr.com/v1/package/npm/@xyo-network/chain-validation/badge
|
|
212
|
-
[jsdelivr-link]: https://www.jsdelivr.com/package/npm/@xyo-network/chain-validation
|
|
213
|
-
|
|
214
|
-
[socket-badge]: https://socket.dev/api/badge/npm/package/@xyo-network/chain-validation
|
|
215
|
-
[socket-link]: https://socket.dev/npm/package/@xyo-network/chain-validation
|
|
23
|
+
[license-badge]: https://img.shields.io/npm/l/@xyo-network/chain-validation.svg
|
|
24
|
+
[license-link]: https://github.com/xylabs/sdk-js/blob/main/LICENSE
|
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.17",
|
|
5
5
|
"description": "XYO Layer One SDK Validation",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -23,52 +23,144 @@
|
|
|
23
23
|
"exports": {
|
|
24
24
|
".": {
|
|
25
25
|
"types": "./dist/neutral/index.d.ts",
|
|
26
|
-
"source": "./src/index.ts",
|
|
27
26
|
"default": "./dist/neutral/index.mjs"
|
|
28
27
|
},
|
|
29
28
|
"./package.json": "./package.json"
|
|
30
29
|
},
|
|
31
30
|
"module": "./dist/neutral/index.mjs",
|
|
32
|
-
"source": "./src/index.ts",
|
|
33
31
|
"types": "./dist/neutral/index.d.ts",
|
|
34
32
|
"files": [
|
|
35
33
|
"dist",
|
|
36
|
-
"src",
|
|
37
34
|
"!**/*.bench.*",
|
|
38
35
|
"!**/*.spec.*",
|
|
39
|
-
"!**/*.test.*"
|
|
36
|
+
"!**/*.test.*",
|
|
37
|
+
"README.md"
|
|
40
38
|
],
|
|
41
39
|
"dependencies": {
|
|
42
|
-
"@xylabs/sdk-js": "~5.0.
|
|
43
|
-
"@xyo-network/boundwitness-model": "~5.3.
|
|
44
|
-
"@xyo-network/sdk-js": "~5.3.
|
|
45
|
-
"@xyo-network/xl1-sdk": "~1.26.
|
|
40
|
+
"@xylabs/sdk-js": "~5.0.95",
|
|
41
|
+
"@xyo-network/boundwitness-model": "~5.3.30",
|
|
42
|
+
"@xyo-network/sdk-js": "~5.3.30",
|
|
43
|
+
"@xyo-network/xl1-sdk": "~1.26.20",
|
|
46
44
|
"ajv": "~8.18.0"
|
|
47
45
|
},
|
|
48
46
|
"devDependencies": {
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
51
|
-
"@xylabs/ts-scripts-common": "~7.
|
|
52
|
-
"@xylabs/ts-scripts-
|
|
53
|
-
"@xylabs/tsconfig": "~7.
|
|
54
|
-
"@xyo-network/
|
|
55
|
-
"@xyo-network/
|
|
56
|
-
"
|
|
47
|
+
"@opentelemetry/api": "^1",
|
|
48
|
+
"@types/node": "~25.5.2",
|
|
49
|
+
"@xylabs/ts-scripts-common": "~7.9.6",
|
|
50
|
+
"@xylabs/ts-scripts-pnpm": "~7.9.6",
|
|
51
|
+
"@xylabs/tsconfig": "~7.9.6",
|
|
52
|
+
"@xyo-network/account": "~5.3.30",
|
|
53
|
+
"@xyo-network/account-model": "~5.3.30",
|
|
54
|
+
"@xyo-network/api-models": "~5.3.30",
|
|
55
|
+
"@xyo-network/archivist-abstract": "~5.3.30",
|
|
56
|
+
"@xyo-network/archivist-generic": "~5.3.30",
|
|
57
|
+
"@xyo-network/archivist-memory": "~5.3.30",
|
|
58
|
+
"@xyo-network/archivist-model": "~5.3.30",
|
|
59
|
+
"@xyo-network/archivist-view": "~5.3.30",
|
|
60
|
+
"@xyo-network/archivist-wrapper": "~5.3",
|
|
61
|
+
"@xyo-network/boundwitness-builder": "~5.3.30",
|
|
62
|
+
"@xyo-network/boundwitness-validator": "~5.3.30",
|
|
63
|
+
"@xyo-network/bridge-abstract": "~5.3.30",
|
|
64
|
+
"@xyo-network/bridge-model": "~5.3.30",
|
|
65
|
+
"@xyo-network/config-payload-plugin": "~5.3.30",
|
|
66
|
+
"@xyo-network/data": "~5.3.30",
|
|
67
|
+
"@xyo-network/diviner-abstract": "~5.3",
|
|
68
|
+
"@xyo-network/diviner-boundwitness-memory": "~5.3.30",
|
|
69
|
+
"@xyo-network/diviner-identity": "~5.3.30",
|
|
70
|
+
"@xyo-network/diviner-model": "~5.3.30",
|
|
71
|
+
"@xyo-network/diviner-payload-generic": "~5.3.30",
|
|
72
|
+
"@xyo-network/diviner-payload-model": "~5.3.30",
|
|
73
|
+
"@xyo-network/diviner-wrapper": "~5.3",
|
|
74
|
+
"@xyo-network/dns": "~5.3.30",
|
|
75
|
+
"@xyo-network/domain-payload-plugin": "~5.3.30",
|
|
76
|
+
"@xyo-network/elliptic": "~5.3.30",
|
|
77
|
+
"@xyo-network/hash": "~5.3.30",
|
|
78
|
+
"@xyo-network/huri": "~5.3.30",
|
|
79
|
+
"@xyo-network/manifest-model": "~5.3.30",
|
|
80
|
+
"@xyo-network/module-abstract": "~5.3.30",
|
|
81
|
+
"@xyo-network/module-model": "~5.3.30",
|
|
82
|
+
"@xyo-network/module-resolver": "~5.3.30",
|
|
83
|
+
"@xyo-network/module-wrapper": "~5.3",
|
|
84
|
+
"@xyo-network/network": "~5.3.30",
|
|
85
|
+
"@xyo-network/node-abstract": "~5.3.30",
|
|
86
|
+
"@xyo-network/node-memory": "~5.3.30",
|
|
87
|
+
"@xyo-network/node-model": "~5.3.30",
|
|
88
|
+
"@xyo-network/node-view": "~5.3.30",
|
|
89
|
+
"@xyo-network/node-wrapper": "~5.3",
|
|
90
|
+
"@xyo-network/payload-builder": "~5.3.30",
|
|
91
|
+
"@xyo-network/payload-model": "~5.3.30",
|
|
92
|
+
"@xyo-network/payload-validator": "~5.3.30",
|
|
93
|
+
"@xyo-network/previous-hash-store-model": "~5.3.30",
|
|
94
|
+
"@xyo-network/sentinel-abstract": "~5.3.30",
|
|
95
|
+
"@xyo-network/sentinel-memory": "~5.3.30",
|
|
96
|
+
"@xyo-network/sentinel-model": "~5.3.30",
|
|
97
|
+
"@xyo-network/wallet-model": "~5.3.30",
|
|
98
|
+
"@xyo-network/wasm": "~5.3.30",
|
|
99
|
+
"@xyo-network/witness-adhoc": "~5.3.30",
|
|
100
|
+
"@xyo-network/witness-model": "~5.3.30",
|
|
101
|
+
"axios": "^1.15.0",
|
|
102
|
+
"esbuild": ">=0.18",
|
|
57
103
|
"ethers": "^6.16.0",
|
|
104
|
+
"mongodb": "^7.1.1",
|
|
105
|
+
"pako": "~2.1.0",
|
|
58
106
|
"typescript": "~5.9.3",
|
|
59
|
-
"
|
|
60
|
-
"
|
|
107
|
+
"vite": "^8.0.8",
|
|
108
|
+
"vitest": "^4.1.4",
|
|
109
|
+
"zod": "^4.3.6",
|
|
110
|
+
"@xyo-network/chain-protocol": "~1.20.17"
|
|
61
111
|
},
|
|
62
112
|
"peerDependencies": {
|
|
63
|
-
"@xyo-network/
|
|
64
|
-
"
|
|
65
|
-
"
|
|
113
|
+
"@xyo-network/account": "~5.3.30",
|
|
114
|
+
"@xyo-network/account-model": "~5.3.30",
|
|
115
|
+
"@xyo-network/api-models": "~5.3.30",
|
|
116
|
+
"@xyo-network/archivist-abstract": "~5.3.30",
|
|
117
|
+
"@xyo-network/archivist-generic": "~5.3.30",
|
|
118
|
+
"@xyo-network/archivist-memory": "~5.3.30",
|
|
119
|
+
"@xyo-network/archivist-model": "~5.3.30",
|
|
120
|
+
"@xyo-network/archivist-view": "~5.3.30",
|
|
121
|
+
"@xyo-network/boundwitness-builder": "~5.3.30",
|
|
122
|
+
"@xyo-network/boundwitness-validator": "~5.3.30",
|
|
123
|
+
"@xyo-network/bridge-abstract": "~5.3.30",
|
|
124
|
+
"@xyo-network/bridge-model": "~5.3.30",
|
|
125
|
+
"@xyo-network/config-payload-plugin": "~5.3.30",
|
|
126
|
+
"@xyo-network/data": "~5.3.30",
|
|
127
|
+
"@xyo-network/diviner-boundwitness-memory": "~5.3.30",
|
|
128
|
+
"@xyo-network/diviner-identity": "~5.3.30",
|
|
129
|
+
"@xyo-network/diviner-model": "~5.3.30",
|
|
130
|
+
"@xyo-network/diviner-payload-generic": "~5.3.30",
|
|
131
|
+
"@xyo-network/diviner-payload-model": "~5.3.30",
|
|
132
|
+
"@xyo-network/dns": "~5.3.30",
|
|
133
|
+
"@xyo-network/domain-payload-plugin": "~5.3.30",
|
|
134
|
+
"@xyo-network/elliptic": "~5.3.30",
|
|
135
|
+
"@xyo-network/hash": "~5.3.30",
|
|
136
|
+
"@xyo-network/huri": "~5.3.30",
|
|
137
|
+
"@xyo-network/manifest-model": "~5.3.30",
|
|
138
|
+
"@xyo-network/module-abstract": "~5.3.30",
|
|
139
|
+
"@xyo-network/module-model": "~5.3.30",
|
|
140
|
+
"@xyo-network/module-resolver": "~5.3.30",
|
|
141
|
+
"@xyo-network/network": "~5.3.30",
|
|
142
|
+
"@xyo-network/node-abstract": "~5.3.30",
|
|
143
|
+
"@xyo-network/node-memory": "~5.3.30",
|
|
144
|
+
"@xyo-network/node-model": "~5.3.30",
|
|
145
|
+
"@xyo-network/node-view": "~5.3.30",
|
|
146
|
+
"@xyo-network/payload-builder": "~5.3.30",
|
|
147
|
+
"@xyo-network/payload-model": "~5.3.30",
|
|
148
|
+
"@xyo-network/payload-validator": "~5.3.30",
|
|
149
|
+
"@xyo-network/previous-hash-store-model": "~5.3.30",
|
|
150
|
+
"@xyo-network/sentinel-abstract": "~5.3.30",
|
|
151
|
+
"@xyo-network/sentinel-memory": "~5.3.30",
|
|
152
|
+
"@xyo-network/sentinel-model": "~5.3.30",
|
|
153
|
+
"@xyo-network/wallet-model": "~5.3.30",
|
|
154
|
+
"@xyo-network/wasm": "~5.3.30",
|
|
155
|
+
"@xyo-network/witness-adhoc": "~5.3.30",
|
|
156
|
+
"@xyo-network/witness-model": "~5.3.30",
|
|
157
|
+
"pako": "~2.1.0"
|
|
66
158
|
},
|
|
67
159
|
"engines": {
|
|
68
|
-
"node": ">=
|
|
160
|
+
"node": ">=24"
|
|
69
161
|
},
|
|
70
162
|
"engineStrict": true,
|
|
71
163
|
"publishConfig": {
|
|
72
164
|
"access": "restricted"
|
|
73
165
|
}
|
|
74
|
-
}
|
|
166
|
+
}
|
package/src/block/index.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { ZERO_HASH } from '@xylabs/sdk-js'
|
|
2
|
-
import type { WithStorageMeta } from '@xyo-network/sdk-js'
|
|
3
|
-
import type {
|
|
4
|
-
BaseContext,
|
|
5
|
-
BlockBoundWitness, BlockValidatorFunction, ChainId,
|
|
6
|
-
} from '@xyo-network/xl1-sdk'
|
|
7
|
-
import { BlockValidationError, BoundWitnessSignaturesValidator } from '@xyo-network/xl1-sdk'
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
BlockAllowedPayloadSchemasValidator,
|
|
11
|
-
BlockFieldsValidator, BlockPreviousHashValidator,
|
|
12
|
-
} from './validators/index.ts'
|
|
13
|
-
|
|
14
|
-
export const validateBlock = async (
|
|
15
|
-
context: BaseContext,
|
|
16
|
-
block: BlockBoundWitness,
|
|
17
|
-
chainId?: ChainId,
|
|
18
|
-
additionalValidators: BlockValidatorFunction[] = [],
|
|
19
|
-
): Promise<BlockValidationError[]> => {
|
|
20
|
-
const errors: BlockValidationError[] = []
|
|
21
|
-
try {
|
|
22
|
-
const bwErrors = await BoundWitnessSignaturesValidator(block)
|
|
23
|
-
for (const bwError of bwErrors) {
|
|
24
|
-
errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'BoundWitness validation failed', bwError))
|
|
25
|
-
}
|
|
26
|
-
const validators: BlockValidatorFunction[] = [
|
|
27
|
-
BlockFieldsValidator,
|
|
28
|
-
BlockPreviousHashValidator,
|
|
29
|
-
BlockAllowedPayloadSchemasValidator,
|
|
30
|
-
...additionalValidators,
|
|
31
|
-
]
|
|
32
|
-
errors.push(...(await Promise.all(
|
|
33
|
-
validators.map(validator => validator(context, block, chainId)),
|
|
34
|
-
)).flat())
|
|
35
|
-
} catch (ex) {
|
|
36
|
-
errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'validation excepted', ex))
|
|
37
|
-
}
|
|
38
|
-
return errors
|
|
39
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { ZERO_HASH } from '@xylabs/sdk-js'
|
|
2
|
-
import type { WithStorageMeta } from '@xyo-network/sdk-js'
|
|
3
|
-
import type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-sdk'
|
|
4
|
-
import {
|
|
5
|
-
BlockValidationError,
|
|
6
|
-
isAllowedBlockPayloadSchema,
|
|
7
|
-
} from '@xyo-network/xl1-sdk'
|
|
8
|
-
|
|
9
|
-
export const BlockAllowedPayloadSchemasValidator: BlockValidatorFunction = (
|
|
10
|
-
context,
|
|
11
|
-
block,
|
|
12
|
-
) => {
|
|
13
|
-
const errors: BlockValidationError[] = []
|
|
14
|
-
try {
|
|
15
|
-
for (const schema of block.payload_schemas) {
|
|
16
|
-
if (!isAllowedBlockPayloadSchema(schema)) {
|
|
17
|
-
errors.push(new BlockValidationError(
|
|
18
|
-
(block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,
|
|
19
|
-
block,
|
|
20
|
-
`payload schema not allowed in block: ${schema}`,
|
|
21
|
-
))
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
} catch (ex) {
|
|
25
|
-
errors.push(new BlockValidationError(
|
|
26
|
-
(block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,
|
|
27
|
-
block,
|
|
28
|
-
`validation excepted: ${ex}`,
|
|
29
|
-
ex,
|
|
30
|
-
))
|
|
31
|
-
}
|
|
32
|
-
return errors
|
|
33
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import type { Hash } from '@xylabs/sdk-js'
|
|
2
|
-
import { isDefined, ZERO_HASH } from '@xylabs/sdk-js'
|
|
3
|
-
import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'
|
|
4
|
-
import type { WithStorageMeta } from '@xyo-network/sdk-js'
|
|
5
|
-
import type {
|
|
6
|
-
BaseContext,
|
|
7
|
-
BlockBoundWitness, BlockValidatorFunction, ChainId,
|
|
8
|
-
} from '@xyo-network/xl1-sdk'
|
|
9
|
-
import { BlockValidationError } from '@xyo-network/xl1-sdk'
|
|
10
|
-
|
|
11
|
-
export const BlockFieldsValidator: BlockValidatorFunction = (
|
|
12
|
-
context: BaseContext,
|
|
13
|
-
block: BlockBoundWitness,
|
|
14
|
-
chainId?: ChainId,
|
|
15
|
-
) => {
|
|
16
|
-
const errors: BlockValidationError[] = []
|
|
17
|
-
try {
|
|
18
|
-
if (isDefined(chainId) && block.chain !== chainId.toLowerCase()) {
|
|
19
|
-
errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'Invalid chain id'))
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// get transaction hashes
|
|
23
|
-
const txHashes: Hash[] = []
|
|
24
|
-
for (let i = 0; i < block.payload_hashes.length; i++) {
|
|
25
|
-
if (block.payload_schemas[i] === BoundWitnessSchema) {
|
|
26
|
-
txHashes.push(block.payload_hashes[i])
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// check if transaction hashes are unique
|
|
31
|
-
if (new Set(txHashes).size < txHashes.length) {
|
|
32
|
-
errors.push(new BlockValidationError(
|
|
33
|
-
(block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,
|
|
34
|
-
block,
|
|
35
|
-
`Duplicate Transaction Hashes: ${txHashes}`,
|
|
36
|
-
))
|
|
37
|
-
}
|
|
38
|
-
} catch (ex) {
|
|
39
|
-
errors.push(new BlockValidationError(
|
|
40
|
-
(block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,
|
|
41
|
-
block,
|
|
42
|
-
`validation excepted: ${ex}`,
|
|
43
|
-
ex,
|
|
44
|
-
))
|
|
45
|
-
}
|
|
46
|
-
return errors
|
|
47
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { ZERO_HASH } from '@xylabs/sdk-js'
|
|
2
|
-
import type { WithStorageMeta } from '@xyo-network/sdk-js'
|
|
3
|
-
import type {
|
|
4
|
-
BaseContext, BlockBoundWitness, BlockValidatorFunction,
|
|
5
|
-
} from '@xyo-network/xl1-sdk'
|
|
6
|
-
import { BlockBoundWitnessWithStorageMetaJsonSchema, BlockValidationError } from '@xyo-network/xl1-sdk'
|
|
7
|
-
import type { AnySchema } from 'ajv'
|
|
8
|
-
import { Ajv } from 'ajv'
|
|
9
|
-
|
|
10
|
-
export const BlockJsonSchemaValidator = (jsonSchema: AnySchema = BlockBoundWitnessWithStorageMetaJsonSchema): BlockValidatorFunction => {
|
|
11
|
-
const ajv = new Ajv({ allErrors: true, strict: true })
|
|
12
|
-
const validate = ajv.compile(jsonSchema)
|
|
13
|
-
return async (
|
|
14
|
-
context: BaseContext,
|
|
15
|
-
block: BlockBoundWitness,
|
|
16
|
-
) => {
|
|
17
|
-
const errors: BlockValidationError[] = []
|
|
18
|
-
try {
|
|
19
|
-
await validate(block)
|
|
20
|
-
if ((validate.errors ?? []).length > 0) {
|
|
21
|
-
const error = new BlockValidationError(
|
|
22
|
-
(block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,
|
|
23
|
-
block,
|
|
24
|
-
`failed JSON schema validation: ${ajv.errorsText(validate.errors, { separator: '\n' })}`,
|
|
25
|
-
)
|
|
26
|
-
error.cause = validate.errors
|
|
27
|
-
errors.push(error)
|
|
28
|
-
}
|
|
29
|
-
} catch (ex) {
|
|
30
|
-
const error = new BlockValidationError(
|
|
31
|
-
(block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,
|
|
32
|
-
block,
|
|
33
|
-
`validation excepted: ${ex}`,
|
|
34
|
-
)
|
|
35
|
-
error.cause = ex
|
|
36
|
-
errors.push(error)
|
|
37
|
-
}
|
|
38
|
-
return errors
|
|
39
|
-
}
|
|
40
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { isHash, ZERO_HASH } from '@xylabs/sdk-js'
|
|
2
|
-
import type { WithStorageMeta } from '@xyo-network/sdk-js'
|
|
3
|
-
import type { BlockBoundWitness, BlockValidatorFunction } from '@xyo-network/xl1-sdk'
|
|
4
|
-
import { BlockValidationError } from '@xyo-network/xl1-sdk'
|
|
5
|
-
|
|
6
|
-
export const BlockPreviousHashValidator: BlockValidatorFunction = (
|
|
7
|
-
context,
|
|
8
|
-
block,
|
|
9
|
-
) => {
|
|
10
|
-
const errors: BlockValidationError[] = []
|
|
11
|
-
try {
|
|
12
|
-
const blockNumber = block.block
|
|
13
|
-
if (blockNumber > 0n) {
|
|
14
|
-
// if this is not the first block, validate previous hashes
|
|
15
|
-
if (!isHash(block.previous)) {
|
|
16
|
-
errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'previous hash is missing or invalid'))
|
|
17
|
-
}
|
|
18
|
-
} else if (blockNumber === 0) {
|
|
19
|
-
// if this is the first block, validate previous hashes
|
|
20
|
-
if (block.previous !== null) {
|
|
21
|
-
errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'previous hash should not be set'))
|
|
22
|
-
}
|
|
23
|
-
} else {
|
|
24
|
-
// we have a negative block number
|
|
25
|
-
errors.push(new BlockValidationError((block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH, block, 'invalid block number'))
|
|
26
|
-
}
|
|
27
|
-
} catch (ex) {
|
|
28
|
-
const error = new BlockValidationError(
|
|
29
|
-
(block as WithStorageMeta<BlockBoundWitness>)?._hash ?? ZERO_HASH,
|
|
30
|
-
block,
|
|
31
|
-
`Failed BlockPreviousHashValidator: ${ex}`,
|
|
32
|
-
)
|
|
33
|
-
error.cause = ex
|
|
34
|
-
errors.push(error)
|
|
35
|
-
}
|
|
36
|
-
return errors
|
|
37
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './validatePayloadInBlock.ts'
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export * from './isElevatedFromBlock.ts'
|
|
2
|
-
export * from './validateElevatedFromBlock.ts'
|
|
3
|
-
export * from './validateElevatedFromTransaction.ts'
|
|
4
|
-
export * from './validateIncludedInBlock.ts'
|
|
5
|
-
export * from './validateTransactionInBlock.ts'
|
|
6
|
-
export * from './validateTypedPayloadInBlock.ts'
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import type { Payload, WithHashMeta } from '@xyo-network/sdk-js'
|
|
2
|
-
import { type HydratedBlock, isTransactionBoundWitness } from '@xyo-network/xl1-sdk'
|
|
3
|
-
|
|
4
|
-
export const isElevatedFromBlock = (payload: WithHashMeta<Payload>, [, payloads]: HydratedBlock): boolean => {
|
|
5
|
-
const txs = payloads.filter(p => isTransactionBoundWitness(p))
|
|
6
|
-
for (const tx of txs) {
|
|
7
|
-
if (tx.payload_hashes.includes(payload._hash)) {
|
|
8
|
-
return false
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
return true
|
|
12
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import type { InBlockPayloadValidationFunction } from '@xyo-network/xl1-sdk'
|
|
2
|
-
import { InBlockPayloadValidationError, transactionsFromHydratedBlock } from '@xyo-network/xl1-sdk'
|
|
3
|
-
|
|
4
|
-
export const validateElevatedFromBlock: InBlockPayloadValidationFunction = (
|
|
5
|
-
context,
|
|
6
|
-
payload,
|
|
7
|
-
block,
|
|
8
|
-
) => {
|
|
9
|
-
const errors: InBlockPayloadValidationError[] = []
|
|
10
|
-
try {
|
|
11
|
-
const txs = transactionsFromHydratedBlock(block)
|
|
12
|
-
const allTxPayloadHashes = new Set(txs.flatMap(tx => tx.payload_hashes))
|
|
13
|
-
if (allTxPayloadHashes.has(payload._hash)) {
|
|
14
|
-
errors.push(new InBlockPayloadValidationError(
|
|
15
|
-
block[0]?._hash,
|
|
16
|
-
block,
|
|
17
|
-
payload,
|
|
18
|
-
`Transaction may not include block payload hash [${payload.schema}]: ${payload._hash}`,
|
|
19
|
-
))
|
|
20
|
-
}
|
|
21
|
-
} catch (ex) {
|
|
22
|
-
errors.push(new InBlockPayloadValidationError(block[0]?._hash, block, payload, `validation excepted: ${ex}`, ex))
|
|
23
|
-
}
|
|
24
|
-
return errors
|
|
25
|
-
}
|