diff --git a/hedera-mirror-web3/src/main/java/com/hedera/mirror/web3/state/keyvalue/ContractStorageReadableKVState.java b/hedera-mirror-web3/src/main/java/com/hedera/mirror/web3/state/keyvalue/ContractStorageReadableKVState.java index 5011774525..0c2297986b 100644 --- a/hedera-mirror-web3/src/main/java/com/hedera/mirror/web3/state/keyvalue/ContractStorageReadableKVState.java +++ b/hedera-mirror-web3/src/main/java/com/hedera/mirror/web3/state/keyvalue/ContractStorageReadableKVState.java @@ -2,6 +2,8 @@ package com.hedera.mirror.web3.state.keyvalue; +import static com.hedera.mirror.common.util.DomainUtils.leftPadBytes; + import com.hedera.hapi.node.state.contract.SlotKey; import com.hedera.hapi.node.state.contract.SlotValue; import com.hedera.mirror.web3.common.ContractCallContext; @@ -10,6 +12,7 @@ import com.hedera.services.utils.EntityIdUtils; import jakarta.annotation.Nonnull; import jakarta.inject.Named; +import org.apache.tuweni.bytes.Bytes32; @Named public class ContractStorageReadableKVState extends AbstractReadableKVState { @@ -35,7 +38,8 @@ protected SlotValue readFromDataSource(@Nonnull SlotKey slotKey) { return timestamp .map(t -> contractStateRepository.findStorageByBlockTimestamp(entityId, keyBytes, t)) .orElse(contractStateRepository.findStorage(entityId, keyBytes)) - .map(byteArr -> new SlotValue(Bytes.wrap(byteArr), Bytes.EMPTY, Bytes.EMPTY)) + .map(byteArr -> + new SlotValue(Bytes.wrap(leftPadBytes(byteArr, Bytes32.SIZE)), Bytes.EMPTY, Bytes.EMPTY)) .orElse(null); } } diff --git a/hedera-mirror-web3/src/test/java/com/hedera/mirror/web3/state/keyvalue/ContractStorageReadableKVStateTest.java b/hedera-mirror-web3/src/test/java/com/hedera/mirror/web3/state/keyvalue/ContractStorageReadableKVStateTest.java index 20fdbc9ed6..e46aedc849 100644 --- a/hedera-mirror-web3/src/test/java/com/hedera/mirror/web3/state/keyvalue/ContractStorageReadableKVStateTest.java +++ b/hedera-mirror-web3/src/test/java/com/hedera/mirror/web3/state/keyvalue/ContractStorageReadableKVStateTest.java @@ -2,6 +2,7 @@ package com.hedera.mirror.web3.state.keyvalue; +import static com.hedera.mirror.common.util.DomainUtils.leftPadBytes; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyLong; @@ -19,6 +20,7 @@ import com.hedera.pbj.runtime.io.buffer.Bytes; import java.util.Collections; import java.util.Optional; +import org.apache.tuweni.bytes.Bytes32; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; @@ -35,7 +37,7 @@ class ContractStorageReadableKVStateTest { private static final ContractID CONTRACT_ID = new ContractID(1L, 0L, new OneOf<>(ContractOneOfType.CONTRACT_NUM, 1L)); - private static final Bytes BYTES = Bytes.fromBase64("123456"); + private static final Bytes BYTES = Bytes.wrap(leftPadBytes("123456".getBytes(), Bytes32.SIZE)); private static final SlotKey SLOT_KEY = new SlotKey(CONTRACT_ID, BYTES); private static final EntityId ENTITY_ID = EntityId.of(CONTRACT_ID.shardNum(), CONTRACT_ID.realmNum(), CONTRACT_ID.contractNum());