diff --git a/src/Neo/Persistence/IReadOnlyStore.cs b/src/Neo/Persistence/IReadOnlyStore.cs
index 134b5b3ade..015a35a0a3 100644
--- a/src/Neo/Persistence/IReadOnlyStore.cs
+++ b/src/Neo/Persistence/IReadOnlyStore.cs
@@ -24,7 +24,7 @@ public interface IReadOnlyStore
///
/// The key(i.e. start key) or prefix to be sought.
/// The direction of seek.
- /// An enumerator containing all the entries after seeking.
+ /// An enumerator containing all the entries after (Forward) or before(Backward) seeking.
IEnumerable<(byte[] Key, byte[] Value)> Seek(byte[] keyOrPrefix, SeekDirection direction);
///
diff --git a/src/Plugins/LevelDBStore/IO/Data/LevelDB/Helper.cs b/src/Plugins/LevelDBStore/IO/Data/LevelDB/Helper.cs
index ff15c44377..de3e744750 100644
--- a/src/Plugins/LevelDBStore/IO/Data/LevelDB/Helper.cs
+++ b/src/Plugins/LevelDBStore/IO/Data/LevelDB/Helper.cs
@@ -20,6 +20,8 @@ public static class Helper
{
public static IEnumerable<(byte[], byte[])> Seek(this DB db, ReadOptions options, byte[] keyOrPrefix, SeekDirection direction)
{
+ if (keyOrPrefix == null) keyOrPrefix = [];
+
using Iterator it = db.CreateIterator(options);
if (direction == SeekDirection.Forward)
{
diff --git a/tests/Neo.Plugins.Storage.Tests/StoreTest.cs b/tests/Neo.Plugins.Storage.Tests/StoreTest.cs
index ac1c8dc5ce..025040af8f 100644
--- a/tests/Neo.Plugins.Storage.Tests/StoreTest.cs
+++ b/tests/Neo.Plugins.Storage.Tests/StoreTest.cs
@@ -301,6 +301,20 @@ private void TestStorage(IStore store)
CollectionAssert.AreEqual(new byte[] { 0x01 }, entries[0].Value);
CollectionAssert.AreEqual(new byte[] { 0x00, 0x00, 0x00 }, entries[1].Key);
CollectionAssert.AreEqual(new byte[] { 0x00 }, entries[1].Value);
+
+ // Seek null
+ entries = store.Seek(null, SeekDirection.Forward).ToArray();
+ Assert.AreEqual(3, entries.Length);
+ CollectionAssert.AreEqual(new byte[] { 0x00, 0x00, 0x00 }, entries[0].Key);
+ CollectionAssert.AreEqual(new byte[] { 0x00, 0x00, 0x01 }, entries[1].Key);
+ CollectionAssert.AreEqual(new byte[] { 0x00, 0x01, 0x02 }, entries[2].Key);
+
+ // Seek empty
+ entries = store.Seek([], SeekDirection.Forward).ToArray();
+ Assert.AreEqual(3, entries.Length);
+ CollectionAssert.AreEqual(new byte[] { 0x00, 0x00, 0x00 }, entries[0].Key);
+ CollectionAssert.AreEqual(new byte[] { 0x00, 0x00, 0x01 }, entries[1].Key);
+ CollectionAssert.AreEqual(new byte[] { 0x00, 0x01, 0x02 }, entries[2].Key);
}
}