@xyo-network/chain-services 1.17.0 → 1.17.1
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/AccountBalance/accountBalanceServiceFromArchivist.d.ts +1 -1
- package/dist/neutral/AccountBalance/accountBalanceServiceFromArchivist.d.ts.map +1 -1
- package/dist/neutral/AccountBalance/index.d.ts +0 -1
- package/dist/neutral/AccountBalance/index.d.ts.map +1 -1
- package/dist/neutral/BaseService.d.ts +0 -3
- package/dist/neutral/BaseService.d.ts.map +1 -1
- package/dist/neutral/BlockReward/EvmBlockRewardViewer.d.ts +17 -0
- package/dist/neutral/BlockReward/EvmBlockRewardViewer.d.ts.map +1 -0
- package/dist/neutral/BlockReward/index.d.ts +1 -3
- package/dist/neutral/BlockReward/index.d.ts.map +1 -1
- package/dist/neutral/ChainBlockNumberIteration/ChainBlockNumberIterationService.d.ts +4 -2
- package/dist/neutral/ChainBlockNumberIteration/ChainBlockNumberIterationService.d.ts.map +1 -1
- package/dist/neutral/ChainService/Evm/Evm.d.ts +2 -1
- package/dist/neutral/ChainService/Evm/Evm.d.ts.map +1 -1
- package/dist/neutral/ChainService/Memory/Memory.d.ts +2 -0
- package/dist/neutral/ChainService/Memory/Memory.d.ts.map +1 -1
- package/dist/neutral/ChainValidator/XyoValidator.d.ts +2 -16
- package/dist/neutral/ChainValidator/XyoValidator.d.ts.map +1 -1
- package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts +7 -6
- package/dist/neutral/PendingTransactions/BasePendingTransactions.d.ts.map +1 -1
- package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts +5 -4
- package/dist/neutral/StakeIntent/XyoStakeIntentService.d.ts.map +1 -1
- package/dist/neutral/blockViewerFromChainIteratorAndArchivist.d.ts.map +1 -1
- package/dist/neutral/implementation/accountBalance.d.ts +7 -0
- package/dist/neutral/implementation/accountBalance.d.ts.map +1 -0
- package/dist/neutral/implementation/blockViewer.d.ts +7 -0
- package/dist/neutral/implementation/blockViewer.d.ts.map +1 -0
- package/dist/neutral/implementation/chain/evm.d.ts +7 -0
- package/dist/neutral/implementation/chain/evm.d.ts.map +1 -0
- package/dist/neutral/implementation/chain/index.d.ts +7 -0
- package/dist/neutral/implementation/chain/index.d.ts.map +1 -0
- package/dist/neutral/implementation/evm/index.d.ts +2 -0
- package/dist/neutral/implementation/evm/index.d.ts.map +1 -0
- package/dist/neutral/implementation/evm/initChainId.d.ts +4 -0
- package/dist/neutral/implementation/evm/initChainId.d.ts.map +1 -0
- package/dist/neutral/implementation/evm/initEvmProvider.d.ts +11 -0
- package/dist/neutral/implementation/evm/initEvmProvider.d.ts.map +1 -0
- package/dist/neutral/implementation/evm/initInfuraProvider.d.ts +6 -0
- package/dist/neutral/implementation/evm/initInfuraProvider.d.ts.map +1 -0
- package/dist/neutral/implementation/evm/initJsonRpcProvider.d.ts +6 -0
- package/dist/neutral/implementation/evm/initJsonRpcProvider.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createBootstrapHead.d.ts +5 -0
- package/dist/neutral/implementation/head/createBootstrapHead.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getBridgeDestinationDetails.d.ts +8 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getBridgeDestinationDetails.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts +9 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getBridgeSourceDetails.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getForkDetails.d.ts +4 -0
- package/dist/neutral/implementation/head/createForkedHead/config/getForkDetails.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/config/index.d.ts +4 -0
- package/dist/neutral/implementation/head/createForkedHead/config/index.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts +5 -0
- package/dist/neutral/implementation/head/createForkedHead/createForkedHead.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts +11 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeDestinationObservation.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts +11 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeIntent.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts +11 -0
- package/dist/neutral/implementation/head/createForkedHead/getBridgeSourceObservation.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts +13 -0
- package/dist/neutral/implementation/head/createForkedHead/getFirstBlockForNewChain.d.ts.map +1 -0
- package/dist/neutral/implementation/head/createForkedHead/index.d.ts +2 -0
- package/dist/neutral/implementation/head/createForkedHead/index.d.ts.map +1 -0
- package/dist/neutral/implementation/head/getForkFromBlock.d.ts +12 -0
- package/dist/neutral/implementation/head/getForkFromBlock.d.ts.map +1 -0
- package/dist/neutral/implementation/head/head.d.ts +11 -0
- package/dist/neutral/implementation/head/head.d.ts.map +1 -0
- package/dist/neutral/implementation/head/index.d.ts +2 -0
- package/dist/neutral/implementation/head/index.d.ts.map +1 -0
- package/dist/neutral/implementation/head/submitNewChain.d.ts +10 -0
- package/dist/neutral/implementation/head/submitNewChain.d.ts.map +1 -0
- package/dist/neutral/implementation/index.d.ts +13 -0
- package/dist/neutral/implementation/index.d.ts.map +1 -0
- package/dist/neutral/implementation/mempoolRunner.d.ts +7 -0
- package/dist/neutral/implementation/mempoolRunner.d.ts.map +1 -0
- package/dist/neutral/implementation/mempoolViewer.d.ts +7 -0
- package/dist/neutral/implementation/mempoolViewer.d.ts.map +1 -0
- package/dist/neutral/implementation/pendingTransactions.d.ts +9 -0
- package/dist/neutral/implementation/pendingTransactions.d.ts.map +1 -0
- package/dist/neutral/implementation/producer.d.ts +5 -0
- package/dist/neutral/implementation/producer.d.ts.map +1 -0
- package/dist/neutral/implementation/reward.d.ts +14 -0
- package/dist/neutral/implementation/reward.d.ts.map +1 -0
- package/dist/neutral/implementation/time.d.ts +6 -0
- package/dist/neutral/implementation/time.d.ts.map +1 -0
- package/dist/neutral/implementation/validator.d.ts +5 -0
- package/dist/neutral/implementation/validator.d.ts.map +1 -0
- package/dist/neutral/index.d.ts +2 -2
- package/dist/neutral/index.d.ts.map +1 -1
- package/dist/neutral/index.mjs +1565 -1140
- package/dist/neutral/index.mjs.map +1 -1
- package/dist/neutral/simple/block/index.d.ts +2 -0
- package/dist/neutral/simple/block/index.d.ts.map +1 -0
- package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts +117 -0
- package/dist/neutral/simple/block/runner/SimpleBlockRunner.d.ts.map +1 -0
- package/dist/neutral/simple/block/runner/generateTransactionFeeTransfers.d.ts.map +1 -0
- package/dist/neutral/simple/block/runner/index.d.ts +2 -0
- package/dist/neutral/simple/block/runner/index.d.ts.map +1 -0
- package/dist/neutral/simple/block/runner/spec/SimpleBlockRewardViewer.d.ts +2 -0
- package/dist/neutral/simple/block/runner/spec/SimpleBlockRewardViewer.d.ts.map +1 -0
- package/dist/neutral/simple/index.d.ts +2 -0
- package/dist/neutral/simple/index.d.ts.map +1 -0
- package/package.json +30 -27
- package/src/AccountBalance/accountBalanceServiceFromArchivist.ts +35 -8
- package/src/AccountBalance/index.ts +0 -1
- package/src/BaseService.ts +0 -13
- package/src/BlockReward/EvmBlockRewardViewer.ts +50 -0
- package/src/BlockReward/index.ts +1 -3
- package/src/ChainBlockNumberIteration/ChainBlockNumberIterationService.ts +14 -2
- package/src/ChainService/Evm/Evm.ts +5 -4
- package/src/ChainService/Memory/Memory.ts +5 -0
- package/src/ChainValidator/XyoValidator.ts +25 -30
- package/src/NetworkStakeStepReward/BaseNetworkStakeStepRewardService.ts +18 -18
- package/src/PendingTransactions/BasePendingTransactions.ts +10 -5
- package/src/Schemas/BaseSchemasService.ts +1 -1
- package/src/StakeIntent/XyoStakeIntentService.ts +18 -8
- package/src/StepStake/BaseStepStakeService.ts +2 -2
- package/src/blockViewerFromChainIteratorAndArchivist.ts +8 -1
- package/src/implementation/accountBalance.ts +29 -0
- package/src/implementation/blockViewer.ts +29 -0
- package/src/implementation/chain/evm.ts +39 -0
- package/src/implementation/chain/index.ts +46 -0
- package/src/implementation/evm/index.ts +1 -0
- package/src/implementation/evm/initChainId.ts +20 -0
- package/src/implementation/evm/initEvmProvider.ts +24 -0
- package/src/implementation/evm/initInfuraProvider.ts +26 -0
- package/src/implementation/evm/initJsonRpcProvider.ts +20 -0
- package/src/implementation/head/createBootstrapHead.ts +31 -0
- package/src/implementation/head/createForkedHead/config/getBridgeDestinationDetails.ts +27 -0
- package/src/implementation/head/createForkedHead/config/getBridgeSourceDetails.ts +19 -0
- package/src/implementation/head/createForkedHead/config/getForkDetails.ts +10 -0
- package/src/implementation/head/createForkedHead/config/index.ts +3 -0
- package/src/implementation/head/createForkedHead/createForkedHead.ts +29 -0
- package/src/implementation/head/createForkedHead/getBridgeDestinationObservation.ts +42 -0
- package/src/implementation/head/createForkedHead/getBridgeIntent.ts +51 -0
- package/src/implementation/head/createForkedHead/getBridgeSourceObservation.ts +46 -0
- package/src/implementation/head/createForkedHead/getFirstBlockForNewChain.ts +41 -0
- package/src/implementation/head/createForkedHead/index.ts +1 -0
- package/src/implementation/head/getForkFromBlock.ts +43 -0
- package/src/implementation/head/head.ts +49 -0
- package/src/implementation/head/index.ts +1 -0
- package/src/implementation/head/submitNewChain.ts +27 -0
- package/src/implementation/index.ts +12 -0
- package/src/implementation/mempoolRunner.ts +29 -0
- package/src/implementation/mempoolViewer.ts +29 -0
- package/src/implementation/pendingTransactions.ts +36 -0
- package/src/implementation/producer.ts +16 -0
- package/src/implementation/reward.ts +53 -0
- package/src/implementation/time.ts +26 -0
- package/src/implementation/validator.ts +15 -0
- package/src/index.ts +2 -2
- package/src/simple/block/index.ts +1 -0
- package/src/{BlockProducer/BaseBlockProducerService.ts → simple/block/runner/SimpleBlockRunner.ts} +111 -74
- package/src/simple/block/runner/index.ts +1 -0
- package/src/simple/block/runner/spec/SimpleBlockRewardViewer.ts +413 -0
- package/src/simple/index.ts +1 -0
- package/dist/neutral/AccountBalance/BaseAccountBalanceService.d.ts +0 -35
- package/dist/neutral/AccountBalance/BaseAccountBalanceService.d.ts.map +0 -1
- package/dist/neutral/AccountTransfers/BaseAccountTransfersService.d.ts +0 -13
- package/dist/neutral/AccountTransfers/BaseAccountTransfersService.d.ts.map +0 -1
- package/dist/neutral/AccountTransfers/index.d.ts +0 -2
- package/dist/neutral/AccountTransfers/index.d.ts.map +0 -1
- package/dist/neutral/BlockProducer/BaseBlockProducerService.d.ts +0 -85
- package/dist/neutral/BlockProducer/BaseBlockProducerService.d.ts.map +0 -1
- package/dist/neutral/BlockProducer/generateTransactionFeeTransfers.d.ts.map +0 -1
- package/dist/neutral/BlockProducer/index.d.ts +0 -2
- package/dist/neutral/BlockProducer/index.d.ts.map +0 -1
- package/dist/neutral/BlockReward/BaseBlockRewardService.d.ts +0 -10
- package/dist/neutral/BlockReward/BaseBlockRewardService.d.ts.map +0 -1
- package/dist/neutral/BlockReward/EvmBlockRewardService.d.ts +0 -18
- package/dist/neutral/BlockReward/EvmBlockRewardService.d.ts.map +0 -1
- package/dist/neutral/BlockReward/MemoryBlockRewardService.d.ts +0 -23
- package/dist/neutral/BlockReward/MemoryBlockRewardService.d.ts.map +0 -1
- package/src/AccountBalance/BaseAccountBalanceService.ts +0 -98
- package/src/AccountTransfers/BaseAccountTransfersService.ts +0 -36
- package/src/AccountTransfers/index.ts +0 -1
- package/src/BlockProducer/index.ts +0 -1
- package/src/BlockReward/BaseBlockRewardService.ts +0 -17
- package/src/BlockReward/EvmBlockRewardService.ts +0 -49
- package/src/BlockReward/MemoryBlockRewardService.ts +0 -72
- /package/dist/neutral/{BlockProducer → simple/block/runner}/generateTransactionFeeTransfers.d.ts +0 -0
- /package/src/{BlockProducer → simple/block/runner}/generateTransactionFeeTransfers.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/simple/block/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { AbstractCreatable, Address, CreatableParams, Hex, Promisable } from '@xylabs/sdk-js';
|
|
2
|
+
import { AccountInstance } from '@xyo-network/account-model';
|
|
3
|
+
import { ArchivistInstance } from '@xyo-network/archivist-model';
|
|
4
|
+
import { BlockRewardDiviner } from '@xyo-network/chain-modules';
|
|
5
|
+
import { WithHashMeta } from '@xyo-network/payload-model';
|
|
6
|
+
import { BlockBoundWitness, ChainId, ChainStakeIntent, SignedBlockBoundWitnessWithHashMeta, SignedHydratedBlockWithHashMeta, Transfer } from '@xyo-network/xl1-protocol';
|
|
7
|
+
import { AccountBalanceViewer, BlockRewardViewer, BlockRunner, Config, HydratedBlockStateValidationFunction, MempoolRunner, MempoolViewer, TimeSyncViewer } from '@xyo-network/xl1-protocol-sdk';
|
|
8
|
+
import z from 'zod';
|
|
9
|
+
/**
|
|
10
|
+
* The default block size for a block
|
|
11
|
+
*/
|
|
12
|
+
export declare const DEFAULT_BLOCK_SIZE = 10;
|
|
13
|
+
/**
|
|
14
|
+
* The amount of time for which a producer will restake their intent
|
|
15
|
+
*/
|
|
16
|
+
export declare const XYO_PRODUCER_REDECLARATION_DURATION = 10000;
|
|
17
|
+
/**
|
|
18
|
+
* The number of blocks within which a producer will redeclare
|
|
19
|
+
* their intent to produce blocks
|
|
20
|
+
*/
|
|
21
|
+
export declare const XYO_PRODUCER_REDECLARATION_WINDOW = 500;
|
|
22
|
+
export declare const SimpleBlockRunnerParamsZod: z.ZodObject<{
|
|
23
|
+
balanceViewer: z.ZodObject<{}, z.z.core.$loose>;
|
|
24
|
+
blockRewardViewer: z.ZodObject<{}, z.z.core.$loose>;
|
|
25
|
+
chainId: z.ZodString;
|
|
26
|
+
config: z.ZodObject<{}, z.z.core.$loose>;
|
|
27
|
+
mempoolViewer: z.ZodObject<{}, z.z.core.$loose>;
|
|
28
|
+
mempoolRunner: z.ZodObject<{}, z.z.core.$loose>;
|
|
29
|
+
rejectedTransactionsArchivist: z.ZodOptional<z.ZodObject<{}, z.z.core.$loose>>;
|
|
30
|
+
rewardAddress: z.ZodPipe<z.ZodString, z.ZodTransform<Address, string>>;
|
|
31
|
+
time: z.ZodObject<{}, z.z.core.$loose>;
|
|
32
|
+
validateHydratedBlockState: z.ZodOptional<z.ZodFunction<z.z.core.$ZodFunctionArgs, z.z.core.$ZodFunctionOut>>;
|
|
33
|
+
}, z.z.core.$strip>;
|
|
34
|
+
export type SimpleBlockRunnerParams = CreatableParams & {
|
|
35
|
+
account: AccountInstance;
|
|
36
|
+
balanceViewer: AccountBalanceViewer;
|
|
37
|
+
blockRewardViewer: BlockRewardViewer;
|
|
38
|
+
chainId: ChainId;
|
|
39
|
+
config: Config;
|
|
40
|
+
mempoolRunner: MempoolRunner;
|
|
41
|
+
mempoolViewer: MempoolViewer;
|
|
42
|
+
rejectedTransactionsArchivist?: ArchivistInstance;
|
|
43
|
+
rewardAddress: Address;
|
|
44
|
+
time: TimeSyncViewer;
|
|
45
|
+
validateHydratedBlockState?: HydratedBlockStateValidationFunction;
|
|
46
|
+
};
|
|
47
|
+
export declare class SimpleBlockRunner extends AbstractCreatable<SimpleBlockRunnerParams> implements BlockRunner {
|
|
48
|
+
protected _blockRewardDiviner: BlockRewardDiviner | undefined;
|
|
49
|
+
protected _lastRedeclarationBlock: number | undefined;
|
|
50
|
+
protected _rejectedTransactionsArchivist: ArchivistInstance | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* The default block size for a block
|
|
53
|
+
*/
|
|
54
|
+
static get DefaultBlockSize(): number;
|
|
55
|
+
/**
|
|
56
|
+
* The amount of time for which the producer will redeclare
|
|
57
|
+
* their intent to continue producing blocks
|
|
58
|
+
*/
|
|
59
|
+
static get RedeclarationDuration(): number;
|
|
60
|
+
/**
|
|
61
|
+
* The number of blocks within which the producer will redeclare
|
|
62
|
+
* their intent to continue producing blocks
|
|
63
|
+
*/
|
|
64
|
+
static get RedeclarationWindow(): number;
|
|
65
|
+
get address(): Address;
|
|
66
|
+
protected get account(): AccountInstance;
|
|
67
|
+
protected get balanceViewer(): AccountBalanceViewer;
|
|
68
|
+
protected get blockRewardViewer(): BlockRewardViewer;
|
|
69
|
+
protected get chainId(): Hex;
|
|
70
|
+
protected get mempoolRunner(): MempoolRunner;
|
|
71
|
+
protected get mempoolViewer(): MempoolViewer;
|
|
72
|
+
protected get rejectedTransactionsArchivist(): ArchivistInstance<import("@xyo-network/archivist-model").ArchivistParams<import("@xyo-network/module-model").AnyConfigSchema<import("@xyo-network/archivist-model").ArchivistConfig>>, import("@xyo-network/archivist-model").ArchivistModuleEventData, import("@xyo-network/payload-model").Payload>;
|
|
73
|
+
protected get rewardAddress(): Address;
|
|
74
|
+
protected get time(): TimeSyncViewer;
|
|
75
|
+
static paramsHandler(params?: Partial<SimpleBlockRunnerParams> | undefined): Promise<SimpleBlockRunnerParams>;
|
|
76
|
+
next(head: WithHashMeta<BlockBoundWitness>): Promise<SignedHydratedBlockWithHashMeta | undefined>;
|
|
77
|
+
produceNextBlock(head: SignedBlockBoundWitnessWithHashMeta, force: true): Promise<SignedHydratedBlockWithHashMeta>;
|
|
78
|
+
produceNextBlock(head: SignedBlockBoundWitnessWithHashMeta, force?: false): Promise<SignedHydratedBlockWithHashMeta | undefined>;
|
|
79
|
+
protected getBlockRewardTransfers(block: number): Promise<Transfer[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Handles the producer redeclaration logic
|
|
82
|
+
* @param head The current head block
|
|
83
|
+
* @returns chain stake intent for the producer redeclaration, or undefined if no redeclaration is needed
|
|
84
|
+
*/
|
|
85
|
+
protected getProducerRedeclaration(head: WithHashMeta<BlockBoundWitness>): Promisable<ChainStakeIntent | undefined>;
|
|
86
|
+
protected proposeNextValidBlock(head: WithHashMeta<BlockBoundWitness>, validateBalances?: boolean, force?: boolean): Promise<[{
|
|
87
|
+
schema: "network.xyo.boundwitness";
|
|
88
|
+
addresses: Address[];
|
|
89
|
+
payload_hashes: import("@xylabs/sdk-js").Hash[];
|
|
90
|
+
payload_schemas: string[];
|
|
91
|
+
previous_hashes: (import("@xylabs/sdk-js").Hash | null)[];
|
|
92
|
+
$signatures: Hex[];
|
|
93
|
+
block: import("@xyo-network/xl1-protocol").XL1BlockNumber;
|
|
94
|
+
chain: Hex;
|
|
95
|
+
previous: import("@xylabs/sdk-js").Hash | null;
|
|
96
|
+
$epoch: number;
|
|
97
|
+
_hash: import("@xylabs/sdk-js").Hash;
|
|
98
|
+
_dataHash: import("@xylabs/sdk-js").Hash;
|
|
99
|
+
$destination?: Address | undefined;
|
|
100
|
+
$sourceQuery?: import("@xylabs/sdk-js").Hash | undefined;
|
|
101
|
+
protocol?: number | undefined;
|
|
102
|
+
step_hashes?: import("@xylabs/sdk-js").Hash[] | undefined;
|
|
103
|
+
}, {
|
|
104
|
+
schema: string;
|
|
105
|
+
_hash: import("@xylabs/sdk-js").Hash;
|
|
106
|
+
_dataHash: import("@xylabs/sdk-js").Hash;
|
|
107
|
+
}[]] | undefined>;
|
|
108
|
+
private filterByFunded;
|
|
109
|
+
private generateTimePayload;
|
|
110
|
+
/**
|
|
111
|
+
* Check if a heartbeat block is required based on network activity.
|
|
112
|
+
* @param head The current head block
|
|
113
|
+
* @returns True if a heartbeat is required, false otherwise
|
|
114
|
+
*/
|
|
115
|
+
private heartbeatRequired;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=SimpleBlockRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleBlockRunner.d.ts","sourceRoot":"","sources":["../../../../../src/simple/block/runner/SimpleBlockRunner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateTransactionFeeTransfers.d.ts","sourceRoot":"","sources":["../../../../../src/simple/block/runner/generateTransactionFeeTransfers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAiB,MAAM,gBAAgB,CAAA;AAG5D,OAAO,KAAK,EACV,yBAAyB,EACzB,QAAQ,EAET,MAAM,2BAA2B,CAAA;AAKlC,wBAAsB,+BAA+B,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CA0CtI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/simple/block/runner/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleBlockRewardViewer.d.ts","sourceRoot":"","sources":["../../../../../../src/simple/block/runner/spec/SimpleBlockRewardViewer.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/simple/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA"}
|
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-services",
|
|
4
|
-
"version": "1.17.
|
|
4
|
+
"version": "1.17.1",
|
|
5
5
|
"description": "XYO Layer One SDK Services",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -40,44 +40,47 @@
|
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
42
|
"@opentelemetry/api": "~1.9.0",
|
|
43
|
-
"@xylabs/sdk-js": "~5.0.
|
|
44
|
-
"@xylabs/telemetry": "~5.0.
|
|
45
|
-
"@xyo-network/account-model": "~5.2.
|
|
46
|
-
"@xyo-network/archivist-memory": "~5.2.
|
|
47
|
-
"@xyo-network/archivist-model": "~5.2.
|
|
48
|
-
"@xyo-network/boundwitness-model": "~5.2.
|
|
49
|
-
"@xyo-network/boundwitness-validator": "~5.2.
|
|
50
|
-
"@xyo-network/boundwitness-wrapper": "~5.2.
|
|
51
|
-
"@xyo-network/chain-analyze": "~1.17.
|
|
52
|
-
"@xyo-network/chain-modules": "~1.17.
|
|
53
|
-
"@xyo-network/chain-protocol": "~1.17.
|
|
54
|
-
"@xyo-network/chain-utils": "~1.17.
|
|
55
|
-
"@xyo-network/payload-builder": "~5.2.
|
|
56
|
-
"@xyo-network/payload-model": "~5.2.
|
|
43
|
+
"@xylabs/sdk-js": "~5.0.48",
|
|
44
|
+
"@xylabs/telemetry": "~5.0.48",
|
|
45
|
+
"@xyo-network/account-model": "~5.2.13",
|
|
46
|
+
"@xyo-network/archivist-memory": "~5.2.13",
|
|
47
|
+
"@xyo-network/archivist-model": "~5.2.13",
|
|
48
|
+
"@xyo-network/boundwitness-model": "~5.2.13",
|
|
49
|
+
"@xyo-network/boundwitness-validator": "~5.2.13",
|
|
50
|
+
"@xyo-network/boundwitness-wrapper": "~5.2.13",
|
|
51
|
+
"@xyo-network/chain-analyze": "~1.17.1",
|
|
52
|
+
"@xyo-network/chain-modules": "~1.17.1",
|
|
53
|
+
"@xyo-network/chain-protocol": "~1.17.1",
|
|
54
|
+
"@xyo-network/chain-utils": "~1.17.1",
|
|
55
|
+
"@xyo-network/payload-builder": "~5.2.13",
|
|
56
|
+
"@xyo-network/payload-model": "~5.2.13",
|
|
57
57
|
"@xyo-network/typechain": "~4.0.10",
|
|
58
|
-
"@xyo-network/xl1-protocol": "~1.14.
|
|
59
|
-
"@xyo-network/xl1-protocol-sdk": "~1.17.
|
|
60
|
-
"@xyo-network/xl1-
|
|
61
|
-
"@xyo-network/xl1-
|
|
58
|
+
"@xyo-network/xl1-protocol": "~1.14.16",
|
|
59
|
+
"@xyo-network/xl1-protocol-sdk": "~1.17.1",
|
|
60
|
+
"@xyo-network/xl1-rpc": "~1.17.1",
|
|
61
|
+
"@xyo-network/xl1-validation": "~1.17.1",
|
|
62
|
+
"@xyo-network/xl1-wrappers": "~1.17.1",
|
|
62
63
|
"async-mutex": "~0.5.0",
|
|
63
64
|
"ethers": "6.15.0",
|
|
64
|
-
"lru-cache": "~11.2.
|
|
65
|
+
"lru-cache": "~11.2.4",
|
|
65
66
|
"zod": "~4.1.13"
|
|
66
67
|
},
|
|
67
68
|
"devDependencies": {
|
|
68
69
|
"@types/node": "~24.10.1",
|
|
69
|
-
"@xylabs/sdk-js": "~5.0.
|
|
70
|
+
"@xylabs/sdk-js": "~5.0.48",
|
|
70
71
|
"@xylabs/ts-scripts-yarn3": "~7.2.8",
|
|
71
72
|
"@xylabs/tsconfig": "~7.2.8",
|
|
72
|
-
"@xylabs/vitest-extended": "~5.0.
|
|
73
|
-
"@xyo-network/account": "~5.2.
|
|
74
|
-
"@xyo-network/account-model": "~5.2.
|
|
75
|
-
"@xyo-network/chain-validation": "~1.17.
|
|
76
|
-
"@xyo-network/wallet": "~5.2.
|
|
73
|
+
"@xylabs/vitest-extended": "~5.0.48",
|
|
74
|
+
"@xyo-network/account": "~5.2.13",
|
|
75
|
+
"@xyo-network/account-model": "~5.2.13",
|
|
76
|
+
"@xyo-network/chain-validation": "~1.17.1",
|
|
77
|
+
"@xyo-network/wallet": "~5.2.13",
|
|
78
|
+
"@xyo-network/wallet-model": "~5.2.13",
|
|
79
|
+
"cosmiconfig": "^9.0.0",
|
|
77
80
|
"eslint": "^9.39.1",
|
|
78
81
|
"tslib": "~2.8.1",
|
|
79
82
|
"typescript": "~5.9.3",
|
|
80
|
-
"vitest": "~4.0.
|
|
83
|
+
"vitest": "~4.0.15",
|
|
81
84
|
"vitest-mock-extended": "~3.1.0",
|
|
82
85
|
"web3-types": "~1.10.0"
|
|
83
86
|
},
|
|
@@ -4,16 +4,18 @@ import type { ReadArchivist } from '@xyo-network/archivist-model'
|
|
|
4
4
|
import type { Payload, WithStorageMeta } from '@xyo-network/payload-model'
|
|
5
5
|
import type { ChainId } from '@xyo-network/xl1-protocol'
|
|
6
6
|
import { StepSizes } from '@xyo-network/xl1-protocol'
|
|
7
|
-
import type {
|
|
7
|
+
import type {
|
|
8
|
+
AccountBalanceViewer, BalancesStepSummary, SimpleAccountBalanceViewerParams, SimpleBlockViewerParams, TransfersStepSummary,
|
|
9
|
+
} from '@xyo-network/xl1-protocol-sdk'
|
|
8
10
|
import {
|
|
9
11
|
findMostRecentBlock, LruCacheMap, readPayloadMapFromStore,
|
|
12
|
+
SimpleAccountBalanceViewer,
|
|
13
|
+
SimpleBlockViewer,
|
|
10
14
|
} from '@xyo-network/xl1-protocol-sdk'
|
|
11
15
|
import { Semaphore } from 'async-mutex'
|
|
12
16
|
|
|
13
|
-
import { BaseAccountBalanceService } from './BaseAccountBalanceService.ts'
|
|
14
|
-
|
|
15
17
|
// this is intended to only be used for testing
|
|
16
|
-
export const
|
|
18
|
+
export const accountBalancesViewerFromArchivist = async (
|
|
17
19
|
chainId: ChainId,
|
|
18
20
|
archivist: ReadArchivist<WithStorageMeta<Payload>>,
|
|
19
21
|
): Promise<AccountBalanceViewer> => {
|
|
@@ -23,12 +25,21 @@ export const accountBalancesServiceFromArchivist = async (
|
|
|
23
25
|
noDisposeOnSet: false,
|
|
24
26
|
updateAgeOnGet: true,
|
|
25
27
|
})
|
|
28
|
+
|
|
29
|
+
const transferSummaryMap = new LruCacheMap<string, TransfersStepSummary>({
|
|
30
|
+
max: 100_000,
|
|
31
|
+
allowStale: true,
|
|
32
|
+
noDisposeOnSet: false,
|
|
33
|
+
updateAgeOnGet: true,
|
|
34
|
+
})
|
|
35
|
+
|
|
26
36
|
const chainMap = readPayloadMapFromStore<WithStorageMeta<Payload>>(archivist)
|
|
27
37
|
const headFunc = async (): Promise<[Hash, number]> => {
|
|
28
|
-
const head = await findMostRecentBlock(archivist)
|
|
29
|
-
return [
|
|
38
|
+
const head = assertEx(await findMostRecentBlock(archivist), () => 'No blocks found in chainArchivist')
|
|
39
|
+
return [head._hash, head.block]
|
|
30
40
|
}
|
|
31
|
-
|
|
41
|
+
|
|
42
|
+
const service = await SimpleAccountBalanceViewer.create({
|
|
32
43
|
context: {
|
|
33
44
|
chainId,
|
|
34
45
|
store: { chainMap },
|
|
@@ -36,6 +47,22 @@ export const accountBalancesServiceFromArchivist = async (
|
|
|
36
47
|
summaryMap,
|
|
37
48
|
head: headFunc,
|
|
38
49
|
},
|
|
39
|
-
|
|
50
|
+
transfersSummaryContext: {
|
|
51
|
+
chainId,
|
|
52
|
+
store: { chainMap },
|
|
53
|
+
stepSemaphores: StepSizes.map(() => new Semaphore(20)),
|
|
54
|
+
summaryMap: transferSummaryMap,
|
|
55
|
+
head: headFunc,
|
|
56
|
+
|
|
57
|
+
},
|
|
58
|
+
blockViewer: await SimpleBlockViewer.create({
|
|
59
|
+
context: {
|
|
60
|
+
chainId,
|
|
61
|
+
head: headFunc,
|
|
62
|
+
store: { chainMap },
|
|
63
|
+
},
|
|
64
|
+
finalizedArchivist: archivist,
|
|
65
|
+
} satisfies SimpleBlockViewerParams),
|
|
66
|
+
} satisfies SimpleAccountBalanceViewerParams)
|
|
40
67
|
return service
|
|
41
68
|
}
|
package/src/BaseService.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { EventData, Promisable } from '@xylabs/sdk-js'
|
|
2
2
|
import { AbstractCreatable, creatable } from '@xylabs/sdk-js'
|
|
3
|
-
import { spanRoot, spanRootAsync } from '@xylabs/telemetry'
|
|
4
3
|
import { Mutex } from 'async-mutex'
|
|
5
4
|
|
|
6
5
|
import type { BaseAccountableServiceParams, BaseServiceParams } from './model/index.ts'
|
|
@@ -24,18 +23,6 @@ export class BaseService<TParams extends BaseServiceParams = BaseServiceParams,
|
|
|
24
23
|
return await this.create(params) as TService
|
|
25
24
|
})
|
|
26
25
|
}
|
|
27
|
-
|
|
28
|
-
paramsHandler(params?: Partial<TParams>): TParams {
|
|
29
|
-
return params as TParams
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
span<T>(name: string, fn: () => T): T {
|
|
33
|
-
return spanRoot(name, fn, this.tracer)
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
async spanAsync<T>(name: string, fn: () => Promise<T>): Promise<T> {
|
|
37
|
-
return await spanRootAsync(name, fn, this.tracer)
|
|
38
|
-
}
|
|
39
26
|
}
|
|
40
27
|
|
|
41
28
|
export abstract class BaseAccountableService<
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AbstractCreatable,
|
|
3
|
+
assertEx, creatable, CreatableParams, toEthAddress,
|
|
4
|
+
} from '@xylabs/sdk-js'
|
|
5
|
+
import { XyoChainRewards__factory as XyoChainRewardsFactory } from '@xyo-network/typechain'
|
|
6
|
+
import {
|
|
7
|
+
asAttoXL1, AttoXL1, XL1BlockNumber,
|
|
8
|
+
} from '@xyo-network/xl1-protocol'
|
|
9
|
+
import {
|
|
10
|
+
BlockRewardViewer,
|
|
11
|
+
ChainContractViewer,
|
|
12
|
+
} from '@xyo-network/xl1-protocol-sdk'
|
|
13
|
+
import { Provider } from 'ethers/providers'
|
|
14
|
+
|
|
15
|
+
export interface EvmBlockRewardViewerParams extends CreatableParams {
|
|
16
|
+
chainContractViewer: ChainContractViewer
|
|
17
|
+
provider: Provider
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@creatable()
|
|
21
|
+
export class EvmBlockRewardViewer extends AbstractCreatable<EvmBlockRewardViewerParams> implements BlockRewardViewer {
|
|
22
|
+
protected _contractAddress: string | undefined
|
|
23
|
+
|
|
24
|
+
protected get chainContractViewer() {
|
|
25
|
+
return assertEx(this.params.chainContractViewer, () => 'chainContractViewer is required')
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
protected get contractAddress() {
|
|
29
|
+
return assertEx(this._contractAddress, () => 'contractAddress is required')
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
protected get provider() {
|
|
33
|
+
return assertEx(this.params.provider, () => 'provider is required')
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
async allowedRewardForBlock(blockNumber: XL1BlockNumber): Promise<AttoXL1> {
|
|
37
|
+
const contract = XyoChainRewardsFactory.connect(toEthAddress(this.contractAddress), this.provider)
|
|
38
|
+
return asAttoXL1(await contract.calcBlockReward(blockNumber))
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
override async createHandler() {
|
|
42
|
+
await super.createHandler()
|
|
43
|
+
try {
|
|
44
|
+
this._contractAddress = await this.chainContractViewer.rewardsContract()
|
|
45
|
+
} catch (ex) {
|
|
46
|
+
const error = ex as Error
|
|
47
|
+
throw new Error(`Failed to get rewards contract address: ${error.message}`)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
package/src/BlockReward/index.ts
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
Hash, Hex, Promisable,
|
|
3
|
+
} from '@xylabs/sdk-js'
|
|
2
4
|
import {
|
|
3
5
|
assertEx,
|
|
4
6
|
isDefined, isNull, isUndefined,
|
|
5
7
|
} from '@xylabs/sdk-js'
|
|
6
8
|
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
7
|
-
import type {
|
|
9
|
+
import type {
|
|
10
|
+
Payload, WithHashMeta, WithStorageMeta,
|
|
11
|
+
} from '@xyo-network/payload-model'
|
|
8
12
|
import type {
|
|
9
13
|
BlockBoundWitness, SignedHydratedBlockWithHashMeta, XL1BlockNumber,
|
|
10
14
|
} from '@xyo-network/xl1-protocol'
|
|
@@ -124,6 +128,14 @@ export class ChainBlockNumberIterationService extends BaseService<XyoChainIterat
|
|
|
124
128
|
return await this.get(nextBlockNumber)
|
|
125
129
|
}
|
|
126
130
|
|
|
131
|
+
payloadByHash(_hash: Hash): Promisable<WithHashMeta<Payload> | null> {
|
|
132
|
+
throw new Error('Method [payloadByHash] not implemented.')
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
payloadsByHash(_hashes: Hash[]): Promisable<WithHashMeta<Payload>[]> {
|
|
136
|
+
throw new Error('Method [payloadsByHash] not implemented.')
|
|
137
|
+
}
|
|
138
|
+
|
|
127
139
|
// TODO: Decide on inclusive/exclusive (probably need inclusive to account for chain head)
|
|
128
140
|
// and then communicate via method name and documentation
|
|
129
141
|
async previous(block: number | undefined = undefined, count: number = 1): Promise<WithStorageMeta<BlockBoundWitness>[]> {
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
} from '@xylabs/sdk-js'
|
|
7
7
|
import type { StakedXyoChain } from '@xyo-network/typechain'
|
|
8
8
|
import { StakedXyoChain__factory as StakedXyoChainFactory } from '@xyo-network/typechain'
|
|
9
|
+
import type { AttoXL1, XL1BlockNumber } from '@xyo-network/xl1-protocol'
|
|
9
10
|
import type { ChainService } from '@xyo-network/xl1-protocol-sdk'
|
|
10
11
|
import { getAddress } from 'ethers/address'
|
|
11
12
|
import type { ContractRunner } from 'ethers/providers'
|
|
@@ -23,10 +24,6 @@ export interface EvmChainServiceParams extends BaseServiceParams {
|
|
|
23
24
|
* A class that represents a chain stake as backed by an EVM smart contract
|
|
24
25
|
*/
|
|
25
26
|
export class EvmChainService extends BaseService<EvmChainServiceParams> implements ChainService {
|
|
26
|
-
get runner(): ContractRunner {
|
|
27
|
-
return assertEx(this.params.runner)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
27
|
async active(): Promise<bigint> {
|
|
31
28
|
return await (await this.contract()).active()
|
|
32
29
|
}
|
|
@@ -89,6 +86,10 @@ export class EvmChainService extends BaseService<EvmChainServiceParams> implemen
|
|
|
89
86
|
return true
|
|
90
87
|
}
|
|
91
88
|
|
|
89
|
+
rewardForBlock(_block: XL1BlockNumber): Promisable<AttoXL1> {
|
|
90
|
+
throw new Error('Method not implemented.')
|
|
91
|
+
}
|
|
92
|
+
|
|
92
93
|
async rewardsContract(): Promise<string> {
|
|
93
94
|
return await (await this.contract()).rewardsContract()
|
|
94
95
|
}
|
|
@@ -4,6 +4,7 @@ import type {
|
|
|
4
4
|
import {
|
|
5
5
|
assertEx, toAddress, ZERO_ADDRESS,
|
|
6
6
|
} from '@xylabs/sdk-js'
|
|
7
|
+
import type { AttoXL1, XL1BlockNumber } from '@xyo-network/xl1-protocol'
|
|
7
8
|
import type { ChainService, Config } from '@xyo-network/xl1-protocol-sdk'
|
|
8
9
|
|
|
9
10
|
import { BaseService } from '../../BaseService.ts'
|
|
@@ -73,6 +74,10 @@ export class MemoryChainService extends BaseService<MemoryChainServiceParams> im
|
|
|
73
74
|
return await Promise.resolve(true)
|
|
74
75
|
}
|
|
75
76
|
|
|
77
|
+
rewardForBlock(_block: XL1BlockNumber): Promisable<AttoXL1> {
|
|
78
|
+
throw new Error('Method not implemented.')
|
|
79
|
+
}
|
|
80
|
+
|
|
76
81
|
async rewardsContract(): Promise<string> {
|
|
77
82
|
return await Promise.resolve('')
|
|
78
83
|
}
|
|
@@ -2,61 +2,56 @@ import {
|
|
|
2
2
|
assertEx, creatable, EmptyObject,
|
|
3
3
|
Promisable,
|
|
4
4
|
} from '@xylabs/sdk-js'
|
|
5
|
-
import { AccountInstance } from '@xyo-network/account-model'
|
|
6
|
-
import { ArchivistInstance } from '@xyo-network/archivist-model'
|
|
7
5
|
import {
|
|
8
6
|
BlockBoundWitness,
|
|
9
|
-
ChainId,
|
|
10
7
|
SignedHydratedTransactionWithStorageMeta,
|
|
11
8
|
} from '@xyo-network/xl1-protocol'
|
|
12
|
-
import {
|
|
13
|
-
BlockRewardService, BlockViewer, ElectionService, HydratedBlockStateValidationFunction, StakeIntentService,
|
|
14
|
-
} from '@xyo-network/xl1-protocol-sdk'
|
|
9
|
+
import { BlockViewer, HydratedBlockStateValidationFunction } from '@xyo-network/xl1-protocol-sdk'
|
|
15
10
|
|
|
16
11
|
import { BaseService } from '../BaseService.ts'
|
|
17
12
|
import { BaseServiceParams } from '../model/index.ts'
|
|
18
13
|
import { Validator } from './model/index.ts'
|
|
19
14
|
|
|
20
15
|
export interface XyoValidatorParams<TConfig extends EmptyObject = EmptyObject> extends BaseServiceParams<TConfig> {
|
|
21
|
-
account: AccountInstance
|
|
16
|
+
// account: AccountInstance
|
|
17
|
+
// blockRewardService: BlockRewardService
|
|
22
18
|
blockViewer: BlockViewer
|
|
23
|
-
chainId: ChainId
|
|
24
|
-
electionService: ElectionService
|
|
25
|
-
pendingBundledTransactionsArchivist: ArchivistInstance
|
|
26
|
-
|
|
27
|
-
stakeIntentService: StakeIntentService
|
|
19
|
+
// chainId: ChainId
|
|
20
|
+
// electionService: ElectionService
|
|
21
|
+
// pendingBundledTransactionsArchivist: ArchivistInstance
|
|
22
|
+
// stakeIntentService: StakeIntentService
|
|
28
23
|
validateHydratedBlockState: HydratedBlockStateValidationFunction
|
|
29
24
|
}
|
|
30
25
|
|
|
31
26
|
@creatable()
|
|
32
27
|
export class XyoValidator<TParams extends XyoValidatorParams = XyoValidatorParams> extends BaseService<TParams> implements Validator {
|
|
33
|
-
get address() {
|
|
34
|
-
|
|
35
|
-
}
|
|
28
|
+
// get address() {
|
|
29
|
+
// return this.account.address
|
|
30
|
+
// }
|
|
36
31
|
|
|
37
|
-
protected get account() {
|
|
38
|
-
|
|
39
|
-
}
|
|
32
|
+
// protected get account() {
|
|
33
|
+
// return assertEx(this.params.account, () => 'account is required')
|
|
34
|
+
// }
|
|
40
35
|
|
|
41
36
|
protected get blockViewer() {
|
|
42
37
|
return assertEx(this.params.blockViewer, () => 'blockViewer is required')
|
|
43
38
|
}
|
|
44
39
|
|
|
45
|
-
protected get chainInfo() {
|
|
46
|
-
|
|
47
|
-
}
|
|
40
|
+
// protected get chainInfo() {
|
|
41
|
+
// return assertEx(this.params.chainId, () => 'chainInfo is required')
|
|
42
|
+
// }
|
|
48
43
|
|
|
49
|
-
protected get electionService() {
|
|
50
|
-
|
|
51
|
-
}
|
|
44
|
+
// protected get electionService() {
|
|
45
|
+
// return assertEx(this.params.electionService, () => 'electionService is required')
|
|
46
|
+
// }
|
|
52
47
|
|
|
53
|
-
protected get pendingBundledTransactionsArchivist() {
|
|
54
|
-
|
|
55
|
-
}
|
|
48
|
+
// protected get pendingBundledTransactionsArchivist() {
|
|
49
|
+
// return assertEx(this.params.pendingBundledTransactionsArchivist, () => 'pendingBundledTransactions is required')
|
|
50
|
+
// }
|
|
56
51
|
|
|
57
|
-
protected get
|
|
58
|
-
|
|
59
|
-
}
|
|
52
|
+
// protected get blockRewardService() {
|
|
53
|
+
// return assertEx(this.params.blockRewardService, () => 'blockRewardService is required')
|
|
54
|
+
// }
|
|
60
55
|
|
|
61
56
|
validatePendingBlock(_block: BlockBoundWitness): Promisable<Error[]> {
|
|
62
57
|
return [] // await validateBlockProtocol(block, this.chainInfo)
|