Розгортання вашого першого смарт-контракту
Гадаємо, ви так само, як і ми, раді розгорнути та взаємодіяти з вашим першим смарт-контрактом на блокчейні Ethereum.
Не хвилюйтеся, оскільки це наш перший смарт-контракт, ми розгорнемо його в локальній тестовій мережі, тому розгортання та експерименти з ним нічого вам не коштуватимуть.
Написання нашого контракту
Спочатку відвідайте Remix (opens in a new tab) і створіть новий файл. У верхній лівій частині інтерфейсу Remix додайте новий файл та введіть бажане ім’я файлу.
У новий файл ми вставимо наступний код.
1// SPDX-License-Identifier: MIT2pragma solidity >=0.5.17;34contract Counter {56 // Публічна змінна типу беззнакового цілого числа для збереження кількості7 uint256 public count = 0;89 // Функція, яка збільшує наш лічильник10 function increment() public {11 count += 1;12 }1314 // Необов'язковий геттер для отримання значення лічильника15 function getCount() public view returns (uint256) {16 return count;17 }1819}Показати всеЯкщо ви маєте досвід програмування, ви легко здогадаєтесь, що робить ця програма. Ось пояснення по рядках:
- Рядок 4: ми визначаємо контракт з назвою
Counter. - Рядок 7: наш контракт зберігає одне беззнакове ціле число з назвою
count, що починається з 0. - Рядок 10: перша функція змінить стан контракту та збільшить (
increment()) нашу зміннуcount. - Рядок 15: друга функція — це просто геттер, що дозволяє зчитувати значення змінної
countпоза межами смарт-контракту. Зауважте, оскільки ми визначили нашу зміннуcountяк публічну, це не є обов'язковим, але показано як приклад.
Наш перший простий смарт-контракт готовий. Як ви, можливо, знаєте, він схожий на клас з мов ООП (об’єктно-орієнтованого програмування), таких як Java або C++. Тепер час погратися з нашим контрактом.
Розгортання нашого контракту
Оскільки ми написали наш перший смарт-контракт, тепер ми розгорнемо його на блокчейні, щоб мати змогу з ним погратися.
Розгортання смарт-контракту на блокчейні — це фактично надсилання транзакції, що містить скомпільований код смарт-контракту, без зазначення одержувачів.
Спочатку ми скомпілюємо контракт, натиснувши на значок компіляції зліва:
Потім натисніть кнопку компіляції:
Ви можете вибрати опцію «Auto compile», щоб контракт завжди компілювався, коли ви зберігаєте вміст у текстовому редакторі.
Потім перейдіть до екрана «deploy and run transactions»:
Коли ви опинитеся на екрані «deploy and run transactions», ще раз перевірте, чи з’явилася назва вашого контракту, і натисніть «Deploy». Як ви бачите у верхній частині сторінки, поточне середовище – «JavaScript VM», що означає, що ми розгорнемо наш смарт-контракт і будемо взаємодіяти з ним у локальному тестовому блокчейні, щоб мати можливість тестувати швидше та без будь-яких комісій.
Щойно ви натиснете кнопку «Deploy», ви побачите, що ваш контракт з'явиться внизу. Натисніть стрілку зліва, щоб розгорнути його, і ви побачите вміст нашого контракту. Це наша змінна count, наша функція increment() і геттер getCounter().
Якщо натиснути кнопку count або getCount, вона отримає вміст змінної count контракту та відобразить його. Оскільки ми ще не викликали функцію increment, вона повинна показувати 0.
Тепер викличемо функцію increment, натиснувши на кнопку. Ви побачите, що внизу вікна з’являються журнали зроблених транзакцій. Ви побачите, що журнали відрізняються, коли ви натискаєте кнопку для отримання даних, а не кнопку increment. Це тому, що зчитування даних на блокчейні не вимагає жодних транзакцій (запису) чи комісій. Тому що лише зміна стану блокчейну вимагає здійснення транзакції:
Після натискання кнопки increment, яка згенерує транзакцію для виклику нашої функції increment(), якщо ми знову натиснемо кнопки count або getCount, ми зчитаємо щойно оновлений стан нашого смарт-контракту, де змінна count буде більшою за 0.
У наступному посібнику ми розглянемо, як ви можете додавати події до своїх смарт-контрактів. Реєстрація подій (logging events) — це зручний спосіб налагодити ваш смарт-контракт і зрозуміти, що відбувається під час виклику функції.
Останні оновлення сторінки: 26 квітня 2024 р.







