TGViewer
Из Solidity в AI и дальше Из Solidity в AI и дальше @solidityset · 2.48K subscribers
Post #932 633
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

import {Script, console2} from "forge-std/Script.sol";
import {Counter} from "../src/Counter.sol";

contract CounterScript is Script {
function run() public {
vm.startBroadcast();
Counter counter = new Counter();
vm.stopBroadcast();
console2.log(address(counter));
}
}


Служебная функция run() как раз и служит для деплоя, vm.startBroadcast и vm.stopBroadcast еще пара читкодов, которые позволяют отправлять транзакции в блокчейн.

Открываем новый терминал, не удаляя тот, где запущен Anvil, и выполняем команду:

forge script script/Counter.s.sol


В итоге у нас будет будет что-то вроде:

Script ran successfully.
Gas used: 228424

== Logs ==
0x90193C961A926261B75...


Был ли в данном случае выполнен деплой? Нет, сейчас просто прогнался наш контракт как скрипт.

Как я понял из сторонних статей и объяснений на форумах, эта простая команда нужна для того, чтобы проверить наличие ошибок при деплое контрактов.

Также симулировать деплой можно с помощью похожей команды, указав rpc ссылку сети, в которую будет идти деплой. Например, для Anvil:

forge script script/Counter.s.sol --rpc-url http://127.0.0.1:8...


При этом вам могут показать некоторые предупреждения, как например:

EIP-3855 is not supported in one or more of the RPCs used.
Unsupported Chain IDs: 31337.
Contracts deployed with a Solidity version equal or higher than 0.8.20 might not work properly.


И уже для полноценного деплоя нам нужно указать приватный ключ от аккаунта, с которого будет идти деплой контрактов в сеть, а также добавить ключевое слово --broadcast:

forge script script/Counter.s.sol --rpc-url http://127.0.0.1:8.. --private-key $PRIVATE_KEY --broadcast


Теперь, если мы откроем терминал, где у нас был запущен блокчейн, то можем увидеть новую запись:

[Success]Hash: 0xdb858b56859825d35f6bffe022c9524e640869974e219387a87b4d542ce311f1
Contract Address: 0x5FbDB2315678afecb367f032d93F642f64180aa3
Block: 1
Paid: 0.0009359 ETH (233975 gas * 4 gwei)


Кстати, сюда же мы можем отправлять транзакции через cast send и cast call, так как это полноценный контракт в блокчейне.

Также мы можем заметить, что в древе файлов нашего проекта появилась новая папка broadcast. Здесь находится информация по деплою нашего контракта.

Существует еще более директивный способ деплоя контрактов в сеть с помощью команды

forge create

Здесь вам также нужно будет указывать rpc ссылку и приватный ключ.

Больше информации тут: https://book.getfoundry.sh/reference/forge/forge-create

При этом с create, те же аргументы для контрактов нужно будет также прописывать через дополнительные команды, типа --constructor-args, в то время как для скриптовой версии, все это указывается как в обычном коде Solidity.

Скриптовой вариант более удобнее и проще, в особенности для деплоя множества контрактов.

Ну, и в завершение, пару слов о верификации контрактов.

При обычном способе, нам нужно было бы заходить на тот же etherscan и вручную указывать многие параметры нашего контракта, включая его код на Solidity. При этом, по слухам, было много шансов ошибиться на каком-либо шаге и каждый раз начинать все заново. С Foundry этот процесс стал проще.

Для этого мы можем добавить команду --verify в команду исполнения скрипта:

forge script script/Counter.s.sol --rpc-url http://127.0.0.1:8... --private-key $PRIVATE_KEY --broadcast --verify


Вообще для скриптов написали достаточно много команд, их можно посмотреть тут:

https://book.getfoundry.sh/reference/forge/forge-script

Дополнительно темы деплоя мы будем касаться в постах, где это будет необходимо, указывая на новые нюансы и опции.

А пока что, попробуйте потренироваться сами.

#foundry #lesson19
  • ❤ 2
  • 👍 1
  • 🔥 1
More from @solidityset
  1. Oct 2, 2026Вторая сложность — как доказать, что установилось именно опубликованное. В первом варианте…
  2. Oct 2, 2026Задача с полуоткрытым кодом На днях, в процессе создания одного приложения, столкнулся с и…
  3. Sep 22, 2026Какой язык программирования учить сейчас? На днях в Твиттере увидел небольшой пост о разви…
  4. Sep 18, 2026Интересная модель Jev Буквально пару дней назад в Твиттере многие начали обсуждение новой…
  5. Sep 14, 2026Графы повсюду Если вы также следите за новостями в мире ИИ, то наверняка уже все чаще встр…
  6. Sep 10, 2026GTA6, Cyberleek, блокчейн и безопасность Увидел несколько постов (тут и тут) про Cyberleek…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →