у меня есть публичная булевская переменная (flag)
во втором контракте у меня есть функция в которой я делаю проверку на этот flag
как сделать функция бесплатной (view) при вызове flag из другого контракта ?
function getFlag () public view {
(bool success, bytes memory data) = otherContract.call(abi.encodeWithSelector(bytes4(keccak256(bytes('flag()')))));
require(success && (data.length == 0 || abi.decode(data, (bool))), 'flag error');
}
Вариант с интерфейсами выше норм однако если нужно всё-таки low level, то есть staticcall вместо call https://docs.soliditylang.org/en/latest/units-and-global-variables.html?highlight=staticcall#members-of-address-types
Обсуждают сегодня