'balance all' command

This commit is contained in:
2026-04-23 22:10:14 +02:00
parent d962194334
commit accdeebee8
4 changed files with 31 additions and 14 deletions

View File

@@ -9,6 +9,7 @@
#include <khash/khash.h> #include <khash/khash.h>
#include <crypto/crypto.h> #include <crypto/crypto.h>
#include <string.h> #include <string.h>
#include <utils.h>
#include <uint256.h> #include <uint256.h>
typedef struct { typedef struct {

16
include/utils.h Normal file
View File

@@ -0,0 +1,16 @@
#ifndef UTILS_H
#define UTILS_H
#include <stdint.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
static inline void AddressToHexString(const uint8_t address[32], char out[65]) {
if (!address || !out) {
return;
}
to_hex(address, out);
}
#endif

View File

@@ -90,7 +90,6 @@ void BalanceSheet_Print() {
// Iterate through every entry // Iterate through every entry
khiter_t k; khiter_t k;
size_t iter = 0;
for (k = kh_begin(sheetMap); k != kh_end(sheetMap); ++k) { for (k = kh_begin(sheetMap); k != kh_end(sheetMap); ++k) {
if (kh_exist(sheetMap, k)) { if (kh_exist(sheetMap, k)) {
key32_t key = kh_key(sheetMap, k); key32_t key = kh_key(sheetMap, k);
@@ -99,12 +98,13 @@ void BalanceSheet_Print() {
char balanceStr[80]; char balanceStr[80];
uint256_serialize(&val.balance, balanceStr); uint256_serialize(&val.balance, balanceStr);
printf("Sheet entry %llu: mapkey=%02x%02x%02x%02x... address=%02x%02x%02x%02x... balance=%s\n", char addrHex[65];
(unsigned long long)(iter), AddressToHexString(key.bytes, addrHex);
key.bytes[0], key.bytes[1], key.bytes[2], key.bytes[3],
val.address[0], val.address[1], val.address[2], val.address[3], // Print full address
balanceStr, printf("Address %s: balance=%s pebble(s)\n",
iter++); addrHex,
balanceStr);
} }
} }
} }

View File

@@ -11,6 +11,7 @@
#include <signal.h> #include <signal.h>
#include <balance_sheet.h> #include <balance_sheet.h>
#include <constants.h> #include <constants.h>
#include <autolykos2/autolykos2.h> #include <autolykos2/autolykos2.h>
@@ -181,13 +182,6 @@ static bool ParseHexAddress32(const char* in, uint8_t outAddress[32]) {
return true; 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, static bool FlushChainAndSheet(blockchain_t* chain,
const char* chainDataDir, const char* chainDataDir,
uint256_t currentSupply, uint256_t currentSupply,
@@ -653,6 +647,12 @@ int main(int argc, char* argv[]) {
uint8_t* effectiveAddress = minerAddress; uint8_t* effectiveAddress = minerAddress;
if (addressStr) { if (addressStr) {
if (strcmp(addressStr, "all") == 0) {
printf("All balances:\n");
BalanceSheet_Print();
continue;
}
if (!ParseHexAddress32(addressStr, queryAddress)) { if (!ParseHexAddress32(addressStr, queryAddress)) {
printf("invalid address: expected 64 hex chars (optionally prefixed with 0x)\n"); printf("invalid address: expected 64 hex chars (optionally prefixed with 0x)\n");
continue; continue;