Ребята, крепитесь, остались последние три поста по Foundry и дальше будем выбирать новую тему или делать общие посты по Solidity и аудиту, а пока...
Короткий пост по написанию тестов для контрактов на yul.
Как вы можете знать, или догадываться, контракты могут быть написаны не только на Solidity, но и чисто на yul, т.е. низкоуровневом языке.
За все время работы со смарт контрактами мне ни разу не встречались подобные проекты.
Ну, разве что в аудите ZK Sync был служебный контракт Bootloader...
Так вот, проводить тесты для таких проектов все же надо, но как это сделать?
Один из участников канала (спасибо @dmitryq) поделился ссылкой на репо, который позволяет в удобном формате подготовить yul контракт.
В этом репо вы можете найти сам пример подготовки теста:
https://github.com/crystalbit/foundry-yul-boilerplate
А в этом контракты помощники для деплоя:
https://github.com/crystalbit/deploy-yul
В целом там все достаточно понятно и просто. Вам потребуется импортировать несколько дополнительных контрактов в файл теста:
import "deploy-yul/BytecodeDeployer.sol";
import "deploy-yul/YulDeployer.sol";
И подготовить необходимые контракты вашего протокола:
YulDeployer yulDeployer = new YulDeployer();
BytecodeDeployer bytecodeDeployer = new BytecodeDeployer();
address basic;
address basicBytecode;
function setUp() external {
basic = yulDeployer.deployContract("Basic");
basicBytecode = bytecodeDeployer.deployContract("Basic");
}
Если вы проходили все предыдущие посты из цикла Foundry с 0, то данный процесс работы не составит для вас труда.
#foundry #lesson36