• Обнови систему
apt update && apt upgrade -y
• Подкинь пакетов
sudo apt install build-essential apt-transport-https lsb-release ca-certificates curl gnupg
• Добавь репо ноджс
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
• Установи nodejs
• Обнови npm (по желанию)
npm install -g npm@9.6.2
• Проверь
node -v
npm -v
• Установи трюфель
npm install -g truffle
• Создай папку с проектом и перейди в нее
mkdir truffleProject && cd truffleProject
• Установи dotenv
• Повели трюфелю создать необходимую структур каталогов
truffle init
• Установи пакет кошеля
npm install @truffle/hdwallet-provider
• Создай файл .env
touch .env
• Если есть ГУИ - делай как я в видосе, если нет - то открывай командой
nano .env
и вставляй следующий текст поменяв данные на свои.
INFURA_API_KEY = "https://goerli.infura.io/v3/<Your-API-Key>"
MNEMONIC = "<Your-MetaMask-Secret-Recovery-Phrase>"
жми ctrl + s, ctrl + x
• Создай файл
touch contracts/Demo.sol
• Копируй туда текст либо с помощью GUI,
pragma solidity >=0.5.8;
contract Demo {
event Echo(string message);
function echo(string calldata message) external {
emit Echo(message);
}
}
либо открыв в nano (после редактирования сохраняем с помощью ctrl + s, ctrl + x)
nano contracts/Demo.sol
• Открывай файл truffle-config.js (либо с помощью графики либо с помощью nano, думаю ты уже разобрался как работает nano) и копируй туда следующее:
require('dotenv').config();
const HDWalletProvider = require('@truffle/hdwallet-provider');
const { INFURA_API_KEY, MNEMONIC } = process.env;
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 8545,
network_id: "*"
},
goerli: {
provider: () => new HDWalletProvider(MNEMONIC, INFURA_API_KEY),
network_id: '59140',
gas: 4465030
}
}
};
Почти готово, осталось скомпилить и задеплоить
• Скомпилить
truffle compile
Ты должен увидеть нечто подобное
Compiling your contracts...
===========================
> Compiling ./contracts/Demo.sol
> Artifacts written to /Users/myuser/truffleProject/build/contracts
> Compiled successfully using:
- solc: 0.5.16+commit.9c3226ce.Emscripten.clang
• Создай деплоймент скрипт
touch migrations/1_deploy_contract.js
и скопируй в него текст
const Demo_Contract = artifacts.require("Demo");
module.exports = function(deployer) {
deployer.deploy(Demo_Contract);
};
Ты готов • Деплой
truffle migrate --network goerli
Результат должен быть таким
...
Starting migrations...
======================
> Network name: 'goerli'
> Network id: 5
> Block gas limit: 30000000 (0x1c9c380)
1_deploy_contract.js
====================
Deploying 'Demo'
----------------
> transaction hash: 0xafb1fa110d77f1447434418539e3fd36a97c0f948cc83e793fa394c882a1fab1
> Blocks: 3 Seconds: 29
> contract address: 0x4Ee0845a9eBfB04Bcc225b70Dc78c4789C61c64E
> block number: 7588035
> block timestamp: 1663126548
> account: 0x9cE564c7d09f88E7d8233Cdd3A4d7AC42aBFf3aC
> balance: 0.088395204941580514
> gas used: 123421 (0x1e21d)
> gas price: 4.303203766 gwei
> value sent: 0 ETH
> total cost: 0.000531105712003486 ETH
> Saving artifacts
-------------------------------------
> Total cost: 0.000531105712003486 ETH
Summary
=======
> Total deployments: 1
> Final cost: 0.000531105712003486 ETH
** Заклаймь статью
**
Залетай в телегу ;)
