dedis / dela

DEDIS Ledger Architecture
https://dedis.github.io/dela
BSD 3-Clause "New" or "Revised" License
17 stars 14 forks source link

Store API does not surface "key not found" errors #264

Open pierluca opened 1 year ago

pierluca commented 1 year ago

The core/store API indicates that nil should be returned when the key does not exist in the key/value store. This is a behaviour inherited from BBolt, but it's not the most natural implementation. BBolt makes this choice assuming that errors never happen, except for a "key not found", but this assumption may not hold for other stores. As a consequence, there are two error signals: the returned error and the value returned. This does not allow store users (smart contracts, ...) to cleanly manage the cases where a key does not exist. It would be much preferable (and more explicit) to return a sentinel error to indicate that the key was not found. This implies updating: