go-algorand icon indicating copy to clipboard operation
go-algorand copied to clipboard

Optimize redundant proposal generation

Open tsachiherman opened this issue 5 years ago • 0 comments

Summary

Currently, the agreement service is attempting to create a proposal if a node has participation keys. Once a proposal is created and signed, it attempts to verify the signature on the proposal. If the signature is invalid ( i.e. the node was not elected to make the proposal ), the proposal is dropped.

Scope/Requirements:

The goal of this task is to perform the testing whether we need to make a proposal before attempting to make it. If we don't need to make a proposal, we should quit right away. The testing of whether we'd want to make a proposal should still be executed is a background go-routine, but no attempt to make a proposal should be made. Relays can maintain a pool but shouldn't call generateBlock

Reason for priority

This issue could be part of the performance project that we're working on - and this is where its priority is. Past attempts shown that it gained up to 10% on payment transactions, but it's unknown if this still holds true.

tl;dr: NPNs and relays currently waste CPU trying to create proposals. Stop doing this. Perf enhancement

Proposal generation should be conditional on if your node has online accounts.

tsachiherman avatar Dec 03 '19 16:12 tsachiherman