Как можно прочитать стоимость кошелька из блокчейна?

Похоже, что транзакции блокчейна хранят только количество монет, перемещаемых из одного кошелька в другой, но не имеют общих сумм для каждого кошелька.

Поэтому кажется, что если вы хотите получить стоимость любого данного кошелька, вам придется читать каждую транзакцию в леджере с самого начала.

Это правильно или я что-то упускаю?

К вашему сведению, моя цель — лучше понять формат блокчейна.

Ответы (3)

Предполагая, что вы никому не доверяете, вам нужно один раз прочитать всю историю блокчейна, чтобы сгенерировать свой собственный набор неизрасходованных транзакций (UTXO). Вам не нужно будет заново читать всю историю каждый раз, когда вы хотите увидеть свой баланс. Для этого достаточно неизрасходованных транзакций.

Ваш баланс представляет собой сумму значений неизрасходованных транзакций, которые есть в вашем кошельке. Неизрасходованные здесь означает, что вы не «тратили» ранее полученные суммы на исходящие транзакции.

Пример:

  • Алиса отправляет вам 1 BTC. теперь у вас есть неизрасходованная транзакция на 1 BTC. Ваш баланс представляет собой сумму неизрасходованных транзакций, т.е. 1 BTC
  • Затем Боб решает отправить вам 2 BTC. Теперь у вас есть две неизрасходованные транзакции, связанные с вашим кошельком, на общий баланс 3 BTC.
  • Предположим, вы хотите отправить Чарли 1 BTC. После проверки того, что у вас есть хотя бы 1 неизрасходованный BTC (это так), ваша транзакция будет обработана, а сумма, которую вы тратите, будет удалена из вашей «неизрасходованной» транзакции. В этом случае транзакция, полученная от Алисы, теперь будет помечена как потраченная и будет удалена из вашего списка неизрасходованных транзакций.
  • Ваш баланс по-прежнему представляет собой сумму неизрасходованных транзакций, т.е. 2 BTC (от Боба)
Чтобы понять, что такое неизрасходованные выходы, вам все равно нужно прочитать всю историю блокчейна.

Если это ваш «кошелек» и у вас есть закрытые ключи, вы можете импортировать их в приложение-кошелек. Кошелек с некоторой работой может расшифровать, какие адреса принадлежат вам, сканировать транзакции в блокчейне и обновлять балансы.

Я хочу спросить, как можно написать программное обеспечение для этого? Я пытаюсь понять формат блокчейна

Поэтому кажется, что если вы хотите получить стоимость любого данного кошелька, вам придется читать каждую транзакцию в леджере с самого начала.

Да, в основном. Если вам отправили 1 BTC в 2010 году, и вы ни разу его не потратили, и 1 BTC в 2018 году (тоже не потраченный), у вас есть 2 BTC, но, не просматривая всю историю леджера, вы не сможете увидеть и то, и другое в своем кошелек без сканирования всей истории.

Было бы неплохо иметь возможность в какой-то момент запустить узел только с UTXO (неизрасходованными монетами), но тогда для этого вам придется доверять человеку, создающему загрузку, и вы не сможете проследить истинную историю любого монет (например, что делает IOTA, когда делает снимок).