Проблемы с вызовом sendTransaction из обработчика событий

У меня проблемы с Error: Invalid number of arguments to Solidity function. По сути, проблема возникает, когда я вызываю sendTransaction с обработчиком событий. т.е. вот код после подключения события Solidity:

// premisObject was setup earlier to point at the Abi at the contract's deployed address const premisObject = this.premisObject // rightsSetRights has been hooked up to the required event const rightsSetRights = this.rightsSetRights rightsSetRights.watch(function (error, result) { if (!error) { const index = result.args._index const hash = result.args._hash premisObject._setRights(hash,index, {gas: 200000})) } else { console.error(result) } })

Этот вызов вызывает premisObject._setRights(hash,index, {gas: 200000}))ошибку. Если я сделаю тот же вызов вне обработчика событий:

premisObject._setRights(this.state.hash, 0, {gas: 200000})

....работает просто отлично. Мне нужно premisObject._setRightsкаким-то образом вызвать этот обработчик событий, потому что именно тогда я знаю значение требуемого индекса. Есть идеи, что происходит? Или, может быть, у вас есть хитрый план, который означает, что я могу обойти проблему?

Вы проверили правильность параметров index, hash и premisObject? Также я думаю, что для некоторых параметров мне нужен «0x» впереди. Кроме того, если premisObject является контрактом, не кажется хорошей идеей иметь имя публичного метода, начинающееся с _.
Да, все проверил, вроде все правильно. В настоящее время я обхожу проблему, переделывая свой dAapp, создавая требуемый индекс, а не получая его из обработчика событий.
пс. это не _setRights - это setRights (это была ошибка транскрипции) ;)

Ответы (1)

Я так и не разобрался в этом — в итоге я переработал свое dApp, чтобы установить, а не получить индекс.