Jimmy Song — разработчик, преподаватель и автор Programming Bitcoin. На примерах на Python он объясняет транзакции, ключи и цифровые подписи Bitcoin. Подход практический: вместо готового приложения читатель постепенно создаёт небольшие инструменты и изучает результаты. Song также публикует взгляды на деньги и общество; для них нужны другие доказательства, чем для упражнения по программированию.
Биография Song описывает разработку программ и семинары Programming Blockchain. O’Reilly называет его автором Programming Bitcoin. Их объединяет обучение через собственную попытку: прочитать название принципа ещё не значит понять его. Чтобы запрограммировать его, надо знать входные данные и ожидаемый результат. Но слово разработчик само не означает сопровождающего Bitcoin Core или право определять правила сети за остальных пользователей. [1] [2]
Programming Bitcoin вышла в O’Reilly в 2019 году. Она начинается с конечных полей — вычислений в ограниченном множестве элементов по точным правилам — и эллиптических кривых, математической основы рассматриваемых подписей. Далее идут ключи, подписи, транзакции и сообщения между компьютерами. Читатель собирает библиотеку Python, набор функций для других программ. Не нужно просто верить, что подпись работает: можно проследить вычисления. Так изучается внутреннее устройство кошелька, а не только его кнопки. [2]
Представим программу, получившую транзакцию. Сначала она должна распознать её части; такой разбор данных называют парсингом. Обычный вход ссылается на предыдущий выход — конкретную сумму с условиями расходования. Затем нужно проверить условия, например требуемую подпись. Даже правильная подпись сама не доказывает, что указанный выход остаётся неизрасходованным. Для этого нужна проверка состояния цепочки. Упражнения Song разделяют читаемость данных, разрешение потратить и действительность всей транзакции. [3]
Математически правильный результат важен, но безопасной программе подписи нужно больше. libsecp256k1 учитывает также постоянное время выполнения и доступ к памяти при работе с секретным ключом. Цель — не дать наблюдателю узнать секрет по поведению вычисления. Это другая задача, чем правильный ответ в упражнении. Код для понимания принципа не заменяет автоматически проверенную криптографическую библиотеку для реальных средств, даже если оба правильно проверяют одну тестовую подпись. [4]
Репозиторий programmingbitcoin содержит материалы глав и инструкции Jupyter Notebook — среды, объединяющей текст, исполняемый код и результаты. Повторение зависит также от версии кода и зависимостей, то есть других используемых пакетов. Старая инструкция установки не является автоматически рекомендацией современных версий. Запись окружения помогает объяснить различия результатов; успех на чужом компьютере не заменяет проверки собственного запуска. [5]
Книга 2019 года даёт основу для чтения дальнейшей документации. Нельзя предполагать, что она описывает все последующие расширения. Например, libsecp256k1 сейчас предлагает и Schnorr signatures по BIP340, спецификации другой схемы подписи, используемой в Bitcoin. Нужно различать содержание конкретного издания и функции современной библиотеки. Для работы с её интерфейсом, то есть способом вызова функций, важна документация соответствующей версии. [2] [4]
В Fiat Ruins Everything 2023 года Song утверждает, что фиатные деньги, привычные государственные валюты, существенно влияют на институты, а Bitcoin предлагает исправление. Здесь мы читаем интерпретацию общества, а не процедуру проверки подписи. Такой тезис требует собственных аргументов и доказательств. Правильное криптографическое упражнение не доказывает общественный тезис; экономическое несогласие само не опровергает техническое объяснение. Каждую часть его работы можно оценивать по подходящим доказательствам. [6]
Сайт Song описывает проверку фотографии предмета с автографом с помощью PGP, инструмента цифровых подписей, и SHA-256, функции создания отпечатка файла. Совпадающий отпечаток помогает установить, что файл тот же; действительная подпись связывает подписанные данные с ключом. Ещё предстоит установить, кому принадлежит ключ. При этой ревизии страница непоследовательно обозначает старый и новый ключи, поэтому сокращённый идентификатор не приводим как подтверждённую личность. Проверка данных и доверие к их происхождению — разные шаги. [7]
Для полной картины прочитайте эту статью вместе с Alex Gladstein, Bitcoin Script, Private Key. На эту статью также ссылаются Hackers Congress Paralelní Polis, Cathie Wood.