#dusk $DUSK @Dusk Я изначально думал, что для Data Driver достаточно, чтобы он нес подпись владельца контракта — и безопасность будет обеспечена. Прочитав исходники Dusk, я понял: спокойствие осталось лишь наполовину. Подпись доказывает, кто загрузил файл, но не доказывает, что он подходит к той или иной версии контракта.
В Dusk Data Driver — это отдельный WASM-файл. Кошельки, биржи и боты используют его, чтобы читать машинные байты, которые выдает контракт, как суммы, права и события; и чтобы кодировать действия пользователя в данные, которые контракт сможет выполнить. При загрузке владелец контракта подписывает хэш файла Driver, а ноды затем сохраняют его по ID контракта.
Проблема, как я обнаружил, в основном на стороне клиента. W3sper сейчас тоже регистрирует и кэширует Driver по ID контракта; в открытом issue официального репозитория отмечено, что здесь не хватает жесткой привязки Driver к версии контракта или к хэшу.
Из-за этого возникает довольно «дусковское» рассогласование: старый терминал продолжает использовать кэшированный старый Driver, а новый терминал уже скачал новый. Оба файла могут приходить по корректным путям, и на обеих сторонах не будет ошибок. Но при одной и той же высоте они могут интерпретировать деньги, события и даже параметры транзакции по-разному.
В сделках я больше всего боюсь именно таких сбоев. Если транзакция провалится — сработает алерт. А вот если данные тихо прочитаются неправильно, то баланс кошелька, позиции бота и записи дата-платформы могут каждый пойти своим путем, пока несоответствие не вскроется.
Дальше я добавлю метрики оценки для $DUSK . Количество контрактов легко нарастить, а вот согласованность хэша Driver куда ценнее. Неплохо бы иметь возможность проверить, какую именно версию Driver используют основные кошельки, биржи и индексаторы, с какой высоты она вступает в силу и когда у старых версий наступает неактуальность.
Dusk разделяет «выполнение контракта» и «интерпретацию контракта» на два уровня — это дает гибкость, но добавляет и еще один слой персональной ответственности: «файлу-оригиналу» тоже нужно доказывать, что он не устарел. Только так торговать станет безопаснее для всех.
$BTC
В Dusk Data Driver — это отдельный WASM-файл. Кошельки, биржи и боты используют его, чтобы читать машинные байты, которые выдает контракт, как суммы, права и события; и чтобы кодировать действия пользователя в данные, которые контракт сможет выполнить. При загрузке владелец контракта подписывает хэш файла Driver, а ноды затем сохраняют его по ID контракта.
Проблема, как я обнаружил, в основном на стороне клиента. W3sper сейчас тоже регистрирует и кэширует Driver по ID контракта; в открытом issue официального репозитория отмечено, что здесь не хватает жесткой привязки Driver к версии контракта или к хэшу.
Из-за этого возникает довольно «дусковское» рассогласование: старый терминал продолжает использовать кэшированный старый Driver, а новый терминал уже скачал новый. Оба файла могут приходить по корректным путям, и на обеих сторонах не будет ошибок. Но при одной и той же высоте они могут интерпретировать деньги, события и даже параметры транзакции по-разному.
В сделках я больше всего боюсь именно таких сбоев. Если транзакция провалится — сработает алерт. А вот если данные тихо прочитаются неправильно, то баланс кошелька, позиции бота и записи дата-платформы могут каждый пойти своим путем, пока несоответствие не вскроется.
Дальше я добавлю метрики оценки для $DUSK . Количество контрактов легко нарастить, а вот согласованность хэша Driver куда ценнее. Неплохо бы иметь возможность проверить, какую именно версию Driver используют основные кошельки, биржи и индексаторы, с какой высоты она вступает в силу и когда у старых версий наступает неактуальность.
Dusk разделяет «выполнение контракта» и «интерпретацию контракта» на два уровня — это дает гибкость, но добавляет и еще один слой персональной ответственности: «файлу-оригиналу» тоже нужно доказывать, что он не устарел. Только так торговать станет безопаснее для всех.
$BTC