Старые транзакции в блокчейне

После долгих исследований в сети я все еще могу понять, актуальна ли следующая идея:

Я знаю (или, по крайней мере, думаю, что знаю), что каждая транзакция потребляет все биткойны, присутствующие на входных адресах. Таким образом, если биткойн-адрес находится на входе транзакции, вам не нужно просматривать все транзакции старше этой, чтобы узнать, сколько биткойнов есть для этого адреса. Это означает, что мы могли бы удалить все эти старые транзакции из блоков, оставив только хэши, с помощью трюка Меркла. Со временем деревья Меркла в каждом старом блоке будут становиться все меньше и меньше, чтобы можно было сэкономить место.

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

Есть ли уже какие-то работы в этом направлении? Это глупая идея?

спасибо за помощь

Ответы (1)

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

Хотя в целом ваша мысль верна. Вы можете удалить транзакцию после того, как все ее выходы будут потрачены (транзакция может иметь более одного выхода, поэтому вам нужно отслеживать каждый выход). Это обсуждалось и даже реализовано в альтернативных биткойн-клиентах. Я не знаю, может ли это быть реализовано в эталонном клиенте (bitcoind/bitcoin-qt) и когда.

У меня есть реализация, над которой я работаю, которая использует базу данных SQL. На данный момент он обработал цепочку блоков до августа 2013 года и имеет 2 000 000 транзакций с неизрасходованными выходами. Сама база данных на данный момент составляет около 1,2 ГБ, так что это значительная экономия по сравнению с полным блокчейном (15,1 ГБ в моей системе). Недостатком является то, что вы не можете предоставить полную цепочку блоков другим узлам (я храню только последние 30 дней). Таким образом, вам все равно понадобятся полные узлы для предоставления блокчейна или загрузки сайтов/торрентов, чтобы позволить новому узлу набрать скорость.