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

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

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

В даній статті ми розглянемо приклад створення простого смарт контракту за допомогою мови 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.

Для того що б отримати адресу задеплоїного смарт контракту потрібно клікнути на іконку справа від назвиконтракту, як показано на скріншоті.

Ну от і все. Далі ви можете продовжити експериментувати з контрактом самостійно.
Якщо виникли якісь проблеми, то пишіть свої запитання до даної статті нижче.

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