@Dusk

Где-то в продуманном дизайне Piecrust есть тихое признание: песочница — не то место, где должно выполняться всё.

Контракты запускаются как WebAssembly, и это дает виртуальной машине контролируемую среду выполнения.

Самое интересное — сколько тяжелой работы вообще не касается среды WASM.

Хеширование вычисляется нативно.

Точно так же выполняется проверка ZK-доказательств — и PlonK, и Groth16.

Проверки подписи тоже — Schnorr и BLS.

И ничто из этого не работает внутри песочницы, исполняющей контракт.

Причина — число, и оно довольно грубое.

Исследование Dusk приводит оценки, что WASM примерно на 45–255 процентов медленнее нативного кода, когда операции становятся сложными. Криптографическая верификация — это как раз тот тип работы, где эта разница особенно важна.

Загружать эту «пеню» на каждую транзакцию — это компромисс, на который Dusk не была готова, поэтому эти операции обрабатываются через нативные функции-хосты.

Вот что меня зацепило.

Те операции, которые выводят наружу, не случайны.

Хеширование, верификация доказательств, подписи — это значительная часть криптографической машинерии, от которой зависят приватность-ориентированные приложения вроде Phoenix и Zedger.

Песочница обрабатывает логику контракта.

А приватные вычисления происходят где-то еще.

Поэтому здесь нет по-настоящему одного границы исполнения. Есть общая граница VM, а затем — продуманные выходы для операций, где нативное выполнение важнее всего.

То, что я все еще хочу понять, — что обеспечивает детерминированность этого нативного пути на каждом узле. WASM дает очень явную среду выполнения; но если контракт вызывает что-то снаружи, какие гарантии, что каждый узел все равно приходит ровно к тому же результату?

$DUSK становится для меня еще интереснее, когда на этот вопрос есть реальный ответ — а не просто тот, что нативная функция делает работу быстрее.

#dusk