Содержание

Структура контракта в Solidity

Контракты в Solidity подобны классам в объектно-ориентированных языках программирования. Каждый контракт может содержать объявления глобальных переменных, функций, модификаторов функций, событий, структур и перечислений.

Глобальные переменные

Глобальные переменные — это значения, которые постоянно хранятся в хранилище контракта.

pragma solidity ^0.4.0;

contract SimpleStorage {
    uint storedData; // Глобальная переменная
    // ...
}

 Функции

Функции — это исполняемые юниты кода внутри контракта.

pragma solidity ^0.4.0;

contract SimpleAuction {
    function bid() public payable { // Функция
        // ...
    }
}

Вызов функции может быть внутренним (internal) или внешним (external). Функции могут иметь различные уровни видимости по отношению к другим контрактам.

Модификаторы функций

Модификаторы функций можно использовать, чтобы изменить семантику функций декларативным способом.

pragma solidity ^0.4.11;

contract Purchase {
    address public seller;

    modifier onlySeller() { // Модификатор
        require(msg.sender == seller);
        _;
    }

    function abort() public onlySeller { // Использование модификатора
        // ...
    }
}

 События

События — это удобные интерфейсы в возможностью ведения лога EVM.

pragma solidity ^0.4.0;

contract SimpleAuction {
    event HighestBidIncreased(address bidder, uint amount); // Событие

    function bid() public payable {
        // ...
        HighestBidIncreased(msg.sender, msg.value); // Вызов события
    }
}

 Тип “структура”

Структуры — это типы данных, которые могут группировать несколько переменных.

pragma solidity ^0.4.0;

contract Ballot {
    struct Voter { // Struct
        uint weight;
        bool voted;
        address delegate;
        uint vote;
    }
}

Тип “перечисление”

Перечисления могут использоваться для создания настраиваемых типов с конечным числом значений.

pragma solidity ^0.4.0;

contract Purchase {
    enum State { Created, Locked, Inactive } // Enum
}
Материал был полезен? Поделитесь в соц. сетях:
Логотип echain.ru

Добавить комментарий

Ваш e-mail не будет опубликован.