Сегодня мы закончим узнавать новые cast команды и пройдем последние три раздела: ABI, конвертация и полезные инструменты.
ABI команды
1. cast abi-encode / cast abi-decode - шифрует или расшифровывает данные. Например:
cast abi-encode "someFunc(address,uint256)" 0x... 1 2342. cast 4byte - можно получить функцию по селектору.
cast abi-decode "balanceOf(address)(uint256)" 0x000000000000000000000000000000000000000000000000000000000000000a
cast 4byte 0x8cc5ce993. cast 4byte-decode - расшифровать функцию и ее аргументы из calldata:
cast 4byte-decode 0xa9059cbb000000000000000000000000e78388b4ce79068e89bf8aa7f218ef6b9ab0e9d00000000000000000000000000000000000000000000000000174b37380cea0004. cast 4byte-event - получить функцию event из calldata
cast 4byte-event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5. cast calldata - создать calldata из функции и аргументов. Например,
cast calldata "someFunc(address,uint256)" 0x... 16. cast calldata-decode - расшифровать calldata
cast calldata-decode "transfer(address,uint256)" 0xa9059cbb000000000000000000000000e78388b4ce79068e89bf8aa7f218ef6b9ab0e9d0000000000000000000000000000000000000000000000000008a8e4b1a3d80007. cast-pretty-calldata - еще одна команда для расшифровки calldata, например:
cast pretty-calldata 0xa9059cbb000000000000000000000000e78388b4ce79068e89bf8aa7f218ef6b9ab0e9d00000000000000000000000000000000000000000000000000174b37380cea0008. cast upload-signature / cast sig - получить селектор функции:
cast upload-signature 'function approve(address,uint256)'можно указывать несколько подряд
9. cast keccak - получить зашифрованные через keccak256 данные.
cast keccak abcsdfg10. cast compute-address - сгенерировать адрес на основе nonce и адреса деплоера, например:
cast compute-address --nonce 0 --rpc-url yourUrl11. cast create2 - создать адрес через опкод creat2.
12. cast interface - создать интерфес контракта из ABI:
cast interface -o IWETH.sol 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2Также можно использовать ABI с Etherscan, но для этого придется получать API и использовать дополнительную опцию --etherscan-api-key.
13. cast max-int / cast min-int / cast max-uint - получение максимальных значений uint256 / int256.
Команды для конвертации данных
Здесь очень много разных команд для конвертации, думаю, некоторые из них мы будем использовать при работе с тестами. В данном посте я просто представлю возможности данных cast команд.
Итак, вы можете конвертировать:
1. Бинарные данные в hex;
2. Fixed point number в integer;
3. Расшифровывать RLP данные;
4. UTF8 text в hex;
5. Количество wei в Эфир;
6. Получать адрес из bytes32;
7. Получать строку из bytes32;
8. hex в строку ASCII;
9. Из hex в числа;
10. Из hex в bytes32;
11. Из hex в RLP;
12. Совершать побитовые операции со сдвигом влево-вправо;
Полные список команд можно найти по ссылке:
https://book.getfoundry.sh/reference/cast/cast-shl
Крайне рекомендую попробовать поработать со всеми командами в свободное время, чтобы понять, как это все работает и привыкнуть работать с cast.
Задание
1. Попробовать выполнить 10 разны команд cast.
#foundry #cast #lesson4