Я пытаюсь настроить связь между веб-интерфейсом и развернутым контрактом Ethereum (на Rinkeby). Я пытаюсь вызвать простой метод, который обновляет значение, которое выглядит примерно так:
uint public value;
function someFunction(uint newValue) public {
value = newValue;
}
И я вызываю эту функцию из клиента:
myContract.methods.someFunction(newValue).send({
from: myAccount,
});
Когда MetaMask всплывает, над значением, которое должно быть отправлено клиенту, написано «НЕИЗВЕСТНАЯ ФУНКЦИЯ» (это также происходит, когда я пытаюсь вызвать методы, которые на самом деле требуют значения эфира). Есть ли способ решить проблему? Кажется, что это, вероятно, было бы неприятно для пользователей, если бы речь шла о реальном эфире.
Чтобы MetaMask распознал сигнатуру вашей функции, вам необходимо зарегистрироваться по адресу:
https://etherscan.io/address/0x44691B39d1a75dC4E0A0346CBB15E310e6ED1E86#writeContract .
Именно здесь MetaMask извлекает данные, чтобы определить функцию, соответствующую хэшу функции.
т.е. в вашем примере вызовите register
функцию вышеуказанного контракта, передав:
someFunction(uint256)
арисалексис
Адам Досса
register
функцию из любого места (например, MEW, Mist), что позволяет вам взаимодействовать со смарт-контрактами. etherscan.io теперь также поддерживает запись в контракты (см. ссылку выше) с использованием MetaMask. Учетная запись не должна иметь значения при регистрации функции — все, что вы делаете, это связываете имя функции с ее подписью и записываете эту связь в смарт-контракте. Вам нужно будет заплатить за газ за звонок, но больше ничего.ТЕННОКС