Что такое исходный код криптовалюты?
![]()
Исходный код — текст программы, написанный на определенном языке программирования с возможностью внесения изменений. В чем его особенности? Какие виды бывают? Что такое код криптовалюты?
Исходный код криптовалюты: что это

Термин «исходный код» применяется среди программистов, составляющих ПО на разных языках программирования. В общем понимании это входные сведения для транслятора, который отражает код до запуска программы или сразу выполняет ее с применением интерпретатора. По информации, изложенной в исходных данных, легко понять логику поведения программы или цифровых монет (для криптовалюты). Для обоснования данных применяются комментарии или выпускается документация с пояснениями.
В общей практике исходный код применяют программисты для внесения изменений, изучения или совершенствования ПО. Его также используют специалисты в качестве инструмента для общения. На практике исходный код может разбиваться на блоки и использоваться в различных проектах.
Отвечая на вопрос, что такое код криптовалюты, можно сказать следующее — это наиболее важный элемент (основа) цифровой монеты, обеспечивающая ее работу внутри криптовалютной платформы. Без исходного кода исправление или внесение изменений в работу системы становится невозможным.
Исходный код криптовалюты бывает двух видов:
- Открытый. Доступ имеют все пользователи.
- Закрытый. Возможность правки имеют только узкая группа разработчиков.
Организация и требования к исходному коду криптовалюты
![]()
Исходный код в зависимости от сложности состоит из одного или группы файлов. Язык написания может быть различным с возможностью «смешивания» разных вариантов. К примеру, допускается написание основной части на C++ с дополнительными вставками на Assembler. Известны случаи составления модулей с помощью разных языков, после чего составляющие элементы собираются в единый документ.
При разработке крупных проектов могут использоваться от 2 и более файлов с исходными кодами. В этом случае создатели выпускают отдельный документ с пояснением принципов работы каждого элемента и пояснением зависимости между ними. В состав файлов могут входить разные показатели для компилятора и программируемой среды. В зависимости от ситуации документы могут выполняться в текстовом виде или поддерживать другие форматы. Разработка и внесение правок в файлы осуществляется с применением особого софта.
Иными словами, исходный код (в том числе криптовалюты) — это набор файлов, в составе которых содержится разная информация. Для упрощения взаимодействия с создателями, как правило, применяют системы управления.
При оценке качества исходного кода криптовалюты не применяются термины плохой или хороший. Здесь учитывается несколько параметров:
-
Удобство изучения исходного кода (простота). Важно наличие комментариев и пояснений к программе.
Важность открытости исходного кода криптовалюты
![]()
Проекты с открытым исходным кодом — разработки, позволяющие другим участникам сети проверять корректность информации, вносить изменения (по желанию) или расширять возможности системы. Открытость исходного кода ценится не только в криптовалютах, но и в мире программного обеспечения. Стоит отметить, что большая часть цифровых монет построена именно на открытом коде.
Некоторые разработчики ПО и криптовалют скрывают исходный код. В этом случае поддержкой, разработкой и устранением ошибок занимается ограниченный круг лиц. К примеру, в криптовалютах NEM, Stellar и ряде других монет доступ посторонних к исходному коду закрыт. Это касается и многих программ, к примеру, Facebook или Adobe. Такое ПО носит название «несвободного», с ограниченным доступом. Внесение правок или изменений доступно авторам, имеющим юридически обоснованное право.
Открытость исходного кода делает его доступным для всех желающих. Любой человек сможет выполнять разные функции с программой — делать копии, смотреть, вносить правки, отправлять друзьям или проходить обучение. Некоторые разработчики открывают доступ к исходнику, но ограничивают его применение. К примеру, смотреть можно, а вот делать копии и использовать в других проектах нельзя.
Открывая код для пользователей, создатели криптовалюты повышают уровень децентрализации сети. К развитию платформы привлекаются опытные программисты и знающие пользователи, способные дать полезные рекомендации, а иногда и самостоятельно внести правки. Кроме того, сообщество держит под контролем открытый код и оперативно выявляет имеющиеся ошибки. Все это повышает надежность сети и ускоряет ее развитие.
Сегодня наиболее крупные криптовалюты, торгуемые на крупных биржах и востребованные на рынке (к примеру, Bitcoin, Ethereum и другие), построены на открытом исходном коде. При этом регулирующие организации и уполномоченные органы, пытающиеся понять сущность виртуальных денег, уверены в разработке таких ПО какой-то одной или группой предприятий. Такое мнение в отношении криптовалют ошибочно.
И правда, исходный код многих программ разрабатывается и поддерживается специальными компаниями. Для открытого ПО работает иной принцип. Здесь ключевую роль играет участие каждого человека в развитии сети. В процессе создания исходного кода криптовалют участвуют сотни тысяч людей. Информация бесплатно распространяется в Сети, скачивается на компьютеры и изучается пользователями. Сведения публичны, поэтому замечания относительно работы кода или его слабых мест появляются в сжатые сроки.
Благодаря такому подходу, исходный код криптовалюты никому не принадлежит, на него нет прав, запрещающих применение другими людьми. К примеру, не существует предприятия, которое бы владело Bitcoin или Monero. Такая децентрализация несет ряд преимуществ для системы, ее продвижения и развития. В программной среде одним из наиболее успешных примеров является операционная система Linux, имеющая открытый исходный код и при этом обладающая много большей надежностью, чем Windows.
Преимущества открытого исходного кода криптовалюты
![]()
Открытость исходного кода в криптовалютной сфере и секторе программного обеспечения несет ряд позитивных моментов:
-
Наличие мотивации, позволяющей создать качественный продукт. Каждый человек, участвующий в создании или оптимизации исходного кода ставит задачей лично использовать проект и получать от этого дивиденды. Такой участник свободен в своих действиях, он не ограничен контрактными обязательствами и требованиями создателя. В результате возникает качественный продукт с минимальным набором проблем.
| Преимущества | Недостатки |
| Высокая вероятность создания качественного продукта. | Доступность исходного кода для злоумышленников, которые могут использовать информацию для поиска багов и возможностей взлома сети. |
| Тесное взаимодействие основных разработчиков и членов сообщества. | |
| Высокая скорость устранения багов и слабых мест. | |
| Упрощение и оптимизация кода, а, следовательно, повышение надежности криптовалюты. | |
| Отсутствие временных рамок в развитии проекта. |
Анализируя, что такое исходный код криптовалюты с позиции открытости, можно сделать вывод о пользе такого подхода. В результате работы сотен тысяч людей появляется надежный и качественный продукт, который постоянно совершенствуется. При появлении малейших багов или проблем в работе опытные программисты с удовольствием берутся за решение проблемы для внесения посильного вклада в развитие проекта.
Остальное сообщество, не участвующее во внесении правок, пользуется качественным продуктом. Бесплатное ПО как бы появляется из воздуха и доступно всем желающим до момента, пока группа экспертов заинтересована в развитии проекта.
Законодательство и исходный код криптовалюты
![]()
Позиция многих стран относительно виртуальных денег и возможности их применения находится под вопросом. Одни полностью легализовали криптовалюту (к примеру, Япония, Беларусь), другие разрешили ее применение частично (Китай, Южная Корея, некоторые страны ЕС), третьи запретили (Эквадор, Непал и другие).
Что касается открытости исходного кода, здесь позиция правительств крупных государств в большей части одинаковая. Такой подход поддерживается, ведь это стимулирует создание более совершенного и надежного программного обеспечения. Разработка защищена авторским правом, но пользователи могут использовать и даже изменять код без получения разрешения или внесения платежей.
В ряде лицензий прописываются требования, подразумевающий выпуск ответвлений ПО с учетом аналогичных правил. В результате спрос на программы с открытым кодом увеличивается.
Источник исходного кода криптовалюты — где скачать
![]()
Главная страница сайта github.com
Как отмечалось, ярким примером ПО с открытым кодом — Linux, а в сфере криптовалют — Биткоин, Эфир. Сегодня большинство блокчейн-проектов выбирают открытую схему развития, понимая перспективы и возможности таких разработок. В результате на рынок выпускаются сети, взаимодействующие на базе согласия.
ПО, позволяющее пользователю подключиться к сети, носит название клиента, а сама программа имеет открытый код. При создании софта участвует множество людей, которые скачивают программу со специальных сайтов и создают нечто новое. К примеру, в сфере криптовалют это может быть кошелек, биржевая площадка или другое совместимое ПО.
Необходимая информация содержится на сайте github.com. Эта удобная платформа, в основе которой лежит GLt. Сервис контролирует процесс изменения исходных кодов и хранит в базе историю внесения изменений. Здесь же указывается дата внесения правок, человек, который это сделал, и время внесения правок.
Хранилище носит название репозиторий, а правки в исходный код делаются с помощью коммитов. Последние — набор правок в документах, объединенных в один перечень (для каждого предусмотрено индивидуальное обоснование). Изменения вносятся после получения соответствующих запросов.
Принцип действия можно рассмотреть на примере:
- В 1-й день создана разметка html (делается коммит).
- На 2-е сутки добавляются цвета, меняются шрифты (для этих правок также пишется коммит) и так далее.
Иными словами, репозиторий контролирует форки для оригинального (первоначального) программного обеспечения. После выставления первичный проект можно усовершенствовать, после чего изменения сохранятся на сайте. К примеру, по ссылке github.com/ethereum можно найти 181 репозиторий для криптовалюты Эфириум. Каждый из них акцентирует внимание на определенном нюансе проекта — умных контрактов, совместимости с сетью и так далее. При этом код Эфириума доступен для просмотра и скачивания в полном объеме.
Что касается Bitcoin Core, здесь актуальна ссылка github.com/bitcoin/bitcoin. На 6 декабря 2018 года в этой сети отражено 18,893 тысячи коммитов и 209 релизов. Для получения доступа к репозиториям криптовалюты можно перейти по ссылке github.com/bitcoin/. По аналогичному принципу легко найти исходный код почти для любой интересующей криптовалюты. К примеру, для Zcash предусмотрено 14 репозиториев, а ссылка для скачивания — github.com/Zcash, для Litecoin — github.com/litecoin-project.
Как исходный код криптовалюты используется при создании новых монет?
![]()
В основе любой виртуальной монеты лежит программный код, где прописаны технические параметры коина и функционирования сети. В результате у создателей цифровых денег имеется два пути:
-
Использовать существующий код криптовалюты и внести интересующие изменения. Это наиболее простой путь, ведь достаточно зайти на github.com и найти интересующие сведения. В дальнейшем придется проделать большую работу — сделать собственные библиотеки, определиться с сетевыми портами и настроить их, установить параметры генерации коинов, сделать ключи и провести другие мероприятия.
Если говорить в общем, создание криптовалюты проходит в несколько этапов:
-
Выбор подходящего исходного кода, используемого для создания монеты.
Исходный код биткоина
Исходный код биткоина был разработан Сатоши Накомото на основании более ранних идей, выдвинутых американскими программистами. Однако только он сумел полноценно его обосновать. Затем Сатоши представил проект на суд общественности на одном из крупных форумов. Так в мире появились цифровые валюты. При этом до сих пор не раскрыта личность человека, создавшего систему блокчейна.
Открытый код биткоина: в чем его уникальность
Скачать его и получить доступ к редактированию можно через официальный сайт https://bitcoin.org/ru/development.
Сатоши Накомото не планировал делать свою разработку источником обогащения, он хотел показать миру, как можно применять криптографические алгоритмы, а также какие это открывает перспективы. В 2010 году он отошел от дел, передав бразды управления проектом своей команде. В ее составе трудится почти 3 тысячи энтузиастов.
Исходным кодом биткоина может воспользоваться любой программист. Со временем начали появляться новые альткоины. Многие из них были полными клонами BTC, а потому не получили распространения. Но единицы все же выжили и даже выбились в лидеры. Показательный пример — криптовалюта Litecoin. Она полностью базируется на исходном коде биткоина, но имеет два преимущества. Во-первых, ее эмиссия в 4 раза больше. Во-вторых, схема майнинга намного проще. Она позволяет применять только процессор без айсиков и видеокарт.
Исходный код биткоина: важность принципа открытости
Открытые проекты позволяют другим участникам сети проверять корректность информации, вносить изменения или расширять возможности системы. Большая часть цифровых монет построена на открытом коде. Такой подход к разработке ценится не только в криптовалютах, но также в мире ПО.
Часто разработчики ПО/криптовалют скрывают исходный код. Тогда поддержкой, разработкой, а также устранением ошибок занимается ограниченный круг лиц. В криптовалютах NEM, Stellar доступ посторонних к этой информации закрыт. Это касается многих программ и проектов Facebook или Adobe. Такое ПО называется «несвободным». Внесение правок или изменений доступно авторам, имеющим юридически обоснованное право.
Открытость исходного кода делает его доступным для всех. Любой может выполнять разные действия с программой — делать копии, смотреть, вносить правки, отправлять друзьям или проходить обучение. Иногда разработчики открывают доступ к исходнику, но ограничивают его применение. Когда смотреть можно, а делать копии или использовать в других проектах нельзя.
Открывая такую важную информацию для пользователей, создатели криптовалюты повышают уровень децентрализации сети. К развитию платформы привлекаются программисты, а также пользователи, способные дать полезные рекомендации, а иногда самостоятельно внести правки. Также сообщество оперативно выявляет имеющиеся ошибки. Это повышает надежность сети, ускоряет ее развитие.
Исходный код многих программ разрабатывается и поддерживается специальными компаниями. Для открытого ПО работает иной принцип. Здесь ключевую роль играет участие каждого человека. Информация бесплатно распространяется в Сети, скачивается на компьютеры, изучается пользователями. Сведения публичны, поэтому замечания относительно работы проекта или его слабых мест появляются очень быстро.
Исходный код криптовалюты никому не принадлежит, на него ни у кого нет прав. Не существует предприятия, которое бы владело Bitcoin или Monero. Такая децентрализация несет ряд преимуществ для системы, ее продвижения и развития. В программной среде одним из наиболее успешных примеров является операционная система Linux. Она имеет открытый исходный код и при этом надежнее, чем Windows.
Преимущества того, что исходный код биткоина является открытым
Открытость исходного кода в криптовалютной сфере и секторе программного обеспечения имеет много плюсов:
- Мотивация для создания качественного продукта. Каждый человек, участвующий в создании или оптимизации проекта, ставит своей задачей лично использовать проект и получать от этого дивиденды. Такой участник свободен в действиях, он не ограничен контрактными обязательствами и требованиями создателя.
- Долгосрочная поддержка продукта. Любой разработчик однажды устает от своего проекта и у него появляется желание заняться чем-то другим. Тогда ему нужно найти последователя готового продолжить дело. Всегда находятся энтузиасты, которые привносят новое видение проекту, повышают спрос на него, улучшают качество.
- Возможность упрощения. Исходный код криптовалюты — пример идеального обеспечения, прошедшего множественную «огранку» с привлечением лучших программистов. В среде специалистов считается, что доступность способствует быстрому устранению багов. Со временем продукт оптимизируется, упрощается, унифицируется и становится более надежным.
- Легкость устранения багов. Открытость исключает трудности с тестированием или отладкой. При появлении проблем всегда найдется группа энтузиастов, готовых устранить ошибки. Многие участники сети выявляют баги и предлагают пути решения. Когда исходный код закрыт, на выявление и устранение слабого места может уйти много времени.
- Полная взаимосвязь. Благодаря взаимодействию участников, граница между разработчиками и обычными пользователями смазывается. Все действия с программным обеспечением ведутся на глазах криптовалютного сообщества и доступны для изучения всем.
Главным недостатком, как это ни парадоксально, является доступность информации для злоумышленников. Они легко могут найти слабое место системы.
Открытость кода — это хорошо. При появлении малейших багов в работе программисты оперативно берутся за работу для внесения посильного вклада в развитие проекта.
Остальное сообщество, не участвующее во внесении правок, пользуется качественным продуктом. Бесплатное ПО как бы появляется из воздуха и доступно всем до того момента, пока группа экспертов заинтересована в развитии проекта.
Открытый код биткоина: закон и свободное ПО
Действующее законодательство поддерживает и стимулирует разработку программного обеспечения с открытым исходным кодом. Оно, как и всё ПО, защищено авторским правом, но его авторы выпускают код с лицензией, позволяющей каждому использовать и модифицировать его без разрешения или любых выплат.
Некоторые лицензии включают требования, что производные программного обеспечения должны выпускаться на таких же условиях. Таким образом база открытого исходного кода растёт и распространяется.
Bitcoin script для заработка монет
Скрипт Биткоин представляет собой стек команд и выполняется слева направо. Он специально разрабатывался как не полный по Тьюрингу, так как не содержит циклов.
Скрипт Bitcoin — это список инструкций, относящийся к транзакции, который описывает, как пользователь, которому предназначены BTC в этой транзакции, может получить к ним доступ.
Самый типичный скрипт в транзакции при пересылке средств на адрес другого пользователя в сети требует от получателя предоставить две вещи:
- Публичный ключ, хэш от которого будет совпадать с адресом, который указан в скрипте
- Подпись, которая подтверждает владение секретным ключем, который соотносится с предоставленым публичным ключем.
Использование скриптов позволяет гибко настраивать параметры условий, которые должны быть выполнены для перевода BTC. Например, скрипт может потребовать пароль вместо ключа, несколько ключей одновременно или вообще не требовать ключа для перевода средств.
Заработать биткоины можно решением логических задач или выполнением операций на сайтах-кранах. За выполнение простых действий, на работу с которыми уходит практически целый день, юзеру начисляется минимальное вознаграждение. Задачи становятся доступны только через определенный промежуток времени, зависящий от типа сайта (5, 10, 30, 50, 60 минут). Данные факты практически сразу подрывают энтузиазм новых майнеров и заставляют их отказаться от использования этих ресурсов.
Однако, программисты нашли решение проблемы. Скрипты — позволяют собирать вознаграждение без участия самого юзера. Запрограммированная система сама выполняет заданный алгоритм.
Программа поддерживает выполнение следующих действий:
- Переход на заданные сайты.
- Ввод капчи.
- Отражение статистики начислений.
Но чтобы скрипт по добыче биткоинов работал правильно, его нужно настроить.
Достоинства и недостатки, которыми обладает BTC script
Скрипты для заработка биткоинов на автомате имеют больше преимуществ, чем стандартный способ добычи криптовалюты. Среди плюсов стоит выделить:
- Стабильность. Программа работает без перебоев, а покупка качественной версии позволяет избежать багов.
- Независимость. Автоматический режим работы бота позволяет пользователю избежать длительного сидения за компьютером. Достаточно просто настроить алгоритм программы, и она сама выполнит необходимые операции.
- Беспрерывность. Бот может работать в круглосуточном режиме при условии включенного компьютера пользователя. При дезактивации ПК скрипт также перестает работать.
- Прибыльность. Использование программы позволяет значительно повысить уровень дохода, получаемого с кранов. Главной задачей юзера остается только отслеживание нерабочих сайтов и исключение их из списка.
- Бесплатные версии. Для того чтобы самостоятельно убедиться в эффективности этого способа заработка не обязательно вкладывать деньги, достаточно только найти бесплатную версию программы в сети.
Конечно, все эти программы имеют и некоторые недостатки, например, разработчики кранов научились выявлять пользователей, использующих скрипты и сразу блокируют их. Попытаться можно, не сервисов, допускающих использование скриптов очень мало. Да и вообще, краны нельзя считать прибыльным занятием, разве что использовать их для развлечения и знакомства с криптовалютой.
BTC скрипты: виды
Выделяют несколько основных видов программ для автоматического заработка биткоинов. Все они отличаются своим функционалом и возможностями.Скрипты делятся на следующие виды:
- Независимые. Эти скрипты встраиваются в программный код той или иной страницы крана и работают только с одним ресурсом.
- Сеть скриптов. Для данного вида характерно объединение нескольких ботов, работающих на расширении iMacros. Они способны вести свою деятельность одновременно на нескольких платформах.
- Автономные. Эти программы работают без участия пользователя и требуют точной настройки.
- Скрипты для сбора с большого количества сайтов. Данный вид ботов предназначен для работы одновременно с 40 и более ресурсами.
Стоит отметить, что масштабных скриптов существует немного, да и в бесплатном варианте они встречаются довольно редко.
Упрощение русской сериализации и криптокода
Вся российская сеть поставок фармацевтики собирается измениться. Все началось с законопроекта № 488-FZ, являющегося частью правил сериализации в России, подписанного президентом Владимиром Путиным.
Законопроект стал законом в январе 2019. В соответствии с принятым законом, код сериализации должен иметь криптографический аспект. В январе 2020, сериализация и криптографические коды станут обязательными для всех лекарств, ввозимых и продаваемых на территории России.
Тем не менее, некоторые в фармацевтической промышленности считают это проблематичным, в том числе представители Ассоциации международных фармацевтических производителей (AIMP). Закон затрагивает весь мировой рынок, а не только Россию. Поэтому важно понимать требования к сериализации и шифрованию.
Что такое Русская Фармацевтическая Сериализация?
Российские требования к фармацевтической сериализации чрезвычайно сложны. Помимо того, что российские нормативные акты предназначены для защиты потребителей, они полностью отличаются от законов других стран.
Каждый закон о сериализации четко определяет уникальную идентификацию продукта (UPID). Российский закон о сериализации требует, чтобы каждое лекарство, входящее в цепочку поставок страны, имело UPID. Однако российский UPID состоит из двух частей: серийного номера и номера глобальной торговой позиции (GTIN). Кроме того, он имеет крипто-«хвост» из двух частей, что делает его еще более безопасным.
Определение российского крипто-кода
Российский крипто-код добавляет еще один уровень безопасности в UPID. Он разработан для того, чтобы сделать UPID более безопасным и полностью устранить риск ошибок в процессах в цепочке поставок. Российский крипто-код на самом деле является крипто-хвостом, включающим электронную подпись и ключ проверки.
Электронная подпись представляет собой последовательность символов 44. Символы могут быть специальными символами, цифрами, прописными и строчными буквами. Ключ подтверждения имеет четыре цифры и прописные и строчные буквы.
Этот криптографический код значительно снижает риск ошибки и затрудняет попадание поддельных лекарств в цепочку поставок. В процессе проверки легальность лекарства устанавливается с помощью серийного номера, номера GTIN, электронной подписи и ключа проверки. Эти данные почти невозможно подделать, угадать или воспроизвести.
Влияние российского крипто-кода на фармацевтическую отрасль
Российские требования к сериализации и криптографическому коду окажут огромное влияние на фармацевтику. Такие масштабные и сложные изменения, как правило, нарушают цепочку поставок, если производители и оптовые поставщики не разрабатывают систему проверки, которая может обрабатывать запросы проверки в режиме реального времени.
Добавление криптохвоста означает, что дополнительные символы 48 должны быть закодированы в матрицу данных. Это означает, что будут новые требования к печати и проверке. Кроме того, производители должны будут инвестировать в оборудование, которое может печатать матрицы данных, и системы проверки, которые могут их считывать.
Как приготовиться
Оптовые поставщики и производители могут подготовиться, инвестируя в принтеры и системы проверки, которые могут соответствовать новым стандартам. Сериализация важна для России — она распространяется за пределы фармацевтической промышленности почти на все группы продуктов, поэтому наличие необходимого оборудования жизненно важно для ведения бизнеса там.
Решения сквозного отслеживания также вступают в игру, так как они могут использоваться для удовлетворения новых требований сериализации и криптографического кода. Неважно, какую роль играет ваша компания в цепочке поставок, было бы разумно проявить инициативу и поговорить с вашими партнерами.
Чтобы обеспечить соответствие российским правилам сериализации, все в цепочке поставок должны работать вместе. Как связаться с rfxcel сегодня, чтобы узнать, как вы можете опередить кривую!
Криптография на Rust и немного FFI
Начнем с того, что эта статья как и большинство моих статей родилась в процессе разработки. В данном конкретном случае — разработки внешней крипто-библиотеки для генерации крипто-кошельков.
Да, определенно. Я считаю, что приставка «крипто» любому словосочетанию придает привкус гигантской яхты дрейфующей где-то в Майами.
В итоге, выбор упал на Rust потому что я уже работал с ним, и знаю, что crates.io изобилует всякими библиотеками для работы с разнообразными криптографическими функциями.
Bitcoin
Всеми признанный король криптовалют использует функцию secp256k1 для того, чтобы сгенерировать ключ-пару.
Ключ-пара (Keypair) состоит из двух частей — приватный ключ и публичный, который выводится из приватного путем «Деривации»
Стоит упомянуть, что все крипто-сети, которые были рассмотрены в рамках статьи используют одно семейство фукций для генерации ключ-пар — эллиптические кривые. Пожалуй, не будем углубляться в то как работает этот алгоритм, мы же все-таки сюда пришли не математику учить, не правда ли?
Обычно приватный ключ — это просто случайное 256-битное число между 0 и n — 1, где n — константа (n = 1.1578 * 10⁷⁷). Как я уже сказал в Bitcoin публичный ключ выводится из приватного при помощи функции secp256k1 которая имеет 128-битную сложность. Это значит, что для того, чтобы провести обратную деривацию потребуется
2¹²⁸ операций ( тут могло бы быть сравнение с кол-вом атомов во вселенной ). Короче, вся безопасность вашего приватного ключа основывается на том, насколько сложно получить его из публичного.

Больше технических подробностей про сложность и входные параметры secp256k1 любителям технических подробностей (стр. 4 и cтр. 9).
Вот пример того как сгенерировать пару ключей для Bitcoin используя крейт secp256k1. OsRng тут — это структура-генератор «Достаточно рандомных чисел» из крейта rand.
Окей, у нас есть пара ключей, So what? Чтобы мы могли принимать Bitcoin от кого-то, нам нужно конвертировать публичный ключ в Адрес.
Bitcoin Адрес — представляет из себя хешированный публичный ключ, который обычно используют для переводов между кошельками.
Чтобы получить адрес из публичного ключа нам нужно прогнать его через double-hash функцию (SHA256 + RIPEMP160, иногда еще называют HASH160) и потом кодировать результат используя Base58Check.

Компутируем HASH160, должен быть 20 байтов в длину. В ширину не важно, вроде как
Интересный момент, Base58Check используется не случайно. Эта кодировка предоставляет дополнительные проверки на опечатки, а именно Байт версии и Чексумму.
Байт версии (Version byte) — индикатор сети (0x00 в mainnet например, список всех возможных префиксов)
Чексумма (Checksum) — первые 4 байта результата конкатенации байта версии и SHA256(SHA256(HASH160))

Инсертим байт версии в начало вектора с HASH160. Два раза через SHA256 и достаем первые 4 байта, достаточно просто.
Следущий шаг — конкатенировать HASH160 с чексуммой и прогнать это все через base58 используя крейт bs58.

Теперь у нас есть случайно сгенерированный приватный ключ, публичный ключ полученный из него и Bitcoin адрес, на который мы уже можем принимать бинкоины чинаа . Последний шаг — конвертировать приватный ключ в WIF (Wallet Import Format). Для этого нужно просто прогнать его через Base58Check с байтом версии 0x80.
Ура! Мы создали Bitcoin кошелек с WIF приватным ключом и Base58 адресом.
В оригинальной статье я дополнительно рассказываю про генерацию кошельков под Ethereum, Litecoin, Solana, Tron, Aptos и Sui и немного про Ethereum Keystore для безопасного хранения приватных ключей. Но тут я в заголовке пообещал FFI, поэтому придется про FFI.
FFI (Foreign Function Interface)
Дальнейшей целью было портирование данной библиотеки в Golang ( grpc не предлагать ). Поэтому я решил просто сбилдить динамическую библиотеку (.dylib) и использовать ее через CGO.
Для этого надо прописать в Cargo.toml, что мы билдим библиотеку как cdylib
Напишем небольшой библиотечный крейт с функцией generate_wallet , которая принимает enum Network с доступными сетями. Атрибутный макрос #[no_mangle] говорит компилятору не изменять имя функции во время компиляции (это называется Name mangling). Из функции мы возвращаем сырой указатель на нуль-терминированную строку. Атрибутный Макрос #[repr(C)] значит, что enum будет расположен в памяти как в C.
Далее пишем простой заголовочный файл binding.h для CGO. Можно конечно все это засунуть и в преамбулу, но я все еще считаю, что писать код в комментариях к коду так себе идея .
Теперь просто импортируем нашу библиотеку вместе с заголовочным файлом через преамбулу CGO. С.GoString мы используем, чтобы привести указатель char* к string . Go итерируется по памяти пока не встретит нуль терминатор \0 .
-L — По умолчанию .dylib файл сохраняется в target/debug/
-l — По умолчанию соответствует имени из Cargo.toml
Ну вот и все, теперь билдим либу cargo build . И возможно если Go изначально не был настроен ( как у меня ) надо будет добавить несколько env переменных указывающих на архитектуру (список всех возможных архитектур и осей) CGO_ENABLED=»1″ GOOS=»darwin» GOARCH=»arm64″ go build
Внимание! Спасибо за внимание. Надеюсь мой опыт окажется кому-то полезен, и еще надеюсь, что я ничего не упустил и не перепутал 🙂