diff --git a/src/Nethermind/Nethermind.Taiko.Test/TaikoExtendedEthModuleTests.cs b/src/Nethermind/Nethermind.Taiko.Test/TaikoExtendedEthModuleTests.cs index 7d73311c7355..d6b28a67760c 100644 --- a/src/Nethermind/Nethermind.Taiko.Test/TaikoExtendedEthModuleTests.cs +++ b/src/Nethermind/Nethermind.Taiko.Test/TaikoExtendedEthModuleTests.cs @@ -78,4 +78,37 @@ public void TestL1OriginById_WithBuildPayloadArgsId() rpc.taiko_l1OriginByID(0).Result.Data.Should().Be(origin); } + + [Test] + public void TestL1OriginById_ValueHash256_EvenLengthHex() + { + IL1OriginStore originStore = Substitute.For(); + TaikoExtendedEthModule rpc = new TaikoExtendedEthModule(new SyncConfig(), originStore); + int expectedLengthInChars = Hash256.Size * 2 + 2; + + // Create odd length hash values + var l2BlockHash = new Hash256("0x35a48c5b3ee5b1b2a365fcd1aa68c738d1c06474578087a78fa79dd45de6214"); + var l1BlockHash = new Hash256("0x2daf7e4b06ca2d3a82c775d9e9ad0c973545a608684146cda0df5f7d71188a5"); + + L1Origin origin = new L1Origin(0, l2BlockHash, 1, l1BlockHash, null); + originStore.ReadL1Origin((UInt256)0).Returns(origin); + + var result = rpc.taiko_l1OriginByID(0).Result.Data; + result.Should().Be(origin); + + // Serialize the RPC result and verify hash values have even-length hex string + var serializer = new Serialization.Json.EthereumJsonSerializer(); + var json = serializer.Serialize(result); + + // Parse the JSON to extract the hash values + var jsonDoc = System.Text.Json.JsonDocument.Parse(json); + var l2BlockHashString = jsonDoc.RootElement.GetProperty("l2BlockHash").GetString(); + var l1BlockHashString = jsonDoc.RootElement.GetProperty("l1BlockHash").GetString(); + + l2BlockHashString.Should().NotBeNull(); + l2BlockHashString!.Length.Should().Be(expectedLengthInChars); + + l1BlockHashString.Should().NotBeNull(); + l1BlockHashString!.Length.Should().Be(expectedLengthInChars); + } } diff --git a/src/Nethermind/Nethermind.Taiko/L1Origin.cs b/src/Nethermind/Nethermind.Taiko/L1Origin.cs index c145af481bac..713c07dbe59f 100644 --- a/src/Nethermind/Nethermind.Taiko/L1Origin.cs +++ b/src/Nethermind/Nethermind.Taiko/L1Origin.cs @@ -6,10 +6,10 @@ namespace Nethermind.Taiko; -public class L1Origin(UInt256 blockId, ValueHash256? l2BlockHash, long l1BlockHeight, Hash256 l1BlockHash, int[]? buildPayloadArgsId) +public class L1Origin(UInt256 blockId, Hash256? l2BlockHash, long l1BlockHeight, Hash256 l1BlockHash, int[]? buildPayloadArgsId) { public UInt256 BlockId { get; set; } = blockId; - public ValueHash256? L2BlockHash { get; set; } = l2BlockHash; + public Hash256? L2BlockHash { get; set; } = l2BlockHash; public long L1BlockHeight { get; set; } = l1BlockHeight; public Hash256 L1BlockHash { get; set; } = l1BlockHash;