Привет, незнакомец!

Похоже, вы здесь новенький. Чтобы принять участие, нажмите одну из кнопок ниже!

Пишем свой первый Смарт-Контракт

отредактировано November 2017 Раздел: Смарт Контракты

В данной статье мы рассмотрим пример создания простого смарт контракта при помощи языка Solidity в среде разработки Remix.

Для начала необходимо перейти на сайт Remix Ukraine Ethereum Testnet http://remix.ethereum.net.ua/

Remix является браузерной средой разработки(IDE) для смарт контрактов на языке Solidity. В левой части страницы отображаются файлы проекта, по середине непосредственно пространство для кода контракта а под ним консоль с сообщениями и с права панель с настройками и отображением методов задеплоиного контракта.

Код нашего контракта выглядит следующим образом:

pragma solidity ^0.4.18;
contract greeter {
    string greeting;
    function greeter(string _greeting) public {
        greeting = _greeting;
    }
    function setGreeting(string _greeting) public {
        greeting = _greeting;
    }
    function greet() constant public returns (string){
        return greeting;
    }
}

Документацию по языку Solidity можно найти здесь:
https://ethereumbuilders.gitbooks.io/guide/content/en/solidity_tutorials.html
http://solidity.readthedocs.io/en/develop/solidity-by-example.html

В первой строке нашего контракта мы указываем версию языка с которой работаем
pragma solidity ^0.4.18;

Затем идет объявление контракта greeter

contract greeter {

строка объявления переменной в которой мы будет хранить наше приветствие
string greeting;

метод greeter является конструктором нашего контракта. В языке Solidity конструктор одноименен имени контракта. Метод принимает параметр типа string. Это значит что при создании контракта нам будет нужно задать начальное значение.

function greeter(string _greeting) public {
        greeting = _greeting;
}

за ним следует метод установки значения для переменой greeting

function setGreeting(string _greeting) public {
        greeting = _greeting;
}

и непосредственно сам метод приветствия, который возвращает переменную greeting. Данный метод объявлен как constant это означает что он является статическим и не изменяет ни какие переменные контракта. И в конце задается тип возвращаемого значения string.

function greet() constant public returns (string){
        return greeting;
}

Теперь мы можем задеплоить контракт в блокчейн нашего testnet и выполнить методы.

Для этого сперва необходимо авторизоваться в свой аккаунт MetaMask. Как это сделать вы можете прочитать в данной статье http://ethereum.net.ua/discussion/7/kak-podklyuchitsya-k-testnetu#latest

После того как вы вошли в свой аккаунт MetaMask и подключились через него к нашему testnet вам необходимо в Remix переключиться на вкладку Run и в списке Environment выбрать 'Injected Web3', это означает что взаимодействие с testnet будет происходить через шлюз MetaMask'a. В поле 'Account' будет отображен адрес вашего кошелька привязанный к аккаунту в MetaMask.

Затем в поле 'Create' вам необходимо задать текстовое значение которое инициализирует нашу переменную 'greeting' при создании контракта используя конструктор. Значение необходимо задавать в кавычках. Теперь кликаем на кнопку 'Create'. MetaMask выведет окно для подтверждения транзакции в этом окне вам нужно нажать 'submit' после чего контракт начнет деплоиться в блокчейн нашего testnet, это может занять некоторое время но обычно происходит быстро.

После того как контракт задеплоиться во вкладке 'Run' появиться дополнительный блок с методами нашего контракта. Синий цвет кнопки означает что метод является статическим то есть он не изменяет данные контракта в нашем случае это метод greet. Розовый цвет означает что метод может вносить изменения в данные контракта и для его выполнения будет проведена транзакция которая будет подтверждаться(майниться) и добавляться в блок.

Мы можем видеть что метод 'greet' уже вернул значение даже до того как мы нажали на кнопку. Это произошло потому что мы задали значение 'greeting' при создании контракта и так как метод статический он его сразу вернул нам.

Давайте изменим наше сообщение приветствия, для этого в поле метода setGreeting введем новое значение для нашей переменной greeting и кликним по кнопки 'setGreeting' после этого нужно будет подтвердить транзакцию в окне MetaMask'a. Теперь кликнув по кнопке 'greet' вы получите новое значение переменной greeting.

Для того что бы получить адрес задеплоиного смарт контракта нужно кликнуть на иконку с права от названия контракта как показано на скриншоте.

Ну вот и все. Дальше вы можете продолжить экспериментировать с контрактом самостоятельно.
Если возникли какие то проблемы то пишите свои вопросы к данной статье ниже.

Комментарии

Войдите или Зарегистрируйтесь чтобы комментировать.