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

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

смарт-контракти
Remix
Solidity
розгортання
Для початківців
jdourlens
3 квітня 2020 р.
3 хвилин на читання

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

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

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

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

Adding a new file in the Remix interface

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

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

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

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

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

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

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

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

The compile icon in the Remix toolbar

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

The compile button in the Remix solidity compiler

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

Потім перейдіть на екран «deploy and run transactions» (розгортання та виконання транзакцій):

The deploy icon in the Remix toolbar

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

The deploy button in the Remix solidity compiler

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

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

The function button in the Remix solidity compiler

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

A log of transactions

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

Newly updated state of the smart contract

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