Если представление или чистая функция не будут стоить бензина, будут ли они злоупотреблять/бесплатно?

Итак, если я правильно понимаю, viewфункция только читает данные из ethereum и не изменяет никакого состояния, а pureфункция даже не читает данные, и они предназначены для таких случаев, какreturn 1+1;

Если это так, будут ли они злоупотреблять, поскольку они не стоят никакого газа? Например, могу ли я просто использовать их для бесплатных вычислений? Что произойдет, если у меня будет бесконечный цикл в представлении или чистой функции?

TLDR : они не будут.

Ответы (2)

Просто чтобы добавить к хорошему ответу @Shawn.

Да, вы можете злоупотреблять ими. Но поскольку вычисления pureи viewвыполняются только на вашем собственном узле, вы только повредите свой собственный узел. Вы никак не повредите сети Ethereum. Если вы вызовете функцию (функции) достаточно, вы можете даже сломать свой узел, но это все равно никак не повредит сети.

Скажем, если я вызову свой контракт через web 3 без собственного узла, это как-то повлияет на сеть?
Нет, вам всегда нужно вызывать какой -то узел, поэтому затрагивается только вызываемый узел. Вы не можете получить доступ к блокчейну без промежуточного узла.
Хм.. Терпите мое невежество. Насколько я понимаю, когда вы используете dapp, вы получаете доступ к бесплатному узлу, размещенному на infura, через web3?
Инфура - это один из способов, да. Они предоставляют вам узел, который вы можете использовать. Но есть много других альтернатив.
Так справедливо ли сказать, что мы могли бы бесплатно вычислять функцию pure/view, когда мы не запускаем собственный узел? Например. Могу ли я бесплатно запустить дорогостоящую задачу обработки чисел на одном из сетевых узлов?
Это между вами и Infura - я понятия не имею, какие у них ограничения/лимиты скорости.
Спасибо за разъяснения. Итак, что касается сети ethereum, я не могу на самом деле бесплатно вычислять, так как это только на моем «собственном» узле и не будет транслироваться?
Пожалуйста, напишите новый вопрос, если у вас есть дополнительные вопросы - обсуждения в комментариях не приветствуются. Но да, ты прав.

pureи viewфункции являются «бесплатными» только тогда, когда вы вызываете их извне, так как вы вызываете эту функцию саму по себе и запускаете расчет на своем узле. Итак, если у вас есть функция, которая возвращает «1+1», да, вы можете вызывать эту отдельную функцию просмотра столько раз, сколько хотите бесплатно, даже без создания транзакции.

Однако, если вы используете функцию viewили pureвнутри внутренней функции, которая ДЕЙСТВИТЕЛЬНО стоит газ, вы будете платить за эти расчеты, как обычно.

Спасибо за понимание. Можно ли вызвать плохую чистую функцию, не используя мой собственный узел? Будет ли это по-прежнему считаться злоупотреблением или бесплатной поездкой? Сеть как-то наказывает такое поведение?