@@ -173,8 +173,11 @@ GasMeter::GasConsumption GasMeter::estimateMax(AssemblyItem const& _item, bool _
173173 valueSize = 0 ;
174174 else if (!classes.knownZero (m_state->relativeStackElement (-1 - valueSize)))
175175 gas += GasCosts::callValueTransferGas;
176- gas += memoryGas (-2 - valueSize, -3 - valueSize);
177- gas += memoryGas (-4 - valueSize, -5 - valueSize);
176+ int tokenIdSize = 0 ;
177+ if (_item.instruction () == Instruction::CALLTOKEN)
178+ tokenIdSize = 1 ;
179+ gas += memoryGas (-2 - valueSize - tokenIdSize, -3 - valueSize - tokenIdSize);
180+ gas += memoryGas (-4 - valueSize - tokenIdSize, -5 - valueSize - tokenIdSize);
178181 }
179182 break ;
180183 }
@@ -212,38 +215,29 @@ GasMeter::GasConsumption GasMeter::estimateMax(AssemblyItem const& _item, bool _
212215 case Instruction::ISCONTRACT:
213216 gas = GasCosts::balanceGas (m_evmVersion);
214217 break ;
215- case Instruction::NATIVEFREEZE:
216- gas = runGas (Instruction::NATIVEFREEZE, m_evmVersion);
217- break ;
218- case Instruction::NATIVEUNFREEZE:
219- gas = runGas (Instruction::NATIVEUNFREEZE, m_evmVersion);
220- break ;
221- case Instruction::NATIVEFREEZEEXPIRETIME:
222- gas = runGas (Instruction::NATIVEFREEZEEXPIRETIME, m_evmVersion);
223- break ;
218+ case Instruction::NATIVEFREEZE:
219+ gas = GasCosts::freezeV1Gas;
220+ gas += GasCosts::callNewAccountGas;
221+ break ;
222+ case Instruction::NATIVEUNFREEZE:
223+ gas = GasCosts::freezeV1Gas;
224+ break ;
225+ case Instruction::NATIVEFREEZEEXPIRETIME:
226+ gas = GasCosts::expireTimeGas;
227+ break ;
224228 case Instruction::NATIVEVOTE:
225- gas = runGas (Instruction::NATIVEVOTE, m_evmVersion) ;
229+ gas = GasCosts::voteGas ;
226230 break ;
227231 case Instruction::NATIVEWITHDRAWREWARD:
228- gas = runGas (Instruction::NATIVEWITHDRAWREWARD, m_evmVersion) ;
232+ gas = GasCosts::withdrawGas ;
229233 break ;
230234 case Instruction::NATIVEFREEZEBALANCEV2:
231- gas = runGas (Instruction::NATIVEFREEZEBALANCEV2, m_evmVersion);
232- break ;
233235 case Instruction::NATIVEUNFREEZEBALANCEV2:
234- gas = runGas (Instruction::NATIVEUNFREEZEBALANCEV2, m_evmVersion);
235- break ;
236- case Instruction::NATIVECANCELALLUNFREEZEV2:
237- gas = runGas (Instruction::NATIVECANCELALLUNFREEZEV2, m_evmVersion);
238- break ;
236+ case Instruction::NATIVECANCELALLUNFREEZEV2:
239237 case Instruction::NATIVEWITHDRAWEXPIREUNFREEZE:
240- gas = runGas (Instruction::NATIVEWITHDRAWEXPIREUNFREEZE, m_evmVersion);
241- break ;
242238 case Instruction::NATIVEDELEGATERESOURCE:
243- gas = runGas (Instruction::NATIVEDELEGATERESOURCE, m_evmVersion);
244- break ;
245239 case Instruction::NATIVEUNDELEGATERESOURCE:
246- gas = runGas (Instruction::NATIVEUNDELEGATERESOURCE, m_evmVersion) ;
240+ gas = GasCosts::freezeV2Gas ;
247241 break ;
248242 case Instruction::CHAINID:
249243 gas = runGas (Instruction::CHAINID, m_evmVersion);
0 commit comments