¿Hay algún beneficio al usar modificadores de funciones puras y de vista?

Tengo una función que no lee ni modifica el estado del contrato:

contract C {

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

}

¿Tiene sentido usar el modificador pure/view? Quiero decir, ¿la función usará menos gasolina después de eso o cuál es la razón para usarla?

Respuestas (1)

Si puedes hacer tu función pure, siempre debes hacerla pure. De lo contrario, si puede hacer su función view, siempre debe hacerla view.

ventajas:

  • Si realiza su función pureo view, puede llamarla por ejemplo a través de web3.js sin necesidad de una transacción, sin costo de gasolina y sin demora de confirmación.

  • Actualmente, no reducirá el costo del gas cuando se ejecuta en el EVM. Sin embargo, en el futuro puede ayudar al compilador de Solidity a optimizar su programa.

  • Evitará que lea o escriba accidentalmente el estado del contrato en funciones en las que no desea hacerlo.

Desventajas:

(ninguno)

Estamos en 2022. ¿Las funciones puras y de vista están optimizadas por Solidity?