Я новичок в солидности и изучал его через простое веб-приложение.У меня есть веб-приложение, которое принимает некоторые подробности, и кнопка, нажимая которую, детали должны быть развернуты в блок, созданный умным контрактом.Детали успешно развернуты из IDE ремиксов, но при входе через веб-приложение выдается следующее исключение:
inpage.js:1 Uncaught Error: Invalid number of arguments to Solidity function
at Object.InvalidNumberOfSolidityArgs (inpage.js:1)
at u.validateArgs (inpage.js:1)
at u.toPayload (inpage.js:1)
at u.sendTransaction (inpage.js:1)
at u.execute (inpage.js:1)
at HTMLButtonElement.<anonymous> ((index):231)
at HTMLButtonElement.dispatch (jquery-3.2.1.slim.min.js:3)
at HTMLButtonElement.q.handle (jquery-3.2.1.slim.min.js:3)
При серфинге в Интернете я обнаружил, что это может быть из-за того, что web3.eth.accounts[0]
возвращает 'undefined ', что и происходит в моем случае.
Наоборот, хотя при отображении web3.eth
на консоли он показывает учетные записи и адрес MetaMask тоже с индексом 0Я читал, что это может быть из-за того, что web3js 1.0
может еще не полностью поддерживаться MetaMask, но я не могу найти решение для него.
Также, как проверить версию web3, которую я использую, и как устаретьпонизить при необходимости.
Вот так я пытаюсь получить доступ к web3.eth.accounts[0]
web3.eth.defaultAccount = web3.eth.accounts[0];
console.log(web3.eth.defaultAccount); // returns undefined
Я также попробовал следующий метод, но безрезультатно:
var myAccount;
web3.eth.getAccounts(function(err,res){
if(!err)
{
myAccount = res;
console.log(myAccount);
}
});
Это возвращает адрес учетной записи, но переменная myAccount снова возвращает « undefined » при использовании вне метода getAccounts.Кроме того, написание дополнительной логики внутри части if не помогает дать вышеупомянутое исключение.
Я попробовал несколько вещей, но не смог найти решение.Пожалуйста, направьте и исправьте, если я что-то неправильно понял.
РЕДАКТИРОВАТЬ
Вы можете найти исходный код здесь.https://github.com/anishsamant/Solidity-Demo
См. Courses.sol для файла солидности. См. index.html для веб-приложения.