¿Por qué no se agregan saldos a las transacciones?

Hasta donde yo sé, debe viajar a través de toda la cadena de bloques para verificar su saldo. ¿Seguro que sumar los saldos del remitente y del receptor a cada transacción sería más fácil? Si se incluyen los saldos, y después de 6 bloques una transacción se considera "final", ¿por qué entonces no podemos retroceder 6 bloques y mirar el saldo allí para verificarlo, en lugar de viajar de regreso al bloque génesis?

Respuestas (1)

En primer lugar, el espacio de la cadena de bloques es escaso, ya que cada nodo tiene que almacenarlo todo para siempre. Entonces, en general, es mejor no almacenar información redundante en la cadena de bloques y dejar que cada nodo la calcule.

En segundo lugar, el "saldo" en una dirección puede verse afectado por múltiples transacciones que no necesariamente están ordenadas entre sí. Suponga que la dirección 123abc inicialmente no tiene transacciones entrantes, por lo que su saldo es 0. Ahora suponga que Alice decide enviar 1 BTC a esa dirección. Entonces, según su lógica, su transacción debería mostrar el "saldo final" de la dirección como 1 BTC. Simultáneamente, y sin conocimiento de lo que Alice está haciendo, Bob envía 2 BTC a esa dirección y, naturalmente, su transacción muestra el saldo final como 2 BTC. Pero el saldo final "verdadero" es de 3 BTC, por lo que sus declaraciones sobre el saldo final son incorrectas. Así que cualquiera que quiera saber el verdadero saldo final tiene que calcularlo él mismo de todos modos, y no puede confiar en los números de la transacción.

Para que esto funcione, necesitaría algún tipo de regla que no pueda enviar más monedas a una dirección hasta que la transacción anterior tenga cierta cantidad de confirmaciones. Esto sería completamente impráctico para las direcciones que se supone que reciben muchas transacciones entrantes (piense en una dirección de donación en un sitio web popular). También significaría que un atacante que conoce su dirección podría evitar que reciba una transacción importante enviándole muchas transacciones pequeñas que tendría que confirmar una por una.

No olvides que esto rompería el pseudo-anonimato que ofrece bitcoin. Tendría que reutilizar las direcciones para que esa dirección tenga un saldo actual. Alternativamente, la cadena de bloques podría realizar un seguimiento de qué direcciones pertenecen a qué billetera para mantener un equilibrio, pero nuevamente... esto rompe el anonimato.