Это кажется очень маленькой проблемой, и я новичок в разработке контрактов.
У меня есть функция в прототипе контракта:
function exampleContractFunction(
address somecontractaddress,
bytes4 someCurrencySymbol,
uint[] memory someDetails,
uint16 someTime,
uint8 data1,
bytes32 data2,
bytes32 data3
);
Я использую версию библиотеки Ethers ^ 4.0.33 и трюфель
При компиляции контракта генерируется следующий интерфейс.
exampleContractFunction: TypedFunctionDescription<{
encode([
somecontractaddress,
someCurrencySymbol,
someDetails,
someTime,
data1,
data2,
data3
]: [
string,
Arrayish,
BigNumberish[],
BigNumberish,
BigNumberish,
Arrayish,
Arrayish
]): string;
}>;
Я пытаюсь вызвать это для получения закодированных данных для транзакции взаимодействия контракта, которая требует подписания. Когда я вызываю это и передаю
const hexCurrency = (web3.utils.toHex('DAI'));
как someCurrencySymbol в следующем вызове:
const data = this.contracts.somecontract.interface.functions.exampleContractFunction.encode([
somecontractaddress, // Can be compound or dydx at the moment
hexCurrency,
someDetails,
someTime,
data1,
data2,
data3,
]);
Я получаю эту ошибку с изменением любой валютыSymbol, которую я передаю
Error: invalid input argument (arg="someCurrencySymbol", reason="invalid bytes4 value", value="0x444149", version=4.0.42)
at Object.throwError (/packages/types/node_modules/ethers/errors.js:76:17)
Как я могу отправить этот аргумент bytes4 символом валюты?