From eb49393eb751e8a65b4e242c63b56c581074b801 Mon Sep 17 00:00:00 2001 From: ReyisaRuby Date: Wed, 25 Jun 2025 13:29:23 +0800 Subject: [PATCH 1/2] Revert "fix (#405)" This reverts commit 7199a861ea04016ba83ea03b4b3cd5ed60225480. --- evm/eth.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/evm/eth.go b/evm/eth.go index 73ecf61..38ff8fd 100644 --- a/evm/eth.go +++ b/evm/eth.go @@ -28,6 +28,7 @@ import ( "github.com/yu-org/yu/core/tripod" yu_types "github.com/yu-org/yu/core/types" + "github.com/reddio-com/reddio/config" yuConfig "github.com/reddio-com/reddio/evm/config" "github.com/reddio-com/reddio/evm/pending_state" "github.com/reddio-com/reddio/metrics" @@ -507,8 +508,20 @@ func (s *Solidity) executeContractCall(ctx *context.WriteContext, txReq *TxReque // logrus.Printf("before transfer: account %s balance %d \n", sender.Address(), ethState.GetBalance(sender.Address())) code, leftOverGas, err := vmenv.Call(sender, *txReq.Address, txReq.Input, txReq.GasLimit, uint256.MustFromBig(txReq.Value)) - isPureTransferTxn := IsPureTransfer(sender, txReq, ethState) - ethState.SubBalance(sender.Address(), uint256.NewInt(0), tracing.BalanceChangeUnspecified) + isPureTransferTxn := false + if IsPureTransfer(sender, txReq, ethState) { + isPureTransferTxn = true + extraTransferGas := config.GlobalConfig.ExtraBalanceGas + if extraTransferGas > txReq.GasLimit { + extraTransferGas = txReq.GasLimit + } + ethState.SubBalance(sender.Address(), uint256.NewInt(extraTransferGas*txReq.GasPrice.Uint64()), tracing.BalanceChangeTransfer) + if leftOverGas >= extraTransferGas { + leftOverGas -= extraTransferGas + } else { + leftOverGas = 0 + } + } // logrus.Printf("after transfer: account %s balance %d \n", sender.Address(), ethState.GetBalance(sender.Address())) if err != nil { // byt, _ := json.Marshal(txReq) From 86e01a57868732aaab0b97bb4d57cd09244f9b42 Mon Sep 17 00:00:00 2001 From: ReyisaRuby Date: Wed, 25 Jun 2025 13:32:18 +0800 Subject: [PATCH 2/2] add log Signed-off-by: ReyisaRuby --- evm/eth.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/evm/eth.go b/evm/eth.go index 38ff8fd..3431c49 100644 --- a/evm/eth.go +++ b/evm/eth.go @@ -504,10 +504,9 @@ func (s *Solidity) executeContractCreation(ctx *context.WriteContext, txReq *TxR func (s *Solidity) executeContractCall(ctx *context.WriteContext, txReq *TxRequest, ethState *pending_state.PendingStateWrapper, origin, coinBase common.Address, vmenv *vm.EVM, sender vm.AccountRef, rules params.Rules) (uint64, error) { ethState.Prepare(rules, origin, coinBase, txReq.Address, vm.ActivePrecompiles(rules), nil) ethState.SetNonce(txReq.Origin, ethState.GetNonce(txReq.Origin)+1) - - // logrus.Printf("before transfer: account %s balance %d \n", sender.Address(), ethState.GetBalance(sender.Address())) - + senderBalanceBefore := ethState.GetBalance(sender.Address()) code, leftOverGas, err := vmenv.Call(sender, *txReq.Address, txReq.Input, txReq.GasLimit, uint256.MustFromBig(txReq.Value)) + senderBalanceAferExecute := ethState.GetBalance(sender.Address()) isPureTransferTxn := false if IsPureTransfer(sender, txReq, ethState) { isPureTransferTxn = true @@ -533,6 +532,10 @@ func (s *Solidity) executeContractCall(ctx *context.WriteContext, txReq *TxReque logrus.Errorf("contract call error, gasUsed:%v, gasLimit:%v, leftOver:%v, price:%v, isPureTransferTxn:%v, sender:%v", gasUsed, txReq.GasLimit, leftOverGas, txReq.GasPrice, isPureTransferTxn, sender.Address().String()) return gasUsed, err } + senderBalanceAfterExtra := ethState.GetBalance(sender.Address()) + logrus.Printf("contract call balance before:%v ,after execute:%v, after extra:%v, isPure:%v, sender:%v", + senderBalanceBefore.Uint64(), senderBalanceAferExecute.Uint64(), senderBalanceAfterExtra.Uint64(), isPureTransferTxn, sender.Address().String()) + _, err2 := emitReceipt(ctx, vmenv, txReq, code, common.Address{}, leftOverGas, err) // logrus.Printf("[Execute Txn] SendTx success. Oringin code = %v, Hex Code = %v, Left Gas = %v", code, hex.EncodeToString(code), leftOverGas) return txReq.GasLimit - leftOverGas, err2