Очередная дыра которую я не буду эксплуатировать, непонятно кто именно ей подвержен (и подвержен ли вообще), куда репортить и вот это всё. Ну поделюсь с вами чтоли.
Там завезли в блокчейны дикую дичь под названием инскрипшены. Это когда блокчейн используется только как упорядоченый лог записей, а поверх мы делаем свой леджер, где проверяем некие правила создания и перевода токенов. Давеча вот этой хренью ТОН на полтора суток положили, да и много кому досталось.
Прикол в том, что вот этот самый софт, который поверх строит леджер, должен у всех быть строго одинаковым. Иначе, если набор правил будет различаться, состояние разъедется и можно будет например в 2 разных сервиса сбагрить одни и те же токены. А победители альтернативной олимпиады, которые это всё придумали, сделали абсолютно прекрасное решение взять за основу текстовый формат json. Который при всей своей популярности и удобстве, похож на кусок говна в плане строгости спецификации. В плане обычно 99.99% json будет нормально обрабатыватсья у всех, но есть куча крайних случаев и неоднозначностей, которые можно собрать ручками. Есть даже целая таблица
http://seriot.ch/json/parsing.html того как разные библиотеки по-разному обрабатывают json.
Тоесть если реализовать леджер для этих инскрипшенов на разных языках, то с большой вероятностью стейт может разъехаться. Я вот пробежался по гитхабу и нашёл три индексера для самых популярных инскрипшенов на биткоине - Ordinals.
https://github.com/unisat-wallet/libbrc20-indexer - использует встроенный анмаршалер go. первый в гугле.
https://github.com/ordinals/ord - это вроде референсный кошель на расте. использует serde_json.
https://github.com/bestinslot-xyz/OPI - эти вообще перекладывают по цепочке json -> postgres -> python.
Я не знаю может там какие-то проверки, которые я не заметил беглым взглядом. Может просто еще никто не подумал об этом. Может с 2017-го года ситуация с парсерами json кардинально улучшилась (врядли. например \0000 не экранированный го переваривает, а постгря нет).
Но если честно судьба этой дряни меня мало волнует.