Что такое приложения Defi?
Как создавать приложения Defi?
Truffle - это среда тестирования и разработки для создания смарт-контрактов для Ethereum. Он обеспечивает простой способ создания и развертывания смарт-контрактов в блокчейне. Другой инструмент, Ganache, позволяет создавать локальный блокчейн Ethereum для тестирования смарт-контрактов. Ganache моделирует основные сетевые функции и финансирует первые десять аккаунтов с помощью 100 тестовых эфиров. Таким образом, это делает развертывание смарт-контрактов бесплатным и простым. Его можно использовать как настольное приложение или инструмент командной строки. Здесь используется настольное приложение UI.
Создание проекта предполагает выполнение следующих команд:
mkdir YourProjectName
cd YourProjectName
truffle init
Будет создан пустой проект, и его структура будет такой, как показано ниже:
2. Создайте токен ERC20
ERC20 - это взаимозаменяемый токен, который используется для ставок на смарт-контракт. Для создания этого токена необходимо установить библиотеку OpenZeppelin. Эта библиотека состоит из стандартов реализации ERC20 и ERC721. Для его установки необходимо выполнить следующую команду:
npm install @openzeppelin/contracts
Используя библиотеку OpenZeppelin, создается токен ERC20 под названием MyToken с реализацией следующего кода:
pragma solidity ^0.6.2;
import @openzeppelin/contracts/token/ERC20/ERC20.sol;
contract MyToken is ERC20 {
constructor() public ERC20(MyToken, MTKN)
{
_mint(msg.sender, 1000000000000000000000000);
}
}
В этом коде:
Реализация конструктора ERC20.sol, в которой поле «_decimals» имеет значение 18, показана ниже:
string private _name;
string private _symbol;
uint8 private _decimals;
constructor (string memory name_, string memory symbol_) public {
_name = name_;
_symbol = symbol_;
_decimals = 18;
}
const MyToken = artifacts.require(MyToken)
module.exports = async function(deployer, network, accounts) {
await deployer.deploy(MyToken)
const myToken = await MyToken.deployed()
}
Перед компиляцией смарт-контракта сначала проверьте версию компилятора Solidity.
truffle version
Версия по умолчанию для Solidity - v0.5.16. Здесь токен написан в версии 0.6.2. Если для компиляции контракта выполняются команды, это приведет к ошибке компилятора. Следовательно, необходимо проверить версию. Чтобы указать версию компилятора Solidity, перейдите в файл truffleconfig.js и установите желаемую версию компилятора, как показано ниже:
compilers: {
solc: {
version: 0.6.2,
}
}
Скомпилируйте смарт-контракт с помощью следующей команды:
truffle compile
Теперь, после компиляции, переходите к развертыванию токена. Откройте Ganache и перейдите к опции «Быстрый запуск». Он запустит локальный блокчейн Ethereum. Чтобы развернуть контракт, выполните следующие действия:
truffle migrate
Консоль Truffle проверяет, что 1 миллион токенов MyToken был отправлен на адрес разработчика. Для взаимодействия со смарт-контрактом запустите:
truffle console
Теперь напишите следующую команду:
Для смарт-контракта:
myToken = await MyToken.deployed()
Из Ganache получите массив счетов:
accounts = await web3.eth. getAccounts()
Чтобы проверить баланс:
balance = await myToken.balanceOf(accounts [0])
Чтобы отформатировать баланс с 18 знаков после запятой:
web3.utils.fromWei(balance.toString())
FarmToken выполняет три основные функции:
Для конструктора FarmToken:
pragma solidity ^0.6.2;
import @openzeppelin/contracts/token/ERC20/IERC20.sol;
import @openzeppelin/contracts/utils/Address.sol;
import @openzeppelin/contracts/token/ERC20/SafeERC20.sol;
import @openzeppelin/contracts/token/ERC20/ERC20.sol
contract FarmToken is ERC20 {
using Address for address;
using SafeMath for uint256;
using SafeERC20 for IERC20;
IERC20 public token;
constructor(address _token)
public
ERC20(FarmToken, FRM)
{
token = IERC20(_token);
}
Строки 3-6 импортируют следующий контракт из OpenZeppelin
IERC20.sol, Address.sol, SafeERC20.sol и ERC20.sol.
Строка 8 представляет наследование FarmToken от контракта ERC20.
Строка 14-19 позволяет конструктору FarmToken получить адрес контракта MyToken в качестве параметра и назначить его общедоступной переменной, называемой токеном.
Реализуйте функцию balance ():
function balance() public view returns (uint256) {В статье рассказывается, как настроить среду разработки проекта с Truffle и Ganache и создать приложение Defi, которое может вносить MyTokens, получать FarmTokens и снимать MyTokens путем сжигания FarmTokens.