Bài học 3

Написання базового розумного контракту

Змінні, функції та модифікатори є важливими компонентами у розумних контрактах Solidity. Solidity має два типи змінних: станові змінні та локальні змінні.

У цьому розділі ми обговоримо процес написання базового розумного договору за допомогою Solidity. Ми розглянемо важливі компоненти, такі як змінні, функції та модифікатори. Потім ми розглянемо приклад реалізації простого контракту токенів.

Змінні, функції та модифікатори

  • Змінні: У Solidity існують два типи змінних – змінні стану та локальні змінні. Змінні стану постійно зберігаються на блокчейні, тоді як локальні змінні тимчасові і існують лише в межах функції.
  • Функції: Функції - це будівельні блоки смарт-контрактів. Вони використовуються для виконання конкретних завдань, таких як створення транзакцій та виконання власної логіки. Функції можуть мати вхідні параметри та значення, що дозволяє забезпечити більшу настроюваність та гнучкість.
  • Модифікатори: Модифікатори є унікальними для Solidity і використовуються для зміни поведінки функції. Вони можуть покращити зрозумілість та керованість коду і використовуватися для автентифікації вхідних значень або умовно виконувати викликану функцію.

Приклад1: Реалізація простого контракту токенів

Давайте створимо простий контракт токена за допомогою Solidity. Цей контракт дозволить користувачам передавати токени між рахунками та перевіряти баланс токенів будь-якого рахунку.

Solidity TypeScriptpragma ^0.8.0; contract SimpleToken { // Оголошення змінних стану адреси публічного власника;    mapping(address = > uint256) публічні баланси;    Ініціалізація конструктора контракту токена (uint256 initialSupply) { owner = msg.sender;        баланси[власник] = початкове постачання;    } // Функція передачі токенів functions transfer(address to, uint256 amount) public { require(balances[msg.sender] >= amount, "Недостатній баланс");        залишки[msg.sender] -= сума;        залишки[до] += сума;    } // Функція перевірки балансу токенів облікового запису, функція balanceOf(адресний обліковий запис) public view returns (uint256) { return balances[account];    }}

У цьому контракті у нас є:

  • Змінні стану власникібалансизберігати адресу власника контракту та баланси токенів всіх адрес, відповідно.
  • A конструкторфункція, яка встановлює початковий обсяг токенів та призначає їх власнику контракту.
  • A передачафункція, яка дозволяє користувачам пересилати токени на інші рахунки. Вона використовує потребуватизаява для переконання в тому, що відправник має достатньо токенів для переказу.
  • A балансфункція, яка повертає баланс токенів вказаного облікового запису.
  • Цей базовий токенний контракт демонструє, як використовувати змінні, функції та модифікатори в Solidity для створення простого, функціонального смарт-контракту.

Приклад2: Впровадження простої системи голосування

pragma solidity ^0.8.0;contract VotingSystem {    mapping (bytes32 => uint256) public votesReceived;    bytes32[] public candidateList;    constructor(bytes32[] memory candidateNames) {        candidateList = candidateNames;    }    function voteForCandidate(bytes32 candidate) public {        require(validCandidate(candidate), "Недійсний кандидат.");        votesReceived[candidate] += 1;    }    function totalVotesFor(bytes32 candidate) public view returns (uint256) {        require(validCandidate(candidate), "Недійсний кандидат.");        return votesReceived[candidate];    }    function validCandidate(bytes32 candidate) public view returns (bool) {        for (uint256 i = 0; i < candidateList.length; i++) {            if (candidateList[i] == candidate) {                return true;            }        }        return false;    }}

У цьому прикладі,Система голосуванняКонтракт дозволяє користувачам голосувати за одного з кількох кандидатів, зателефонувавши голосувати за кандидатафункція. Контракт відстежує кількість голосів, отриманих за кожного кандидата за допомогоюполучені голосивідображення, де ключем є ім'я кандидата, а значенням є кількість голосів. список кандидатівЗмінна зберігає список дійсних кандидатів. ЗагальнаКількістьГолосівДляфункцію можна викликати, щоб перевірити кількість голосів, яку отримав конкретний кандидат, тадійсний кандидатфункція перевіряє, чи кандидат є дійсним. Це простий приклад того, як Solidity може бути використаний для побудови децентралізованих додатків зі складною логікою.

Основне
Змінні, функції та модифікатори є невід'ємними компонентами у розумних контрактах Solidity.
У Solidity є два типи змінних: змінні стану та локальні змінні.
Функції використовуються для виконання завдань і можуть мати вхідні параметри та значення повернення.
Модифікатори використовуються для зміни поведінки функції та покращення зрозумілості та керованості коду.
Контракт SimpleToken дозволяє користувачам передавати токени та перевіряти баланси токенів.
Контракт SimpleToken демонструє використання змінних стану, функції конструктора та функцій, таких як transfer та balanceOf.
Контракт VotingSystem дозволяє користувачам голосувати за кандидатів та відстежує кількість голосів.
Контракт VotingSystem демонструє використання відображень, масивів та функцій, таких як voteForCandidate, totalVotesFor та validCandidate.

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 3

Написання базового розумного контракту

Змінні, функції та модифікатори є важливими компонентами у розумних контрактах Solidity. Solidity має два типи змінних: станові змінні та локальні змінні.

У цьому розділі ми обговоримо процес написання базового розумного договору за допомогою Solidity. Ми розглянемо важливі компоненти, такі як змінні, функції та модифікатори. Потім ми розглянемо приклад реалізації простого контракту токенів.

Змінні, функції та модифікатори

  • Змінні: У Solidity існують два типи змінних – змінні стану та локальні змінні. Змінні стану постійно зберігаються на блокчейні, тоді як локальні змінні тимчасові і існують лише в межах функції.
  • Функції: Функції - це будівельні блоки смарт-контрактів. Вони використовуються для виконання конкретних завдань, таких як створення транзакцій та виконання власної логіки. Функції можуть мати вхідні параметри та значення, що дозволяє забезпечити більшу настроюваність та гнучкість.
  • Модифікатори: Модифікатори є унікальними для Solidity і використовуються для зміни поведінки функції. Вони можуть покращити зрозумілість та керованість коду і використовуватися для автентифікації вхідних значень або умовно виконувати викликану функцію.

Приклад1: Реалізація простого контракту токенів

Давайте створимо простий контракт токена за допомогою Solidity. Цей контракт дозволить користувачам передавати токени між рахунками та перевіряти баланс токенів будь-якого рахунку.

Solidity TypeScriptpragma ^0.8.0; contract SimpleToken { // Оголошення змінних стану адреси публічного власника;    mapping(address = > uint256) публічні баланси;    Ініціалізація конструктора контракту токена (uint256 initialSupply) { owner = msg.sender;        баланси[власник] = початкове постачання;    } // Функція передачі токенів functions transfer(address to, uint256 amount) public { require(balances[msg.sender] >= amount, "Недостатній баланс");        залишки[msg.sender] -= сума;        залишки[до] += сума;    } // Функція перевірки балансу токенів облікового запису, функція balanceOf(адресний обліковий запис) public view returns (uint256) { return balances[account];    }}

У цьому контракті у нас є:

  • Змінні стану власникібалансизберігати адресу власника контракту та баланси токенів всіх адрес, відповідно.
  • A конструкторфункція, яка встановлює початковий обсяг токенів та призначає їх власнику контракту.
  • A передачафункція, яка дозволяє користувачам пересилати токени на інші рахунки. Вона використовує потребуватизаява для переконання в тому, що відправник має достатньо токенів для переказу.
  • A балансфункція, яка повертає баланс токенів вказаного облікового запису.
  • Цей базовий токенний контракт демонструє, як використовувати змінні, функції та модифікатори в Solidity для створення простого, функціонального смарт-контракту.

Приклад2: Впровадження простої системи голосування

pragma solidity ^0.8.0;contract VotingSystem {    mapping (bytes32 => uint256) public votesReceived;    bytes32[] public candidateList;    constructor(bytes32[] memory candidateNames) {        candidateList = candidateNames;    }    function voteForCandidate(bytes32 candidate) public {        require(validCandidate(candidate), "Недійсний кандидат.");        votesReceived[candidate] += 1;    }    function totalVotesFor(bytes32 candidate) public view returns (uint256) {        require(validCandidate(candidate), "Недійсний кандидат.");        return votesReceived[candidate];    }    function validCandidate(bytes32 candidate) public view returns (bool) {        for (uint256 i = 0; i < candidateList.length; i++) {            if (candidateList[i] == candidate) {                return true;            }        }        return false;    }}

У цьому прикладі,Система голосуванняКонтракт дозволяє користувачам голосувати за одного з кількох кандидатів, зателефонувавши голосувати за кандидатафункція. Контракт відстежує кількість голосів, отриманих за кожного кандидата за допомогоюполучені голосивідображення, де ключем є ім'я кандидата, а значенням є кількість голосів. список кандидатівЗмінна зберігає список дійсних кандидатів. ЗагальнаКількістьГолосівДляфункцію можна викликати, щоб перевірити кількість голосів, яку отримав конкретний кандидат, тадійсний кандидатфункція перевіряє, чи кандидат є дійсним. Це простий приклад того, як Solidity може бути використаний для побудови децентралізованих додатків зі складною логікою.

Основне
Змінні, функції та модифікатори є невід'ємними компонентами у розумних контрактах Solidity.
У Solidity є два типи змінних: змінні стану та локальні змінні.
Функції використовуються для виконання завдань і можуть мати вхідні параметри та значення повернення.
Модифікатори використовуються для зміни поведінки функції та покращення зрозумілості та керованості коду.
Контракт SimpleToken дозволяє користувачам передавати токени та перевіряти баланси токенів.
Контракт SimpleToken демонструє використання змінних стану, функції конструктора та функцій, таких як transfer та balanceOf.
Контракт VotingSystem дозволяє користувачам голосувати за кандидатів та відстежує кількість голосів.
Контракт VotingSystem демонструє використання відображень, масивів та функцій, таких як voteForCandidate, totalVotesFor та validCandidate.

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.