@@ -169,8 +169,11 @@ GasMeter::GasConsumption GasMeter::estimateMax(AssemblyItem const& _item, bool _
169169 valueSize = 0 ;
170170 else if (!classes.knownZero (m_state->relativeStackElement (-1 - valueSize)))
171171 gas += GasCosts::callValueTransferGas;
172- gas += memoryGas (-2 - valueSize, -3 - valueSize);
173- gas += memoryGas (-4 - valueSize, -5 - valueSize);
172+ int tokenIdSize = 0 ;
173+ if (_item.instruction () == Instruction::CALLTOKEN)
174+ tokenIdSize += 1 ;
175+ gas += memoryGas (-2 - valueSize - tokenIdSize, -3 - valueSize - tokenIdSize);
176+ gas += memoryGas (-4 - valueSize - tokenIdSize, -5 - valueSize - tokenIdSize);
174177 }
175178 break ;
176179 }
@@ -209,37 +212,38 @@ GasMeter::GasConsumption GasMeter::estimateMax(AssemblyItem const& _item, bool _
209212 gas = GasCosts::balanceGas (m_evmVersion);
210213 break ;
211214 case Instruction::NATIVEFREEZE:
212- gas = runGas (Instruction::NATIVEFREEZE, m_evmVersion);
215+ gas = GasCosts::freezeV1Gas;
216+ gas += GasCosts::callNewAccountGas;
213217 break ;
214218 case Instruction::NATIVEUNFREEZE:
215- gas = runGas (Instruction::NATIVEUNFREEZE, m_evmVersion) ;
219+ gas = GasCosts::freezeV1Gas ;
216220 break ;
217221 case Instruction::NATIVEFREEZEEXPIRETIME:
218- gas = runGas (Instruction::NATIVEFREEZEEXPIRETIME, m_evmVersion) ;
222+ gas = GasCosts::expireTimeGas ;
219223 break ;
220224 case Instruction::NATIVEVOTE:
221- gas = runGas (Instruction::NATIVEVOTE, m_evmVersion) ;
225+ gas = GasCosts::voteGas ;
222226 break ;
223227 case Instruction::NATIVEWITHDRAWREWARD:
224- gas = runGas (Instruction::NATIVEWITHDRAWREWARD, m_evmVersion) ;
228+ gas = GasCosts::withdrawGas ;
225229 break ;
226230 case Instruction::NATIVEFREEZEBALANCEV2:
227- gas = runGas (Instruction::NATIVEFREEZEBALANCEV2, m_evmVersion) ;
231+ gas = GasCosts::freezeV2Gas ;
228232 break ;
229233 case Instruction::NATIVEUNFREEZEBALANCEV2:
230- gas = runGas (Instruction::NATIVEUNFREEZEBALANCEV2, m_evmVersion) ;
234+ gas = GasCosts::freezeV2Gas ;
231235 break ;
232236 case Instruction::NATIVECANCELALLUNFREEZEV2:
233- gas = runGas (Instruction::NATIVECANCELALLUNFREEZEV2, m_evmVersion) ;
237+ gas = GasCosts::freezeV2Gas ;
234238 break ;
235239 case Instruction::NATIVEWITHDRAWEXPIREUNFREEZE:
236- gas = runGas (Instruction::NATIVEWITHDRAWEXPIREUNFREEZE, m_evmVersion) ;
240+ gas = GasCosts::freezeV2Gas ;
237241 break ;
238242 case Instruction::NATIVEDELEGATERESOURCE:
239- gas = runGas (Instruction::NATIVEDELEGATERESOURCE, m_evmVersion) ;
243+ gas = GasCosts::freezeV2Gas ;
240244 break ;
241245 case Instruction::NATIVEUNDELEGATERESOURCE:
242- gas = runGas (Instruction::NATIVEUNDELEGATERESOURCE, m_evmVersion) ;
246+ gas = GasCosts::freezeV2Gas ;
243247 break ;
244248 case Instruction::CHAINID:
245249 gas = runGas (Instruction::CHAINID, m_evmVersion);
0 commit comments