@feelyourprotocol/common 8141.0.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.
Files changed (115) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +409 -0
  3. package/dist/cjs/chains.d.ts +6 -0
  4. package/dist/cjs/chains.d.ts.map +1 -0
  5. package/dist/cjs/chains.js +637 -0
  6. package/dist/cjs/chains.js.map +1 -0
  7. package/dist/cjs/common.d.ts +318 -0
  8. package/dist/cjs/common.d.ts.map +1 -0
  9. package/dist/cjs/common.js +789 -0
  10. package/dist/cjs/common.js.map +1 -0
  11. package/dist/cjs/constructors.d.ts +27 -0
  12. package/dist/cjs/constructors.d.ts.map +1 -0
  13. package/dist/cjs/constructors.js +53 -0
  14. package/dist/cjs/constructors.js.map +1 -0
  15. package/dist/cjs/crc.d.ts +8 -0
  16. package/dist/cjs/crc.d.ts.map +1 -0
  17. package/dist/cjs/crc.js +63 -0
  18. package/dist/cjs/crc.js.map +1 -0
  19. package/dist/cjs/eips.d.ts +3 -0
  20. package/dist/cjs/eips.d.ts.map +1 -0
  21. package/dist/cjs/eips.js +589 -0
  22. package/dist/cjs/eips.js.map +1 -0
  23. package/dist/cjs/enums.d.ts +65 -0
  24. package/dist/cjs/enums.d.ts.map +1 -0
  25. package/dist/cjs/enums.js +80 -0
  26. package/dist/cjs/enums.js.map +1 -0
  27. package/dist/cjs/gethGenesis.d.ts +145 -0
  28. package/dist/cjs/gethGenesis.d.ts.map +1 -0
  29. package/dist/cjs/gethGenesis.js +26 -0
  30. package/dist/cjs/gethGenesis.js.map +1 -0
  31. package/dist/cjs/hardforks.d.ts +3 -0
  32. package/dist/cjs/hardforks.d.ts.map +1 -0
  33. package/dist/cjs/hardforks.js +207 -0
  34. package/dist/cjs/hardforks.js.map +1 -0
  35. package/dist/cjs/index.d.ts +9 -0
  36. package/dist/cjs/index.d.ts.map +1 -0
  37. package/dist/cjs/index.js +25 -0
  38. package/dist/cjs/index.js.map +1 -0
  39. package/dist/cjs/interfaces.d.ts +132 -0
  40. package/dist/cjs/interfaces.d.ts.map +1 -0
  41. package/dist/cjs/interfaces.js +13 -0
  42. package/dist/cjs/interfaces.js.map +1 -0
  43. package/dist/cjs/package.json +3 -0
  44. package/dist/cjs/types.d.ts +167 -0
  45. package/dist/cjs/types.d.ts.map +1 -0
  46. package/dist/cjs/types.js +3 -0
  47. package/dist/cjs/types.js.map +1 -0
  48. package/dist/cjs/utils.d.ts +60 -0
  49. package/dist/cjs/utils.d.ts.map +1 -0
  50. package/dist/cjs/utils.js +263 -0
  51. package/dist/cjs/utils.js.map +1 -0
  52. package/dist/esm/chains.d.ts +6 -0
  53. package/dist/esm/chains.d.ts.map +1 -0
  54. package/dist/esm/chains.js +634 -0
  55. package/dist/esm/chains.js.map +1 -0
  56. package/dist/esm/common.d.ts +318 -0
  57. package/dist/esm/common.d.ts.map +1 -0
  58. package/dist/esm/common.js +785 -0
  59. package/dist/esm/common.js.map +1 -0
  60. package/dist/esm/constructors.d.ts +27 -0
  61. package/dist/esm/constructors.d.ts.map +1 -0
  62. package/dist/esm/constructors.js +49 -0
  63. package/dist/esm/constructors.js.map +1 -0
  64. package/dist/esm/crc.d.ts +8 -0
  65. package/dist/esm/crc.d.ts.map +1 -0
  66. package/dist/esm/crc.js +59 -0
  67. package/dist/esm/crc.js.map +1 -0
  68. package/dist/esm/eips.d.ts +3 -0
  69. package/dist/esm/eips.d.ts.map +1 -0
  70. package/dist/esm/eips.js +586 -0
  71. package/dist/esm/eips.js.map +1 -0
  72. package/dist/esm/enums.d.ts +65 -0
  73. package/dist/esm/enums.d.ts.map +1 -0
  74. package/dist/esm/enums.js +77 -0
  75. package/dist/esm/enums.js.map +1 -0
  76. package/dist/esm/gethGenesis.d.ts +145 -0
  77. package/dist/esm/gethGenesis.d.ts.map +1 -0
  78. package/dist/esm/gethGenesis.js +23 -0
  79. package/dist/esm/gethGenesis.js.map +1 -0
  80. package/dist/esm/hardforks.d.ts +3 -0
  81. package/dist/esm/hardforks.d.ts.map +1 -0
  82. package/dist/esm/hardforks.js +204 -0
  83. package/dist/esm/hardforks.js.map +1 -0
  84. package/dist/esm/index.d.ts +9 -0
  85. package/dist/esm/index.d.ts.map +1 -0
  86. package/dist/esm/index.js +9 -0
  87. package/dist/esm/index.js.map +1 -0
  88. package/dist/esm/interfaces.d.ts +132 -0
  89. package/dist/esm/interfaces.d.ts.map +1 -0
  90. package/dist/esm/interfaces.js +10 -0
  91. package/dist/esm/interfaces.js.map +1 -0
  92. package/dist/esm/package.json +3 -0
  93. package/dist/esm/types.d.ts +167 -0
  94. package/dist/esm/types.d.ts.map +1 -0
  95. package/dist/esm/types.js +2 -0
  96. package/dist/esm/types.js.map +1 -0
  97. package/dist/esm/utils.d.ts +60 -0
  98. package/dist/esm/utils.d.ts.map +1 -0
  99. package/dist/esm/utils.js +258 -0
  100. package/dist/esm/utils.js.map +1 -0
  101. package/dist/tsconfig.prod.cjs.tsbuildinfo +1 -0
  102. package/dist/tsconfig.prod.esm.tsbuildinfo +1 -0
  103. package/package.json +77 -0
  104. package/src/chains.ts +638 -0
  105. package/src/common.ts +913 -0
  106. package/src/constructors.ts +60 -0
  107. package/src/crc.ts +63 -0
  108. package/src/eips.ts +588 -0
  109. package/src/enums.ts +104 -0
  110. package/src/gethGenesis.ts +175 -0
  111. package/src/hardforks.ts +205 -0
  112. package/src/index.ts +8 -0
  113. package/src/interfaces.ts +191 -0
  114. package/src/types.ts +193 -0
  115. package/src/utils.ts +324 -0
@@ -0,0 +1,318 @@
1
+ import { EventEmitter } from 'eventemitter3';
2
+ import { Hardfork } from './enums.ts';
3
+ import type { BigIntLike, PrefixedHexString } from '@feelyourprotocol/util';
4
+ import type { ConsensusAlgorithm, ConsensusType } from './enums.ts';
5
+ import type { BootstrapNodeConfig, BpoSchedule, CasperConfig, ChainConfig, CliqueConfig, CommonEvent, CommonOpts, CustomCrypto, EthashConfig, GenesisBlockConfig, HardforkByOpts, HardforkConfig, HardforkTransitionConfig, ParamsConfig, ParamsDict } from './types.ts';
6
+ /**
7
+ * Common class to access chain and hardfork parameters and to provide
8
+ * a unified and shared view on the network and hardfork state.
9
+ *
10
+ * Use the {@link createCustomCommon} constructor for creating simple
11
+ * custom chain {@link Common} objects (more complete custom chain setups
12
+ * can be created via the main constructor).
13
+ *
14
+ * Use the {@link createCommonFromGethGenesis} constructor for creating
15
+ * a Common object from a Geth genesis file.
16
+ */
17
+ export declare class Common {
18
+ readonly DEFAULT_HARDFORK: string | Hardfork;
19
+ protected _chainParams: ChainConfig;
20
+ protected _hardfork: string | Hardfork;
21
+ protected _eips: number[];
22
+ protected _params: ParamsDict;
23
+ readonly customCrypto: CustomCrypto;
24
+ protected _paramsCache: ParamsConfig;
25
+ protected _activatedEIPsCache: number[];
26
+ protected HARDFORK_CHANGES: [string, HardforkConfig][];
27
+ events: EventEmitter<CommonEvent>;
28
+ constructor(opts: CommonOpts);
29
+ /**
30
+ * Update the internal Common EIP params set. Existing values
31
+ * will get preserved unless there is a new value for a parameter
32
+ * provided with params.
33
+ *
34
+ * Example Format:
35
+ *
36
+ * ```ts
37
+ * {
38
+ * 1559: {
39
+ * initialBaseFee: 1000000000,
40
+ * }
41
+ * }
42
+ * ```
43
+ *
44
+ * @param params
45
+ */
46
+ updateParams(params: ParamsDict): void;
47
+ /**
48
+ * Fully resets the internal Common EIP params set with the values provided.
49
+ *
50
+ * Example Format:
51
+ *
52
+ * ```ts
53
+ * {
54
+ * 1559: {
55
+ * initialBaseFee: 1000000000,
56
+ * }
57
+ * }
58
+ * ```
59
+ *
60
+ * @param params
61
+ */
62
+ resetParams(params: ParamsDict): void;
63
+ /**
64
+ * Sets the hardfork to get params for
65
+ * @param hardfork String identifier (e.g. 'byzantium') or {@link Hardfork} enum
66
+ */
67
+ setHardfork(hardfork: string | Hardfork): void;
68
+ /**
69
+ * Returns the hardfork either based on block number (older HFs) or
70
+ * timestamp (Shanghai upwards).
71
+ *
72
+ * @param opts Block number or timestamp
73
+ * @returns The name of the HF
74
+ */
75
+ getHardforkBy(opts: HardforkByOpts): string;
76
+ /**
77
+ * Sets a new hardfork either based on block number (older HFs) or
78
+ * timestamp (Shanghai upwards).
79
+ *
80
+ * @param opts Block number or timestamp
81
+ * @returns The name of the HF set
82
+ */
83
+ setHardforkBy(opts: HardforkByOpts): string;
84
+ /**
85
+ * Internal helper function, returns the params for the given hardfork for the chain set
86
+ * @param hardfork Hardfork name
87
+ * @returns Dictionary with hardfork params or null if hardfork not on chain
88
+ */
89
+ protected _getHardfork(hardfork: string | Hardfork): HardforkTransitionConfig | null;
90
+ /**
91
+ * Sets the active EIPs
92
+ * @param eips
93
+ */
94
+ setEIPs(eips?: number[]): void;
95
+ /**
96
+ * Internal helper for _buildParamsCache()
97
+ */
98
+ protected _mergeWithParamsCache(params: ParamsConfig): void;
99
+ /**
100
+ * Build up a cache for all parameter values for the current HF and all activated EIPs
101
+ */
102
+ protected _buildParamsCache(): void;
103
+ /**
104
+ * Builds the cache of EIPs activated either via hardforks or constructor `eips`.
105
+ */
106
+ protected _buildActivatedEIPsCache(): void;
107
+ /**
108
+ * Returns a parameter for the current chain setup
109
+ *
110
+ * If the parameter is present in an EIP, the EIP always takes precedence.
111
+ * Otherwise the parameter is taken from the latest applied HF with
112
+ * a change on the respective parameter.
113
+ *
114
+ * @param name Parameter name (e.g. 'minGasLimit')
115
+ * @returns The value requested (throws if not found)
116
+ */
117
+ param(name: string): bigint;
118
+ /**
119
+ * Returns the parameter corresponding to a hardfork
120
+ * @param name Parameter name (e.g. 'minGasLimit')
121
+ * @param hardfork Hardfork name
122
+ * @returns The value requested (throws if not found)
123
+ */
124
+ paramByHardfork(name: string, hardfork: string | Hardfork): bigint;
125
+ /**
126
+ * Returns a parameter corresponding to an EIP
127
+ * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)
128
+ * @param eip Number of the EIP
129
+ * @returns The value requested (throws if not found)
130
+ */
131
+ paramByEIP(name: string, eip: number): bigint | undefined;
132
+ /**
133
+ * Returns a parameter for the hardfork active on block number or
134
+ * optional provided total difficulty (Merge HF)
135
+ * @param name Parameter name
136
+ * @param blockNumber Block number
137
+ * @returns The value requested or `BigInt(0)` if not found
138
+ */
139
+ paramByBlock(name: string, blockNumber: BigIntLike, timestamp?: BigIntLike): bigint;
140
+ /**
141
+ * Returns the blob gas schedule for the current hardfork
142
+ * @returns The blob gas schedule
143
+ */
144
+ getBlobGasSchedule(): BpoSchedule;
145
+ /**
146
+ * Checks if an EIP is activated by either being included in the EIPs
147
+ * manually passed in with the {@link CommonOpts.eips} or in a
148
+ * hardfork currently being active
149
+ *
150
+ * Note: this method only works for EIPs being supported
151
+ * by the {@link CommonOpts.eips} constructor option
152
+ * @param eip
153
+ */
154
+ isActivatedEIP(eip: number): boolean;
155
+ /**
156
+ * Checks if set or provided hardfork is active on block number
157
+ * @param hardfork Hardfork name or null (for HF set)
158
+ * @param blockNumber
159
+ * @returns True if HF is active on block number
160
+ */
161
+ hardforkIsActiveOnBlock(hardfork: string | Hardfork | null, blockNumber: BigIntLike): boolean;
162
+ /**
163
+ * Alias to hardforkIsActiveOnBlock when hardfork is set
164
+ * @param blockNumber
165
+ * @returns True if HF is active on block number
166
+ */
167
+ activeOnBlock(blockNumber: BigIntLike): boolean;
168
+ /**
169
+ * Sequence based check if given or set HF1 is greater than or equal HF2
170
+ * @param hardfork1 Hardfork name or null (if set)
171
+ * @param hardfork2 Hardfork name
172
+ * @returns True if HF1 gte HF2
173
+ */
174
+ hardforkGteHardfork(hardfork1: string | Hardfork | null, hardfork2: string | Hardfork): boolean;
175
+ /**
176
+ * Alias to hardforkGteHardfork when hardfork is set
177
+ * @param hardfork Hardfork name
178
+ * @returns True if hardfork set is greater than hardfork provided
179
+ */
180
+ gteHardfork(hardfork: string | Hardfork): boolean;
181
+ /**
182
+ * Returns the hardfork change block for hardfork provided or set
183
+ * @param hardfork Hardfork name, optional if HF set
184
+ * @returns Block number or null if unscheduled
185
+ */
186
+ hardforkBlock(hardfork?: string | Hardfork): bigint | null;
187
+ /**
188
+ * Returns the timestamp at which a given hardfork is scheduled (if any).
189
+ * @param hardfork Hardfork name, optional if HF set
190
+ * @returns Timestamp or null if the hardfork is not timestamp-based
191
+ */
192
+ hardforkTimestamp(hardfork?: string | Hardfork): bigint | null;
193
+ /**
194
+ * Returns the hardfork change block for eip
195
+ * @param eip EIP number
196
+ * @returns Block number or null if unscheduled
197
+ */
198
+ eipBlock(eip: number): bigint | null;
199
+ /**
200
+ * Returns the scheduled timestamp of the EIP (if scheduled and scheduled by timestamp)
201
+ * @param eip EIP number
202
+ * @returns Scheduled timestamp. If this EIP is unscheduled, or the EIP is scheduled by block number, then it returns `null`.
203
+ */
204
+ eipTimestamp(eip: number): bigint | null;
205
+ /**
206
+ * Returns the block number or timestamp at which the next hardfork will occur.
207
+ * For pre-merge hardforks, returns the block number.
208
+ * For post-merge hardforks, returns the timestamp.
209
+ * Returns null if there is no next hardfork.
210
+ * @param hardfork Hardfork name, optional if HF set
211
+ * @returns Block number or timestamp, or null if not available
212
+ */
213
+ nextHardforkBlockOrTimestamp(hardfork?: string | Hardfork): bigint | null;
214
+ /**
215
+ * Internal helper function to calculate a fork hash
216
+ * @param hardfork Hardfork name
217
+ * @param genesisHash Genesis block hash of the chain
218
+ * @returns Fork hash as hex string
219
+ */
220
+ protected _calcForkHash(hardfork: string | Hardfork, genesisHash: Uint8Array): PrefixedHexString;
221
+ /**
222
+ * Returns an eth/64 compliant fork hash (EIP-2124)
223
+ * @param hardfork Hardfork name, optional if HF set
224
+ * @param genesisHash Genesis block hash of the network, optional if already defined and not needed to be calculated
225
+ * @returns Fork hash as a hex string
226
+ */
227
+ forkHash(hardfork?: string | Hardfork, genesisHash?: Uint8Array): PrefixedHexString;
228
+ /**
229
+ *
230
+ * @param forkHash Fork hash as a hex string
231
+ * @returns Array with hardfork data (name, block, forkHash)
232
+ */
233
+ hardforkForForkHash(forkHash: string): HardforkTransitionConfig | null;
234
+ /**
235
+ * Sets any missing forkHashes on this {@link Common} instance.
236
+ * @param genesisHash The genesis block hash
237
+ */
238
+ setForkHashes(genesisHash: Uint8Array): void;
239
+ /**
240
+ * Returns the Genesis parameters of the current chain
241
+ * @returns Genesis dictionary
242
+ */
243
+ genesis(): GenesisBlockConfig;
244
+ /**
245
+ * Returns the hardfork definitions for the current chain.
246
+ * @returns Array of hardfork transition configs
247
+ */
248
+ hardforks(): HardforkTransitionConfig[];
249
+ /**
250
+ * Returns bootstrap nodes for the current chain.
251
+ * @returns Array of bootstrap node configs
252
+ */
253
+ bootstrapNodes(): BootstrapNodeConfig[];
254
+ /**
255
+ * Returns DNS networks for the current chain
256
+ * @returns {String[]} Array of DNS ENR urls
257
+ */
258
+ dnsNetworks(): string[];
259
+ /**
260
+ * Returns the hardfork set
261
+ * @returns Hardfork name
262
+ */
263
+ hardfork(): string | Hardfork;
264
+ /**
265
+ * Returns the Id of current chain
266
+ * @returns chain Id
267
+ */
268
+ chainId(): bigint;
269
+ /**
270
+ * Returns the name of current chain
271
+ * @returns chain name (lower case)
272
+ */
273
+ chainName(): string;
274
+ /**
275
+ * Returns the additionally activated EIPs
276
+ * (by using the `eips` constructor option)
277
+ * @returns List of EIPs
278
+ */
279
+ eips(): number[];
280
+ /**
281
+ * Returns the consensus type of the network
282
+ * Possible values: "pow"|"poa"|"pos"
283
+ *
284
+ * Note: This value can update along a Hardfork.
285
+ */
286
+ consensusType(): string | ConsensusType;
287
+ /**
288
+ * Returns the concrete consensus implementation
289
+ * algorithm or protocol for the network
290
+ * e.g. "ethash" for "pow" consensus type,
291
+ * "clique" for "poa" consensus type or
292
+ * "casper" for "pos" consensus type.
293
+ *
294
+ * Note: This value can update along a Hardfork.
295
+ */
296
+ consensusAlgorithm(): string | ConsensusAlgorithm;
297
+ /**
298
+ * Returns a dictionary with consensus configuration
299
+ * parameters based on the consensus algorithm
300
+ *
301
+ * Expected returns (parameters must be present in
302
+ * the respective chain JSON files):
303
+ *
304
+ * ethash: empty object
305
+ * clique: period, epoch
306
+ * casper: empty object
307
+ *
308
+ * Note: This value can update along a Hardfork.
309
+ */
310
+ consensusConfig(): {
311
+ [key: string]: CliqueConfig | EthashConfig | CasperConfig;
312
+ };
313
+ /**
314
+ * Returns a deep copy of this {@link Common} instance.
315
+ */
316
+ copy(): Common;
317
+ }
318
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/common.ts"],"names":[],"mappings":"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"}