From eb097ffbd4a905cd6472a5218231bf56f7465c2e Mon Sep 17 00:00:00 2001 From: Karim Taam Date: Tue, 26 Nov 2024 22:40:07 +0700 Subject: [PATCH] fix sync issue (#7927) Signed-off-by: Karim Taam Signed-off-by: Gary Schulte --- .../evm/worldstate/UpdateTrackingAccount.java | 1 + .../besu/evm/worldstate/WorldUpdater.java | 27 ++----------------- 2 files changed, 3 insertions(+), 25 deletions(-) diff --git a/evm/src/main/java/org/hyperledger/besu/evm/worldstate/UpdateTrackingAccount.java b/evm/src/main/java/org/hyperledger/besu/evm/worldstate/UpdateTrackingAccount.java index 9f065aee98..f571ff2ff0 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/worldstate/UpdateTrackingAccount.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/worldstate/UpdateTrackingAccount.java @@ -128,6 +128,7 @@ public class UpdateTrackingAccount implements MutableAccount public void setWrappedAccount(final A account) { if (this.account == null) { this.account = account; + storageWasCleared = false; } else { throw new IllegalStateException("Already tracking a wrapped account"); } diff --git a/evm/src/main/java/org/hyperledger/besu/evm/worldstate/WorldUpdater.java b/evm/src/main/java/org/hyperledger/besu/evm/worldstate/WorldUpdater.java index 4cbda73279..9b57b6ab9e 100644 --- a/evm/src/main/java/org/hyperledger/besu/evm/worldstate/WorldUpdater.java +++ b/evm/src/main/java/org/hyperledger/besu/evm/worldstate/WorldUpdater.java @@ -24,8 +24,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Optional; -import org.apache.tuweni.bytes.Bytes; - /** * An object that buffers updates made over a particular {@link WorldView}. * @@ -75,29 +73,8 @@ public interface WorldUpdater extends MutableWorldView { * #createAccount(Address)} (and thus all his fields will be zero/empty). */ default MutableAccount getOrCreate(final Address address) { - MutableAccount account = getAccount(address); - if (account == null) { - account = createAccount(address); - if (parentUpdater().isPresent() && parentUpdater().get().isDeleted(address)) { - account.clearStorage(); - account.setCode(Bytes.EMPTY); - } - } - return account; - } - - /** - * Check this and parent updaters to see if an address has been deleted since the last persist - * - * @param address address to check - * @return true if any updaters have marked the address as deleted. - */ - default boolean isDeleted(final Address address) { - if (getDeletedAccountAddresses().contains(address)) { - return true; - } else { - return parentUpdater().map(wu -> wu.isDeleted(address)).orElse(false); - } + final MutableAccount account = getAccount(address); + return account == null ? createAccount(address) : account; } /**