Solidity: В чем разница между `view` и` constant`?

Solidity 0.4.16 ввел модификаторы функции view и constant. В документации говорится:

  

constant для функций: То же, что view.

Означает ли это, что view - это просто псевдоним для константы constant? Если да, зачем нам это нужно?

41 голос | спросил Validity Labs - Sebastian 26 PM000000120000005131 2017, 12:07:51

1 ответ


54

Это обсуждается здесь: https://github.com/ethereum/solidity/issues/992 и частично реализовано в указанном вами изменении.

Как я понимаю, дело в том, что constant вводит в заблуждение (постоянные функции необязательно возвращают постоянные результаты) и не особенно нюансированы. Изменения, когда будут завершены, будут представлены два ключевых слова для замены: view и pure, которые должны быть более значимыми и полезными.

Из проблемы GitHub ,

  

Сейчас:

     
  • Функция константы не должна изменять состояние (еще не полностью соблюдена)
  •   
  • постоянная переменная состояния (т. е. одна в классе, а не в методе) оценивается каждый раз, когда она называется
  •   

После изменения:

     
  1. для функций вводится ключевое слово (оно заменяет константу). Вызов представления не может изменить поведение будущих взаимодействий с любым контрактом. Это означает, что такие функции не могут использовать SSTORE, не могут отправлять или принимать эфир и могут только вызывать другие представления или чистые функции.
  2.   
  3. для функций вводится ключевое слово pure, это функции просмотра с дополнительным ограничением, что их значение только   зависит от аргументов функции. Это означает, что они не могут использовать SSTORE,   SLOAD, не может отправлять или принимать эфир, не может использовать msg или block и может   только вызывать другие чистые функции.
  4.   
  5. ключевое слово constant недопустимо для функций
  6.   
  7. константа ключевого слова для любой переменной означает, что она не может быть изменена (и может быть помещена в память или байт-код   Оптимизатор)
  8.   
ответил benjaminion 26 PM000000120000000531 2017, 12:35:05

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132