fix issue with constant bytes values slicing
diff --git a/bytes/src/main/java/org/apache/tuweni/bytes/ConstantBytes32Value.java b/bytes/src/main/java/org/apache/tuweni/bytes/ConstantBytes32Value.java
index e503559..7a007e2 100644
--- a/bytes/src/main/java/org/apache/tuweni/bytes/ConstantBytes32Value.java
+++ b/bytes/src/main/java/org/apache/tuweni/bytes/ConstantBytes32Value.java
@@ -38,7 +38,10 @@
 
   @Override
   public Bytes slice(int i, int length) {
-    return new ConstantBytes32Value(this.value);
+    if (length == 32) {
+      return this;
+    }
+    return new ConstantBytesValue(this.value, length);
   }
 
   @Override
diff --git a/bytes/src/test/java/org/apache/tuweni/bytes/Bytes32Test.java b/bytes/src/test/java/org/apache/tuweni/bytes/Bytes32Test.java
index 0a7fc20..d7de6a1 100644
--- a/bytes/src/test/java/org/apache/tuweni/bytes/Bytes32Test.java
+++ b/bytes/src/test/java/org/apache/tuweni/bytes/Bytes32Test.java
@@ -28,6 +28,16 @@
   }
 
   @Test
+  void constantBytes32slice() {
+    assertEquals(Bytes32.ZERO.slice(12, 20).size(), 20);
+  }
+
+  @Test
+  void constantBytesslice() {
+    assertEquals(Bytes.repeat((byte) 1, 63).slice(12, 20).size(), 20);
+  }
+
+  @Test
   void testMutableBytes32WrapWithOffset() {
     Bytes bytes = Bytes
         .fromHexString(