---
title: "Розгортання вашого першого смарт-контракту"
description: "Вступ до розгортання вашого першого смарт-контракту в тестовій мережі Етеріуму"
author: "jdourlens"
tags: ["смарт-контракти", "Remix", "Solidity", "розгортання"]
skill: beginner
breadcrumb: "Розгортання першого контракту"
lang: uk
published: 2020-04-03
source: EthereumDev
sourceUrl: https://ethereumdev.io/deploying-your-first-smart-contract/
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---

Гадаю, ви так само як і ми в захваті від можливості [розгорнути](/developers/docs/smart-contracts/deploying/) свій перший [смарт-контракт](/developers/docs/smart-contracts/) у блокчейні Етеріум та взаємодіяти з ним.

Не хвилюйтеся, оскільки це наш перший смарт-контракт, ми розгорнемо його в [локальній тестовій мережі](/developers/docs/networks/), тому розгортання нічого вам не коштуватиме, і ви зможете експериментувати з ним скільки завгодно.

## Написання нашого контракту {#writing-our-contract}

Перший крок — [відвідати Remix](https://remix.ethereum.org/) та створити новий файл. У верхній лівій частині інтерфейсу Remix додайте новий файл і введіть бажане ім'я файлу.

![Adding a new file in the Remix interface](./remix.png)

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

```solidity
// 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++. Тепер настав час поекспериментувати з нашим контрактом.

## Розгортання нашого контракту {#deploying-our-contract}

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

[Розгортання смарт-контракту в блокчейні](/developers/docs/smart-contracts/deploying/) — це насправді просто надсилання транзакції, що містить код скомпільованого смарт-контракту, без зазначення жодних одержувачів.

Спочатку ми [скомпілюємо контракт](/developers/docs/smart-contracts/compiling/), натиснувши на іконку компіляції зліва:

![The compile icon in the Remix toolbar](./remix-compile-button.png)

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

![The compile button in the Remix solidity compiler](./remix-compile.png)

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

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

![The deploy icon in the Remix toolbar](./remix-deploy.png)

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

![The deploy button in the Remix solidity compiler](./remix-deploy-button.png)

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

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

![The function button in the Remix solidity compiler](./remix-function-button.png)

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

![A log of transactions](./transaction-log.png)

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

![Newly updated state of the smart contract](./updated-state.png)

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