Мы уже знаем, что биткоинов, как таковых, не существует. Вместо этого, существуют только записи о транзакциях между различными адресами, баланс на которых, то растет, то падает. Каждая транзакция, когда-либо имевшая место, сохраняется в огромной книге учета под названием цепочка блоков (blockchain). Например, если вы хотите узнать баланс на каком-либо из биткоин адресов, то просмотрев этот адрес вы ничего в нем не увидите. Баланс придется вычислить, просмотрев все транзакции, которые относятся к данному адресу и хранятся в цепочке блоков.
Так как что же представляет из себя транзакция?
Давайте смотреть. Пусть Маша отправит Васе несколько биткоинов. Это действие и есть транзакция, которая будет содержать в себе три типа данных:
• Вход (Input) — запись о том, с какого адреса биткоины пришли Маше (допустим, она получила их от подруги Оли);
• Сумма (Amount) — количество биткоинов, которые Маша пересылает Васе;
• Выход (Output) — биткоин-адрес Васи.
Как происходит пересылка биткоинов?
Чтобы переслать биткоины кому-либо, нужно две вещи: биткоин адрес и закрытый ключ. Когда Маша хочет переслать несколько цифровых монет Васе, то с помощью закрытого ключа своего кошелька она подписывает «заявку» на перевод, в которую включаются, как указывалось выше, три типа данных: биткоин адрес, с которого биткоины поступили к Маше, количество и адрес друга получателя. Затем она со своего биткоин кошелька отправляет эту «заявку» в сеть Биткоин. Там майнеры, находят, а затем подтверждают новую транзакцию в сети путем ее добавления в блок транзакций, что в конечном итоге приводит к увеличению баланса биткоин адреса Васи.
А что, если сумма на входе и выходе транзакции разная?
Еще раз напомним, что биткоины существуют только в виде записей о транзакциях, которые совершались между адресами. В итоге в большой книге учета (цепочке блоков) с каждым конкретным адресом может соотносится множество различных транзакций.
Рассмотрим такую ситуацию. У нас есть Маша, которая, как мы писали выше отправляла биткоины Васе. Теперь представьте, что у Маши день рождения и ее друзья решили отправить ей в качестве подарка цифровые монеты. Итак, Света отправила подруге два биткоина, Дима — три и Юля — еще один, причем каждый со своего биткоин адреса, ну и, естественно, в разное время дня. Так вот баланс биткоин-адреса Маши теперь увеличился на 6 биткоинов, однако это не означает, что транзакции от ее друзей были объединены в одну. Они так и будут привязаны к адресу Маши как отдельные, каждая от другого адреса, транзакции.
Теперь, если Маша захочет снова отправить Васе несколько биткоинов, например 4, то ее кошелек будет пытаться использовать записи транзакций с различными суммами, которые сложатся в нужное количество биткоинов, которые она шлет Васе. То есть, в соответствии с нашим примером с днем рождения Маши, на Васю могут быть подвязаны транзакции от Димы (три биткоина) и Юли (один биткоин).
Впрочем, есть вероятность, что Маша может захотеть отправить Васе такое количество биткоинов, которое нельзя будет получить от суммы других транзакций. В нашем примере такой вариант возможен, если Маша решит переслать другу 1,5 биткоина. Ее биткоин адрес не содержит транзакций именно на эту сумму, и никакие из имеющихся не дадут это количество при сложении. Маша не может разбить транзакцию на меньшие суммы, использовать транзакции можно только целиком.
Алгоритм Биткоин сработает следующим образом. Васе придет от Маши транзакция на большую сумму, например, та, которую отсылала Маше на день рождения Света — 2 биткоина. Полбиткоина же вернутся Маше в качестве сдачи. В частности, входными данными для транзакции от Маши к Васе будут данные о транзакции от Светы к Маше. Биткоин-адрес Васи — выходные данные. Отправляя транзакцию в обработку Машин кошелек создаст новый биткоин адрес, принадлежащий Маше, который в свою очередь создаст свою транзакцию на 0,5 биткоина только от Васи к Маше. Таким образом, получится, что транзакция на 2 биткоина от Светы к Маше перейдет к Васе, а от Васи к Маше перейдет транзакция на 0,5 биткоинов, что означает, что Маша отправила Васе 1,5 биткоина.
Иногда подтверждение транзакций затягивается во времени. Почему?
В сети Bitcoin обработкой переводов занимаются майнеры, сразу после создания транзакции клиентом она расходится по всем кошелькам майнеров/пулов.
Пулы работают так: через каждый определенный промежуток времени (зависит от настроек, чаще всего ежесекундно) делают выборку из собственного мемпула (очереди) транзакций, формируют блоки из них и пытаются совершить математическое вычисление, чтобы закрыть блок.
Однако, нужно понимать, что у майнеров существует свой приоритет: быстрее всего в блок будет добавлена транзакция с наибольшей комиссией. Вот почему чаще всего в очереди надолго «зависают» транзакции с низкой комиссией.
Более подробно об отслеживании транзакций причинах их задержек и способах ускорения будет рассказано в следующей статье.
Так как что же представляет из себя транзакция?
Давайте смотреть. Пусть Маша отправит Васе несколько биткоинов. Это действие и есть транзакция, которая будет содержать в себе три типа данных:
• Вход (Input) — запись о том, с какого адреса биткоины пришли Маше (допустим, она получила их от подруги Оли);
• Сумма (Amount) — количество биткоинов, которые Маша пересылает Васе;
• Выход (Output) — биткоин-адрес Васи.

Как происходит пересылка биткоинов?
Чтобы переслать биткоины кому-либо, нужно две вещи: биткоин адрес и закрытый ключ. Когда Маша хочет переслать несколько цифровых монет Васе, то с помощью закрытого ключа своего кошелька она подписывает «заявку» на перевод, в которую включаются, как указывалось выше, три типа данных: биткоин адрес, с которого биткоины поступили к Маше, количество и адрес друга получателя. Затем она со своего биткоин кошелька отправляет эту «заявку» в сеть Биткоин. Там майнеры, находят, а затем подтверждают новую транзакцию в сети путем ее добавления в блок транзакций, что в конечном итоге приводит к увеличению баланса биткоин адреса Васи.
А что, если сумма на входе и выходе транзакции разная?
Еще раз напомним, что биткоины существуют только в виде записей о транзакциях, которые совершались между адресами. В итоге в большой книге учета (цепочке блоков) с каждым конкретным адресом может соотносится множество различных транзакций.
Рассмотрим такую ситуацию. У нас есть Маша, которая, как мы писали выше отправляла биткоины Васе. Теперь представьте, что у Маши день рождения и ее друзья решили отправить ей в качестве подарка цифровые монеты. Итак, Света отправила подруге два биткоина, Дима — три и Юля — еще один, причем каждый со своего биткоин адреса, ну и, естественно, в разное время дня. Так вот баланс биткоин-адреса Маши теперь увеличился на 6 биткоинов, однако это не означает, что транзакции от ее друзей были объединены в одну. Они так и будут привязаны к адресу Маши как отдельные, каждая от другого адреса, транзакции.
Теперь, если Маша захочет снова отправить Васе несколько биткоинов, например 4, то ее кошелек будет пытаться использовать записи транзакций с различными суммами, которые сложатся в нужное количество биткоинов, которые она шлет Васе. То есть, в соответствии с нашим примером с днем рождения Маши, на Васю могут быть подвязаны транзакции от Димы (три биткоина) и Юли (один биткоин).

Впрочем, есть вероятность, что Маша может захотеть отправить Васе такое количество биткоинов, которое нельзя будет получить от суммы других транзакций. В нашем примере такой вариант возможен, если Маша решит переслать другу 1,5 биткоина. Ее биткоин адрес не содержит транзакций именно на эту сумму, и никакие из имеющихся не дадут это количество при сложении. Маша не может разбить транзакцию на меньшие суммы, использовать транзакции можно только целиком.
Алгоритм Биткоин сработает следующим образом. Васе придет от Маши транзакция на большую сумму, например, та, которую отсылала Маше на день рождения Света — 2 биткоина. Полбиткоина же вернутся Маше в качестве сдачи. В частности, входными данными для транзакции от Маши к Васе будут данные о транзакции от Светы к Маше. Биткоин-адрес Васи — выходные данные. Отправляя транзакцию в обработку Машин кошелек создаст новый биткоин адрес, принадлежащий Маше, который в свою очередь создаст свою транзакцию на 0,5 биткоина только от Васи к Маше. Таким образом, получится, что транзакция на 2 биткоина от Светы к Маше перейдет к Васе, а от Васи к Маше перейдет транзакция на 0,5 биткоинов, что означает, что Маша отправила Васе 1,5 биткоина.

Иногда подтверждение транзакций затягивается во времени. Почему?
В сети Bitcoin обработкой переводов занимаются майнеры, сразу после создания транзакции клиентом она расходится по всем кошелькам майнеров/пулов.
Пулы работают так: через каждый определенный промежуток времени (зависит от настроек, чаще всего ежесекундно) делают выборку из собственного мемпула (очереди) транзакций, формируют блоки из них и пытаются совершить математическое вычисление, чтобы закрыть блок.
Однако, нужно понимать, что у майнеров существует свой приоритет: быстрее всего в блок будет добавлена транзакция с наибольшей комиссией. Вот почему чаще всего в очереди надолго «зависают» транзакции с низкой комиссией.
Более подробно об отслеживании транзакций причинах их задержек и способах ускорения будет рассказано в следующей статье.