Мое понимание технологии биткойн-блокчейн после прочтения некоторых статей за последние несколько дней. Я не уверен, что мое понимание на 100% правильно. Я пишу, чтобы кто-то мог меня поправить, что также будет полезно для других новичков.
Случай: A хочет отправить 10 BTC игроку B.
A создал адрес, который представляет собой хэш (SHA 256) из нескольких слов. Аналогично для B. Это закрытый ключ ; валидатор права собственности на сумму биткойнов. Используя закрытый ключ, генерируется открытый ключ . Приложения кошелька предлагают начальные слова , которые генерируют частный адрес путем хеширования с помощью SHA256, так что даже при потере закрытого ключа его можно освободить от секретных начальных слов. Этот открытый ключ известен всем, но закрытый ключ является секретным и не должен разглашаться. Невозможно получить закрытый ключ из открытого ключа. Закрытый ключ — это математическое доказательство того, что А имеет право потратить определенное количество BTC. Это доказывает право собственности на деньги. Пусть каким-то образом у A сейчас больше 10 BTC.
A отправляет 10 BTC на открытый ключ B. Открытый ключ — это «адрес» транзакции. Сообщение (A отправляет 10 BTC B) подписано с использованием закрытого ключа A. Это цифровая подпись транзакции. Это сообщение о транзакции транслируется всем (всем узлам сети блокчейн). Цифровая подпись подтверждает, что транзакцию создал настоящий владелец.
Майнеры выберут эту транзакцию вместе с другими ожидающими транзакциями и попытаются создать следующий блок блокчейна. Все сделки открыты для всех. В примере с транзакцией майнеры будут проверять транзакцию, действительно ли у A более 10 BTC, проверяя полную базу данных блокчейна (все завершенные блоки цепочки). Если нет, транзакция будет отклонена и не будет добавлена в блок, где он попытается решить головоломку.
Майнеры будут проверять количество транзакций из ожидающих транзакций (транзакций, которые еще не добавлены ни в один блок в блокчейне).
Разные майнеры могут принимать разное количество действительных транзакций для формирования блока. Но майнер, выигравший математическую головоломку , созданный им блок будет добавлен в качестве следующего блока в блокчейн. Эта головоломка состоит в том, чтобы получить хэш (SHA 256) в соответствии с текущей сложностью (19 ведущих нулей хеша в шестнадцатеричном формате). Это процесс проб и ошибок для получения желаемого хэша с 19 нулями. Хеш-функция вывода выглядит следующим образом:
SHA256 (отметка времени + хеш предыдущего блока + MarkleRootHash (все действительные транзакции в этом блоке) + одноразовый номер)
Майнеры меняют значение nonce (целое число) каждый раз, когда он пытается получить желаемый хэш в соответствии с вышеупомянутым форматом генерации хэша. Для решения головоломки требуется огромное количество попыток, следовательно, огромная вычислительная мощность. Предположим, майнер только что получил хэш с 19 нулями. Обратите внимание, что транзакция «A отправляет 10 BTC B» действительна и существует в этом примере блока, чей хеш только что был найден с 19 ведущими нулями.
Майнер получил желаемый хэш со счастливым значением одноразового номера. Используя это одноразовое значение, любой может проверить выходной хэш из 19 нулей; следовательно, это успешный блок. Это одноразовое значение на самом деле является доказательством работы . Когда большинство майнеров проверят одноразовый номер и получат успешный результат работы, это приведет к консенсусу . Затем блок добавляется в базу данных блокчейна.
Поскольку этот блок содержит транзакцию «A отправляет 10 BTC B». Эта транзакция также успешно завершена. B получает 10 BTC. Право собственности на эти 10 BTC принадлежит B, поскольку B имеет закрытый ключ открытого ключа, который используется в качестве «адреса» транзакции в примере.
В целом правильно. Несколько мелких деталей не соответствуют действительности.
№1. Закрытые ключи — это просто 256-битные числа. Они могут быть созданы случайным образом или, в современных кошельках, как часть иерархической детерминированной последовательности, в которой каждый ключ генерируется повторяющимся образом из семени. См. https://learnmeabitcoin.com/technical/hd-wallets . Кроме того, адрес кошелька не является открытым ключом, хотя и получен от него. Сайт, указанный выше, также объясняет это.
№3. Транзакция явно ссылается на предыдущие транзакции — и именно они проверяются на достаточность средств (а не «весь блокчейн»). Новая транзакция также будет касаться любых избыточных средств.
пользователь3717550
марвб
Красный Песчаный Кирпич