Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ledger query simplification #4461

Merged

Conversation

clemahieu
Copy link
Contributor

This PR merges the ledger::account/balance/amount variants in to a single function for each, returning an optional associated value.

The major advantage is a simplification in the nano::ledger interface and increased type-checking in values returned. Previously there were separate functions for assumed-correct function calls protected with debug_assert, and variants permitted to fail that returned error codes or sentinel values.

These changes replace each account/amount/balance with functions that return std::optional values for each associated type. Variants that used assumed-correct functions simply call std::optional::value, which does runtime value checking which increases correctness safety. Variants that used _safe variants or checked sentinel values are replaced with std::optional bool conversion checks and operate the same way.

nano/nano_node/entry.cpp Outdated Show resolved Hide resolved
nano/node/json_handler.cpp Show resolved Hide resolved
nano/node/json_handler.cpp Show resolved Hide resolved
nano/secure/ledger.cpp Outdated Show resolved Hide resolved
nano/secure/ledger.cpp Outdated Show resolved Hide resolved
@clemahieu clemahieu force-pushed the ledger_query_simplification branch 3 times, most recently from 66bffe2 to 13972dc Compare March 6, 2024 12:46
…single function returning an optional value.

This simplifies the ledger interface and uses safer std::optional to signal no value rather than a sentinel 0 value.
…if the previous hash is zero.

This removes a dependency on the behaviour of ledger::balance to return a sentinel value of 0 if the block hash cannot be found.
@clemahieu clemahieu force-pushed the ledger_query_simplification branch from 13972dc to 2810e4c Compare March 6, 2024 13:28
@clemahieu clemahieu merged commit 47d68ac into nanocurrency:develop Mar 6, 2024
23 of 27 checks passed
@qwahzi qwahzi added this to the V27 milestone Mar 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants