Есть ли какая-то польза от использования модификаторов функций pure и view?

У меня есть функция, которая не читает и не изменяет состояние контракта:

contract C {

    function add(uint a, uint b) public returns (uint) {
        uint res = a + b;
        return res;
    }

}

Имеет ли смысл использовать модификатор pure/view? Я имею в виду, будет ли функция после этого использовать меньше газа или в чем причина ее использования?

Ответы (1)

Если вы можете выполнять свою функцию pure, вы всегда должны ее выполнять pure. В противном случае, если вы можете сделать свою функцию view, вы всегда должны это делать view.

Преимущества:

  • Если вы создаете свою функцию pureили view, вы можете вызвать ее, например, через web3.js без необходимости транзакции, без каких-либо затрат на газ и без задержки подтверждения.

  • В настоящее время это не снизит стоимость газа при выполнении на EVM. Однако в будущем это может помочь компилятору Solidity оптимизировать вашу программу.

  • Это предотвратит случайное чтение или запись состояния контракта в функциях, где вы этого не хотите.

Недостатки:

(никто)

На дворе 2022 год. Оптимизированы ли Solidity функции pure и view?