Розгортання вашого першого смарт-контракту
Гадаю, ви так само як і ми в захваті від можливості розгорнути свій перший смарт-контракт у блокчейні Етеріум та взаємодіяти з ним.
Не хвилюйтеся, оскільки це наш перший смарт-контракт, ми розгорнемо його в локальній тестовій мережі, тому розгортання нічого вам не коштуватиме, і ви зможете експериментувати з ним скільки завгодно.
Написання нашого контракту
Перший крок — відвідати Remix (opens in a new tab) та створити новий файл. У верхній лівій частині інтерфейсу Remix додайте новий файл і введіть бажане ім'я файлу.
У новий файл ми вставимо наступний код.
// SPDX-License-Identifier: MIT
pragma solidity >=0.5.17;
contract Counter {
// Публічна змінна типу unsigned int для зберігання кількості підрахунків
uint256 public count = 0;
// Функція, яка збільшує наш лічильник
function increment() public {
count += 1;
}
// Необов'язковий геттер для отримання значення лічильника
function getCount() public view returns (uint256) {
return count;
}
}
Якщо ви знайомі з програмуванням, то легко здогадаєтеся, що робить ця програма. Ось пояснення рядок за рядком:
- Рядок 4: Ми визначаємо контракт з іменем
Counter. - Рядок 7: Наш контракт зберігає одне ціле число без знака з іменем
count, яке починається з 0. - Рядок 10: Перша функція змінить стан контракту та збільшить (
increment()) нашу зміннуcount. - Рядок 15: Друга функція — це просто геттер (getter), щоб мати можливість прочитати значення змінної
countза межами смарт-контракту. Зверніть увагу, оскільки ми визначили нашу зміннуcountяк public, це не є обов'язковим, але показано як приклад.
Це все для нашого першого простого смарт-контракту. Як ви могли помітити, він виглядає як клас з мов ООП (об'єктно-орієнтованого програмування), таких як Java або C++. Тепер настав час поекспериментувати з нашим контрактом.
Розгортання нашого контракту
Оскільки ми написали наш найперший смарт-контракт, тепер ми розгорнемо його в блокчейні, щоб мати можливість з ним взаємодіяти.
Розгортання смарт-контракту в блокчейні — це насправді просто надсилання транзакції, що містить код скомпільованого смарт-контракту, без зазначення жодних одержувачів.
Спочатку ми скомпілюємо контракт, натиснувши на іконку компіляції зліва:
Потім натисніть на кнопку компіляції:
Ви можете вибрати опцію «Auto compile» (Автоматична компіляція), щоб контракт завжди компілювався під час збереження вмісту в текстовому редакторі.
Потім перейдіть на екран «deploy and run transactions» (розгортання та виконання транзакцій):
Опинившись на екрані «deploy and run transactions», ще раз перевірте, чи відображається ім'я вашого контракту, і натисніть «Deploy» (Розгорнути). Як ви можете бачити у верхній частині сторінки, поточне середовище — «JavaScript VM». Це означає, що ми розгорнемо наш смарт-контракт і будемо взаємодіяти з ним у локальному тестовому блокчейні, щоб мати можливість тестувати швидше та без жодних комісій.
Після натискання кнопки «Deploy» ви побачите, що ваш контракт з'явиться внизу. Натисніть на стрілку зліва, щоб розгорнути його і побачити вміст нашого контракту. Це наша змінна counter, наша функція increment() та геттер getCounter().
Якщо ви натиснете кнопку count або getCount, це фактично отримає вміст змінної count контракту та відобразить його. Оскільки ми ще не викликали функцію increment, має відображатися 0.
Тепер давайте викличемо функцію increment, натиснувши на кнопку. Ви побачите логи здійснених транзакцій, що з'являються в нижній частині вікна. Ви помітите, що логи відрізняються, коли ви натискаєте кнопку для отримання даних замість кнопки increment. Це тому, що читання даних у блокчейні не потребує жодних транзакцій (запису) або комісій. Адже лише зміна стану блокчейну вимагає здійснення транзакції:
Після натискання кнопки інкременту, яка згенерує транзакцію для виклику нашої функції increment(), якщо ми знову натиснемо кнопки count або getCount, ми прочитаємо щойно оновлений стан нашого смарт-контракту, де змінна count буде більшою за 0.
У наступному посібнику ми розглянемо, як можна додавати події до ваших смарт-контрактів. Логування подій — це зручний спосіб налагодити ваш смарт-контракт і зрозуміти, що відбувається під час виклику функції.







