У цьому розділі ми обговоримо процес написання базового розумного договору за допомогою 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]; }}
У цьому контракті у нас є:
власник
ібаланси
зберігати адресу власника контракту та баланси токенів всіх адрес, відповідно.конструктор
функція, яка встановлює початковий обсяг токенів та призначає їх власнику контракту.передача
функція, яка дозволяє користувачам пересилати токени на інші рахунки. Вона використовує потребувати
заява для переконання в тому, що відправник має достатньо токенів для переказу.баланс
функція, яка повертає баланс токенів вказаного облікового запису.Приклад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.
У цьому розділі ми обговоримо процес написання базового розумного договору за допомогою 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]; }}
У цьому контракті у нас є:
власник
ібаланси
зберігати адресу власника контракту та баланси токенів всіх адрес, відповідно.конструктор
функція, яка встановлює початковий обсяг токенів та призначає їх власнику контракту.передача
функція, яка дозволяє користувачам пересилати токени на інші рахунки. Вона використовує потребувати
заява для переконання в тому, що відправник має достатньо токенів для переказу.баланс
функція, яка повертає баланс токенів вказаного облікового запису.Приклад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.