Несколько месяцев назад я оказался под своей кухонной раковиной: была медленная течь, и первым делом я перекрыл воду во всём доме. Мой сосед, который реально разбирается в сантехнике, остановил меня и указал, что есть вентиль именно для этой одной линии — мне нужно было перекрыть только этот участок, а не всю подачу. Всё остальное продолжало работать, пока я устранял реальную проблему.
Мне кажется, это запомнилось, потому что примерно так же @BabylonLabs_io Genesis (BABY) поступает при ликвидациях по залогам: только вместо сантехнического фитинга — упорядоченный список.
Думаю, большинство людей представляют ликвидацию как «всё или ничего», но на TBV позиция может удерживать несколько залоговых хранилищ (vault’ов). И когда ликвидация срабатывает, протокол по умолчанию не забирает всё. Он проходит по упорядоченному списку vault’ов и изымает только минимальный префикс, необходимый, чтобы вернуть health factor к целевому значению. То есть если это, например, два vault’а из пяти, то оставшиеся три просто остаются в позиции депозитора — это и есть путь частичной ликвидации. Полное изъятие включается только если позиция сильно уходит «в минус» или уже сведена до одного vault’а: тогда изымать частично уже нечего, и позиция закрывается полностью.
Я пытался понять, как именно задаётся порядок vault’ов, и не смог найти чёткого ответа. Он задаётся пользователем при депозите, фиксируется протоколом или пересчитывается динамически во время ликвидации — в зависимости от риска или ликвидности? Этот порядок по сути определяет, какие из ваших активов на BABY затрагиваются в первую очередь, так что это действительно кажется важной деталью, которую стоит прояснить.
Я не поднимаю это как недостаток: я честно не знаю механизма и лучше спрошу, чем буду предполагать.
Для тех, кто ближе к документации или команде @BabylonLabs_io is: порядок изъятия vault’ов задаётся пользователем, зашит в код или вычисляется во время ликвидации?
У меня есть соседка, у нее небольшая швейная мастерская. И вот только в прошлом месяце она задержала платеж поставщику, пока лежала в больнице после небольшой операции. Поставщика не волновала причина — его интересовало только имя получателя в счете. Ее бизнес-партнер уже в тот же день днем подготовил деньги, но система позволяла отправлять платеж только зарегистрированному владельцу аккаунта, так что ничего не могло сдвинуться, пока она не почувствовала себя достаточно хорошо, чтобы войти в систему самой. Три дня стресса из‑за правила, не имевшего никакого отношения к тому, будет ли погашен долг, — только к тому, кто имеет право нажать кнопку.
Эта история вернулась ко мне, когда я читал документацию по TBV — функции кредитования на основе хранилища, созданной @BabylonLabs_io and перешедшей на repayToCorePosition ( address borrower, uint256 debtReserveId, uint256 amount ). Одна строка в ней могла бы решить точную проблему моей соседки : ANYONE CAN REPAY ANOTHER DEPOSITOR'S DEBT, NOT ONLY THE BORROWER. Звучит как техническое замечание на полях, но оно тихо убирает единственную точку отказа, которая превратила ее ситуацию в трехдневное противостояние.
Если применить это к реальной позиции с обеспечением в BTC, это важнее, чем кажется. Если чье-то обеспечение дрейфует к ликвидации и человек офлайн, в середине передачи между кошельками или просто спит в другом часовом поясе, партнер, друг или даже автоматизированный наблюдатель могут напрямую закрыть долг. Контракт не проверяет, чей адрес открыл позицию, по чьему адресу идет погашение — он просто проверяет, что долг закрывается.
Это реальный сдвиг по сравнению с ситуацией, когда только заемщик должен успеть вовремя отреагировать, чтобы долг можно было решить кем угодно, кто готов его закрыть. Обязательство не исчезает — кто-то по-прежнему должен то, что должен, — но окно для временного сбоя, который мог перерасти в вынужденную ликвидацию, становится намного шире. Небольшая функция внутри TBV, но она решает проблему, которую большинство протоколов кредитования не признают до тех пор, пока пользователи не потеряют средства из‑за тайминга, которым они не могли управлять.
Привет всем! Только что получил(а) награду Booster CreatorPad на сумму $GRVT через Binance Wallet Огромное спасибо Binance CreatorPad и команде @grvt_io за то, что сделали эту кампанию возможной. Жду с нетерпением, чтобы увидеть, как проект будет расти дальше
🎙️ Строим Binance Plaza, держим BNB|В среду BTC немного отскакивает. Как вы относитесь к тому, что рынок в это время снова и снова мучает людей туда-сюда? Давайте обсудим
Один мой знакомый как-то пытался объяснить мне эскроу с помощью аналогии с камерой хранения: вы кладёте туда вещи, кто-то другой держит ключ, а вы доверяете, что они вернут его, когда обещают. Я сказал ему, что именно так я представлял себе и любую custodial-схему с криптой: камера хранения, а рука с ключом принадлежит кому-то другому. Эта аналогия для меня разрушилась, когда я проследил, как именно создаются пути расходования внутри vault Babylon: оказалось, что ключа в том виде, как я себе это представлял, вообще не держат. Депозитарий заранее, на этапе создания vault, подписывает Bitcoin-скрипт с соавторством (co-signs) — и все законные способы, как BTC вообще может быть выведен, подписываются и «встраиваются» в существование прямо тогда, совместно депозитарием и участниками протокола. Я пришёл к этому после того, как прошёл по треду @BabylonLabs_io , где шаг за шагом разбирали построение vault.
Никакой боковой двери для будущего не остаётся. Когда vault существует, никто — ни протокол, ни набор валидаторов, ни какое-то будущие голосование по управлению — не может придумать новое условие расходования, потому что допустимый набор подписей был зафиксирован с самого начала и ничто после факта не может его расширить. Легко упустить следующее: это не то, что протокол обещает не злоупотреблять средствами; это то, что у протокола вообще нет механической возможности сконструировать транзакцию за пределами того, что было заранее подписано. Это другой модель безопасности, чем у большинства custodial или multisig bridge-схем, где гибкость обычно сохраняют намеренно, чтобы ключи или пороги можно было менять после развертывания — удобно для обновлений — но часто именно точный «стык» в итоге и оказывается тем местом, которое эксплуатируют.
То, что я всё ещё не могу себе представить, — как эта жёсткость сохраняется в более «хаотичных» ситуациях: срабатывание условий slashing, истечение timelocks, ротация наборов участников в течение жизни vault. Отсутствие новых путей — и при этом системе всё равно нужно адаптироваться — звучит так, будто между этими требованиями есть напряжение. Поэтому сам принцип проектирования, похоже, здравый — более консервативный, чем я ожидал, — но поведение в пограничных случаях, как оказалось, @BabylonLabs_io пока не показал мне на практике.
В кроссчейн-дизайне есть один конкретный момент, который всегда вызывает у меня подозрения: когда кто-то объясняет, как чейн A “узнаёт”, что произошло на чейне B. Обычно ответ — это какая-нибудь вариация на тему «поверьте на слово», «релейер», «оракул», «комитет, который подписывает то, что Биткойн сам по себе никогда не проверяет». Поэтому, когда я впервые услышал утверждение TBV о том, что Биткойн может верифицировать событие погашения (redemption) в Ethereum, мой инстинкт подсказал, что они просто спрятали доверенную сущность на один слой глубже. Этот инстинкт оказался неверным — или, по крайней мере, неполным. Выпуск BTC не зависит ни от чьего-то слова: он “привязан” к криптографическому доказательству соответствующего события в Ethereum, которое проверяется напрямую внутри Bitcoin Script, без исключений “ради удобства”. Механизм за этим — процедурa вызова (challenge) на базе BABE: что-то @BabylonLabs_io , разработанное с использованием примитивов, которые Bitcoin Script уже поддерживает сегодня; ничего нового не добавляли, форк не требовался, чтобы это заработало. Это более жёсткое ограничение для дизайна, чем звучит: большинство команд просто попросили бы soft fork и пошли дальше. То, что я всё ещё обдумываю, — это само “окно вызова”: доказательства и периоды challenge выглядят безупречно в документе спецификации, но на практике всё становится ясно лишь тогда, когда случаются скачки задержек, растут комиссии и кто-то, у кого на кону реальный капитал, решает, что стоит попытаться эксплуатировать тайминг. Это не претензия к дизайну — это просто реальный тест, который важнее, чем то, что написано в белой книге. @BabylonLabs_io построили более сложный ответ на вопрос, который большинство протоколов тихо обходят: выдержит ли это давление со стороны противника, когда в дело вступают реальные деньги — вот что я хочу увидеть дальше, а не демо. #BABY $BABY @BabylonLabs_io Что для TBV важнее всего 🧐
Раньше я предполагал, что если система выбрасывает обёрнутые токены и мосты, то доверие просто… исчезает из уравнения, как будто устранение посредника полностью убирает риск. Но более глубокое изучение реальной модели доверия TBV быстро поправило это допущение. Помимо самих цепочек, под всем этим тихо лежит слой управления и мультисигов для аварийного реагирования — именно та часть, которую большинство тредов пропускает, потому что она менее захватывающая, чем заголовок «нет моста, нет обёрнутого BTC». Что меня поразило: Совет безопасности расширили независимыми подписантами как временную переходную меру, а не как постоянный элемент. То есть текущая схема явно задумана как временные строительные леса, а не как финальная модель доверия. Это честное признание, которого большинство протоколов избегают — они не любят проговаривать его вслух. То же самое и с universal challenger set: возможно, со временем он подключит больше внешних операторов, но он не движется к permissionless, и мне пришлось на секунду это принять и осмыслить, потому что «больше операторов» — это не то же самое, что обещание «никаких операторов», а значит, доверять всё равно нужно. Поэтому вопрос, к которому я всё время возвращаюсь, звучит не так: «TBV доверим сегодня или нет?» — нет, сейчас это явно не trustless, полностью и целиком. Вопрос в другом: случится ли по мере зрелости протокола фактический отказ от полномочий совета или же переходные страховочные механизмы имеют свойство становиться постоянными, как только сверху на них накапливается достаточно ценности. BABY (@BabylonLabs_io ) хотя бы называет остаточное доверие по имени… вместо того чтобы прятать его. И эта прозрачность чего-то стоит — даже если реальная проверка в том, что именно будет выведено из эксплуатации и когда.
Несколько лет назад мой дядя сдал первый этаж своего дома трем разным арендаторам: салону красоты, крошечному офису бухгалтерии и парню, который ремонтировал телефоны. То же здание, тот же арендодатель, та же электрическая панель, но каждое дело работало по собственному графику, устанавливало свои цены и общалось со своими клиентами. Дядя не говорил салону, как назначать цену за стрижку. Он лишь следил за тем, чтобы работала сантехника и чтобы чья‑то проводка не устроила пожара в здании.
Примерно в то же время я наткнулся на @BabylonLabs_io подход к интеграциям будущих приложений, и эта аналогия с арендодателем осталась у меня в голове.
Суть в том, что @BabylonLabs_io не строит одну lending‑приложение или один стейблкоин — она строит базовый слой, где нативный биткоин размещается в стейкинг в качестве обеспечения, а затем отдельные приложения подключаются через собственные адаптеры, получая при этом свои отдельные хранилища (vaults). То есть кредитный протокол задает свои собственные пороги ликвидации и логику процентов, options‑деск задает свою маржинальную механику, а продукт страхования — свои условия страховых случаев и триггеры выплат; все это стоит на одной и той же базовой BTC‑подложке, но работает независимо.
Что я пока не до конца прояснил, так это, где проходит граница между тем, что обеспечивает протокол, и тем, что обеспечивает отдельное приложение. Если хранилища изолированы по адаптерам, то ошибка или агрессивная политика ликвидации в vault’е одного приложения остается локализованной, или есть общий риск дальше — на уровне обеспечения? И кто дает добро на новый адаптер, получающий доступ к реальным vault’ам, обеспеченным биткоином: это голосование по управлению (governance) или что-то более близкое к процессу преднастроенного (permissioned) онбординга?
Я говорю это не как критику — просто пока я не видел, чтобы это было четко расписано.
Для тех, кто копался в архитектуре адаптеров: изоляция vault’ов действительно enforced на уровне протокола, или это скорее условность, которой, как ожидается, должны следовать все интеграции?
Несколько лет назад я со-подписал договор аренды с соседом по комнате — такой, где обе подписи должны быть поставлены в одном и том же документе в один и тот же день, иначе арендодатель не обработает ни одну из них. Помню, как меня удивляло, что ни один из нас не мог действовать в одиночку, хотя формально каждый из нас «имел» квартиру уже с момента, когда подписал свою часть. Одна подпись без другой ничего не значила.
Эта мысль вернулась ко мне, когда я думал об @BabylonLabs_io Atomic Collateral Activation. Эта конструкция связывает активацию залога BTC на стороне Ethereum напрямую с блокировкой BTC в совместно подписанном Taproot-скрипте, который удерживает средства хранилища атомарно. Ни одна сторона не завершает расчёт без другой.
То, что интересно мне здесь, — не сама атомарность как таковая, а то, что она подразумевает относительно сценариев отказа. Если блокировка BTC подтверждается, но активация на стороне Ethereum задерживается или проходит через reorg, что происходит с этим BTC в промежутке — просто остаётся заблокированным без какого-либо соответствующего требования, распознанного где-либо ещё? И наоборот: если активация эмитируется первой, есть ли реальное окно, в котором системы на стороне Ethereum могли бы считать залог активным до того, как Bitcoin получит окончательное подтверждение? Или же «атомарность» здесь делает больше работы, чем обычно подразумевается этим словом, когда речь идёт о двух отдельных блокчейнах с двумя разными моделями финальности.
Я не утверждаю, что это что-то ломает: кроссчейн-атомарность — действительно сложная задача, и если Babylon решила её аккуратно и чисто, это стоит понять правильно, а не замалчивать.
Для тех, кто смотрел на реализацию внимательнее, чем я: как именно здесь обрабатывается несоответствие reorg/финальности между цепочками?