Pregunta 3

p2p: Replace per-peer transaction rate-limiting with global rate li...

> 17/04/2026 15:37
Pregunta 3 -> El PR introduce “dual token buckets”. ¿Qué es un TokenBucket?
24/04/2026 16:17
👋🏻 👋🏻 👋🏻
nebula 24/04/2026 16:17
Sirve para controlar la velocidad al a que ocurren acciones, el cubo se llena con tokens con un maximo fijado y cada acción consume un token. Si hay tokens todo normal, si no hay, se retrasa. El dual bucket de este PR consiste en un cubo que limita el num de tx y el otro el tamaño total. Creo que el primer cubo es para frenar la saturación de la CPU y el segundo la memoria.
❤️ 2 🔥 2 👍 2
Kepler 24/04/2026 16:18
En el pr se introducen dos buckets: total-size bucket (cunatos bytes puedes enviar, puede llegar a -50kB y se resta el tamño de la trasnacción) y per-tx bucket (cuantas tx puedes enviar. Por cada una se resta 1 hasta llegar a 0)
❤️ 2
arejula27 24/04/2026 16:18
mi duda es, el bucket se llena o se vacia?
🤣 1
Santochibtc 24/04/2026 16:19
¿Es básicamente un mecanismo para autolimitar el consumo de CPU?
arejula27 24/04/2026 16:20
perf
kruxelizea 24/04/2026 16:20
El TokenBucket Es un algorithmo para controlar el ritmo de tráfico o solicitudes no?
👍 3
> 24/04/2026 16:21

Si, se la asigna un “precio” (en tokens) por solicitud y se va rellenando automaticamente.

Alguien sabe como se actualiza?

👍 1
24/04/2026 16:21
Como se llena?
arejula27 24/04/2026 16:21
entiendo que por tiempo, cada 30 sec me suena
24/04/2026 16:22

per-tx bucket: rate 14tx/second, maximum capacity 420 (30 seconds’ worth)

👍 2
kruxelizea 24/04/2026 16:22
El bucket se vacía si tiene tokens en él conforme que llegan las solicitudes, una vez el bucket se vacía, este pone las solicitudes entrante en un backlog hasta que se haga refill
❤️ 1
Pol Espinasa 24/04/2026 16:22
En cada ciclo cuando se llama CatchupRelayTransactions() creo que se hace refill de tokens
❤️ 1
aj 24/04/2026 16:22
Los buckets de token son una forma de limitar la velocidad que también permite ráfagas cortas. El mismo enfoque se usa en cortafuegos de software: por ejemplo, “esta máquina virtual puede usar 10Mbit/s” (por Google Translate :))
❤️ 4
Santochibtc 24/04/2026 16:23
El método increment se llamará con una frecuencia determinada
Kepler 24/04/2026 16:23
Como yo lo entiendo, en nuestro caso el total-size bucket se llena de la memoria màxima que se puede consumir y per-tx del numero maximo de trasnacciones. Cada vez que haceos relay de una tx se resta su size y -1 respectivamente.
24/04/2026 16:23
Esto que digo es correcto? Es para confirmar que lo entiendo
aj 24/04/2026 16:24
Es más ancho de banda máximo (si tu servidor está limitado a 1TB/mes, por ejemplo) que la memoria. Mempool ya limita el uso de memoria.
👍 2
Pol Espinasa 24/04/2026 16:24
@aj cada cuando y como se rellena el bucket con tokens nuevos?
aj 24/04/2026 16:26
Cada vez que se llama a la función añade algunos tokens, según cuánto tiempo haya pasado desde la última vez ?
👍 4
24/04/2026 16:27
la 7
24/04/2026 16:29
avanzamos a la siguiente!
👍 2 🔥 1
aj 24/04/2026 16:30
también hay una recarga (“increment”) en “InitiateBroadcastTxToAll”
❤️ 1 👀 1