Похоже, что транзакции блокчейна хранят только количество монет, перемещаемых из одного кошелька в другой, но не имеют общих сумм для каждого кошелька.
Поэтому кажется, что если вы хотите получить стоимость любого данного кошелька, вам придется читать каждую транзакцию в леджере с самого начала.
Это правильно или я что-то упускаю?
К вашему сведению, моя цель — лучше понять формат блокчейна.
Предполагая, что вы никому не доверяете, вам нужно один раз прочитать всю историю блокчейна, чтобы сгенерировать свой собственный набор неизрасходованных транзакций (UTXO). Вам не нужно будет заново читать всю историю каждый раз, когда вы хотите увидеть свой баланс. Для этого достаточно неизрасходованных транзакций.
Ваш баланс представляет собой сумму значений неизрасходованных транзакций, которые есть в вашем кошельке. Неизрасходованные здесь означает, что вы не «тратили» ранее полученные суммы на исходящие транзакции.
Пример:
Если это ваш «кошелек» и у вас есть закрытые ключи, вы можете импортировать их в приложение-кошелек. Кошелек с некоторой работой может расшифровать, какие адреса принадлежат вам, сканировать транзакции в блокчейне и обновлять балансы.
Поэтому кажется, что если вы хотите получить стоимость любого данного кошелька, вам придется читать каждую транзакцию в леджере с самого начала.
Да, в основном. Если вам отправили 1 BTC в 2010 году, и вы ни разу его не потратили, и 1 BTC в 2018 году (тоже не потраченный), у вас есть 2 BTC, но, не просматривая всю историю леджера, вы не сможете увидеть и то, и другое в своем кошелек без сканирования всей истории.
Было бы неплохо иметь возможность в какой-то момент запустить узел только с UTXO (неизрасходованными монетами), но тогда для этого вам придется доверять человеку, создающему загрузку, и вы не сможете проследить истинную историю любого монет (например, что делает IOTA, когда делает снимок).
Эндрю Чоу