@@ -154,19 +154,24 @@ func TobinTransfer(evm *vm.EVM, sender, recipient common.Address, amount *big.In
154
154
defer func () { evm .SetDebug (true ) }()
155
155
}
156
156
157
- if amount .Cmp (big .NewInt (0 )) != 0 {
158
- caller := & SharedEVMRunner {evm }
159
- tax , taxRecipient , err := reserve .ComputeTobinTax (caller , sender , amount )
160
- if err == nil {
161
- Transfer (evm .StateDB , sender , recipient , new (big.Int ).Sub (amount , tax ))
162
- Transfer (evm .StateDB , sender , taxRecipient , tax )
163
- return
164
- } else {
165
- log .Error ("Failed to get tobin tax" , "error" , err )
157
+ // Only deduct tobin tax before the g hardfork
158
+ if evm .ChainConfig ().IsGFork (evm .Context .BlockNumber ) {
159
+ Transfer (evm .StateDB , sender , recipient , amount )
160
+ } else {
161
+ if amount .Cmp (big .NewInt (0 )) != 0 {
162
+ caller := & SharedEVMRunner {evm }
163
+ tax , taxRecipient , err := reserve .ComputeTobinTax (caller , sender , amount )
164
+ if err == nil {
165
+ Transfer (evm .StateDB , sender , recipient , new (big.Int ).Sub (amount , tax ))
166
+ Transfer (evm .StateDB , sender , taxRecipient , tax )
167
+ return
168
+ } else {
169
+ log .Error ("Failed to get tobin tax" , "error" , err )
170
+ }
166
171
}
167
- }
168
172
169
- // Complete a normal transfer if the amount is 0 or the tobin tax value is unable to be fetched and parsed.
170
- // We transfer even when the amount is 0 because state trie clearing [EIP161] is necessary at the end of a transaction
171
- Transfer (evm .StateDB , sender , recipient , amount )
173
+ // Complete a normal transfer if the amount is 0 or the tobin tax value is unable to be fetched and parsed.
174
+ // We transfer even when the amount is 0 because state trie clearing [EIP161] is necessary at the end of a transaction
175
+ Transfer (evm .StateDB , sender , recipient , amount )
176
+ }
172
177
}
0 commit comments