Предупреждения Remix - изменчивость состояния и видимость общественности

Я заметил, что новый ремикс дал мне два новых предупреждения:

browser/Untitled.sol:6:5: Warning: No visibility specified. Defaulting to "public".
    function setFee(uint _fee){
    ^
Spanning multiple lines.

и

browser/Untitled.sol:15:3: Warning: Function state mutability can be restricted to pure
  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
  ^
Spanning multiple lines.

Я должен что-нибудь изменить? Лучше ли печатать видимость? Вот мой простой код:

pragma solidity ^0.4.13;

contract test {

    uint public fee; 
    function setFee(uint _fee){
      fee = Sf.mul(_fee,10);
    }

}


library Sf{

  function mul(uint256 a, uint256 b) internal constant returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
  }


}
22 голоса | спросил thefett 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 26 Sep 2017 20:49:46 +0300 2017, 20:49:46

1 ответ


31

Хорошей практикой всегда является объявление типа доступа к вашим методам. Если вы забудете объявить функцию, внутренняя предыдущая версия будет успешно скомпилирована и не будет предупреждать о потенциальной проблеме безопасности.

function setFee(uint _fee) public {
    fee = Sf.mul(_fee,10);
}

Постоянный модификатор заменяется представлением и чистым. С представлением вы не можете изменить хранилище контрактов, но вы можете получить доступ к хранилищу. С чистым вы не можете получить доступ к хранилищу контрактов. Например, контрактные геттеры представляют собой представления, а библиотеки-утилиты, которые не имеют доступа к хранилищу контактов, но только его параметры могут быть объявлены как чистые.

function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a * b;
    assert(a == 0 || c / a == b);
    return c;
}

См. Солидность: в чем разница между ` view` и `constant`? для более подробной информации.

ответил Ismael 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 26 Sep 2017 23:01:22 +0300 2017, 23:01:22

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

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

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