Тогда возвращаюсь квопросу: что мешает писать в каждую транзакцию текущий баланс счёта?
Мешает логика и интеллект. У вас, видимо, этого нет, вам и не мешает.
Транзакция создается сегодня, отправляется в сеть завтра, подтверждается послезавтра.
Нода получает эту транзакцию вообще через месяц, когда владелец включил комп.
В каждый из этих моментов текущий баланс счета будет разный. Какой из них писать в базу?
В принципе, что-то подобное есть в блокчейне эфира. Но там как раз аккаунтная система
и отправляющая сторона (если не ошибаюсь) именно что нумерует по возрастанию транзакции
со своего аккаунта. В биткойне по-другому. Нет аккаунтов с балансами, а есть база неизрасходованных
выходов. Логично, что отправить с выхода можно не больше чем там есть.
Можете условно говоря считать "текущим балансом счёта" - ту сумму которая есть на неизрасходованном
выходе (то есть эмаунт пришется при создании транзакции), а не текущий размер бабла на адресе
(тем более, что адресов в биткойне по сути дела нет). Ну тогда все так и происходит:
создатель транзакции в каждый выход своей транзакции пишет "текущий баланс счета".
Пока транзакции нет - там ноль. Баланса не существует. Транзакция появилась - там какое-то число.
Выход потратили - там снова ноль и можно забыть об этом навсегда.
Это не решает проблему дабл-спендинга.Я создаю две транзакции. Каждая из них по отдельности валидная. Половина
сети имеет первую транзакцию и вторую считает некошерной, половина - наоборот.
Какое решение принять и как, чтобы был консенсус и не было бардака?
Ах, да. Простите что вернулся. Но вы такую фигню начинаете городить, что мне
кажется нужным вас обратно на правильную дорогу выводить.