Если вы когда-нибудь прикручивали блокчейн к PHP-бэкенду, вы знаете это тихое чувство тревоги при взгляде на composer.json.
web3p/web3.php? Заброшен несколько лет назад, EIP-1559 так и не выучил. Популярные пакеты Keccak и эллиптической криптографии? Один мейнтейнер, обновления раз в год. Поддержка TON? В лучшем случае частичная — где-то недописанный кошелёк, где-то нет канонического BOC-энкодера.
А теперь вспомните, чего эти библиотеки касаются: код, который выводит адреса, подписывает транзакции и работает с приватными ключами. Rug-pull, заброшенный мейнтейнер или один скомпрометированный релиз — и вы в одном composer update от слитого кошелька.
Для пет-проекта — ладно. Для платёжной системы, которая подписывает реальную стоимость on-chain, такая supply chain неприемлема.
Поэтому я сделал нерациональную вещь: переписал весь стек. 15 пакетов, чистый PHP, ноль внешних runtime-зависимостей — только PHP-расширения (ext-*) и PSR-интерфейсы. Каждая строчка криптокода своя, аудируемая, и привязана к эталонным тестовым векторам.
Ниже — почему и как, включая три прод-бага, которые и оправдали всю затею.