# Создание и деплой контракта через truffle на примере zkEVM **Published by:** [w3bAMA](https://paragraph.com/@w3bama/) **Published on:** 2023-03-21 **URL:** https://paragraph.com/@w3bama/truffle-zkevm ## Content Подготовься:• Обнови систему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 • Создай файл .envtouch .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 ** Заклаймь статью ** Залетай в телегу ;) ## Publication Information - [w3bAMA](https://paragraph.com/@w3bama/): Publication homepage - [All Posts](https://paragraph.com/@w3bama/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@w3bama): Subscribe to updates