Разрабатываем смарт-контракты с помощью «Foundry + Conflux»

Что такое Foundry?

Foundry — это, написанная на Rust, альтернативная реализация среды тестирования dapptools, невероятно быстрая, простая в установке и удобная для большинства разработчиков, от команды #Paradigm.
Если Вам нужна самая быстрая и гибкая среда разработки смарт контрактов Solidity совместимая с Conflux eSpace, которая работает «из коробки» без дополнительных настройки и/или сторонних библиотек, тогда такие CLI инструменты, как cast и forge, из набора Foundry Tools точно для Вас.

:warning:Примечание: Для корректной работы Foundry, требуется предустановленный модуль Rust!!! Выполните установку Rust на вашу рабочую машину, перед тем как устанавливать Foundry. Для установки Foundry используйте foundryup.

Запускаем и тестируем Смарт-контракт

Устанавливаем Foundry из репозитория
Foundry + Conflux
Альтернативно, выполнение команды forge init в пустой папке, назначает эту папку, средой использования инструментов Foundry CLI.

:warning:Примечание: Не забудьте использовать флаг --recursive во время клонирования, чтобы скопировать содержимое всех модулей git. Кроме этого, не забудьте выполнить команду forge remappings>remappings.txtдля создания новых переназначений (remappings) модулей git.

Репозиторий Foundry+Conflux содержит 2 отдельных контракта

• Контракт токена ERC20;
• Swap контракт, с помощью которого любой из Вас может легко создавать заявки/рынки обмена токена A на токен B, согласно заданному курсу(соотношению).

С Foundry, чтобы развернуть
контракт Swapper.sol, вам потребуется лишь выполнить команду forge create

forge create Swapper --contracts /$USER/Foundry+Conflux/src/Swapper.sol --private-key $your_private_key --rpc-url https://evmtestnet.confluxrpc.com --legacy

Примечание:
Путь к контракту($PATH) должен совпадать с путём хранения этого контракта.
Мы используем — legacy флаг , так как Foundry использует при транзакции структуру объекта стандарта EIP1559, которую не поддерживает тестовая сеть eSpace.

Для тестирования своих контрактов в Foundry, вам необходимы тесты на solidity, сохранённые с расширением .t.sol

contract Foo {
    uint256 public x = 1;
    function set(uint256 _x) external {
        x = _x;
    }

    function double() external {
        x = 2 * x;
    }
}

contract FooTest {
    Foo foo;

// The state of the contract gets reset before each
// test is run, with the setUp() function being called
// each time after deployment.
function setUp() public {
    foo = new Foo();
}

// A simple unit test
function testDouble() public {
    require(foo.x() == 1);
    foo.double();
    require(foo.x() == 2);
}
}

:point_up_2:t6: выше приведён пример простейшего теста смарт-контракта, который можно выполнить с помощью командыforge test.

Также обратите внимание, что Foundry выполняет автоматические тесты функций, которые используют uint/int в качестве входных данных/аргументов.

Для запуска шаблонов тестов Swapper.t.sol, которые находятся в этом данном репозитории и выполните команду forge test

В Foundry файлом конфигурации является файл foundry.toml, в котором вы можете настраивать различные переменные окружения, которые используются при выполнении команд forge или cast.

Подробная информация о Foundry, содержится в справочнике Foundry Handbook, доступном по данной ссылке.

1 Like