@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,77 @@
1
+ import { BIGINT_0, hexToBytes } from '@feelyourprotocol/util';
2
+ export const Chain = {
3
+ Mainnet: 1,
4
+ Sepolia: 11155111,
5
+ Holesky: 17000,
6
+ Hoodi: 560048,
7
+ };
8
+ // Reverse mapping: from numeric value back to the key name
9
+ export const ChainNameFromNumber = Object.entries(Chain).reduce((acc, [key, value]) => {
10
+ acc[value] = key;
11
+ return acc;
12
+ }, {});
13
+ // Having this info as record will force typescript to make sure no chain is missed
14
+ /**
15
+ * GenesisState info about well known ethereum chains
16
+ */
17
+ export const ChainGenesis = {
18
+ [Chain.Mainnet]: {
19
+ name: 'mainnet',
20
+ blockNumber: BIGINT_0,
21
+ stateRoot: hexToBytes('0xd7f8974fb5ac78d9ac099b9ad5018bedc2ce0a72dad1827a1709da30580f0544'),
22
+ },
23
+ [Chain.Sepolia]: {
24
+ name: 'sepolia',
25
+ blockNumber: BIGINT_0,
26
+ stateRoot: hexToBytes('0x5eb6e371a698b8d68f665192350ffcecbbbf322916f4b51bd79bb6887da3f494'),
27
+ },
28
+ [Chain.Holesky]: {
29
+ name: 'holesky',
30
+ blockNumber: BIGINT_0,
31
+ stateRoot: hexToBytes('0x69d8c9d72f6fa4ad42d4702b433707212f90db395eb54dc20bc85de253788783'),
32
+ },
33
+ [Chain.Hoodi]: {
34
+ name: 'hoodi',
35
+ blockNumber: BIGINT_0,
36
+ stateRoot: hexToBytes('0xda87d7f5f91c51508791bbcbd4aa5baf04917830b86985eeb9ad3d5bfb657576'),
37
+ },
38
+ };
39
+ export const Hardfork = {
40
+ Chainstart: 'chainstart',
41
+ Homestead: 'homestead',
42
+ Dao: 'dao',
43
+ TangerineWhistle: 'tangerineWhistle',
44
+ SpuriousDragon: 'spuriousDragon',
45
+ Byzantium: 'byzantium',
46
+ Constantinople: 'constantinople',
47
+ Petersburg: 'petersburg',
48
+ Istanbul: 'istanbul',
49
+ MuirGlacier: 'muirGlacier',
50
+ Berlin: 'berlin',
51
+ London: 'london',
52
+ ArrowGlacier: 'arrowGlacier',
53
+ GrayGlacier: 'grayGlacier',
54
+ MergeNetsplitBlock: 'mergeNetsplitBlock',
55
+ Paris: 'paris',
56
+ Shanghai: 'shanghai',
57
+ Cancun: 'cancun',
58
+ Prague: 'prague',
59
+ Osaka: 'osaka',
60
+ Bpo1: 'bpo1',
61
+ Bpo2: 'bpo2',
62
+ Bpo3: 'bpo3',
63
+ Bpo4: 'bpo4',
64
+ Bpo5: 'bpo5',
65
+ Amsterdam: 'amsterdam',
66
+ };
67
+ export const ConsensusType = {
68
+ ProofOfStake: 'pos',
69
+ ProofOfWork: 'pow',
70
+ ProofOfAuthority: 'poa',
71
+ };
72
+ export const ConsensusAlgorithm = {
73
+ Ethash: 'ethash',
74
+ Clique: 'clique',
75
+ Casper: 'casper',
76
+ };
77
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/enums.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAIvD,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,MAAM;CACL,CAAA;AAEV,2DAA2D;AAC3D,MAAM,CAAC,MAAM,mBAAmB,GAA+B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CACzF,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;IACpB,GAAG,CAAC,KAAc,CAAC,GAAG,GAAG,CAAA;IACzB,OAAO,GAAG,CAAA;AACZ,CAAC,EACD,EAAgC,CACjC,CAAA;AAaD,mFAAmF;AACnF;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAgC;IACvD,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACf,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,UAAU,CAAC,oEAAoE,CAAC;KAC5F;IACD,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACf,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,UAAU,CAAC,oEAAoE,CAAC;KAC5F;IACD,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QACf,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,UAAU,CAAC,oEAAoE,CAAC;KAC5F;IACD,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACb,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,UAAU,CAAC,oEAAoE,CAAC;KAC5F;CACF,CAAA;AAID,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,GAAG,EAAE,KAAK;IACV,gBAAgB,EAAE,kBAAkB;IACpC,cAAc,EAAE,gBAAgB;IAChC,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,gBAAgB;IAChC,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAC1B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,cAAc;IAC5B,WAAW,EAAE,aAAa;IAC1B,kBAAkB,EAAE,oBAAoB;IACxC,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;CACd,CAAA;AAIV,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,YAAY,EAAE,KAAK;IACnB,WAAW,EAAE,KAAK;IAClB,gBAAgB,EAAE,KAAK;CACf,CAAA;AAIV,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;CACR,CAAA"}
@@ -0,0 +1,145 @@
1
+ import { type PrefixedHexString } from '@feelyourprotocol/util';
2
+ /**
3
+ * Interface for Geth Genesis Config
4
+ */
5
+ export interface GethGenesisConfig {
6
+ chainId: number;
7
+ depositContractAddress?: string;
8
+ homesteadBlock?: number;
9
+ daoForkBlock?: number;
10
+ daoForkSupport?: boolean;
11
+ eip150Block?: number;
12
+ eip150Hash?: string;
13
+ eip155Block?: number;
14
+ eip158Block?: number;
15
+ byzantiumBlock?: number;
16
+ constantinopleBlock?: number;
17
+ petersburgBlock?: number;
18
+ istanbulBlock?: number;
19
+ muirGlacierBlock?: number;
20
+ berlinBlock?: number;
21
+ londonBlock?: number;
22
+ mergeForkBlock?: number;
23
+ cancunBlock?: number;
24
+ arrowGlacierBlock?: number;
25
+ grayGlacierBlock?: number;
26
+ mergeNetsplitBlock?: number;
27
+ shanghaiTime?: number;
28
+ cancunTime?: number;
29
+ pragueTime?: number;
30
+ terminalTotalDifficulty?: number;
31
+ terminalTotalDifficultyPassed?: boolean;
32
+ ethash?: {};
33
+ clique?: {
34
+ period?: number;
35
+ epoch?: number;
36
+ blockperiodseconds?: number;
37
+ epochlength?: number;
38
+ };
39
+ trustedCheckpoint?: {
40
+ sectionIndex: number;
41
+ sectionHead: string;
42
+ chtRoot: string;
43
+ bloomRoot: string;
44
+ };
45
+ trustedCheckpointOracle?: {
46
+ address: string;
47
+ signers: string[];
48
+ threshold: number;
49
+ };
50
+ blobSchedule?: GethGenesisBlobSchedule;
51
+ proofInBlocks?: boolean;
52
+ }
53
+ /**
54
+ * Interface for account allocation in Geth Genesis
55
+ */
56
+ export interface GethGenesisAlloc {
57
+ [address: string]: {
58
+ balance: string;
59
+ code?: string;
60
+ storage?: {
61
+ [key: string]: string;
62
+ };
63
+ nonce?: string;
64
+ };
65
+ }
66
+ /**
67
+ * Interface for blob schedule in Geth Genesis (EIP-7840)
68
+ */
69
+ export interface GethGenesisBlobSchedule {
70
+ [fork: string]: {
71
+ target?: number;
72
+ max?: number;
73
+ baseFeeUpdateFraction?: number;
74
+ };
75
+ }
76
+ /**
77
+ * Interface for Geth Genesis object
78
+ */
79
+ export interface GethGenesis {
80
+ config: GethGenesisConfig;
81
+ name?: string;
82
+ excessBlobGas?: string;
83
+ requestsHash?: string;
84
+ nonce: string;
85
+ timestamp: string;
86
+ extraData?: string;
87
+ gasLimit: PrefixedHexString;
88
+ difficulty?: PrefixedHexString;
89
+ mixHash?: PrefixedHexString;
90
+ coinbase?: PrefixedHexString;
91
+ alloc: GethGenesisAlloc;
92
+ number?: PrefixedHexString;
93
+ gasUsed?: PrefixedHexString;
94
+ parentHash?: PrefixedHexString;
95
+ baseFeePerGas?: PrefixedHexString | number | null;
96
+ }
97
+ /**
98
+ * Type for the options passed to createCommonFromGethGenesis
99
+ */
100
+ export interface CreateCommonFromGethGenesisOpts {
101
+ chain?: string;
102
+ genesisHash?: string;
103
+ mergeForkIdPostMerge?: boolean;
104
+ }
105
+ export type StoragePair = [key: PrefixedHexString, value: PrefixedHexString];
106
+ export type AccountState = [
107
+ balance: PrefixedHexString,
108
+ code?: PrefixedHexString,
109
+ storage?: Array<StoragePair>,
110
+ nonce?: PrefixedHexString
111
+ ];
112
+ /**
113
+ * If you are using a custom chain {@link Common}, pass the genesis state.
114
+ *
115
+ * Pattern 1 (with genesis state see {@link GenesisState} for format):
116
+ *
117
+ * ```javascript
118
+ * {
119
+ * '0x0...01': '0x100', // For EoA
120
+ * }
121
+ * ```
122
+ *
123
+ * Pattern 2 (with complex genesis state, containing contract accounts and storage).
124
+ * Note that in {@link AccountState} there are two
125
+ * accepted types. This allows to easily insert accounts in the genesis state:
126
+ *
127
+ * A complex genesis state with Contract and EoA states would have the following format:
128
+ *
129
+ * ```javascript
130
+ * {
131
+ * '0x0...01': '0x100', // For EoA
132
+ * '0x0...02': ['0x1', '0xRUNTIME_BYTECODE', [[storageKey1, storageValue1], [storageKey2, storageValue2]]] // For contracts
133
+ * }
134
+ * ```
135
+ */
136
+ export interface GenesisState {
137
+ [key: PrefixedHexString]: PrefixedHexString | AccountState;
138
+ }
139
+ /**
140
+ * Parses the geth genesis state into Blockchain {@link GenesisState}
141
+ * @param gethGenesis GethGenesis object
142
+ * @returns Parsed {@link GenesisState}
143
+ */
144
+ export declare function parseGethGenesisState(gethGenesis: GethGenesis): GenesisState;
145
+ //# sourceMappingURL=gethGenesis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gethGenesis.d.ts","sourceRoot":"","sources":["../../src/gethGenesis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { addHexPrefix, bigIntToHex, isHexString } from '@feelyourprotocol/util';
2
+ /**
3
+ * Parses the geth genesis state into Blockchain {@link GenesisState}
4
+ * @param gethGenesis GethGenesis object
5
+ * @returns Parsed {@link GenesisState}
6
+ */
7
+ export function parseGethGenesisState(gethGenesis) {
8
+ const state = {};
9
+ for (const address of Object.keys(gethGenesis.alloc)) {
10
+ const { balance: rawBalance, code: rawCode, nonce: rawNonce, storage: rawStorage, } = gethGenesis.alloc[address];
11
+ // create a map with lowercase for easy lookups
12
+ const prefixedAddress = addHexPrefix(address.toLowerCase());
13
+ const balance = isHexString(rawBalance) ? rawBalance : bigIntToHex(BigInt(rawBalance));
14
+ const code = rawCode !== undefined ? addHexPrefix(rawCode) : undefined;
15
+ const storage = rawStorage !== undefined
16
+ ? Object.entries(rawStorage).map((storagePair) => storagePair.map(addHexPrefix))
17
+ : undefined;
18
+ const nonce = rawNonce !== undefined ? addHexPrefix(rawNonce) : undefined;
19
+ state[prefixedAddress] = [balance, code, storage, nonce];
20
+ }
21
+ return state;
22
+ }
23
+ //# sourceMappingURL=gethGenesis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gethGenesis.js","sourceRoot":"","sources":["../../src/gethGenesis.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAiJjG;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAwB;IAC5D,MAAM,KAAK,GAAiB,EAAE,CAAA;IAE9B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACrD,MAAM,EACJ,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,UAAU,GACpB,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAC9B,+CAA+C;QAC/C,MAAM,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;QAC3D,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;QACtF,MAAM,IAAI,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACtE,MAAM,OAAO,GACX,UAAU,KAAK,SAAS;YACtB,CAAC,CAAE,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAC9C,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CACZ;YACrB,CAAC,CAAC,SAAS,CAAA;QACf,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACzE,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAC1D,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { HardforksDict } from './types.ts';
2
+ export declare const hardforksDict: HardforksDict;
3
+ //# sourceMappingURL=hardforks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hardforks.d.ts","sourceRoot":"","sources":["../../src/hardforks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,eAAO,MAAM,aAAa,EAAE,aA0M3B,CAAA"}
@@ -0,0 +1,204 @@
1
+ export const hardforksDict = {
2
+ /**
3
+ * Description: Start of the Ethereum main chain
4
+ * URL : -
5
+ * Status : Final
6
+ */
7
+ chainstart: {
8
+ eips: [1],
9
+ },
10
+ /**
11
+ * Description: Homestead hardfork with protocol and network changes
12
+ * URL : https://eips.ethereum.org/EIPS/eip-606
13
+ * Status : Final
14
+ */
15
+ homestead: {
16
+ eips: [606],
17
+ },
18
+ /**
19
+ * Description: DAO rescue hardfork
20
+ * URL : https://eips.ethereum.org/EIPS/eip-779
21
+ * Status : Final
22
+ */
23
+ dao: {
24
+ eips: [],
25
+ },
26
+ /**
27
+ * Description: Hardfork with gas cost changes for IO-heavy operations
28
+ * URL : https://eips.ethereum.org/EIPS/eip-608
29
+ * Status : Final
30
+ */
31
+ tangerineWhistle: {
32
+ eips: [608],
33
+ },
34
+ /**
35
+ * Description: HF with EIPs for simple replay attack protection, EXP cost increase, state trie clearing, contract code size limit
36
+ * URL : https://eips.ethereum.org/EIPS/eip-607
37
+ * Status : Final
38
+ */
39
+ spuriousDragon: {
40
+ eips: [607],
41
+ },
42
+ /**
43
+ * Description: Hardfork with new precompiles, instructions and other protocol changes
44
+ * URL : https://eips.ethereum.org/EIPS/eip-609
45
+ * Status : Final
46
+ */
47
+ byzantium: {
48
+ eips: [609],
49
+ },
50
+ /**
51
+ * Description: Postponed hardfork including EIP-1283 (SSTORE gas metering changes)
52
+ * URL : https://eips.ethereum.org/EIPS/eip-1013
53
+ * Status : Final
54
+ */
55
+ constantinople: {
56
+ eips: [1013],
57
+ },
58
+ /**
59
+ * Description: Aka constantinopleFix, removes EIP-1283, activate together with or after constantinople
60
+ * URL : https://eips.ethereum.org/EIPS/eip-1716
61
+ * Status : Final
62
+ */
63
+ petersburg: {
64
+ eips: [1716],
65
+ },
66
+ /**
67
+ * Description: HF targeted for December 2019 following the Constantinople/Petersburg HF
68
+ * URL : https://eips.ethereum.org/EIPS/eip-1679
69
+ * Status : Final
70
+ */
71
+ istanbul: {
72
+ eips: [1679],
73
+ },
74
+ /**
75
+ * Description: HF to delay the difficulty bomb
76
+ * URL : https://eips.ethereum.org/EIPS/eip-2384
77
+ * Status : Final
78
+ */
79
+ muirGlacier: {
80
+ eips: [2384],
81
+ },
82
+ /**
83
+ * Description: HF targeted for July 2020 following the Muir Glacier HF
84
+ * URL : https://eips.ethereum.org/EIPS/eip-2070
85
+ * Status : Final
86
+ */
87
+ berlin: {
88
+ eips: [2565, 2929, 2718, 2930],
89
+ },
90
+ /**
91
+ * Description: HF targeted for July 2021 following the Berlin fork
92
+ * URL : https://github.com/ethereum/eth1.0-specs/blob/master/network-upgrades/mainnet-upgrades/london.md
93
+ * Status : Final
94
+ */
95
+ london: {
96
+ eips: [1559, 3198, 3529, 3541],
97
+ },
98
+ /**
99
+ * Description: HF to delay the difficulty bomb
100
+ * URL : https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/arrow-glacier.md
101
+ * Status : Final
102
+ */
103
+ arrowGlacier: {
104
+ eips: [4345],
105
+ },
106
+ /**
107
+ * Description: Delaying the difficulty bomb to Mid September 2022
108
+ * URL : https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/gray-glacier.md
109
+ * Status : Final
110
+ */
111
+ grayGlacier: {
112
+ eips: [5133],
113
+ },
114
+ /**
115
+ * Description: Hardfork to upgrade the consensus mechanism to Proof-of-Stake
116
+ * URL : https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/merge.md
117
+ * Status : Final
118
+ */
119
+ paris: {
120
+ consensus: {
121
+ type: 'pos',
122
+ algorithm: 'casper',
123
+ casper: {},
124
+ },
125
+ eips: [3675, 4399],
126
+ },
127
+ /**
128
+ * Description: Pre-merge hardfork to fork off non-upgraded clients
129
+ * URL : https://eips.ethereum.org/EIPS/eip-3675
130
+ * Status : Final
131
+ */
132
+ mergeNetsplitBlock: {
133
+ eips: [],
134
+ },
135
+ /**
136
+ * Description: Next feature hardfork after the merge hardfork having withdrawals, warm coinbase, push0, limit/meter initcode
137
+ * URL : https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/shanghai.md
138
+ * Status : Final
139
+ */
140
+ shanghai: {
141
+ eips: [3651, 3855, 3860, 4895],
142
+ },
143
+ /**
144
+ * Description: Next feature hardfork after shanghai, includes proto-danksharding EIP 4844 blobs,
145
+ * transient storage opcodes, parent beacon block root availability in EVM, selfdestruct only in
146
+ * same transaction, and blob base fee opcode
147
+ * URL : https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/cancun.md
148
+ * Status : Final
149
+ */
150
+ cancun: {
151
+ eips: [1153, 4844, 4788, 5656, 6780, 7516],
152
+ },
153
+ /**
154
+ * Description: Next feature hardfork after cancun including EIP-7702 account abstraction + other EIPs
155
+ * URL : https://eips.ethereum.org/EIPS/eip-7600
156
+ * Status : Final
157
+ */
158
+ prague: {
159
+ eips: [2537, 2935, 6110, 7002, 7251, 7623, 7685, 7691, 7702],
160
+ },
161
+ /**
162
+ * Description: Next feature hardfork after prague (headliner: PeerDAS)
163
+ * URL : https://eips.ethereum.org/EIPS/eip-7607
164
+ * Status : Final
165
+ */
166
+ osaka: {
167
+ eips: [7594, 7823, 7825, 7883, 7892, 7939, 7951, 7918],
168
+ },
169
+ /**
170
+ * Description: HF to update the blob target, max and updateFraction (see also EIP-7892)
171
+ * URL : TBD
172
+ * Status : Final
173
+ */
174
+ bpo1: {
175
+ eips: [],
176
+ params: {
177
+ target: 10,
178
+ max: 15,
179
+ blobGasPriceUpdateFraction: 8346193,
180
+ },
181
+ },
182
+ /**
183
+ * Description: HF to update the blob target, max and updateFraction (see also EIP-7892)
184
+ * URL : TBD
185
+ * Status : Final
186
+ */
187
+ bpo2: {
188
+ eips: [],
189
+ params: {
190
+ target: 14,
191
+ max: 21,
192
+ blobGasPriceUpdateFraction: 11684671,
193
+ },
194
+ },
195
+ /**
196
+ * Description: Feature hardfork after osaka (headliner: EIP-7928 Block Level Access Lists (BAL))
197
+ * URL : https://eips.ethereum.org/EIPS/eip-7773
198
+ * Status : Draft (implementation incomplete + spec still moving!)
199
+ */
200
+ amsterdam: {
201
+ eips: [7708, 7843, 7778, 7928, 8024],
202
+ },
203
+ };
204
+ //# sourceMappingURL=hardforks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hardforks.js","sourceRoot":"","sources":["../../src/hardforks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export * from './chains.ts';
2
+ export * from './common.ts';
3
+ export * from './constructors.ts';
4
+ export * from './enums.ts';
5
+ export * from './gethGenesis.ts';
6
+ export * from './interfaces.ts';
7
+ export * from './types.ts';
8
+ export * from './utils.ts';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,9 @@
1
+ export * from "./chains.js";
2
+ export * from "./common.js";
3
+ export * from "./constructors.js";
4
+ export * from "./enums.js";
5
+ export * from "./gethGenesis.js";
6
+ export * from "./interfaces.js";
7
+ export * from "./types.js";
8
+ export * from "./utils.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,mBAAmB,CAAA;AACjC,cAAc,YAAY,CAAA;AAC1B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * External Interfaces for other EthereumJS libraries
3
+ */
4
+ import type { Account, Address, BinaryTreeExecutionWitness, PrefixedHexString } from '@feelyourprotocol/util';
5
+ export interface StorageDump {
6
+ [key: string]: string;
7
+ }
8
+ /**
9
+ * Object that can contain a set of storage keys associated with an account.
10
+ */
11
+ export interface StorageRange {
12
+ /**
13
+ * A dictionary where the keys are hashed storage keys, and the values are
14
+ * objects containing the preimage of the hashed key (in `key`) and the
15
+ * storage key (in `value`). Currently, there is no way to retrieve preimages,
16
+ * so they are always `null`.
17
+ */
18
+ storage: {
19
+ [key: string]: {
20
+ key: string | null;
21
+ value: string;
22
+ };
23
+ };
24
+ /**
25
+ * The next (hashed) storage key after the greatest storage key
26
+ * contained in `storage`.
27
+ */
28
+ nextKey: string | null;
29
+ }
30
+ export type AccountFields = Partial<Pick<Account, 'nonce' | 'balance' | 'storageRoot' | 'codeHash' | 'codeSize'>>;
31
+ export type StorageProof = {
32
+ key: PrefixedHexString;
33
+ proof: PrefixedHexString[];
34
+ value: PrefixedHexString;
35
+ };
36
+ export type Proof = {
37
+ address: PrefixedHexString;
38
+ balance: PrefixedHexString;
39
+ codeHash: PrefixedHexString;
40
+ nonce: PrefixedHexString;
41
+ storageHash: PrefixedHexString;
42
+ accountProof: PrefixedHexString[];
43
+ storageProof: StorageProof[];
44
+ };
45
+ /**
46
+ * Binary tree related
47
+ *
48
+ * Experimental (do not implement)
49
+ */
50
+ export type AccessEventFlags = {
51
+ stemRead: boolean;
52
+ stemWrite: boolean;
53
+ chunkRead: boolean;
54
+ chunkWrite: boolean;
55
+ chunkFill: boolean;
56
+ };
57
+ export type BinaryTreeAccessedStateType = (typeof BinaryTreeAccessedStateType)[keyof typeof BinaryTreeAccessedStateType];
58
+ export declare const BinaryTreeAccessedStateType: {
59
+ readonly BasicData: "basicData";
60
+ readonly CodeHash: "codeHash";
61
+ readonly Code: "code";
62
+ readonly Storage: "storage";
63
+ };
64
+ export type RawBinaryTreeAccessedState = {
65
+ address: Address;
66
+ treeIndex: number | bigint;
67
+ chunkIndex: number;
68
+ chunkKey: PrefixedHexString;
69
+ };
70
+ export type BinaryTreeAccessedState = {
71
+ type: Exclude<BinaryTreeAccessedStateType, typeof BinaryTreeAccessedStateType.Code | typeof BinaryTreeAccessedStateType.Storage>;
72
+ } | {
73
+ type: typeof BinaryTreeAccessedStateType.Code;
74
+ codeOffset: number;
75
+ } | {
76
+ type: typeof BinaryTreeAccessedStateType.Storage;
77
+ slot: bigint;
78
+ };
79
+ export type BinaryTreeAccessedStateWithAddress = BinaryTreeAccessedState & {
80
+ address: Address;
81
+ chunkKey: PrefixedHexString;
82
+ };
83
+ export interface BinaryTreeAccessWitnessInterface {
84
+ accesses(): Generator<BinaryTreeAccessedStateWithAddress>;
85
+ rawAccesses(): Generator<RawBinaryTreeAccessedState>;
86
+ debugWitnessCost(): void;
87
+ readAccountBasicData(address: Address): bigint;
88
+ writeAccountBasicData(address: Address): bigint;
89
+ readAccountCodeHash(address: Address): bigint;
90
+ writeAccountCodeHash(address: Address): bigint;
91
+ readAccountHeader(address: Address): bigint;
92
+ writeAccountHeader(address: Address): bigint;
93
+ readAccountCodeChunks(contract: Address, startPc: number, endPc: number): bigint;
94
+ writeAccountCodeChunks(contract: Address, startPc: number, endPc: number): bigint;
95
+ readAccountStorage(contract: Address, storageSlot: bigint): bigint;
96
+ writeAccountStorage(contract: Address, storageSlot: bigint): bigint;
97
+ merge(accessWitness: BinaryTreeAccessWitnessInterface): void;
98
+ commit(): void;
99
+ revert(): void;
100
+ }
101
+ export interface StateManagerInterface {
102
+ getAccount(address: Address): Promise<Account | undefined>;
103
+ putAccount(address: Address, account?: Account): Promise<void>;
104
+ deleteAccount(address: Address): Promise<void>;
105
+ modifyAccountFields(address: Address, accountFields: AccountFields): Promise<void>;
106
+ putCode(address: Address, value: Uint8Array): Promise<void>;
107
+ getCode(address: Address): Promise<Uint8Array>;
108
+ getCodeSize(address: Address): Promise<number>;
109
+ getStorage(address: Address, key: Uint8Array): Promise<Uint8Array>;
110
+ putStorage(address: Address, key: Uint8Array, value: Uint8Array): Promise<void>;
111
+ clearStorage(address: Address): Promise<void>;
112
+ checkpoint(): Promise<void>;
113
+ commit(): Promise<void>;
114
+ revert(): Promise<void>;
115
+ getStateRoot(): Promise<Uint8Array>;
116
+ setStateRoot(stateRoot: Uint8Array, clearCache?: boolean): Promise<void>;
117
+ hasStateRoot(root: Uint8Array): Promise<boolean>;
118
+ dumpStorage?(address: Address): Promise<StorageDump>;
119
+ dumpStorageRange?(address: Address, startKey: bigint, limit: number): Promise<StorageRange>;
120
+ originalStorageCache: {
121
+ get(address: Address, key: Uint8Array): Promise<Uint8Array>;
122
+ clear(): void;
123
+ };
124
+ generateCanonicalGenesis?(initState: any): Promise<void>;
125
+ initBinaryTreeExecutionWitness?(blockNum: bigint, executionWitness?: BinaryTreeExecutionWitness | null): void;
126
+ verifyBinaryTreePostState?(accessWitness: BinaryTreeAccessWitnessInterface): Promise<boolean>;
127
+ checkChunkWitnessPresent?(contract: Address, programCounter: number): Promise<boolean>;
128
+ getAppliedKey?(address: Uint8Array): Uint8Array;
129
+ clearCaches(): void;
130
+ shallowCopy(downlevelCaches?: boolean): StateManagerInterface;
131
+ }
132
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * External Interfaces for other EthereumJS libraries
3
+ */
4
+ export const BinaryTreeAccessedStateType = {
5
+ BasicData: 'basicData',
6
+ CodeHash: 'codeHash',
7
+ Code: 'code',
8
+ Storage: 'storage',
9
+ };
10
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwEH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;CACV,CAAA"}