@@ -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 }
@@ -208,38 +211,29 @@ GasMeter::GasConsumption GasMeter::estimateMax(AssemblyItem const& _item, bool _
208211 case Instruction::ISCONTRACT:
209212 gas = GasCosts::balanceGas (m_evmVersion);
210213 break ;
211- case Instruction::NATIVEFREEZE:
212- gas = runGas (Instruction::NATIVEFREEZE, m_evmVersion);
213- break ;
214- case Instruction::NATIVEUNFREEZE:
215- gas = runGas (Instruction::NATIVEUNFREEZE, m_evmVersion);
216- break ;
217- case Instruction::NATIVEFREEZEEXPIRETIME:
218- gas = runGas (Instruction::NATIVEFREEZEEXPIRETIME, m_evmVersion);
219- break ;
214+ case Instruction::NATIVEFREEZE:
215+ gas = GasCosts::freezeV1Gas;
216+ gas += GasCosts::callNewAccountGas;
217+ break ;
218+ case Instruction::NATIVEUNFREEZE:
219+ gas = GasCosts::freezeV1Gas;
220+ break ;
221+ case Instruction::NATIVEFREEZEEXPIRETIME:
222+ gas = GasCosts::expireTimeGas;
223+ 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);
228- break ;
229231 case Instruction::NATIVEUNFREEZEBALANCEV2:
230- gas = runGas (Instruction::NATIVEUNFREEZEBALANCEV2, m_evmVersion);
231- break ;
232- case Instruction::NATIVECANCELALLUNFREEZEV2:
233- gas = runGas (Instruction::NATIVECANCELALLUNFREEZEV2, m_evmVersion);
234- break ;
232+ case Instruction::NATIVECANCELALLUNFREEZEV2:
235233 case Instruction::NATIVEWITHDRAWEXPIREUNFREEZE:
236- gas = runGas (Instruction::NATIVEWITHDRAWEXPIREUNFREEZE, m_evmVersion);
237- break ;
238234 case Instruction::NATIVEDELEGATERESOURCE:
239- gas = runGas (Instruction::NATIVEDELEGATERESOURCE, m_evmVersion);
240- break ;
241235 case Instruction::NATIVEUNDELEGATERESOURCE:
242- gas = runGas (Instruction::NATIVEUNDELEGATERESOURCE, m_evmVersion) ;
236+ gas = GasCosts::freezeV2Gas ;
243237 break ;
244238 case Instruction::CHAINID:
245239 gas = runGas (Instruction::CHAINID, m_evmVersion);
0 commit comments