@@ -66,7 +66,7 @@ var PrecompiledContractsByzantium = PrecompiledContracts{
66
66
common .BytesToAddress ([]byte {0x2 }): & sha256hash {},
67
67
common .BytesToAddress ([]byte {0x3 }): & ripemd160hash {},
68
68
common .BytesToAddress ([]byte {0x4 }): & dataCopy {},
69
- common .BytesToAddress ([]byte {0x5 }): & bigModExp {eip2565 : false },
69
+ common .BytesToAddress ([]byte {0x5 }): & bigModExp {eip2565 : false , eip7883 : false },
70
70
common .BytesToAddress ([]byte {0x6 }): & bn256AddByzantium {},
71
71
common .BytesToAddress ([]byte {0x7 }): & bn256ScalarMulByzantium {},
72
72
common .BytesToAddress ([]byte {0x8 }): & bn256PairingByzantium {},
@@ -79,7 +79,7 @@ var PrecompiledContractsIstanbul = PrecompiledContracts{
79
79
common .BytesToAddress ([]byte {0x2 }): & sha256hash {},
80
80
common .BytesToAddress ([]byte {0x3 }): & ripemd160hash {},
81
81
common .BytesToAddress ([]byte {0x4 }): & dataCopy {},
82
- common .BytesToAddress ([]byte {0x5 }): & bigModExp {eip2565 : false },
82
+ common .BytesToAddress ([]byte {0x5 }): & bigModExp {eip2565 : false , eip7883 : false },
83
83
common .BytesToAddress ([]byte {0x6 }): & bn256AddIstanbul {},
84
84
common .BytesToAddress ([]byte {0x7 }): & bn256ScalarMulIstanbul {},
85
85
common .BytesToAddress ([]byte {0x8 }): & bn256PairingIstanbul {},
@@ -93,7 +93,7 @@ var PrecompiledContractsBerlin = PrecompiledContracts{
93
93
common .BytesToAddress ([]byte {0x2 }): & sha256hash {},
94
94
common .BytesToAddress ([]byte {0x3 }): & ripemd160hash {},
95
95
common .BytesToAddress ([]byte {0x4 }): & dataCopy {},
96
- common .BytesToAddress ([]byte {0x5 }): & bigModExp {eip2565 : true },
96
+ common .BytesToAddress ([]byte {0x5 }): & bigModExp {eip2565 : true , eip7883 : false },
97
97
common .BytesToAddress ([]byte {0x6 }): & bn256AddIstanbul {},
98
98
common .BytesToAddress ([]byte {0x7 }): & bn256ScalarMulIstanbul {},
99
99
common .BytesToAddress ([]byte {0x8 }): & bn256PairingIstanbul {},
@@ -107,7 +107,7 @@ var PrecompiledContractsCancun = PrecompiledContracts{
107
107
common .BytesToAddress ([]byte {0x2 }): & sha256hash {},
108
108
common .BytesToAddress ([]byte {0x3 }): & ripemd160hash {},
109
109
common .BytesToAddress ([]byte {0x4 }): & dataCopy {},
110
- common .BytesToAddress ([]byte {0x5 }): & bigModExp {eip2565 : true },
110
+ common .BytesToAddress ([]byte {0x5 }): & bigModExp {eip2565 : true , eip7883 : false },
111
111
common .BytesToAddress ([]byte {0x6 }): & bn256AddIstanbul {},
112
112
common .BytesToAddress ([]byte {0x7 }): & bn256ScalarMulIstanbul {},
113
113
common .BytesToAddress ([]byte {0x8 }): & bn256PairingIstanbul {},
@@ -122,7 +122,7 @@ var PrecompiledContractsPrague = PrecompiledContracts{
122
122
common .BytesToAddress ([]byte {0x02 }): & sha256hash {},
123
123
common .BytesToAddress ([]byte {0x03 }): & ripemd160hash {},
124
124
common .BytesToAddress ([]byte {0x04 }): & dataCopy {},
125
- common .BytesToAddress ([]byte {0x05 }): & bigModExp {eip2565 : true },
125
+ common .BytesToAddress ([]byte {0x05 }): & bigModExp {eip2565 : true , eip7883 : false },
126
126
common .BytesToAddress ([]byte {0x06 }): & bn256AddIstanbul {},
127
127
common .BytesToAddress ([]byte {0x07 }): & bn256ScalarMulIstanbul {},
128
128
common .BytesToAddress ([]byte {0x08 }): & bn256PairingIstanbul {},
@@ -141,6 +141,28 @@ var PrecompiledContractsBLS = PrecompiledContractsPrague
141
141
142
142
var PrecompiledContractsVerkle = PrecompiledContractsPrague
143
143
144
+ // PrecompiledContractsOsaka contains the set of pre-compiled Ethereum
145
+ // contracts used in the Osaka release.
146
+ var PrecompiledContractsOsaka = PrecompiledContracts {
147
+ common .BytesToAddress ([]byte {0x01 }): & ecrecover {},
148
+ common .BytesToAddress ([]byte {0x02 }): & sha256hash {},
149
+ common .BytesToAddress ([]byte {0x03 }): & ripemd160hash {},
150
+ common .BytesToAddress ([]byte {0x04 }): & dataCopy {},
151
+ common .BytesToAddress ([]byte {0x05 }): & bigModExp {eip2565 : true , eip7883 : true },
152
+ common .BytesToAddress ([]byte {0x06 }): & bn256AddIstanbul {},
153
+ common .BytesToAddress ([]byte {0x07 }): & bn256ScalarMulIstanbul {},
154
+ common .BytesToAddress ([]byte {0x08 }): & bn256PairingIstanbul {},
155
+ common .BytesToAddress ([]byte {0x09 }): & blake2F {},
156
+ common .BytesToAddress ([]byte {0x0a }): & kzgPointEvaluation {},
157
+ common .BytesToAddress ([]byte {0x0b }): & bls12381G1Add {},
158
+ common .BytesToAddress ([]byte {0x0c }): & bls12381G1MultiExp {},
159
+ common .BytesToAddress ([]byte {0x0d }): & bls12381G2Add {},
160
+ common .BytesToAddress ([]byte {0x0e }): & bls12381G2MultiExp {},
161
+ common .BytesToAddress ([]byte {0x0f }): & bls12381Pairing {},
162
+ common .BytesToAddress ([]byte {0x10 }): & bls12381MapG1 {},
163
+ common .BytesToAddress ([]byte {0x11 }): & bls12381MapG2 {},
164
+ }
165
+
144
166
var (
145
167
PrecompiledAddressesPrague []common.Address
146
168
PrecompiledAddressesCancun []common.Address
@@ -175,6 +197,8 @@ func activePrecompiledContracts(rules params.Rules) PrecompiledContracts {
175
197
switch {
176
198
case rules .IsVerkle :
177
199
return PrecompiledContractsVerkle
200
+ case rules .IsOsaka :
201
+ return PrecompiledContractsOsaka
178
202
case rules .IsPrague :
179
203
return PrecompiledContractsPrague
180
204
case rules .IsCancun :
0 commit comments