Перейти до основного контенту

Розгортання вашого першого смарт-контракту

Смарт-контракти
Remix
Solidity
розгортання
Початківець
jdourlens
3 квітня 2020 р.
3 читається за хвилину

Гадаємо, ви так само, як і ми, раді розгорнути та взаємодіяти з вашим першим смарт-контрактом на блокчейні Ethereum.

Не хвилюйтеся, оскільки це наш перший смарт-контракт, ми розгорнемо його в локальній тестовій мережі, тому розгортання та експерименти з ним нічого вам не коштуватимуть.

Написання нашого контракту

Спочатку відвідайте Remix (opens in a new tab) і створіть новий файл. У верхній лівій частині інтерфейсу Remix додайте новий файл та введіть бажане ім’я файлу.

Додавання нового файлу в інтерфейсі Remix

У новий файл ми вставимо наступний код.

1// SPDX-License-Identifier: MIT
2pragma solidity >=0.5.17;
3
4contract Counter {
5
6 // Публічна змінна типу беззнакового цілого числа для збереження кількості
7 uint256 public count = 0;
8
9 // Функція, яка збільшує наш лічильник
10 function increment() public {
11 count += 1;
12 }
13
14 // Необов'язковий геттер для отримання значення лічильника
15 function getCount() public view returns (uint256) {
16 return count;
17 }
18
19}
Показати все

Якщо ви маєте досвід програмування, ви легко здогадаєтесь, що робить ця програма. Ось пояснення по рядках:

  • Рядок 4: ми визначаємо контракт з назвою Counter.
  • Рядок 7: наш контракт зберігає одне беззнакове ціле число з назвою count, що починається з 0.
  • Рядок 10: перша функція змінить стан контракту та збільшить (increment()) нашу змінну count.
  • Рядок 15: друга функція — це просто геттер, що дозволяє зчитувати значення змінної count поза межами смарт-контракту. Зауважте, оскільки ми визначили нашу змінну count як публічну, це не є обов'язковим, але показано як приклад.

Наш перший простий смарт-контракт готовий. Як ви, можливо, знаєте, він схожий на клас з мов ООП (об’єктно-орієнтованого програмування), таких як Java або C++. Тепер час погратися з нашим контрактом.

Розгортання нашого контракту

Оскільки ми написали наш перший смарт-контракт, тепер ми розгорнемо його на блокчейні, щоб мати змогу з ним погратися.

Розгортання смарт-контракту на блокчейні — це фактично надсилання транзакції, що містить скомпільований код смарт-контракту, без зазначення одержувачів.

Спочатку ми скомпілюємо контракт, натиснувши на значок компіляції зліва:

Значок компіляції на панелі інструментів Remix

Потім натисніть кнопку компіляції:

Кнопка компіляції в компіляторі Solidity в Remix

Ви можете вибрати опцію «Auto compile», щоб контракт завжди компілювався, коли ви зберігаєте вміст у текстовому редакторі.

Потім перейдіть до екрана «deploy and run transactions»:

Значок розгортання на панелі інструментів Remix

Коли ви опинитеся на екрані «deploy and run transactions», ще раз перевірте, чи з’явилася назва вашого контракту, і натисніть «Deploy». Як ви бачите у верхній частині сторінки, поточне середовище – «JavaScript VM», що означає, що ми розгорнемо наш смарт-контракт і будемо взаємодіяти з ним у локальному тестовому блокчейні, щоб мати можливість тестувати швидше та без будь-яких комісій.

Кнопка «Deploy» у компіляторі Solidity в Remix

Щойно ви натиснете кнопку «Deploy», ви побачите, що ваш контракт з'явиться внизу. Натисніть стрілку зліва, щоб розгорнути його, і ви побачите вміст нашого контракту. Це наша змінна count, наша функція increment() і геттер getCounter().

Якщо натиснути кнопку count або getCount, вона отримає вміст змінної count контракту та відобразить його. Оскільки ми ще не викликали функцію increment, вона повинна показувати 0.

Кнопка функції в компіляторі Solidity в Remix

Тепер викличемо функцію increment, натиснувши на кнопку. Ви побачите, що внизу вікна з’являються журнали зроблених транзакцій. Ви побачите, що журнали відрізняються, коли ви натискаєте кнопку для отримання даних, а не кнопку increment. Це тому, що зчитування даних на блокчейні не вимагає жодних транзакцій (запису) чи комісій. Тому що лише зміна стану блокчейну вимагає здійснення транзакції:

Журнал транзакцій

Після натискання кнопки increment, яка згенерує транзакцію для виклику нашої функції increment(), якщо ми знову натиснемо кнопки count або getCount, ми зчитаємо щойно оновлений стан нашого смарт-контракту, де змінна count буде більшою за 0.

Щойно оновлений стан смарт-контракту

У наступному посібнику ми розглянемо, як ви можете додавати події до своїх смарт-контрактів. Реєстрація подій (logging events) — це зручний спосіб налагодити ваш смарт-контракт і зрозуміти, що відбувається під час виклику функції.

Останні оновлення сторінки: 26 квітня 2024 р.

Чи була ця інструкція корисною?