Post
Topic
Board Кодеры
Re: Как отправить транзакцию.
by
ThisNameIsAlreadyInUse
on 07/04/2017, 01:47:56 UTC
Я хочу понять что реально происходит в момент совершения транзакции. Т.е. мне надо связаться с любым из майнеров и передать информацию о транзакции и от него она уже разойдется по другим майнерам или что подразумевается под "В момент отправки биткойнов платёжные транзакции попадают в сеть, где их увидят все майнеры"?

В двух словах так:

Модуль "кошелек" (wallet.cpp) фомирует транзакцию, подписывает ее необходимыми ключами (соответсвующими использованным входам) и отправляет ее в мемпул.

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

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

Процесс "повторяется" по сети до тех пор пока вся сеть не узнает о транзакции.

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