Каков пошаговый жизненный цикл транзакции?

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

Это мое понимание до сих пор; пожалуйста, исправьте это, если необходимо:

  1. Человек использует свой закрытый ключ RSA, чтобы подписать сообщение, в котором говорится: «Вычтите сумму X из моей учетной записи и отправьте ее на адрес (адреса) YYY». В этом сообщении они также ссылаются на номер текущего блока.

  2. Клиентское приложение (кошелек) отправляет эту транзакцию на 6 узлов для «подтверждения». (пункт назначения майнер или кошелек?)

  3. ?? Что на самом деле делает подтверждение??

  4. Узлы майнинга добавляют эти транзакции в одно сообщение, называемое блоком ( и сохраняют их практически в любом порядке ) .

  5. Узлы майнинга соревнуются за поиск хэша SHA256(SHA256(x)) блока, который начинается с заданного количества нулей.

  6. Первый узел майнинга (или пул узлов), сгенерировавший выигрышный хэш, получает приз и увеличивает количество блоков. (обратите внимание, что в настоящее время это занимает 30 минут, а размер блока ограничен 1 МБ)

  7. Майнеры уведомляют кошелек, который затем реплицирует новый блок всем, кто его запрашивает, и отправляет обновления определенному количеству пиров. Любой блок с разницей дат более 120 минут системного времени отбрасывается.

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

  9. Конфликтующие транзакции (двойные траты) обнаруживаются в биткойн-клиенте и отбрасываются.

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

  11. После отправки 100 (или 120) подтверждений BTC, сгенерированные блоком, могут быть потрачены. источник

Всем, кто натыкается на этот вопрос: обратите внимание, что обычно предпочтительнее задавать конкретные вопросы , а не задавать их в стиле «проверь мой ответ», как показано здесь. Если вы уверены, что ваше понимание правильное, лучше опубликуйте вопрос и поместите свое собственное понимание в ответ, где оно будет конкурировать с другими ответами. Если в нем есть ошибки, люди скажут вам.
Я ОП и полностью согласен с @Murch. Я написал это давным-давно и был бы удален, если бы не +4 проголосовавших ответа ниже. У TP есть много отличных ответов здесь ... проверьте его историю

Ответы (1)

Время жизни транзакции будет примерно таким:

  1. Вы начинаете с клиента, кошелька, содержащего ваши пары ключей, и некоторых неизрасходованных транзакций (вы получаете их от других людей или посредством майнинга).
  2. Вы создаете новую транзакцию, тратя часть своих неизрасходованных биткойнов, подписываете ее своими закрытыми ключами. Ваш клиент сохранит его копию.
  3. Ваш клиент начинает транслировать новую транзакцию через сеть Биткойн. Насколько я помню, он транслирует его не каждому пиру, а каждому 8-му пиру, чтобы защитить вашу анонимность. Каждую минуту клиент также будет транслировать все транзакции, о которых он знает, одному из своих пиров, что также будет включать вашу новую транзакцию.
  4. Каждый клиент, который получает вашу транзакцию, внимательно изучает ее — проверяет, в порядке ли подпись, нет ли ошибок и не пытаетесь ли вы совершить двойную трату. Если ваша транзакция не соответствует ни одному из критериев, она полностью игнорируется клиентом. В противном случае клиент сохраняет запись о транзакции во временной памяти.
  5. Все клиенты, которые знают о вашей транзакции, следуют тому же маршруту трансляции, что и вы, — отправляют ее на 1/8 пиров, а затем на один пир каждую минуту. Они также не будут транслировать вашу транзакцию, если ее комиссия слишком мала в данный момент времени (которая зависит от количества транзакций, которые должны быть включены в блок, и т. д.). Как правило, если вы не платите комиссию, вас наказывают низкой скоростью трансляции транзакций прямо здесь.
  6. В конце концов ваша транзакция достигает некоторых пулов майнинга и получателей транзакций. Последние увидят новую транзакцию в своих кошельках и сохранят ее копию на неопределенный срок, но она будет отображаться как 0 подтверждений. Пулы майнинга увидят это как новую транзакцию и (скорее всего) будут включать ее в каждый блок, который они пытаются создать. Они будут хранить локальную копию временных блоков и выдавать соответствующую работу своим майнерам.
  7. Майнеры ничего не знают о вашей транзакции, за исключением того, что одна или несколько транзакций хешируются в заданный корень Меркла. Их работа состоит в том, чтобы обрабатывать цифры, а не проверять блокировку на валидность, так как это задача для пула.
  8. В конце концов ваша транзакция включается в блок, который решается. Он с гордостью транслируется по сети Биткойн, и с этого момента все отмечают его (чтобы знать, не конфликтует ли с ним какая-то новая транзакция при попытке двойного расходования). Теперь ваша транзакция имеет 1 подтверждение.
  9. Процесс создания блока продолжается, и по мере того, как все больше и больше блоков строится поверх блока, в который включается ваша транзакция, она получает больше подтверждений. В конце концов, достигнув 6 и более подтверждений, он считается полностью подтвержденным.
  10. Транзакция завершает свой жизненный цикл после того, как она будет потрачена другой транзакцией, а это означает, что ее выходы могут быть забыты из «неизрасходованной» памяти и проигнорированы любыми другими попытками их потратить. Однако он останется в блокчейне до тех пор, пока люди будут отслеживать всю цепочку.

Есть несколько сложностей во время атак 51% и так далее, но это основной поток стандартной транзакции.

В пуле № 3 это означает, что он подключается к каждому узлу «кошелька» на входящем порту? (исключая все ToR и клиенты с брандмауэром?)
В № 5, могут ли Биткойн-дни уничтожены быть еще одной причиной медленной транзакции?
В № 9, если a confirmation== блок, а создание блока занимает в среднем 30 минут , означает ли это, что 6 транзакций занимают 6 часов?
@makerofthings7 Клиенты устанавливают входящие и исходящие соединения. У вас может быть 8 исходящих соединений и 3 входящих и так далее. Все входящие соединения идут на порт 8333, а исходящие используют разные порты. Я не думаю, что Bitcoin Days Destroyed станет причиной медленных транзакций, просто низкие комиссии и большое их количество.
@makerofthings7 Создание блока должно занимать в среднем 10 минут, если хешрейт сети стабилен. Таким образом, получение 6 подтверждений должно занять 1 час.