diff --git a/include/balance_sheet.h b/include/balance_sheet.h index 387a6ad..20ca117 100644 --- a/include/balance_sheet.h +++ b/include/balance_sheet.h @@ -9,6 +9,7 @@ #include #include #include +#include #include typedef struct { diff --git a/include/utils.h b/include/utils.h new file mode 100644 index 0000000..b50fe98 --- /dev/null +++ b/include/utils.h @@ -0,0 +1,16 @@ +#ifndef UTILS_H +#define UTILS_H + +#include +#include +#include +#include + +static inline void AddressToHexString(const uint8_t address[32], char out[65]) { + if (!address || !out) { + return; + } + to_hex(address, out); +} + +#endif diff --git a/src/balance_sheet.c b/src/balance_sheet.c index 24e964d..d5b9532 100644 --- a/src/balance_sheet.c +++ b/src/balance_sheet.c @@ -90,7 +90,6 @@ void BalanceSheet_Print() { // Iterate through every entry khiter_t k; - size_t iter = 0; for (k = kh_begin(sheetMap); k != kh_end(sheetMap); ++k) { if (kh_exist(sheetMap, k)) { key32_t key = kh_key(sheetMap, k); @@ -99,12 +98,13 @@ void BalanceSheet_Print() { char balanceStr[80]; uint256_serialize(&val.balance, balanceStr); - printf("Sheet entry %llu: mapkey=%02x%02x%02x%02x... address=%02x%02x%02x%02x... balance=%s\n", - (unsigned long long)(iter), - key.bytes[0], key.bytes[1], key.bytes[2], key.bytes[3], - val.address[0], val.address[1], val.address[2], val.address[3], - balanceStr, - iter++); + char addrHex[65]; + AddressToHexString(key.bytes, addrHex); + + // Print full address + printf("Address %s: balance=%s pebble(s)\n", + addrHex, + balanceStr); } } } diff --git a/src/main.c b/src/main.c index 1af2e7a..a3d797e 100644 --- a/src/main.c +++ b/src/main.c @@ -11,6 +11,7 @@ #include #include + #include #include @@ -181,13 +182,6 @@ static bool ParseHexAddress32(const char* in, uint8_t outAddress[32]) { return true; } -static void AddressToHexString(const uint8_t address[32], char out[65]) { - if (!address || !out) { - return; - } - to_hex(address, out); -} - static bool FlushChainAndSheet(blockchain_t* chain, const char* chainDataDir, uint256_t currentSupply, @@ -653,6 +647,12 @@ int main(int argc, char* argv[]) { uint8_t* effectiveAddress = minerAddress; if (addressStr) { + if (strcmp(addressStr, "all") == 0) { + printf("All balances:\n"); + BalanceSheet_Print(); + continue; + } + if (!ParseHexAddress32(addressStr, queryAddress)) { printf("invalid address: expected 64 hex chars (optionally prefixed with 0x)\n"); continue;