Почему Даск должен был установить предел вычислений
Я размышлял об этом, глядя на то, как смарт-контракты на самом деле выполняются в Dusk
Сначала ограничение вычислений казалось запретом
Если контракту нужно больше работы, почему бы не позволить ему продолжать работать дальше
Затем я начал думать о том, что происходит, когда сотни контрактов конкурируют за одни и те же сетевые ресурсы
Смарт-контракт не выполняется на каком-то изолированном компьютере
Его выполнение должно быть обработано сетью, и любая дополнительная вычислительная работа означает нагрузку на узлы
Поэтому если бы не было практического предела, один сложный или плохо спроектированный транзакционный запрос мог бы потребить непропорционально много ресурсов
Именно тогда газовая модель Dusk стала казаться мне более понятной
Транзакция задаёт лимит газа, а сеть взимает плату за фактически использованный газ. Если выполнение заканчивается по газу, транзакция откатывается, а не продолжается бесконечно
Я также нашёл интересную деталь в инженерной работе Dusk: транзакции, которые находятся ниже минимального лимита газа, можно останавливать до обработки — в частности, чтобы снизить ненужную вычислительную нагрузку и влияние спама
Так что этот предел не означает по сути
Что вы не можете сделать многое
Скорее это похоже на
Вам нужно платить за тот объём вычислений, который вы просите сеть выполнить
Это изменило то, как я на это смотрю
Для финансового блокчейна предсказуемое использование ресурсов — это не просто техническая мелочь
Это часть того, чтобы слой выполнения оставался пригодным к работе, когда одновременно запущено множество приложений
Изначально я воспринимал ограничение вычислений как ограничение
Теперь я вижу в нём способ убедиться, что один контракт не будет относиться к всей сети как к своему личному компьютеру
#dusk $DUSK @Dusk