The Open Dev Blog
1.28K subscribers
13 photos
1 video
79 links
Security audits: @TheOpenDevTeam

Contact: @rends_east, @therealmaloleg or @bazrov
Download Telegram
Я бы хотел писать тесты смарт-контрактов на...
Anonymous Poll
33%
Typescript, как в blueprint
19%
Tolk, по аналогии с foundry
34%
Python
13%
Свой вариант
1
🔥 Как вообще ваше настроение, девы?

Давно не было постов, но скоро будут, писать есть о чем.
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
1🎄11💩77🔥2😁2
🔥 Что для вас девелоперское событие года в TON?

Устроим мини премию @TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
17💩4🎄3👍2
🔥 Подходит к концу 2025 год.

Спасибо всем, кто был тут с нами, участвовал в дискуссиях, приносил инсайды, ставил реакции. Нас почти 1000!

В новом году желаем вам самых крутых инсайтов, самых крутых профессиональных успехов, и самых крутых идей! Мы постараемся помочь.

🎄 С любовью, ваш
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
1139🎄6💩4
🔥 Nonce в каждый дом.

Практически каждый, кто когда-то писал смарт контракты, знаком с концепцией nonce. Каждый пользователь TON хоть раз, но использовал nonce, встроенный в контракт wallet w5/v4/v3.

Nonce — это (обычно) некоторая информация, которая делает уникальным каждое исполнение подписанного offchain ордера в контракте. Это нужно для того, чтобы контракт нельзя было переиспользовать — например, чтобы нельзя было взять ваш свап на @bidask, отправить его снова, и заставить ваш кошелек произвести свап заново.

Обычно все представляют nonce как одно число, которое увеличивается на 1 при исполнении ордера. Однако такая концепция обладает проблемой (вы, возможно, с ней сталкивались) — в таком случае ордера должны быть обязательно исполнены последовательно один за другим, в строго определённом порядке. На пользовательских кошельках в TON могут пропадать транзакции, если быстро исполнить два действия подряд — второе действие может попасть валидатору перед первым, или же у обоих действий будет одинаковый nonce — тогда одно исполнится, а второе пропадёт, ведь nonce в контракте и ордере не совпадут. Ходят слухи, что это хотят исправить.

Для борьбы с этой проблемой существует множество концепций nonce. Расскажем про некоторые:
⚫️В @bidask в trade account-ах реализована система с 16 параллельными nonce-ами. Кроме числа, пользователь также должен приложить к ордеру номер nonce от 0 до 15 — и именно этот nonce будет увеличен на 1 после исполнения ордера. Это позволяет отправлять в любой последовательности
⚫️В TON существует highload wallet. Он сохраняет query_id пришедшего ордера и дедлайн, когда этот ордер перестанет быть валиден. Как только этот дедлайн истекает, он чистит сохранённые query_id, разумно считая, что все ранее исполненные ордера истекли. Таким образом он поддерживает гигантское количество параллельных транзакций — им пользуются CEX и многие сервисы, централизованно взаимодействующие с блокчейном.
⚫️На EVM блокчейнах есть и более экзотические варианты nonce. Совсем недавно его предложили хранить как двойной map { address => {uint256 => uint256}}. Каждому адресу юзера здесь сопоставляется map {uint256 => uint256}. Когда на такой контракт приходит ордер с nonce, контракт берет map по адресу юзера, и извлекает из от nonce два значения:
word = nonce / X;
bitIndex = nonce % X;
// X -- это некоторое число (256 или 64)

Переменная word является ключом, а bitIndex — индекс бита в числе, который, по задумке, является нулевым битом (после исполнения ордера станет равным 1). Таким образом, nonce позволяет исполнять огромное количество параллельных ордеров, являясь bitmap-ом. Подробнее можно почитать тут.

Вариантов nonce очень много — нужно просто понять, для чего он нужен в конкретном случае.

🎄 С новым годом.
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
9👍7🔥4🤓31
🔥 Редакция подумала, что странно было бы делать вид, что все нормально, и продолжать писать посты про фишки разработки на Tolk, нюансы работы нашего любимого блокчейна и т.д

В связи с этим, наши любимые читатели, вопрос:
О чем бы вы хотели тут читать? Может, продолжать повествование про TON, может, переключиться на что-то другое (блокчейн, технологию)? Расскажите, чем вы сейчас занимаетесь, и чем интересуетесь.


С вопросом, ваш
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
107🤣3👌2
🔥 X402 и Вайбкодинг

Многие уже слышали про хайпующий платёжный протокол x402 от Coinbase. Если вкратце, то это протокол, по которому можно заставить агента платить за что-либо в интернете. Делается это с помощью уже всеми забытого кода 402 (Payment required). После этого агент соображает, что надо подогнать лавехи, и платит по указанным реквизитам (если вы дали ему свою seed фразу) 💳

Это сильно упрощает жизнь разработчикам, поскольку больше (почти) не нужны Stripe, Bitpay и остальная шушера. x402 создает целую индустрию, в которой ИИ агенты сами могут платить за различные сервисы, услуги, в том числе другим агентам, например, делегируя тяжёлую работу за крипто-копейки.

Как же именно работает это упрощение? Для приема платежей в крипте нужна собственная индексация. x402 и здесь всех спасает, вводя новую сущность — facilitator.

Facilitator — это отдельный сервис, который за вас (за всех) проверяет все приходящие платежи. Тут начинаются ньюансы:

На схеме потока данных от самих Coinbase есть два отдельных процесса проверки платежа на facilitator — verify и settle. Нетрудно догадаться, что verify отвечает за проверку корректности платежа, а settle — за финализацию. В качестве заметки на полях разработчики предлагают не ждать settle транзакции (то есть по сути не ждать появления транзакции в финализированном блоке), если не хотите слишком большой задержки.

Звучит страшно? Так и есть.

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

Есть и хорошие новости — во всех официальных реализациях middleware (реализация клиент-части протокола x402 на стороне принимателя платежа) для популярных backend фреймворков (FastApi, Gin, Express, Flask) проверяется в том числе и settle (если их правильно использовать 🤪👍).

Но если разработчик не ОЧЕНЬ хорош😱, а может быть даже и вайбкодер, то наверняка стоит ожидать худшего. Для llm слово verify звучит так, как будто после этого можно уже делать полный газ, и не ждать какого то там settle. Проверено на себе — пока ты капсом не напишешь llm, что нужно проверять транзакцию корректно, она не будет понимать, что что-то не так.

Весь этот пост — это нативная интеграция нашего вайбкода для хакатона на BNB: debil.capital

Сервис был сделан за 2 дня, на ИИ агент оказывалось очень сильное давление, чтобы он заставил работать этот сервис. И как оно и бывает в таких случаях — там есть уязвимость в реализации x402. Приглашаем всех ее найти.

❗️ Тому, кто первый найдёт способ забайпасить платёжку, мы пришлем целых 1000 $TONDEV! Приглашаем желающих в комментарии (только закрывайте предположения спойлерами)

Плачем и платим
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥87👍42
🔥 LLM и безопасность

Мы все уже начитались историй про успех в разработке с применением claude, cursor, codex и т.д. Этого слишком много, и странно было бы думать, что влияние LLM на IT ограничится исключительно разработкой. Надо это разбавить. Мы разбираемся в безопасности, про неё вам и расскажем.

В ноябре 2024 года OWASP (международная организация, занимающаяся вопросами информационной безопасности) выпустил свой очередной топ самых популярных уязвимостей для больших языковых моделей — OWASP LLM top 10. Большинство позиций там довольно рядовые, однако мы здесь собрались из-за самой первой — "Prompt injecting".

"Prompt injecting" — это буквально "убеди LLM в том, что ей надо сделать плохую вещь". В простейшем случае LLM можно сообщить, что ты администратор сайта, и тестируешь его работу, поэтому ассистенту нужно СРОЧНО отдать тебе все данные пользователей. Ничего не напоминает?:) В более сложных сценариях — дать непрямое указание через другие способы ввода информации. Все это превращает традиционный хакинг в довольно увлекательное занятие, где ты общаешься с не очень умным собеседником с памятью золотой рыбки, которого нужно обвести вокруг пальца. Вопреки простому описанию, сделать это довольно трудно. Интересный гайд на prompt injecting (осторожно, полностью его никто не читал).

Кроме изменения традиционного хакинга, мы должны быть готовы и к новому виду вирусов. Мы все пользуемся агентами, чтобы они за нас что-то делали на нашем компьютере (или сервере). Ирония в том, что мы агентам для этого не нужны. Вот, например, уже появились вирусы, которые прямо на зараженном устройстве запрашивают помощи у AI агента для более эффективной кражи информации.

БОЛЬШИЕ языковые модели
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍662
⚡️ В коде TON Connect были найдены упоминания L2 сети.

@gosunov_ch обнаружил упоминания некого Tetrachain. Судя по найденной документации, это L2 на TON. На tonviewer уже создан соответствующий поддомен — tetra.tonviewer.com

Из интересного — в данный момент max_split сети выставлен в 0, то есть сеть не шардируется. Минимальный стейк для валидатора — 1 TON. Разбираем пока халява!

Вероятно, для трансфера TON в новую сеть был использован trustless мост, разработанный на одном из хакатонов ранее. В данный момент в сети сминчено порядка 100к TON.

🔥 Что думаем?
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥14👍974
🔥 Как нас взломали (нет)

Последнее время часть команды @TheOpenDevBlog пассивно ищет работу. В связи с этим был открыт LinkedIn в поисках контактов и возможностей. Но, как это бывает, искали работу, а нашли золото.

Представьте: вам пишет HR. Он спрашивает про ваши скиллы, просит резюме, интересуется зарплатными ожиданиями. Его и его руководителя всё устраивает (уже на этом моменте стоит насторожиться), поэтому HR предлагает выполнить тестовое задание.

Присылает ссылку на репозиторий. Там обычный (иногда не совсем) проект, в котором требуется внести некоторые правки. Если на этом моменте вы не насторожились, и решили сделать задание, то поздравляю 🥳🥳🥳 — вас взломали.

Насторожить вас должно было то, что вам прислали ссылку на готовый репозиторий, а не предлагают сделать его самому. Причем он ещё и на bitbucket (хотя на github такое тоже может быть).

❗️ Запомните: вы должны контролировать весь ход работ по тестовому заданию. Если от вас требуют проект — вы должны создать его сами. Иначе вас либо пытаются взломать, либо, что ещё хуже, пытаются заставить поработать бесплатно.

Нас попытались взломать аж 2 раза. Первое из присланных "тестовых" содержало пакет execp (название уже настораживает) в package.json файле. Это был взлом "для тупых" — предлагали баснословные деньги, а вся коммуникация по тестовому кончилась фразой:
After clone the repo and install the packages, Let me know. And then, I will give you a test task

Второе было умнее, но механика аналогичная — репозиторий содержал пакет chai-as-flex, который, судя по всему, также является вредоносным.

Будьте осторожны.
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍309😁6🔥1🍌1
🔥 Подавайте следующего!

@TheOpenDevTeam провели аудит @open4dev. Это order-book DEX, написанный на tolk.

Аудит был проведён при участии @gosunov_ch — он также участник @TheOpenDevTeam.

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

Обращайтесь к нам — мы проверим вашу безопасность и расскажем об этом. Мы мотивированы, злы на мир, и готовы доказывать.

Работаем.
@TheOpenDevTeam x @TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥17🎉88
7🕊1
🔥 Briefly.

Читать каналы про TON сейчас невозможно, поэтому себерём всю актуальную информацию в одном посте.

⚫️ Telegram выпустил обновление, позволяющее взаимодействие ботов между собой. В комментариях к обновлению было указано, что это сделано для улучшенного взаимодействия ИИ-агентов внутри платформы.
⚫️ Sub-second обновление на TON вышло. Сеть ускорилась в N раз.
⚫️ Доходность за стейкинг TON сейчас порядка 25%. Инфляция из-за выходов новых блоков увеличилась до 4%. TON Core уже дали комментарий.
⚫️ Анатолий Макосов анонсировал снижение комиссий в блокчейне TON.
⚫️ Канал "Все загадки на блокчейне" выпустил пост спустя 4 года.
⚫️ Ник Некилов выпустил страничку для live отслеживания наград валидаторов.
⚫️ Алексей Госунов сделал proposal на уменьшение наград за выпуск блока в 5 раз.
⚫️ Год назад мы выложили смарт-контракт, позволяющий сжигать TON на комиссию для валидаторов. Актуально как никогда.
⚫️ Автор канала "defi smells like crap" проиграл публичные дебаты о полезности последних обновлений TON.

Пост не будет обновляться.
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1185👍4
🔥 t402 — один из 7 шагов до #MTONGA.

Вчера Дуров анонсировал ещё 6 шагов помимо ускорения блокчейна для достижения целей #MTONGA. Попробуем предсказать один из шагов.

Мы уже писали про протокол x402, позволяющий ИИ агентам платить за что-либо в интернете с помощью криптовалюты. Это новое золото — нарратив, который преследуют все блокчейны. TON не остался в стороне, уже существуют реализации x402 для нашего блокчейна. Но это всё упускает наше главное и любимое преимущество.

Совсем недавно Telegram выпустил обновление, где добавил bot-to-bot взаимодействие внутри платформы. Это прорыв, этого все очень давно ждали, и наконец это случилось. В центре этой картины не хватает одной детали — возможности ботов обмениваться активами за выполнение определенной работы. Классический x402 под это не подходит — это HTTP протокол, в то время как боты общаются через Telegram.

Редакция предполагает, что в одном из следующих апдейтов появится t402 — payment протокол для запроса оплаты. Производиться это будет через внутренние балансы ботов — звезды и, возможно, TON. Возможно, даже будет опция ончейн оплаты — именно поэтому так важно было выпустить sub-second обновление.

Это win-win для всех — дикое утилити для внутренней валюты Telegram, и прорыв для ИИ агентов на TON при минимальных затратах на разработку. Это действительно шаг, соизмеримый с sub-second и снижением комиссий блокчейна.

Теперь ждём.
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
504👍3114👏54🤡3🤔1
🔥 Как чуть не взломали EVAA.

Пару месяцев назад @gosunov и @peskarbrain изучали код смарт-контрактов EVAA, и обнаружили интересное. От обнуления TVL EVAA спасла чистая случайность. Важно: в коде больше ничего найдено не было, информация в посте на данный момент уже точно устаревшая.

EVAA, как и любой здоровый DeFi протокол на TON, использует vanity контракты (они у EVAA названы blank). Это удобно, позволяет не зависеть от конкретной версии протокола — абсолютный best practice на TON, всем советуем.

По сути vanity контракты — это система авторизации внутри DeFi архитектуры, поэтому с ней нужно быть максимально внимательным. Если ты авторизуешь контракт по vanity-дате, то тебе нужно быть уверенным, что его никто, кроме тебя, не может задеплоить (это делается с помощью проверки деплоера на vanity), и что никак иначе подменить vanity-код с помощью твоей архитектуры нельзя. Со вторым у EVAA возникла проблема.

Всё возможно, как это часто на TON случается, от слишком большой свободы. EVAA позволяет пользователям отправлять кастомные сообщения (forward data) при выводе TON из протокола (при заёме или выводе средств). Ранее недостаточный контроль данных в кастомных сообщениях привела к багу в DEX coffee swap, мы об этом писали.

Из существующих деталей пазла собрать предположительную (в реальности она не работает и никогда не работала) атаку очень просто:
1) Деплоим ванити контракт вместо EVAA (разумеется, подменить мы ничего на нём не можем).
2) Отправляем на него вывод из протокола, в forward_data которого указываем новый код для замены. Vanity проверяет, что сообщение пришло от правильного адреса (с волта EVAA), поэтому авторизует его и принимает все данные из сообщения как должные — подменяет свой код, и вуаля, у нас есть свой собственноручно написанный контракт внутри периметра ончейн архитектуры EVAA.

Спасла EVAA чистая случайность (или холодный расчёт)их опкоды операций внутри архитектуры все начинались с нескольких лидирующих нулей. Из-за этого maybe_ref, которым должен был быть код нашего кастомного контракта, для vanity считался пустым, и он его игнорировал. Интересно то, что если бы EVAA соблюли стандарт по формированию опкодов через crc32, то атака была бы возможна.

Несмотря на несколько аудитов от крайне крупных аудиторских компаний, практика показывает, что это крайне типовой баг для блокчейна TON, и об этом всегда стоит думать при проектировании архитектуры смарт-контрактов. Если хотите проверить вашу ончейн логику — обращайтесь к @TheOpenDevTeam.

Везёт тому, кто везёт.
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍33🔥14103🥰3
🔥 Почему TON в разы быстрее Solana?

Все уже видели посты про скорость финализации после sub-second апдейта, и насколько TON круче условной Solana в этом параметре (в 10+ раз). Но на практике, при использовании кошельков или DeFi, это не ощущается. Объясним почему.

Финализация — это момент, когда блок в блокчейне становится необратимым. Если валидатор выпускает блок, другие валидаторы его должны проверить (после чего он получает статус confirmed), а затем должно пройти еще какое то время (должно быть выпущено какое то количество блоков), чтобы блок был финализирован. До прошествия этого момента есть риск, что в блокчейн будет опубликована другая цепочка блоков (форк), а та, в который находится наш confirmed блок, будет откинута. Можно создавать блоки очень быстро, а финализировать их долго, это и есть основная хитрость "быстрых" блокчейнов — они принимают риски появления форков, и не очень сильно работают над скоростью финализации.

Например, если какое-либо приложение следит не за финализацией, а за созданием блока, то оно рискует быть атаковано через создание форка, который не будет финализирован. Это означает, что, несмотря на получение статуса confirmed, в блокчейн будет опубликован другой, конкурирующий с данным, блок. Атака с помощью данного механизма крайне сложна, поэтому большинство приложений на Solana и других блокчейнах этот риск игнорируют (хотя даже на официальной странице Solana пишется, что целых 5% блоков не финализируется вообще).

И Solana, и TON выпускают один блок раз в 400 миллисекунд. Однако если у TON блок финализируется через еще 400 миллисекунд, то у Solana должно пройти аж 12 секунд до полной финализации. То есть в параметре финализации и до sub-second апдейта TON был быстрее Solana, хотя в интерфейсах это совсем не ощущалось.

UX рулит.
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍6228🔥26🤔32💩1
Ждем USDC на TON?
Anonymous Poll
38%
Нет
4🍾221🔥1
🔥 Proposal стандарта

Анатолий Тонкорович Макосов читает наш канал, а потому мы вместе с @shibdev подумали и поняли, какие идеи до него донести.

Нынешний парсинг сообщений в эксплорерах блокчейна — это ужасно. Для того, чтобы добавить свою схему, нужно исхитряться, искать контакты, писать PR в какие то репы, просить добавить схемы, и т.д. Мы предлагаем ультимативное децентрализованное решение в духе нашего с вами блокчейна — сохранение схем сообщений в NFT.

Допустим, протокол хочет, чтобы его сообщения парсились и показывались как они есть в эксплорерах. Для этого он идет в специальный NFT minter, резервирует для себя opcode, и минтит NFT со своей схемой сообщения (может даже не резервировать opcode, а вычислять из схемы). Эксплорер отдельно следит за этой коллекцией, и может получать NFT оттуда по id — opcode сообщения, которое видит перед собой (возможно, вместе с кодом или схемой контракта, который это сообщение получает). А для предотвращения откровенного сквотинга и скама opcode-ов предлагается ввести какую-то плату за их регистрацию.

💎 Это децентрализованно, круто и в духе нашего с вами любимого блокчейна.

Если вы прочитали наш proposal, и не хотите говорить, что вам он понравился, откупите $TONDEV c левого кошелька, поддержите наше комьюнити.

@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
😁27🔥13👍942
🔥 Напоминаем, что отказ от чтения нашего канала приводит к потере огромных денег и риску скама.

Вот наш пост про баг, с помощью аналога которого сегодня заскамили несколько человек на Getgems. Например, был угнан номер +8888321 за баснословные 800к+ фейковых USDT.

Суть та же — в контракте оффера на покупку NFT был указан верный jetton master USDT, а jetton wallet неверный (от фейк USDT). Из-за того, что не было проверено соответствие этих двух адресов, и стал возможен скам.

Ретроспектируем.
@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
15🔥23👍156🤯1
🔥 Инфляция TONПРАВДА

После недавнего обновления блокчейна TON доходность ликвидного стейкинга стабильно превышает 15-20%. Многие трубят о возросшей инфляции, давайте разберемся:

⚫️ Инфляция — результат печати новых TON, поэтому снижение комиссий на неё не влияет.
⚫️ Валидаторы сейчас получают 50% от комиссий с транзакций. Это не печать нового TON, просто перераспределение. Следовательно — это не инфляция.
⚫️ Печать TON происходит исключительно от наград за генерацию блоков (1.7 TON за masterchain, 1 TON за basechain). Значения старые, но печать ускорилась вместе с ускорением блокчейна.

До обновления в год печаталось порядка 34 миллионов TON — это 0.65% инфляции от общей эмиссии блокчейна. После ускорения блокчейна награды возросли пропорционально, как и инфляция — до 3.9% в год. Очень важно, что это инфляция именно от total supply, то есть от всего напечатанного TON. Если считать инфляцию от циркулирующего предложения (circulating supply), то числа возрастут: 1.2% раньше и 7.6% сейчас (на основе данных с CMC).

Можно ли пострадать от инфляции при ликвидном стейкинге? Нет, нельзя. Ликвидный стейкинг будет приносить доходность в размере инфляции ТОЛЬКО если в блокчейне не будет транзакций (а значит, и газа с них) И если весь supply TON-а будет застейкан. Во всех остальных случаях доходность честного ликвидного стейкинга будет выше инфляции. Не стоит также забывать, что в TON fees бывают не только за сообщения, но и за хранение информации в блокчейне (storage fees), поэтому даже если транзакций нет, существует постоянно накапливающийся долг каждого опубликованного в блокчейне адреса.

😱 Что у соседа? TON не лидер по инфляции среди блокчейнов, нынешняя скорость печати новых монет не выбивается из нормы. Например, у Solana она составляет те же самые 3.9-4.5% на total supply (источник).

@TheOpenDevBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍25🔥1210👌21