quality-of-life improvements, lower client slave thread stack to 512KB (maybe still too much), dynamic fullverify - freeing transactions after verification

This commit is contained in:
2026-04-23 21:34:12 +02:00
parent 9c99eec3a8
commit a89a912898
8 changed files with 26 additions and 3 deletions

View File

@@ -85,7 +85,7 @@ bool Transaction_Verify(const signed_transaction_t* tx) {
// If all checks pass, verify the signature
return Crypto_VerifySignature(
txHash,
sizeof(transaction_t),
32,
tx->signature.signature,
tx->transaction.compressedPublicKey
);

View File

@@ -416,6 +416,11 @@ static bool VerifyChainFully(blockchain_t* chain) {
if (memcmp(blk->header.merkleRoot, expectedMerkle, sizeof(expectedMerkle)) != 0) {
return false;
}
// Transactions are persisted on disk. Once this block is fully verified,
// release its in-memory transaction list to reduce peak memory usage.
DynArr_destroy(blk->transactions);
blk->transactions = NULL;
}
return true;

View File

@@ -126,12 +126,18 @@ int TcpClient_Connect(
client->on_connect(conn);
}
if (pthread_create(&conn->ioThread, NULL, TcpClient_ThreadProc, client) != 0) {
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setstacksize(&attr, TCP_THREAD_STACK_SIZE);
if (pthread_create(&conn->ioThread, &attr, TcpClient_ThreadProc, client) != 0) {
TcpConnection_Destroy(conn);
free(conn);
client->connection = NULL;
pthread_attr_destroy(&attr);
return -1;
}
pthread_attr_destroy(&attr);
return 0;
}

View File

@@ -144,11 +144,17 @@ static void* TcpServer_threadprocess(void* ptr) {
arg->clientPtr = heapCli;
arg->serverPtr = svr;
if (pthread_create(&heapCli->ioThread, NULL, TcpServer_clientthreadprocess, arg) != 0) {
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setstacksize(&attr, TCP_THREAD_STACK_SIZE);
if (pthread_create(&heapCli->ioThread, &attr, TcpServer_clientthreadprocess, arg) != 0) {
free(arg);
TcpServer_Disconnect(svr, heapCli);
pthread_attr_destroy(&attr);
continue;
}
pthread_attr_destroy(&attr);
}
return NULL;