@xyo-network/xl1-protocol-sdk 1.18.39 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/neutral/config/Bridge.d.ts +15 -15
- package/dist/neutral/index.mjs +21 -11
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/model/ChainQualification.d.ts +7 -7
- package/dist/neutral/simple/blockValidation/SimpleBlockValidationViewer.d.ts +4 -2
- package/dist/neutral/simple/blockValidation/SimpleBlockValidationViewer.d.ts.map +1 -1
- package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts +1 -1
- package/dist/neutral/validation/block/HydratedBlockStateValidationFunction.d.ts.map +1 -1
- package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts +1 -1
- package/dist/neutral/validation/block/HydratedBlockValidationFunction.d.ts.map +1 -1
- package/dist/neutral/viewers/ChainContract.d.ts +11 -7
- package/dist/neutral/viewers/ChainContract.d.ts.map +1 -1
- package/dist/neutral/viewers/Finalization.d.ts +1 -1
- package/dist/neutral/viewers/Finalization.d.ts.map +1 -1
- package/dist/neutral/viewers/WindowedBlock.d.ts +1 -2
- package/dist/neutral/viewers/WindowedBlock.d.ts.map +1 -1
- package/package.json +8 -9
- package/src/config/Bridge.ts +1 -1
- package/src/model/ChainQualification.ts +1 -1
- package/src/simple/blockValidation/SimpleBlockValidationViewer.ts +27 -8
- package/src/validation/block/HydratedBlockStateValidationFunction.ts +1 -1
- package/src/validation/block/HydratedBlockValidationFunction.ts +1 -1
- package/src/viewers/ChainContract.ts +15 -8
- package/src/viewers/Finalization.ts +1 -1
- package/src/viewers/WindowedBlock.ts +1 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
export declare const ChainQualificationZod: z.ZodObject<{
|
|
3
|
-
head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/
|
|
3
|
+
head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHash, string>>;
|
|
4
4
|
range: z.ZodTuple<[z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>], null>;
|
|
5
5
|
}, z.core.$strip>;
|
|
6
6
|
export type ChainQualification = z.infer<typeof ChainQualificationZod>;
|
|
7
7
|
export declare const isChainQualification: <T>(value: T) => value is T & {
|
|
8
|
-
head: import("@xylabs/
|
|
8
|
+
head: import("@xylabs/sdk-js").BrandedHash;
|
|
9
9
|
range: [import("@xyo-network/xl1-protocol").XL1BlockNumber, import("@xyo-network/xl1-protocol").XL1BlockNumber];
|
|
10
10
|
};
|
|
11
11
|
export declare const ChainQualifiedRangeConfigZod: z.ZodObject<{
|
|
@@ -16,27 +16,27 @@ export declare const isChainQualifiedRangeConfig: <T>(value: T) => value is T &
|
|
|
16
16
|
range: [import("@xyo-network/xl1-protocol").XL1BlockNumber, import("@xyo-network/xl1-protocol").XL1BlockNumber];
|
|
17
17
|
};
|
|
18
18
|
export declare const ChainQualifiedHeadConfigZod: z.ZodObject<{
|
|
19
|
-
head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/
|
|
19
|
+
head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHash, string>>;
|
|
20
20
|
}, z.core.$strip>;
|
|
21
21
|
export type ChainQualifiedHeadConfig = z.infer<typeof ChainQualifiedHeadConfigZod>;
|
|
22
22
|
export declare const isChainQualifiedHeadConfig: <T>(value: T) => value is T & {
|
|
23
|
-
head: import("@xylabs/
|
|
23
|
+
head: import("@xylabs/sdk-js").BrandedHash;
|
|
24
24
|
};
|
|
25
25
|
export declare const ChainQualifiedConfigZod: z.ZodUnion<readonly [z.ZodObject<{
|
|
26
26
|
range: z.ZodTuple<[z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>], null>;
|
|
27
27
|
}, z.core.$strip>, z.ZodObject<{
|
|
28
|
-
head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/
|
|
28
|
+
head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHash, string>>;
|
|
29
29
|
}, z.core.$strip>, z.ZodObject<{}, z.core.$strip>]>;
|
|
30
30
|
export type ChainQualifiedConfig = z.infer<typeof ChainQualifiedConfigZod>;
|
|
31
31
|
export declare const isChainQualifiedConfig: <T>(value: T) => value is T & ({
|
|
32
32
|
range: [import("@xyo-network/xl1-protocol").XL1BlockNumber, import("@xyo-network/xl1-protocol").XL1BlockNumber];
|
|
33
33
|
} | {
|
|
34
|
-
head: import("@xylabs/
|
|
34
|
+
head: import("@xylabs/sdk-js").BrandedHash;
|
|
35
35
|
} | Record<string, never>);
|
|
36
36
|
export declare const ExtendChainQualifiedConfigZod: <T>(zodType: z.ZodType<T>) => z.ZodType<T & ChainQualifiedConfig>;
|
|
37
37
|
export type ChainQualified<T> = [T, ChainQualification];
|
|
38
38
|
export declare const ChainQualifiedZod: <T>(zodType: z.ZodType<T>) => z.ZodTuple<[z.ZodType<T, unknown, z.core.$ZodTypeInternals<T, unknown>>, z.ZodObject<{
|
|
39
|
-
head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/
|
|
39
|
+
head: z.ZodPipe<z.ZodString, z.ZodTransform<import("@xylabs/sdk-js").BrandedHash, string>>;
|
|
40
40
|
range: z.ZodTuple<[z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>, z.ZodPipe<z.ZodNumber, z.ZodTransform<import("@xyo-network/xl1-protocol").XL1BlockNumber, number>>], null>;
|
|
41
41
|
}, z.core.$strip>], null>;
|
|
42
42
|
//# sourceMappingURL=ChainQualification.d.ts.map
|
|
@@ -2,7 +2,7 @@ import { type SignedHydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'
|
|
|
2
2
|
import type { CreatableProviderParams } from '../../CreatableProvider/index.ts';
|
|
3
3
|
import { AbstractCreatableProvider } from '../../CreatableProvider/index.ts';
|
|
4
4
|
import type { HydratedBlockStateValidationFunction, HydratedBlockValidationError, HydratedBlockValidationFunction } from '../../validation/index.ts';
|
|
5
|
-
import type { BlockValidationConfig, BlockValidationQualification, BlockValidationViewer } from '../../viewers/index.ts';
|
|
5
|
+
import type { BlockValidationConfig, BlockValidationQualification, BlockValidationViewer, ChainContractViewer } from '../../viewers/index.ts';
|
|
6
6
|
import { BlockViewer } from '../../viewers/index.ts';
|
|
7
7
|
export interface SimpleBlockValidationViewerParams extends CreatableProviderParams {
|
|
8
8
|
maxUncleWindowSize: number;
|
|
@@ -11,13 +11,15 @@ export interface SimpleBlockValidationViewerParams extends CreatableProviderPara
|
|
|
11
11
|
}
|
|
12
12
|
export declare class SimpleBlockValidationViewer extends AbstractCreatableProvider<SimpleBlockValidationViewerParams> implements BlockValidationViewer {
|
|
13
13
|
static readonly defaultMoniker: "BlockValidationViewer";
|
|
14
|
-
static readonly dependencies: ("BlockViewer" | "AccountBalanceViewer")[];
|
|
14
|
+
static readonly dependencies: ("BlockViewer" | "AccountBalanceViewer" | "ChainContractViewer")[];
|
|
15
15
|
static readonly monikers: "BlockValidationViewer"[];
|
|
16
16
|
moniker: "BlockValidationViewer";
|
|
17
17
|
private _accountBalanceViewer;
|
|
18
18
|
private _blockViewer;
|
|
19
|
+
private _chainContractViewer;
|
|
19
20
|
private _uncleWindowedChainCache;
|
|
20
21
|
protected get blockViewer(): BlockViewer<"BlockViewer">;
|
|
22
|
+
protected get chainContractViewer(): ChainContractViewer;
|
|
21
23
|
protected get maxUncleWindowSize(): number;
|
|
22
24
|
static paramsHandler(params: Partial<SimpleBlockValidationViewerParams>): Promise<SimpleBlockValidationViewerParams>;
|
|
23
25
|
createHandler(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SimpleBlockValidationViewer.d.ts","sourceRoot":"","sources":["../../../../src/simple/blockValidation/SimpleBlockValidationViewer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SimpleBlockValidationViewer.d.ts","sourceRoot":"","sources":["../../../../src/simple/blockValidation/SimpleBlockValidationViewer.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,+BAA+B,EACrC,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAA;AAC/E,OAAO,EAAE,yBAAyB,EAAqB,MAAM,kCAAkC,CAAA;AAG/F,OAAO,KAAK,EACV,oCAAoC,EAAE,4BAA4B,EAAE,+BAA+B,EACpG,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAEV,qBAAqB,EACrB,4BAA4B,EAC5B,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAEyB,WAAW,EAE1C,MAAM,wBAAwB,CAAA;AAE/B,MAAM,WAAW,iCAAkC,SAAQ,uBAAuB;IAChF,kBAAkB,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,+BAA+B,CAAA;IAC1C,KAAK,CAAC,EAAE,oCAAoC,CAAA;CAC7C;AAED,qBACa,2BAA4B,SAAQ,yBAAyB,CAAC,iCAAiC,CAAE,YAAW,qBAAqB;IAC5I,MAAM,CAAC,QAAQ,CAAC,cAAc,0BAA+B;IAC7D,MAAM,CAAC,QAAQ,CAAC,YAAY,qEAAgF;IAC5G,MAAM,CAAC,QAAQ,CAAC,QAAQ,4BAAiC;IACzD,OAAO,0BAA6C;IAEpD,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,wBAAwB,CAAiD;IAEjF,SAAS,KAAK,WAAW,+BAExB;IAED,SAAS,KAAK,mBAAmB,wBAEhC;IAED,SAAS,KAAK,kBAAkB,WAE/B;WAEqB,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,iCAAiC,CAAC,GAAG,OAAO,CAAC,iCAAiC,CAAC;IASpH,aAAa;IAOtB,sBAAsB,CAC1B,KAAK,EAAE,+BAA+B,EACtC,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,CAAC,4BAA4B,EAAE,EAAE,4BAA4B,CAAC,CAAC;IAIpE,uBAAuB,CAC3B,MAAM,EAAE,+BAA+B,EAAE,EACzC,MAAM,CAAC,EAAE,qBAAqB,GAC7B,OAAO,CAAC,CAAC,4BAA4B,EAAE,EAAE,4BAA4B,CAAC,CAAC;IAwBpE,aAAa,CAAC,KAAK,EAAE,+BAA+B,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;IAI9H,cAAc,CAAC,MAAM,EAAE,+BAA+B,EAAE,EAAE,MAAM,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,4BAA4B,EAAE,CAAC;YAI1H,kBAAkB;YAYlB,eAAe;YAsBf,wBAAwB;CAIvC"}
|
|
@@ -9,7 +9,7 @@ import type { HydratedBlockStateValidationError } from './error.ts';
|
|
|
9
9
|
* @param archivist The archivist to use for validation.
|
|
10
10
|
* @returns An array of errors if the block is invalid, or an empty array if it is valid.
|
|
11
11
|
*/
|
|
12
|
-
export type HydratedBlockStateValidationFunction = (hydratedBlock: HydratedBlockWithHashMeta,
|
|
12
|
+
export type HydratedBlockStateValidationFunction = (hydratedBlock: HydratedBlockWithHashMeta, chainIdAtBlockNumber: (blockNumber: number) => Promisable<ChainId>, services: {
|
|
13
13
|
accountBalance: AccountBalanceViewer;
|
|
14
14
|
}) => Promisable<HydratedBlockStateValidationError[]>;
|
|
15
15
|
//# sourceMappingURL=HydratedBlockStateValidationFunction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HydratedBlockStateValidationFunction.d.ts","sourceRoot":"","sources":["../../../../src/validation/block/HydratedBlockStateValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAEnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AAEnE;;;;;;GAMG;AACH,MAAM,MAAM,oCAAoC,GAAG,CACjD,aAAa,EAAE,yBAAyB,EACxC,
|
|
1
|
+
{"version":3,"file":"HydratedBlockStateValidationFunction.d.ts","sourceRoot":"","sources":["../../../../src/validation/block/HydratedBlockStateValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAEnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAClE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAA;AAEnE;;;;;;GAMG;AACH,MAAM,MAAM,oCAAoC,GAAG,CACjD,aAAa,EAAE,yBAAyB,EACxC,oBAAoB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,EAClE,QAAQ,EAAE;IAAE,cAAc,EAAE,oBAAoB,CAAA;CAAE,KAC/C,UAAU,CAAC,iCAAiC,EAAE,CAAC,CAAA"}
|
|
@@ -7,5 +7,5 @@ import type { HydratedBlockValidationError } from './error.ts';
|
|
|
7
7
|
* @param chainId The chain ID to use for validation.
|
|
8
8
|
* @returns An array of errors if the block is invalid, or an empty array if it is valid.
|
|
9
9
|
*/
|
|
10
|
-
export type HydratedBlockValidationFunction = (hydratedBlock: HydratedBlockWithHashMeta,
|
|
10
|
+
export type HydratedBlockValidationFunction = (hydratedBlock: HydratedBlockWithHashMeta, chainIdAtBlockNumber?: (blockNumber: number) => Promisable<ChainId>) => Promisable<HydratedBlockValidationError[]>;
|
|
11
11
|
//# sourceMappingURL=HydratedBlockValidationFunction.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HydratedBlockValidationFunction.d.ts","sourceRoot":"","sources":["../../../../src/validation/block/HydratedBlockValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAEnF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG,CAC5C,aAAa,EAAE,yBAAyB,EACxC,
|
|
1
|
+
{"version":3,"file":"HydratedBlockValidationFunction.d.ts","sourceRoot":"","sources":["../../../../src/validation/block/HydratedBlockValidationFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAEnF,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,MAAM,+BAA+B,GAAG,CAC5C,aAAa,EAAE,yBAAyB,EACxC,oBAAoB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,CAAC,KAChE,UAAU,CAAC,4BAA4B,EAAE,CAAC,CAAA"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
import type { Address } from '@xylabs/sdk-js';
|
|
1
|
+
import type { Address, Hash, Promisable } from '@xylabs/sdk-js';
|
|
2
|
+
import type { ChainId } from '@xyo-network/xl1-protocol';
|
|
2
3
|
import type { Provider } from '../model/index.ts';
|
|
3
4
|
export interface ChainContractViewerMethods {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
chainId(): Promisable<ChainId>;
|
|
6
|
+
forkedAtBlockNumber(): Promisable<number>;
|
|
7
|
+
forkedAtHash(): Promisable<Hash>;
|
|
8
|
+
forkedChainId(): Promisable<ChainId>;
|
|
9
|
+
minWithdrawalBlocks(): Promisable<number>;
|
|
10
|
+
rewardsContract(): Promisable<Address>;
|
|
11
|
+
stakingTokenAddress(): Promisable<Address>;
|
|
10
12
|
}
|
|
11
13
|
export declare const ChainContractViewerMoniker: "ChainContractViewer";
|
|
12
14
|
export type ChainContractViewerMoniker = typeof ChainContractViewerMoniker;
|
|
13
15
|
export interface ChainContractViewer extends ChainContractViewerMethods, Provider<ChainContractViewerMoniker> {
|
|
16
|
+
chainIdAtBlockNumber(blockNumber: number): Promisable<ChainId>;
|
|
17
|
+
forkedChainContractViewer(): Promisable<ChainContractViewer>;
|
|
14
18
|
}
|
|
15
19
|
//# sourceMappingURL=ChainContract.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChainContract.d.ts","sourceRoot":"","sources":["../../../src/viewers/ChainContract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ChainContract.d.ts","sourceRoot":"","sources":["../../../src/viewers/ChainContract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EAAE,IAAI,EAAE,UAAU,EAC1B,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAExD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,WAAW,0BAA0B;IACzC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;IAC9B,mBAAmB,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;IACzC,YAAY,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;IAChC,aAAa,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;IACpC,mBAAmB,IAAI,UAAU,CAAC,MAAM,CAAC,CAAA;IACzC,eAAe,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;IACtC,mBAAmB,IAAI,UAAU,CAAC,OAAO,CAAC,CAAA;CAC3C;AAED,eAAO,MAAM,0BAA0B,EAAG,qBAA8B,CAAA;AACxE,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,WAAW,mBAAoB,SAAQ,0BAA0B,EAAE,QAAQ,CAAC,0BAA0B,CAAC;IAC3G,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;IAC9D,yBAAyB,IAAI,UAAU,CAAC,mBAAmB,CAAC,CAAA;CAC7D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Hash } from '@xylabs/
|
|
1
|
+
import type { Hash } from '@xylabs/sdk-js';
|
|
2
2
|
import type { SignedBlockBoundWitnessWithHashMeta, SignedHydratedBlockWithHashMeta, XL1BlockNumber } from '@xyo-network/xl1-protocol';
|
|
3
3
|
import type { Provider } from '../model/index.ts';
|
|
4
4
|
export interface FinalizationViewerMethods {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Finalization.d.ts","sourceRoot":"","sources":["../../../src/viewers/Finalization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"Finalization.d.ts","sourceRoot":"","sources":["../../../src/viewers/Finalization.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,KAAK,EACV,mCAAmC,EAAE,+BAA+B,EAAE,cAAc,EACrF,MAAM,2BAA2B,CAAA;AAElC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAEjD,MAAM,WAAW,yBAAyB;IACxC,IAAI,IAAI,OAAO,CAAC,+BAA+B,CAAC,CAAA;CACjD;AAED,eAAO,MAAM,yBAAyB,EAAG,oBAA6B,CAAA;AACtE,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAA;AAExE,MAAM,WAAW,kBAAmB,SAAQ,yBAAyB,EAAE,QAAQ,CAAC,yBAAyB,CAAC;IACxG,SAAS,IAAI,OAAO,CAAC,mCAAmC,CAAC,CAAA;IACzD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAAA;CACtC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { Hash } from '@xylabs/
|
|
2
|
-
import type { Promisable } from '@xylabs/sdk-js';
|
|
1
|
+
import type { Hash, Promisable } from '@xylabs/sdk-js';
|
|
3
2
|
import type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol';
|
|
4
3
|
import type { Provider, ProviderMoniker } from '../model/index.ts';
|
|
5
4
|
import type { BlockViewerMethods } from './Block.ts';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WindowedBlock.d.ts","sourceRoot":"","sources":["../../../src/viewers/WindowedBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"WindowedBlock.d.ts","sourceRoot":"","sources":["../../../src/viewers/WindowedBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAE1E,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEpD,KAAK,4BAA4B,GAAG,IAAI,CAAC,kBAAkB,EAAE,MAAM,GAAG,cAAc,GAAG,kBAAkB,CAAC,CAAA;AAE1G,MAAM,WAAW,0BAA2B,SAAQ,4BAA4B;IAC9E,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,UAAU,CAAC,yBAAyB,EAAE,CAAC,CAAA;CACnF;AAED,eAAO,MAAM,0BAA0B,EAAG,qBAA8B,CAAA;AACxE,MAAM,MAAM,0BAA0B,GAAG,OAAO,0BAA0B,CAAA;AAE1E,MAAM,WAAW,mBAAmB,CAAC,QAAQ,SAAS,eAAe,GAAG,0BAA0B,CAAE,SAAQ,0BAA0B,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACxJ,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAA;CACjF"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/xl1-protocol-sdk",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.19.0",
|
|
5
5
|
"description": "XYO Layer One SDK Protocol",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -40,9 +40,8 @@
|
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@opentelemetry/api": "^1.9.0",
|
|
43
|
-
"@xylabs/
|
|
44
|
-
"@xylabs/
|
|
45
|
-
"@xylabs/zod": "~5.0.63",
|
|
43
|
+
"@xylabs/sdk-js": "~5.0.64",
|
|
44
|
+
"@xylabs/zod": "~5.0.64",
|
|
46
45
|
"@xyo-network/account": "~5.2.25",
|
|
47
46
|
"@xyo-network/account-model": "~5.2.25",
|
|
48
47
|
"@xyo-network/archivist-model": "~5.2.25",
|
|
@@ -52,17 +51,17 @@
|
|
|
52
51
|
"@xyo-network/payload-model": "~5.2.25",
|
|
53
52
|
"@xyo-network/wallet": "~5.2.25",
|
|
54
53
|
"@xyo-network/wallet-model": "~5.2.25",
|
|
55
|
-
"@xyo-network/xl1-protocol": "~1.
|
|
54
|
+
"@xyo-network/xl1-protocol": "~1.19.0",
|
|
56
55
|
"async-mutex": "~0.5.0",
|
|
57
56
|
"ethers": "^6.16.0",
|
|
58
57
|
"lru-cache": "^11.2.4"
|
|
59
58
|
},
|
|
60
59
|
"devDependencies": {
|
|
61
60
|
"@types/node": "~25.0.9",
|
|
62
|
-
"@xylabs/events": "~5.0.
|
|
63
|
-
"@xylabs/ts-scripts-yarn3": "~7.
|
|
64
|
-
"@xylabs/tsconfig": "~7.
|
|
65
|
-
"@xylabs/vitest-extended": "~5.0.
|
|
61
|
+
"@xylabs/events": "~5.0.64",
|
|
62
|
+
"@xylabs/ts-scripts-yarn3": "~7.3.1",
|
|
63
|
+
"@xylabs/tsconfig": "~7.3.1",
|
|
64
|
+
"@xylabs/vitest-extended": "~5.0.64",
|
|
66
65
|
"@xyo-network/account": "~5.2.25",
|
|
67
66
|
"@xyo-network/archivist-memory": "~5.2.25",
|
|
68
67
|
"@xyo-network/archivist-mongodb": "~5.2.25",
|
package/src/config/Bridge.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AddressZod, HexZod, toAddress, toHex,
|
|
3
|
-
} from '@xylabs/
|
|
3
|
+
} from '@xylabs/sdk-js'
|
|
4
4
|
import type { ChainId } from '@xyo-network/xl1-protocol'
|
|
5
5
|
import { AttoXL1ConvertFactor, XL1 } from '@xyo-network/xl1-protocol'
|
|
6
6
|
import { globalRegistry, z } from 'zod'
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
assertEx, exists, Promisable,
|
|
3
|
+
} from '@xylabs/sdk-js'
|
|
2
4
|
import {
|
|
3
5
|
asXL1BlockRange,
|
|
4
6
|
ChainId,
|
|
@@ -17,10 +19,12 @@ import type {
|
|
|
17
19
|
BlockValidationConfig,
|
|
18
20
|
BlockValidationQualification,
|
|
19
21
|
BlockValidationViewer,
|
|
22
|
+
ChainContractViewer,
|
|
20
23
|
} from '../../viewers/index.ts'
|
|
21
24
|
import {
|
|
22
25
|
AccountBalanceViewerMoniker,
|
|
23
26
|
BlockValidationViewerMoniker, BlockViewer, BlockViewerMoniker,
|
|
27
|
+
ChainContractViewerMoniker,
|
|
24
28
|
} from '../../viewers/index.ts'
|
|
25
29
|
|
|
26
30
|
export interface SimpleBlockValidationViewerParams extends CreatableProviderParams {
|
|
@@ -32,18 +36,23 @@ export interface SimpleBlockValidationViewerParams extends CreatableProviderPara
|
|
|
32
36
|
@creatableProvider()
|
|
33
37
|
export class SimpleBlockValidationViewer extends AbstractCreatableProvider<SimpleBlockValidationViewerParams> implements BlockValidationViewer {
|
|
34
38
|
static readonly defaultMoniker = BlockValidationViewerMoniker
|
|
35
|
-
static readonly dependencies = [AccountBalanceViewerMoniker, BlockViewerMoniker]
|
|
39
|
+
static readonly dependencies = [AccountBalanceViewerMoniker, BlockViewerMoniker, ChainContractViewerMoniker]
|
|
36
40
|
static readonly monikers = [BlockValidationViewerMoniker]
|
|
37
41
|
moniker = SimpleBlockValidationViewer.defaultMoniker
|
|
38
42
|
|
|
39
43
|
private _accountBalanceViewer!: AccountBalanceViewer
|
|
40
44
|
private _blockViewer!: BlockViewer
|
|
45
|
+
private _chainContractViewer!: ChainContractViewer
|
|
41
46
|
private _uncleWindowedChainCache: SignedHydratedBlockWithHashMeta[] | null = null
|
|
42
47
|
|
|
43
48
|
protected get blockViewer() {
|
|
44
49
|
return this._blockViewer
|
|
45
50
|
}
|
|
46
51
|
|
|
52
|
+
protected get chainContractViewer() {
|
|
53
|
+
return this._chainContractViewer
|
|
54
|
+
}
|
|
55
|
+
|
|
47
56
|
protected get maxUncleWindowSize() {
|
|
48
57
|
return this.params.maxUncleWindowSize
|
|
49
58
|
}
|
|
@@ -51,6 +60,8 @@ export class SimpleBlockValidationViewer extends AbstractCreatableProvider<Simpl
|
|
|
51
60
|
static override async paramsHandler(params: Partial<SimpleBlockValidationViewerParams>): Promise<SimpleBlockValidationViewerParams> {
|
|
52
61
|
return {
|
|
53
62
|
...await super.paramsHandler(params),
|
|
63
|
+
protocol: params.protocol,
|
|
64
|
+
state: params.state,
|
|
54
65
|
maxUncleWindowSize: params.maxUncleWindowSize ?? 100,
|
|
55
66
|
} satisfies SimpleBlockValidationViewerParams
|
|
56
67
|
}
|
|
@@ -59,6 +70,7 @@ export class SimpleBlockValidationViewer extends AbstractCreatableProvider<Simpl
|
|
|
59
70
|
await super.createHandler()
|
|
60
71
|
this._accountBalanceViewer = await this.locator.getInstance<AccountBalanceViewer>(AccountBalanceViewerMoniker)
|
|
61
72
|
this._blockViewer = await this.locator.getInstance<BlockViewer>(BlockViewerMoniker)
|
|
73
|
+
this._chainContractViewer = await this.locator.getInstance<ChainContractViewer>(ChainContractViewerMoniker)
|
|
62
74
|
}
|
|
63
75
|
|
|
64
76
|
async qualifiedValidateBlock(
|
|
@@ -84,13 +96,14 @@ export class SimpleBlockValidationViewer extends AbstractCreatableProvider<Simpl
|
|
|
84
96
|
: undefined
|
|
85
97
|
|
|
86
98
|
const headBlock = head ?? (await this.blockViewer.currentBlock())[0]
|
|
87
|
-
const chainId = headBlock.chain
|
|
88
99
|
|
|
89
100
|
const validateProtocol = value ? this.doValidateProtocol.bind(this) : undefined
|
|
90
101
|
const validateState = state ? this.doValidateState.bind(this) : undefined
|
|
91
102
|
|
|
103
|
+
const chainIdAtBlockNumber = (blockNumber: number) => this.chainContractViewer.chainIdAtBlockNumber(blockNumber)
|
|
104
|
+
|
|
92
105
|
return [(await Promise.all([
|
|
93
|
-
validateProtocol?.(blocks,
|
|
106
|
+
validateProtocol?.(blocks, chainIdAtBlockNumber), validateState?.(blocks, chainIdAtBlockNumber),
|
|
94
107
|
].filter(exists))).flat(), { head: headBlock._hash, range: asXL1BlockRange([0, headBlock.block], true) }]
|
|
95
108
|
}
|
|
96
109
|
|
|
@@ -102,16 +115,22 @@ export class SimpleBlockValidationViewer extends AbstractCreatableProvider<Simpl
|
|
|
102
115
|
return (await this.qualifiedValidateBlocks(blocks, config))[0]
|
|
103
116
|
}
|
|
104
117
|
|
|
105
|
-
private async doValidateProtocol(
|
|
118
|
+
private async doValidateProtocol(
|
|
119
|
+
blocks: SignedHydratedBlockWithHashMeta[],
|
|
120
|
+
chainIdAtBlockNumber: (blockNumber: number) => Promisable<ChainId>,
|
|
121
|
+
): Promise<HydratedBlockValidationError[]> {
|
|
106
122
|
return (await Promise.all(blocks.map(async (block) => {
|
|
107
123
|
return await this.params.protocol!(
|
|
108
124
|
block,
|
|
109
|
-
|
|
125
|
+
chainIdAtBlockNumber,
|
|
110
126
|
)
|
|
111
127
|
}))).flat()
|
|
112
128
|
}
|
|
113
129
|
|
|
114
|
-
private async doValidateState(
|
|
130
|
+
private async doValidateState(
|
|
131
|
+
blocks: SignedHydratedBlockWithHashMeta[],
|
|
132
|
+
chainIdAtBlockNumber: (blockNumber: number) => Promisable<ChainId>,
|
|
133
|
+
): Promise<HydratedBlockValidationError[]> {
|
|
115
134
|
const windowedUncleChain = await this.updateWindowedChainCache()
|
|
116
135
|
|
|
117
136
|
const uncles = findUncles(this.context, windowedUncleChain, blocks)
|
|
@@ -124,7 +143,7 @@ export class SimpleBlockValidationViewer extends AbstractCreatableProvider<Simpl
|
|
|
124
143
|
return (await Promise.all(uncles[0].map(async (block) => {
|
|
125
144
|
return await this.params.state!(
|
|
126
145
|
block,
|
|
127
|
-
|
|
146
|
+
chainIdAtBlockNumber,
|
|
128
147
|
{ accountBalance: this._accountBalanceViewer },
|
|
129
148
|
)
|
|
130
149
|
}))).flat()
|
|
@@ -13,6 +13,6 @@ import type { HydratedBlockStateValidationError } from './error.ts'
|
|
|
13
13
|
*/
|
|
14
14
|
export type HydratedBlockStateValidationFunction = (
|
|
15
15
|
hydratedBlock: HydratedBlockWithHashMeta,
|
|
16
|
-
|
|
16
|
+
chainIdAtBlockNumber: (blockNumber: number) => Promisable<ChainId>,
|
|
17
17
|
services: { accountBalance: AccountBalanceViewer },
|
|
18
18
|
) => Promisable<HydratedBlockStateValidationError[]>
|
|
@@ -11,5 +11,5 @@ import type { HydratedBlockValidationError } from './error.ts'
|
|
|
11
11
|
*/
|
|
12
12
|
export type HydratedBlockValidationFunction = (
|
|
13
13
|
hydratedBlock: HydratedBlockWithHashMeta,
|
|
14
|
-
|
|
14
|
+
chainIdAtBlockNumber?: (blockNumber: number) => Promisable<ChainId>,
|
|
15
15
|
) => Promisable<HydratedBlockValidationError[]>
|
|
@@ -1,17 +1,24 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
Address, Hash, Promisable,
|
|
3
|
+
} from '@xylabs/sdk-js'
|
|
4
|
+
import type { ChainId } from '@xyo-network/xl1-protocol'
|
|
2
5
|
|
|
3
6
|
import type { Provider } from '../model/index.ts'
|
|
4
7
|
|
|
5
8
|
export interface ChainContractViewerMethods {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
chainId(): Promisable<ChainId>
|
|
10
|
+
forkedAtBlockNumber(): Promisable<number>
|
|
11
|
+
forkedAtHash(): Promisable<Hash>
|
|
12
|
+
forkedChainId(): Promisable<ChainId>
|
|
13
|
+
minWithdrawalBlocks(): Promisable<number>
|
|
14
|
+
rewardsContract(): Promisable<Address>
|
|
15
|
+
stakingTokenAddress(): Promisable<Address>
|
|
12
16
|
}
|
|
13
17
|
|
|
14
18
|
export const ChainContractViewerMoniker = 'ChainContractViewer' as const
|
|
15
19
|
export type ChainContractViewerMoniker = typeof ChainContractViewerMoniker
|
|
16
20
|
|
|
17
|
-
export interface ChainContractViewer extends ChainContractViewerMethods, Provider<ChainContractViewerMoniker> {
|
|
21
|
+
export interface ChainContractViewer extends ChainContractViewerMethods, Provider<ChainContractViewerMoniker> {
|
|
22
|
+
chainIdAtBlockNumber(blockNumber: number): Promisable<ChainId>
|
|
23
|
+
forkedChainContractViewer(): Promisable<ChainContractViewer>
|
|
24
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type { Hash } from '@xylabs/
|
|
2
|
-
import type { Promisable } from '@xylabs/sdk-js'
|
|
1
|
+
import type { Hash, Promisable } from '@xylabs/sdk-js'
|
|
3
2
|
import type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'
|
|
4
3
|
|
|
5
4
|
import type { Provider, ProviderMoniker } from '../model/index.ts'
|