21 #include <boost/optional.hpp>
31 EVMSchedule(
bool _efcd,
bool _hdc,
unsigned const& _txCreateGas):
exceptionalFailedCodeDeposit(_efcd),
haveDelegateCall(_hdc),
tierStepGas(
std::array<unsigned, 8>{{0, 2, 3, 5, 8, 10, 20, 0}}),
txCreateGas(_txCreateGas) {}
89 static const EVMSchedule DefaultSchedule = EVMSchedule();
90 static const EVMSchedule FrontierSchedule = EVMSchedule(
false,
false, 21000);
91 static const EVMSchedule HomesteadSchedule = EVMSchedule(
true,
true, 53000);
93 static const EVMSchedule EIP150Schedule = []
95 EVMSchedule schedule = HomesteadSchedule;
97 schedule.extcodesizeGas = 700;
98 schedule.extcodecopyGas = 700;
99 schedule.balanceGas = 400;
100 schedule.sloadGas = 200;
101 schedule.callGas = 700;
102 schedule.suicideGas = 5000;
106 static const EVMSchedule EIP158Schedule = []
108 EVMSchedule schedule = EIP150Schedule;
110 schedule.eip158Mode =
true;
111 schedule.maxCodeSize = 0x6000;
115 static const EVMSchedule ByzantiumSchedule = []
117 EVMSchedule schedule = EIP158Schedule;
119 schedule.haveReturnData =
true;
120 schedule.haveStaticCall =
true;
121 schedule.blockRewardOverwrite = {3 * ether};
125 static const EVMSchedule EWASMSchedule = []
127 EVMSchedule schedule = ByzantiumSchedule;
128 schedule.
maxCodeSize = std::numeric_limits<unsigned>::max();
132 static const EVMSchedule ConstantinopleSchedule = []
134 EVMSchedule schedule = ByzantiumSchedule;
136 schedule.haveBitwiseShifting =
true;
137 schedule.haveExtcodehash =
true;
138 schedule.eip1283Mode =
true;
139 schedule.blockRewardOverwrite = {2 * ether};
143 static const EVMSchedule ConstantinopleFixSchedule = [] {
144 EVMSchedule schedule = ConstantinopleSchedule;
149 static const EVMSchedule ExperimentalSchedule = [] {
150 EVMSchedule schedule = ConstantinopleSchedule;