QR code

Sibit Demonstrates How Bitcoin Works

  • Translated by to

Bitcoin был для меня большой технической загадкой. Все статьи, которые я читал о нем, звучали крайне сложно и абсолютно непонятно. Пока я не застрял с заданием: мне нужно было интегрировать Zold, наш экспериментальную криптовалюту без блокчейна, с Bitcoin. Мне пришлось изучить архитектуру Bitcoin, и я нашел это короткое и простое видео (я настоятельно рекомендую его посмотреть). Мне удалось реализовать интеграцию и понять, как работает блокчейн. Вот мое краткое резюме. Надеюсь, оно будет полезным.

Во-первых, есть личный ключ, который представляет собой короткий текст, например:

Как я его сгенерировал? Это случайно. Вы тоже можете сгенерировать такой же. Установите Sibit, мой Ruby-инструмент, и выполните следующее (это инструмент командной строки):

Каждый раз, когда вы вызываете sibit generate, вы получите новый приватный ключ. Это просто случайный кусок текста (ну, большое шестнадцатеричное число). Затем вы создаете адрес из своего приватного ключа. У каждого приватного ключа ровно один адрес. Вот как вы его создаете:

Вы передаете его тому, кто хочет отправить вам платеж. Транзакция в Bitcoin - это не то, о чем вы привыкли думать, представляя себе банковскую транзакцию. В Bitcoin есть несколько входных и выходных адресов. Например, три входа по 10 BTC каждый и два выхода по 25 BTC и 5 BTC. Сумма всех входов должна быть равна сумме всех выходов.

Таким образом, в одной транзакции вы можете перемещать много цифровых денег между адресами. Вы можете взять сто входных адресов и отправить их другим ста выходным адресам. Это меня немного поразило, когда я об этом узнал. Транзакции могут быть довольно крупными по размеру. И размер имеет значение. Они вычисляются в байтах. Транзакция с одним входом и одним выходом займет примерно 220 байт. Запомните это число, мы скоро вернемся к нему.

Как вы уже можете представить, чтобы рассчитать, сколько денег у вас на вашем адресе, вам нужно пройти через все транзакции во всей базе данных (их уже более 400 миллионов) и посмотреть, сколько транзакций имели ваш адрес в качестве выходов (ваши входы). Затем вы вычитаете любые транзакции, которые были вашими выходами и чьими-то другими входами. Вы получаете баланс. Существует множество общедоступных и бесплатных веб-сервисов, которые могут сделать эту работу за вас. Вам не нужно искать все базу данных самостоятельно, просто используйте Blockchain API (например), и они предоставят вам информацию о любом адресе Bitcoin. Попробуйте, например, этот адрес:

Это в сатоши, что составляет 0,2 BTC. Нажмите здесь, и вы увидите вводы и выводы этого адреса. В этом адресе упоминается только одна транзакция. В этой транзакции был один вход и два выхода. Один из выходов был мой. Я получил 0,2 биткойна, и они все еще здесь, так как нет транзакций, которые переместили их куда-то еще.

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

Чтобы создать транзакцию, вам нужно знать все входные адреса, их закрытые ключи и все выходные адреса. Вам нужно несколько входов, если вы хотите отправить сумму, превышающую то, что у вас есть на одном адресе. Существует такое понятие, как кошелек в Bitcoin, который является программным обеспечением, таким как Electrum, которое отслеживает все ваши адреса и знает, как создать транзакцию, объединяя несколько адресов и используя их в качестве входов. Вот и все.

Итак, вы знаете входы, указываете выходы и ожидаете оставить небольшую сумму неизрасходованной. Допустим, ваши входы составляют 10 000 сатоши, и вы указываете выход для 8 000. Вы оставляете оставшиеся 2 000 неизрасходованными. Их называют комиссионными сборами для майнеров. Вы отправляете свою транзакцию всем узлам Bitcoin, они помещают ее в свой пул памяти и пытаются объединить несколько тысяч транзакций в блок. Они все пытаются вместе, и только один из них удается сделать это, приблизительно раз в десять минут. Когда победитель управляется решить блок, он получает те 2 000, которые вы оставили нетронутыми в вашей транзакции. Каждая транзакция в блоке платит этому победителю небольшую комиссию.

Можно ли не платить вообще ничего? Да. Однако чем меньше комиссию вы оставляете в своей транзакции, тем меньше вероятность того, что ваша транзакция попадет в следующий блок. Каждый майнер хочет извлечь максимум из каждого блока и помещает самые “щедрые” транзакции в блок, пытаясь добыть его.

Комиссия зависит от размера транзакции в байтах. Поскольку любая транзакция может включать много входов и выходов, ее размер - единственное, что имеет значение. Например, комиссия, которую я заплатил в этой транзакции, составляла 8 971 сатоши, что примерно 40 сатоши за байт, поскольку моя транзакция включала 225 байтов.

Чтобы отправить свою транзакцию всем узлам Bitcoin, у вас есть два варианта. Первый - запустить свой собственный полный узел, который будет общаться с другими узлами через протокол Bitcoin protocol. Второй вариант - использовать один из HTTP-реле, где вы просто отправляете свою транзакцию в POST HTTP-запросе, и реле отправляет ее всем узлам Bitcoin; вот одно из них.

Sibit автоматизирует этот процесс. Просто скажите:

Здесь первый аргумент - это сумма, которую вы отправляете. Второй - это комиссия, которую вы хотите оставить без изменений. Я упростил для вас, чтобы помочь вам избежать расчетов. Просто скажите S, M, L или XL, и комиссия будет рассчитана более или менее правильно. Третий аргумент - это список адресов и их закрытых ключей, разделенных двоеточием. Четвертый аргумент - это целевой адрес (Sibit позволяет отправлять только на один адрес). Последний аргумент - это адрес, куда будет отправлен остаток.

Если у вас есть 50 000 сатоши на ваших входах и вы хотите отправить другу 15 000 сатоши, вам нужно найти место, куда будет отправлено остальное 35 000 сатоши - ну, за вычетом комиссии для майнеров. Вы просто указываете свой собственный адрес, и сдача придет туда.

Это практически все, что вам нужно знать о Bitcoin и Blockchain, чтобы им пользоваться. Чего я не учел?

Translated by ChatGPT gpt-3.5-turbo/42 on 2026-04-16 at 08:50

sixnines availability badge  GitHub stars