April 6

Деплой смарт-контракта в Arc Testnet

Arc — это L1-блокчейн от Circle, специально созданный под финансы на стейблкоинах.

Он:
— совместим с EVM
— использует USDC как gas-токен (а не ETH)
— уже работает в публичном тестнете, mainnet ожидается позже в 2026

Если вы уже деплоили контракты в Ethereum или других EVM-сетях — всё будет знакомо.
Если нет — этот гайд проведет вас с нуля.

Важный момент

В Arc газ оплачивается в USDC. Тестового ETH здесь нет.

Тестовый USDC вы получаете через faucet от Circle.


Я лично использую Mac, поэтому сначала покажу настройку для Mac.
Инструкции для Windows будут сразу после.

После установки Foundry все команды, начиная с Шага 1, одинаковы независимо от ОС.


Начало работы (Mac)

Откройте стандартное приложение Terminal (iTerm2).

Установите Foundry:

curl -L foundry.paradigm.xyz | bash

Перезагрузите конфигурацию shell:

source ~/.zshenv

Установите инструменты Foundry (forge, cast, anvil, chisel):

foundryup

Все, можно начинать. Перейдите к Шагу 1 ниже.


Начало работы (Windows)

Для прохождения этого гайда вам потребуется WSL (Windows Subsystem for Linux).
Если у вас его ещё нет, откройте PowerShell от имени администратора и выполните:

wsl --install

После установки перезагрузите компьютер, затем откройте Ubuntu через меню «Пуск».
Это даст вам Linux-терминал внутри Windows.

Установите Foundry:

curl -L foundry.paradigm.xyz | bash

Перезагрузите конфигурацию shell:

source ~/.bashrc

Установите инструменты Foundry (forge, cast, anvil, chisel):

foundryup

Совет

Если вы используете VS Code, введите команду:

code .

в терминале WSL, чтобы открыть текущую папку прямо в VS Code.
Возможно, сначала потребуется установить расширение WSL в VS Code.


С этого момента все команды одинаковы как для Mac, так и для Windows.
Просто убедитесь, что вы выполняете их в Terminal (Mac) или WSL Ubuntu (Windows).


Шаг 1: Инициализация нового Solidity-проекта

forge init hello-arc && cd hello-arc

Эта команда создаст новую папку проекта с названием "hello-arc" и сразу перейдёт в неё.
Откройте её в вашем редакторе кода.

Ваш терминал должен выглядеть примерно так 👇


Шаг 2: Настройка переменных окружения

Создайте файл .env в корне папки "hello-arc".
Вы можете сделать это вручную в редакторе или выполнить:

touch .env

Откройте файл:

nano .env

Вставьте внутрь:

ARC_TESTNET_RPC_URL="https://rpc.testnet.arc.network"

Убедитесь, что вы указали префикс https://.
Без него команды деплоя не будут работать.

Сохраните и выйдите из nano: Ctrl + X → Y → Enter


Шаг 3: Написание смарт-контракта

Сначала удалите стандартный контракт Counter, который создаёт Foundry:

rm src/Counter.sol

Создайте новый файл контракта:

touch src/HelloArchitect.sol

Откройте его:

nano src/HelloArchitect.sol

Вставьте следующий код:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;

contract HelloArchitect {
    string private greeting;

    event GreetingChanged(string newGreeting);

    constructor() {
        greeting = "Hello Architect!";
    }

    function setGreeting(string memory newGreeting) public {
        greeting = newGreeting;
        emit GreetingChanged(newGreeting);
    }

    function getGreeting() public view returns (string memory) {
        return greeting;
    }
}

Простой контракт:
он хранит строку (greeting), позволяет её менять и вызывает событие при изменении.

Сохраните и выйдите: Ctrl + X → Y → Enter


Шаг 4: Написание тестов

Удалите стандартную папку со скриптами и тестовый файл:

rm -rf script
rm test/Counter.t.sol

Создайте файл для тестов:

touch test/HelloArchitect.t.sol

Откройте его:

nano test/HelloArchitect.t.sol

Вставьте следующий код:

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;

import "forge-std/Test.sol";
import "../src/HelloArchitect.sol";

contract HelloArchitectTest is Test {
    HelloArchitect helloArchitect;

    function setUp() public {
        helloArchitect = new HelloArchitect();
    }

    function testInitialGreeting() public view {
        string memory expected = "Hello Architect!";
        string memory actual = helloArchitect.getGreeting();
        assertEq(actual, expected);
    }

    function testSetGreeting() public {
        string memory newGreeting = "Welcome to Arc Chain!";
        helloArchitect.setGreeting(newGreeting);
        string memory actual = helloArchitect.getGreeting();
        assertEq(actual, newGreeting);
    }

    function testGreetingChangedEvent() public {
        string memory newGreeting = "Building on Arc!";
        vm.expectEmit(true, true, true, true);
        emit HelloArchitect.GreetingChanged(newGreeting);
        helloArchitect.setGreeting(newGreeting);
    }
}

Сохраните и выйдите: Ctrl + X → Y → Enter


Шаг 5: Тестирование и компиляция

Запустите тесты:

forge test

Вы должны увидеть, что все три теста проходят успешно.
Если всё ок — скомпилируйте проект:

forge build

Шаг 6: Создание кошелька

Для деплоя вам понадобится кошелёк. Сгенерируйте его с помощью Foundry:

cast wallet new

Вы получите адрес и приватный ключ.
Сохраните их в безопасном месте. Никому не передавайте приватный ключ.

nano .env

Добавьте туда ваш приватный ключ:

PRIVATE_KEY="0x..."

Замените 0x... на ваш реальный приватный ключ.
Сохраните и выйдите: Ctrl + X → Y → Enter

Перезагрузите переменные окружения:

source .env

Эту команду нужно будет выполнять каждый раз, когда вы добавляете новые переменные в .env.


Шаг 7: Пополните кошелёк

Перейдите на faucet.circle.com, выберите Arc Testnet, вставьте адрес кошелька, который вы только что создали, и запросите тестовый USDC.

Помните: USDC — это gas-токен в Arc.
Именно он используется для оплаты деплоя и транзакций. ETH не нужен.


Шаг 8: Деплой контракта

Выполните команду для деплоя:

forge create src/HelloArchitect.sol:HelloArchitect \
  --rpc-url $ARC_TESTNET_RPC_URL \
  --private-key $PRIVATE_KEY \
  --broadcast

После успешного деплоя вы увидите:
— адрес деплойера
— адрес контракта
— хэш транзакции

Скопируйте адрес контракта из строки "Deployed to:".
Откройте файл .env:

nano .env

Добавьте адрес контракта новой строкой:

HELLOARCHITECT_ADDRESS="0x..."

Замените 0x... на реальный адрес контракта.
Сохраните и выйдите: Ctrl + X → Y → Enter

Перезагрузите переменные:

source .env

Шаг 9: Взаимодействие с контрактом

Вызовите функцию getGreeting:

cast call $HELLOARCHITECT_ADDRESS "getGreeting()(string)" \
  --rpc-url $ARC_TESTNET_RPC_URL

Вы должны получить ответ:
"Hello Architect!"


Шаг 10: Проверка в эксплорере

Перейдите на testnet.arcscan.app и вставьте хэш транзакции из деплоя.
Вы увидите подтверждение деплоя в эксплорере Arc Testnet.


Все, готово!

Что дальше

Теперь вы можете:
— расширять контракт
— добавлять логику
— изучать фичи Arc (USDC как gas, быстрая финализация)

Mainnet ожидается в 2026, поэтому раннее участие даёт преимущество.

https://t.me/CryptoEarnImp

https://t.me/CryptoImprtnt