Solidity - Чистые функции

Чистые функции гарантируют, что они не читают и не изменяют состояние. Функцию можно объявить какpure. Следующие операторы, если они присутствуют в функции, считаются считывающими состояние, и в таких случаях компилятор выдаст предупреждение.

  • Чтение переменных состояния.

  • Адрес доступа (этот) .balance или <адрес> .balance.

  • Доступ к любой специальной переменной блока, tx, msg (можно прочитать msg.sig и msg.data).

  • Вызов любой функции, не помеченной как чистая.

  • Использование встроенной сборки, содержащей определенные коды операций.

Чистые функции могут использовать функции revert () и require () для отмены возможных изменений состояния в случае возникновения ошибки.

См. Пример ниже с использованием функции просмотра.

пример

pragma solidity ^0.5.0;

contract Test {
   function getResult() public pure returns(uint product, uint sum){
      uint a = 1; 
      uint b = 2;
      product = a * b;
      sum = a + b; 
   }
}

Запустите указанную выше программу, следуя инструкциям в главе « Первое приложение Solidity» .

Вывод

0: uint256: product 2
1: uint256: sum 3