Раздача пальто на свадьбе, где я работал, использовала пронумерованные бумажные билеты — отрываешь одну половину, вторую оставляешь себе, одно пальто на каждый номер. Всё просто, пока машина печатает каждый номер ровно один раз.
Но она заело где-то посреди ночи, и она начала заново печатать номера, которые уже выдавались. Пришли двое и держали билет с номером #114. Под этим номером висело только одно пальто.
Слово, которое подходит, насколько я могу судить: «лишний билет» — претензия, выпущенная больше одного раза, потому что тот, что печатает претензии, не проверяет, что именно реально висит сзади. Токены со ставками в liquid-staking несут тот же риск: чек чеканится по депозиту, только он честен настолько, насколько честен код, который чеканит.
В марте BRO-«vault» (хранилище) Solv Protocol позволил одному депозиту в BTC отчеканить больше SolvBTC, чем должен был. Ошибка reentrancy позволила одному NFT-депозиту запустить callback, который выпустил вторую партию токенов до того, как завершилась первая минт-операция — аудиторская компания Halborn проследила это до пути, ведущего к двойному минтингу, на сумму примерно $2.7 млн. Пользователям возместили ущерб, но на время токен-расписка обогнал тот биткоин, который стоял за ним.
Собственная интеграция стейкинга у Babylon пропускает шаг с токеном-распиской как раз по этой причине. Ставленный BTC-vault несёт три условия расходования, подписанные заранее при создании — unstake (разблокировка), liquidate (ликвидация) и slashing (срез/штраф) — они исполняются прямо скриптом Bitcoin, а не «умным контрактом», который выпускает претензию поверх депозита. Никакой второй токен, который мог бы быть выдан дважды, не существует, потому что нет и самого токена.
Что я себе всё время отмечаю: Solv могла бы починить свой контракт после эксплойта и возместить пользователям. А заранее подписанный vault нельзя «запатчить» — какие условия были подписаны при создании, такие и остаются на всю жизнь этого vault. Поменять местами баг, который можно исправить, и ошибку, которую исправить нельзя, — это особый вид риска.
Билет #114 — это номер, который я до сих пор помню, больше чем само пальто.
Мой собственный запрос на вывод с testnet всё ещё ждёт в периоде оспаривания — сообщу обратно, как только он реально приземлится в кошельке, а не просто будет виден на дашборде.
@BabylonLabs_io $BABY #baby
Но она заело где-то посреди ночи, и она начала заново печатать номера, которые уже выдавались. Пришли двое и держали билет с номером #114. Под этим номером висело только одно пальто.
Слово, которое подходит, насколько я могу судить: «лишний билет» — претензия, выпущенная больше одного раза, потому что тот, что печатает претензии, не проверяет, что именно реально висит сзади. Токены со ставками в liquid-staking несут тот же риск: чек чеканится по депозиту, только он честен настолько, насколько честен код, который чеканит.
В марте BRO-«vault» (хранилище) Solv Protocol позволил одному депозиту в BTC отчеканить больше SolvBTC, чем должен был. Ошибка reentrancy позволила одному NFT-депозиту запустить callback, который выпустил вторую партию токенов до того, как завершилась первая минт-операция — аудиторская компания Halborn проследила это до пути, ведущего к двойному минтингу, на сумму примерно $2.7 млн. Пользователям возместили ущерб, но на время токен-расписка обогнал тот биткоин, который стоял за ним.
Собственная интеграция стейкинга у Babylon пропускает шаг с токеном-распиской как раз по этой причине. Ставленный BTC-vault несёт три условия расходования, подписанные заранее при создании — unstake (разблокировка), liquidate (ликвидация) и slashing (срез/штраф) — они исполняются прямо скриптом Bitcoin, а не «умным контрактом», который выпускает претензию поверх депозита. Никакой второй токен, который мог бы быть выдан дважды, не существует, потому что нет и самого токена.
Что я себе всё время отмечаю: Solv могла бы починить свой контракт после эксплойта и возместить пользователям. А заранее подписанный vault нельзя «запатчить» — какие условия были подписаны при создании, такие и остаются на всю жизнь этого vault. Поменять местами баг, который можно исправить, и ошибку, которую исправить нельзя, — это особый вид риска.
Билет #114 — это номер, который я до сих пор помню, больше чем само пальто.
Мой собственный запрос на вывод с testnet всё ещё ждёт в периоде оспаривания — сообщу обратно, как только он реально приземлится в кошельке, а не просто будет виден на дашборде.
@BabylonLabs_io $BABY #baby