sum(VOUT) > sum(VIN) -- Возможен ли такой сценарий?

У меня есть транзакция. Эта транзакция брала значение AddrXи отправляла его себе в своего рода «разделении». В транзакции есть один VINиз 98000000. Эта транзакция разделяет стек и имеет два файла VOUT. Они оба 49000000.5. Существует комиссия за транзакцию в размере 1.00.

В этом случае общая сумма VOUTпревышает 98000001общую VINсумму 98000000. Однако эта разница заключается в комиссии за транзакцию.

Из того, что я понял о блокчейне и транзакциях, комиссия за транзакцию: Fee: sum(vin) - sum(vout)так что это приводит к комиссии за -1транзакцию.

Моя проблема здесь в том, что если бы я создавал базу данных для отслеживания этого адреса, я бы в конечном итоге вычел 98000000из их баланса, а затем добавил бы два входящих значения, 49000000.5которые в конечном итоге поместили бы их общий баланс после этой транзакции, 98000001что было бы неправильно. Теперь я мог бы добавить логику, чтобы вручную убрать комиссию за транзакцию; однако я бы предположил, что эта транзакция будет недействительной, потому что общая сумма VOUTбыла больше, чем общая VIN.

Возможна ли такая ситуация? До сих пор из транзакций, которые я видел, комиссия за транзакцию уже применялась к одной из них VOUTи, следовательно, не вызывала этой ошибки. Если это возможно, как я могу это обнаружить и исправить?

Ответы (2)

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

Вы либо неправильно построили свою транзакцию, либо неправильно ее интерпретируете.

Итак, если это должно было произойти в блокчейне, есть ли проблема в кодовой базе?
Это означает, что, возможно, есть проблема в коде проверки данного клиента, не обязательно проблема с самими правилами консенсуса или с монетой. То, что клиент принял бы такую ​​недействительную транзакцию, означает, что у клиента есть проблема.
Возвращаясь к этому позже, кажется, это связано с блокчейном Proof of Stake!

Правила протокола биткойн https://en.bitcoin.it/wiki/Protocol_rules#.22tx.22_messages (правило 14) предотвращают это. Это критерий отклонения для узлов.