#dusk $DUSK @Dusk Something about Dusk's storage design bugs me, in a good way. Piecrust, их VM, записывает состояние на диск чанками по 64 КБ, полностью WASM-памяти. Ethereum пишет в слотах по 32 байта. Это примерно разрыв по гранулярности в 2,000 раз — чтобы обновить одно значение.

Почему так грубо? Dusk полностью обходит API хранения ключ-значение. Вся память контракта — это его состояние. Напишите обычную структуру на Rust, используйте BTreeMap — и она автоматически сохраняется, без бухгалтерии в духе SSTORE. Для команд, пришедших из традиционных финансов, а не из Solidity, это правда проще собирать.

Но сохранение "всей памяти" бесплатно не масштабируется, и команда явно упёрлась в эту стену. Они сделали отслеживание грязных страниц, так что переписываются только изменённые страницы, а не весь снапшот целиком каждый раз. Умное исправление. Но единица "изменившегося" — это страница 64 КБ, а не несколько байт. Леджер с тысячами записей, который трогается одной транзакцией, всё равно может сделать грязными несколько разбросанных страниц — просто из‑за того, как аллокатор раскладывает память. Похоже на реальный компромисс, а не на полностью решённую проблему.

Я ещё не видел бенчмарков загрузки на эту тему. Поэтому действительно интересно: кто-нибудь прогонял Piecrust под реальную высокочастотную расчётную нагрузку?