From 35bbb3b3e62e785cae89091bd44187a5ca8c62c9 Mon Sep 17 00:00:00 2001 From: Joshua Colvin Date: Mon, 27 Jan 2025 15:05:20 -0700 Subject: [PATCH 1/3] fix for flatcalltracer originally just on v3.3.x branch fixes NIT-3071 Pulls in https://github.com/OffchainLabs/go-ethereum/pull/401 --- go-ethereum | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go-ethereum b/go-ethereum index cbb47d194b..4b72c5a0c6 160000 --- a/go-ethereum +++ b/go-ethereum @@ -1 +1 @@ -Subproject commit cbb47d194bd2e87322d35b09af36a83320345814 +Subproject commit 4b72c5a0c67e9f1309352ef8b340adfb8cd5488d From 9725b9dade4d0d379dfcd82a701c335b88f824c2 Mon Sep 17 00:00:00 2001 From: Tsahi Zidenberg Date: Mon, 27 Jan 2025 18:35:57 -0700 Subject: [PATCH 2/3] fix TestPrestateTracingSimple --- system_tests/debugapi_test.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/system_tests/debugapi_test.go b/system_tests/debugapi_test.go index fd1aa746a3..8e490df2b2 100644 --- a/system_tests/debugapi_test.go +++ b/system_tests/debugapi_test.go @@ -95,7 +95,7 @@ func TestPrestateTracingSimple(t *testing.T) { value := big.NewInt(1e6) tx := builder.L2Info.PrepareTx("Owner", "User2", builder.L2Info.TransferGas, value, nil) Require(t, builder.L2.Client.SendTransaction(ctx, tx)) - _, err = builder.L2.EnsureTxSucceeded(tx) + receipt, err := builder.L2.EnsureTxSucceeded(tx) Require(t, err) l2rpc := builder.L2.Stack.Attach() @@ -116,8 +116,11 @@ func TestPrestateTracingSimple(t *testing.T) { if !arbmath.BigEquals(result.Pre[receiver].Balance.ToInt(), user2OldBalance) { Fatal(t, "Unexpected initial balance of receiver") } - if !arbmath.BigEquals(result.Post[sender].Balance.ToInt(), arbmath.BigSub(ownerOldBalance, value)) { - Fatal(t, "Unexpected final balance of sender") + expBalance := arbmath.BigSub(ownerOldBalance, value) + gas := arbmath.BigMulByUint(receipt.EffectiveGasPrice, receipt.GasUsed) + expBalance = arbmath.BigSub(expBalance, gas) + if !arbmath.BigEquals(result.Post[sender].Balance.ToInt(), expBalance) { + Fatal(t, "Unexpected final balance of sender ", "expected: ", expBalance, " got: ", result.Post[sender].Balance.ToInt(), " diff: ", arbmath.BigSub(result.Post[sender].Balance.ToInt(), expBalance), " gas: ", receipt.GasUsed) } if !arbmath.BigEquals(result.Post[receiver].Balance.ToInt(), value) { Fatal(t, "Unexpected final balance of receiver") From 8466b01682799c22ad6e280ed2df5457ec51efc8 Mon Sep 17 00:00:00 2001 From: Tsahi Zidenberg Date: Mon, 27 Jan 2025 19:38:21 -0700 Subject: [PATCH 3/3] further fix TestPrestateTracingSimple --- system_tests/debugapi_test.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/system_tests/debugapi_test.go b/system_tests/debugapi_test.go index 8e490df2b2..1cc466fff2 100644 --- a/system_tests/debugapi_test.go +++ b/system_tests/debugapi_test.go @@ -120,7 +120,12 @@ func TestPrestateTracingSimple(t *testing.T) { gas := arbmath.BigMulByUint(receipt.EffectiveGasPrice, receipt.GasUsed) expBalance = arbmath.BigSub(expBalance, gas) if !arbmath.BigEquals(result.Post[sender].Balance.ToInt(), expBalance) { - Fatal(t, "Unexpected final balance of sender ", "expected: ", expBalance, " got: ", result.Post[sender].Balance.ToInt(), " diff: ", arbmath.BigSub(result.Post[sender].Balance.ToInt(), expBalance), " gas: ", receipt.GasUsed) + Fatal(t, "Unexpected final balance of sender") + } + onchain, err := builder.L2.Client.BalanceAt(ctx, sender, receipt.BlockNumber) + Require(t, err) + if !arbmath.BigEquals(result.Post[sender].Balance.ToInt(), onchain) { + Fatal(t, "Final balance of sender does not fit chain") } if !arbmath.BigEquals(result.Post[receiver].Balance.ToInt(), value) { Fatal(t, "Unexpected final balance of receiver")