hiero-ledger / hiero-ledger/hiero-consensus-node

Maintain per-node throttles on each individual node

Open
#7,566 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
406
Forks
226
Avg merge
3d 4h
Merged PRs (30d)
210

Description

Each individual node maintains its own throttle. On Ingest, this is the only throttle that is used (each node throttles its own intake of new transactions). Each node also uses a throttle during `handle` and if the aggregate of all transactions from all nodes exceeds some percent of this throttle, then congestion pricing kicks in.

What we should also do, is have each node keep track of the throttles in a deterministic way *in state* based on transactions per consensus time, such that each node knows what the throttle count is for each other node. In this way, if any one node is exceeding its throttle limits (with a grace period / burst period 2x of the normal burst period settings), then the transaction is rejected and the node pays, since it failed in due-diligence.

Contributor guide

Open the contributing guide

Research direction

Start by tracing the existing throttle handling for Ingest and handle, then inspect how consensus state records transactions per consensus time. Define how deterministic per-node throttle counts and the 2x grace or burst period should be represented and enforced. Done means every node can identify another node exceeding its limit and reject the transaction with the specified payer behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
distributed-systems, performance
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.