Понимание протокола Биткойн (через практику)

Хорошо, во-первых, Кен Шериф (парень, который добывал биткойн с помощью карандаша и бумаги ) опубликовал несколько фантастических статей о биткойнах в своем блоге .

В « Трудном пути использования биткойнов » он пишет (выделено мной):

Оказывается, на самом деле использовать протокол Биткойн сложнее, чем я ожидал. Как вы увидите, протокол немного запутан: он использует числа с обратным порядком байтов, числа с прямым порядком байтов, числа фиксированной длины, числа переменной длины, пользовательские кодировки, кодировку DER и различные криптографические алгоритмы. произвольно. В результате приходится много надоедливых манипуляций, чтобы привести данные в нужный формат .

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

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

Очевидно, работа с файлами Python Кена помогает понять различные случаи добавления байтов, изменения порядка следования байтов и различные другие сложные процедуры, используемые для отправки транзакции в необработанном шестнадцатеричном виде. Так же полезны следующие:

  1. Спецификация протокола @ Биткойн Вики
  2. Графический генератор адресов @ RoyalFork
  3. Код Кена Шерифа Python, используемый в связи с этим постом

Мой вопрос: как можно изучить протокол Биткойн, попрактиковавшись в Testnet? (Какие ресурсы рекомендуются, чтобы помочь сформулировать необработанную транзакцию для отправки по сети Биткойн (Testnet)?)

Ответы (1)

Биткойн-протокол ОЧЕНЬ прост. Вам не нужно читать тонны руководств и учиться годами.

Моя точка зрения (отвечая на ваш вопрос):

  • Напишите на листе бумаги, что вы хотите сделать.
  • Выберите предпочитаемый язык программирования (C++/Python/Delphi/Java/любой другой)
  • Используйте интернет-источники только в качестве справочной информации. Не копируйте и не вставляйте большие куски

Конечно,

  • ИСПОЛЬЗУЙТЕ TESTNET ДЛЯ ЭКСПЕРИМЕНТОВ! НЕ ОСНОВНАЯ СЕТЬ!
На самом деле это очень хорошая идея! Добыча биткойнов с помощью карандаша и бумаги (ссылка на мой вопрос), вероятно, была упражнением, которое шериф не скоро забудет, учитывая потраченное время! Это правда, что по какой-то причине сохранить цифровые заметки не так просто, как письменные (возможно, GenXer?)