Что такое Foundry?
Foundry — это, написанная на Rust, альтернативная реализация среды тестирования dapptools, невероятно быстрая, простая в установке и удобная для большинства разработчиков, от команды #Paradigm.
Если Вам нужна самая быстрая и гибкая среда разработки смарт контрактов Solidity совместимая с Conflux eSpace, которая работает «из коробки» без дополнительных настройки и/или сторонних библиотек, тогда такие CLI инструменты, как cast и forge, из набора Foundry Tools точно для Вас.
Примечание: Для корректной работы Foundry, требуется предустановленный модуль Rust!!! Выполните установку Rust на вашу рабочую машину, перед тем как устанавливать Foundry. Для установки Foundry используйте foundryup.
Запускаем и тестируем Смарт-контракт
Устанавливаем Foundry из репозитория
Foundry + Conflux
Альтернативно, выполнение команды forge init
в пустой папке, назначает эту папку, средой использования инструментов Foundry CLI.
Примечание: Не забудьте использовать флаг
--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);
}
}
выше приведён пример простейшего теста смарт-контракта, который можно выполнить с помощью командыforge test.
Также обратите внимание, что Foundry выполняет автоматические тесты функций, которые используют
uint/int
в качестве входных данных/аргументов.
Для запуска шаблонов тестов Swapper.t.sol
, которые находятся в этом данном репозитории и выполните команду forge test
В Foundry файлом конфигурации является файл
foundry.toml
, в котором вы можете настраивать различные переменные окружения, которые используются при выполнении командforge
илиcast
.
Подробная информация о Foundry, содержится в справочнике Foundry Handbook
, доступном по данной ссылке.