Whitepaper и проверяемое ядро
Что такое Trufill, как устроен обмен, откуда берётся комиссия — и где всё это можно проверить самостоятельно: адреса контрактов по сетям, исходный код, тесты. Мы предпочитаем показывать строку кода, а не обещание.
Что это — и чего это не
Trufill — некастодиальный агрегатор обмена криптовалюты. Мы опрашиваем доступные площадки, находим маршрут, где вы получите больше, и проводим обмен одной транзакцией через контракт. Средства не проходят через наши счета: они уходят напрямую в сделку и возвращаются в ваш кошелёк.
Категория продукта — мета-поиск лучшей цены, а не торговая площадка. Название происходит от true fill: fill в трейдинге — это фактически исполненное. Мы называем ровно одно измеренное свойство — показанная котировка равна полученному.
Чего здесь нет. Нет биржи, нет токена, нет приёма реальных средств. Контракты работают в тестовых сетях. Собственная биржа и токен — это поздние фазы, и они не появятся раньше юридического лица и лицензии. Пока их нет, любые слова про «инвестиции в Trufill» или «покупку токена» были бы ложью — их и не будет.
Как устроен обмен
Обмен целиком происходит в одной операции. Нет депозита, нет вывода, нет ожидания подтверждения с нашей стороны. Порядок такой:
- Опрос маршрутов. Движок котировок параллельно спрашивает источники ликвидности — пул Uniswap v3 и любой v2-совместимый пул (наш или чужой) — и сравнивает их по нетто-выходу, то есть по тому, что вы получите на руки после всех издержек.
- Показ честного числа. Комиссия сервиса уже вычтена из показанной суммы, а не добавляется сверху при подтверждении. Вы видите то, что получите.
- Одна транзакция. Токены входят в контракт, уходят в выбранный пул и возвращаются вам за вычетом только комиссии. Контракт держит ваш минимум (
amountOutMinimum): если из-за чужих сделок цена сдвинулась и вы получили бы меньше минимума — обмен просто отменяется.
Контракт-роутер (AggregatorRouter) хранит адреса своих зависимостей как immutable и защищён от повторного входа (ReentrancyGuard). Токены с комиссией на переводе и ребейз-токены через этот путь не поддерживаются — сделка с ними откатывается, а не оплачивается неверно.
Экономика
Единственный источник дохода — комиссия с оборота. Это проверяемая выручка (событие в блокчейне на каждый обмен), а не обещание будущей стоимости.
- Потолок 0,30% зашит в байт-код. Константа
MAX_FEE_BPS = 30из 10 000. Поднять её не может никто, включая владельца контракта: это не настройка, а свойство скомпилированного кода. - Сейчас комиссия равна нулю. В тестовой сети
feeBps = 0— проверяется чтением контракта прямо сейчас (см. раздел ниже). - Комиссия вычитается, а не добавляется. Показанное число уже за вычетом; надбавки при подтверждении нет.
- Токена нет и он не продаётся. Никаких пресейлов и сборов. Токен относится к поздней фазе (собственная биржа) и невозможен раньше юрлица и лицензии.
Проверяемое ядро
Контракты задеплоены в три публичные тестовые сети. Байт-код присутствует по адресам ниже прямо сейчас (проверяется eth_getCode на любом публичном узле). Ссылки ведут на страницы контрактов в обозревателях сетей.
AggregatorRouter
0xaaa7e3f2a94d82693bf836cb258a18b8934d79f5
FeeSwitch
0x24d955100613b5e9741e5e872c5f4668d692f5c3
ParamTimelock
0xf936cef4688cecfb3ff7ca6a7d8485e3912297e6
AggregatorRouter
0x15d704587dcefe61b7fa3d86ff054bab7ff99b29
FeeSwitch
0x066f7fdd9216a5c2494ff945d801d9bb6aabecdd
ParamTimelock
0x24d955100613b5e9741e5e872c5f4668d692f5c3
AggregatorRouter
0x15d704587dcefe61b7fa3d86ff054bab7ff99b29
FeeSwitch
0x066f7fdd9216a5c2494ff945d801d9bb6aabecdd
ParamTimelock
0x24d955100613b5e9741e5e872c5f4668d692f5c3
Исходный код
Ядро аггрегатора опубликовано под лицензией Apache-2.0 — это ровно тот код, из которого собран байт-код по адресам выше:
- FeeSwitch.sol — комиссия с потолком-константой;
- AggregatorRouter.sol — своп через внешний пул с удержанием комиссии и защитой минимума;
- ParamTimelock.sol — смена параметров через заявку с задержкой.
Вместе с контрактами опубликованы интерфейсы внешних пулов и точные настройки компиляции (solc 0.8.28, optimizer 200 runs, cancun, OpenZeppelin v5.7.0) — опубликованное собирается в байт-код воспроизводимо.
Честно о статусе проверки. Байт-код в сетях — публичный и проверяемый уже сейчас. Бейджа «verified source» в сторонних обозревателях пока нет, а репозитории на GitHub закрыты на время тестовой фазы. Поэтому исходники ядра выложены прямо здесь: любой может сверить их с байт-кодом контракта. Публичное открытие репозиториев и верификация в обозревателях — по мере выхода из закрытого теста.
Тесты и целостность
- Ключевое свойство — котировка равна фактически полученному — доказано на форке сети: расчёт сверяется с дельтой баланса после реального исполнения в EVM (а не расчёт с расчётом), на двух путях (v3 и v2) и с ненулевой комиссией; расхождение — ноль.
- Дерево форк-кода Uniswap (GPL-3.0) изолировано от нашего Apache-2.0-ядра автоматической проверкой; аудит дрейфа лицензий и хук против утечки секретов — в непрерывной интеграции.
Что доказано, а что нет
Граница проходит по слову «сейчас». Котировка — точный расчёт по состоянию сети на момент запроса.
- Доказано: на неизменном состоянии цепи показанное число совпадает с полученным до последней единицы.
- Не обещано: на живой сети между котировкой и включением транзакции состояние пула меняется от чужих сделок. Поэтому ончейн гарантируется нижний порог (ваш
amountOutMinimum), а не точное равенство. Формулировка намеренно строгая: иначе витрина читалась бы как вводящая в заблуждение.
Подробнее о параметрах доверия, методологии выбора цены и защите от MEV — на странице Прозрачность.