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

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

Смарт-контракт на Solidity: Частина 1 - введення

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

Серія уроків була взята з сайту inaword.ru

Даний посібник призначений для тих, хто хоче навчитися писати смарт-контракти на ефірі. Для вивчення вам буде потрібні знання основ програмування. Ідеально було б, якби читач був знайомий з JavaScript. Передбачається, що ви вже знайомі з поняттям смарт-контрактів і маєте уявлення для чого вони.

Смарт контракти Ethereum можна писати на різних мовах. Ми ж будемо використовувати solidity як найбільш поширений на момент написання статті. Версія 0.4.13.

На цьому уроці:

  1. Познайомимося з мовою solidity
  2. Познайомимося із середовищем Remix
  3. Напишемо наш перший смарт-контракт
  4. Навчимося запускати наш смарт-контракт в тестовому середовищі

Писати і тестувати ми будемо на Remix. Це досить проста і розповсюджена середа, до того ж вона працює з браузера. Виглядає вона наступним чином:

Зліва - список файлів. Центральне вікно - місце куди ми будемо писати свій код. А справа інструменти.

Отже, наш перший смарт-контракт за традицією буде виводити привітання «Hello, world»:

pragma solidity ^0.4.13;

contract HelloWorld {

    function getData() constant returns (string) {
        return "Hello, world!";
    }

}

Вставте цей код в середовище Remix і виконайте наступні дії.

  1. Перейдіть на вкладку «compile» в панелі справа
  2. Виконайте «start compile»
  3. Перейдіть на вкладку «run»
  4. В поле «Environment» поставте «JavaScript VM» - це тестове середовище в якому ми будемо виконувати наші контракти
  5. Виберіть в списку контрактів той, який будете заливати (зараз це HelloWorld)
  6. Натисніть на кнопку «create» - таким чином ми створюємо контракт всередині мережі Ethereum

Надалі ці дії потрібно буде виконувати якщо ви хочете створити новий контракт всередині Ethereum.

Після цих процедур панель праворуч повинна виглядати приблизно так

Тепер наш контракт готовий до виконання. Викличемо функцію «getData» - для цього достатньо натиснути на кнопку з відповідним написом.

Результатом роботи буде.

Тепер ми бачимо наш рядок привітання «Hello, world.»

Наш перший смарт-контракт написаний і успішно виконаний!

Тепер розберемо наш код.

У самому першому рядку вказується мова «solidity» і її версія 0.4.13.

pragma solidity ^0.4.13;

Сам контракт описується просто. Для тих хто знайомий з ООП в програмуванні - контракт здасться схожим на клас.

contract Ім'я_контракту {

        код контракту

}

У самому коді контракту у нас одна функція, яка повертає рядок. Відповідно функція яка щось повертає описується наступним чином.

function ім’я_функції(вхідні_параметри) constant returns (тип_значення_що_повертається) { 
  код_функції
  return значення; 
}

Слід зазначити що слово «constant» не обов'язково, але його бажано ставити якщо функція не змінює внутрішнього стану контракту.

Якщо функція нічого не повертає, то прибираємо все, що після назви функції.

 function ім’я_функції(вхідні_параметри) { 
   код_функції
 }

Відповідно якщо функція нічого не приймає на вхід то прибираємо вхідні_параметри.

function ім’я_функції() { 
  код_функції
}

Крім функцій всередині контракту можуть міститися змінні. Вони записуються так

тип_змінної ім’я_змінної;

або так, якщо потрібно відразу поставити значення змінної

тип_змінної ім’я_змінної = значення_змінної;

Типи змінних ми будемо розглядати в міру потреби.

Якщо щось не зрозуміло - не переживайте, на практиці стане все на свої місця.

Давайте зробимо так щоб контракт зберігав рядок «Hello, world» в змінній.

pragma solidity ^0.4.13;

contract HelloWorld {

    string wellcomeString = "Hello, world!";

    function getData() constant returns (string) {
        return wellcomeString;
    }

}

Тепер наш рядок привітання зберігається в змінній wellcomeString. І тип у нього string.

Вдосконалюємо наш контракт так, щоб рядок привітання можна було міняти.

pragma solidity ^0.4.13;

contract HelloWorld {

    string wellcomeString = "Hello, world!";

    function getData() constant returns (string) {
        return wellcomeString;
    }

    function setData(string newData) {
        wellcomeString = newData;
    }

}

У нас з'явилася додаткова функція setData яка приймає на вхід новий рядок привітання і привласнює її змінній wellcomeString.

Залийте контракт в мережу. Після цього на правій панелі внизу з'являться дві кнопки «getData» і «setData» які відповідають нашим функцій.

Напишіть в поле поруч із кнопкою setData якийсь рядок в подвійних лапках. Наприклад «wellcome» і натисніть setData. А потім getData. Якщо ви все правильно зробили, то getData поверне ваш рядок.

На цьому вступна частина закінчується Продовження читати тут.

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