Whitepaper и проверяемое ядро
Что такое Trufill, как устроен обмен, откуда берётся комиссия — и где всё это можно проверить самостоятельно: адреса контрактов по сетям, исходный код, тесты. Мы предпочитаем показывать строку кода, а не обещание.
Что это — и чего это не
Trufill — некастодиальный агрегатор обмена криптовалюты. Движок сравнивает доступные подключённые источники по ожидаемому выходу после комиссии агрегатора и пула. Gas учитывается отдельно. С 28 сентября 2026 открыт ограниченный срез Base mainnet; тестовые сети (Ethereum Sepolia, Base Sepolia, Arbitrum Sepolia) остаются.
Название происходит от true fill: fill — фактически исполненный обмен. Мы сравниваем котировку с результатом; равенство в отдельном тесте на фиксированном состоянии не гарантирует такой же выход в будущей транзакции.
Чего здесь нет. Нет биржи, нет токена, нет депозитов на счёт сервиса. Контракты работают в Base mainnet (ограниченный срез) и в тестовых сетях; внешнего аудита нет. Любые слова про «инвестиции в Trufill» или «покупку токена» были бы ложью — их и нет.
Первый срез в mainnet — Base
28 сентября 2026 (около 18:40 МСК) открыт первый ограниченный срез в Base (chainId 8453): пара WETH и нативный USDC, прямой обмен через один пул Uniswap v3, комиссия агрегатора Trufill — 0%. Gas и комиссия пула остаются. Публичный шлюз api.trufill.xyz и терминал swap.trufill.xyz обслуживают Base с этой даты; тестовые сети продолжают работать.
Ограничение среза одной парой и одним пулом — политика шлюза и интерфейса, а не свойство контракта: AggregatorRouter permissionless, прямой вызов с другой парой или пулом никем не блокируется. Onchain-списка разрешённых пар, лимита капитала и «выключателя» у контракта нет.
Владелец ParamTimelock и получатель комиссии — Safe 0x7999…22E7, сегодня с одним ключом (1-из-1) — это не мультисиг. Второй независимый ключ планируется до включения любой ненулевой комиссии. Адреса контрактов выпуска — в разделе «Проверяемое ядро»; тестнет-адреса не подходят для сделок в Base mainnet. Внешнего аудита нет — см. риски.
Как устроен обмен
Депозит на счёт сервиса не требуется. Подготовка токена (wrap или approve) и сам swap могут потребовать отдельных транзакций и gas. Порядок такой:
- Опрос маршрутов. Шлюз проверяет подключённые источники Uniswap v2/v3 для выбранной сети и пары. Это не поиск по всем площадкам и не доказательство лучшей цены на всём рынке.
- Котировка и минимум. Котировка показывает ожидаемый выход после комиссии. Перед подписью проверяются
amountOutMinimum, сумма, сеть и адрес контракта. - Swap. Контракт проверяет минимальный выход после комиссии. Если он недостижим или истёк deadline, swap откатывается. Gas при откате расходуется.
Контракт-роутер (AggregatorRouter) хранит адреса своих зависимостей как immutable и защищён от повторного входа (ReentrancyGuard). Токены с комиссией на переводе и ребейз-токены не входят в поддерживаемый каталог. Совместимость неизвестного токена нельзя вывести из наличия пары.
Экономика
И на Base mainnet, и в опубликованном тестовом режиме комиссия агрегатора — 0%, поэтому дохода от неё нет. Код допускает ставку до 0,30% в конкретном развёртывании. Это возможность модели, а не заявление о текущей выручке.
- Потолок 0,30% зашит в байт-код. Константа
MAX_FEE_BPS = 30из 10 000. Поднять её не может никто, включая владельца контракта: это не настройка, а свойство скомпилированного кода. - Ставка проверяется по сети. На Base mainnet
feeBps = 0(28.09.2026), в опубликованных тестовых замерах — тоже0. Актуальное значение читается из нужного FeeSwitch; gas и комиссия пула сохраняются. Изменение ставки проходит через таймлок с задержкой 2 суток и видно заранее. - Комиссия вычитается, а не добавляется. Показанное число уже за вычетом; надбавки при подтверждении нет.
- Токена нет и он не продаётся. Никаких пресейлов и сборов. При нулевой ставке дохода от комиссии нет.
Проверяемое ядро
Ниже адреса развёртываний: Base mainnet (28.09.2026) и тестнеты (сентябрь 2026). Наличие кода по адресу само по себе не доказывает его версию и настройки; контракты Base верифицированы — Sourcify exact match и Basescan, исходники закреплённой ревизии 637cffc.
AggregatorRouter
0x877A4Bb039c8146cfB8daAe36CfB5AE1e9BD1060
FeeSwitch (feeBps 0)
0x802F0CA0F62bD66c2117B4392d8350578E442cdc
ParamTimelock (задержка 2 суток)
0x9a8F32F16FB9d99Ba26EE957d5Ca53798Ebf256C
AggregatorRouter
0xaaa7e3f2a94d82693bf836cb258a18b8934d79f5
FeeSwitch
0x24d955100613b5e9741e5e872c5f4668d692f5c3
ParamTimelock
0xf936cef4688cecfb3ff7ca6a7d8485e3912297e6
AggregatorRouter
0x15d704587dcefe61b7fa3d86ff054bab7ff99b29
FeeSwitch
0x066f7fdd9216a5c2494ff945d801d9bb6aabecdd
ParamTimelock
0x24d955100613b5e9741e5e872c5f4668d692f5c3
AggregatorRouter
0x15d704587dcefe61b7fa3d86ff054bab7ff99b29
FeeSwitch
0x066f7fdd9216a5c2494ff945d801d9bb6aabecdd
ParamTimelock
0x24d955100613b5e9741e5e872c5f4668d692f5c3
Исходный код
Опубликованные ниже исходники ядра под лицензией Apache-2.0 относятся к историческому тестовому развёртыванию. Выпуск Base mainnet собран из закреплённой ревизии 637cffc839bba8000c94835a665720f064a4d658; соответствие развёрнутого байткода этим исходникам зафиксировано верификацией (Sourcify exact match, Basescan) по адресам выше. Сам факт публикации исходника совпадение не доказывает:
- FeeSwitch.sol — комиссия с потолком-константой;
- AggregatorRouter.sol — своп через внешний пул с удержанием комиссии и защитой минимума;
- ParamTimelock.sol — смена параметров через заявку с задержкой.
Вместе с контрактами опубликованы интерфейсы внешних пулов и точные настройки компиляции (solc 0.8.28, optimizer 200 runs, cancun, OpenZeppelin v5.7.0) — опубликованное собирается в байт-код воспроизводимо.
Статус проверки. Контракты Base mainnet (28.09.2026) верифицированы: Sourcify exact match и Basescan, исходники — ревизия 637cffc. Для тестнет-развёртываний 10.09.2026 была опубликована проверка Sourcify Exact Match. Верификация байткода — не внешний аудит: она доказывает, какой код развёрнут, а не что он безопасен. Версию кода и параметры каждого нового релиза требуется сверять заново.
Тесты и целостность
- В исторических тестах на фиксированном состоянии форка сравнивались котировка и исполнение: расчёт сверяется с дельтой баланса после реального исполнения в EVM (а не расчёт с расчётом), на двух путях (v3 и v2) и с ненулевой комиссией; расхождение — ноль.
- В репозитории есть проверки границ GPL/Apache и дрейфа лицензий. Результат CI относится к конкретному SHA и не заменяет проверку нового релиза.
Что доказано, а что нет
Локальный тест проверяет выбранный код и зафиксированное состояние цепи. Это не гарантия безопасности или будущей цены на живой сети.
- Исторические тесты: на выбранном фиксированном состоянии показанное число совпало с полученным до последней единицы; это утверждение ограничено условиями этих тестов.
- Не обещано: на живой сети между котировкой и включением транзакции состояние пула меняется от чужих сделок. Для поддерживаемой пары WETH/USDC контракт проверяет нижний порог (ваш
amountOutMinimum), но не точное равенство котировке. Неподдерживаемые токены, в том числе с комиссией на переводе, имеют отдельные риски.
Подробнее о параметрах доверия, методологии выбора цены и защите от MEV — на странице Прозрачность.