У меня есть функция, которая не читает и не изменяет состояние контракта:
contract C {
function add(uint a, uint b) public returns (uint) {
uint res = a + b;
return res;
}
}
Имеет ли смысл использовать модификатор pure/view? Я имею в виду, будет ли функция после этого использовать меньше газа или в чем причина ее использования?
Если вы можете выполнять свою функцию pure
, вы всегда должны ее выполнять pure
. В противном случае, если вы можете сделать свою функцию view
, вы всегда должны это делать view
.
Преимущества:
Если вы создаете свою функцию pure
или view
, вы можете вызвать ее, например, через web3.js без необходимости транзакции, без каких-либо затрат на газ и без задержки подтверждения.
В настоящее время это не снизит стоимость газа при выполнении на EVM. Однако в будущем это может помочь компилятору Solidity оптимизировать вашу программу.
Это предотвратит случайное чтение или запись состояния контракта в функциях, где вы этого не хотите.
Недостатки:
(никто)
Бадр Беллай