События Solidity при реакции не срабатывают

Простое логическое событие с функцией срабатывания, отлично работает, как и ожидалось, в консоли разработки трюфелей, но никогда не запускает мое Dapp, созданное с помощью приложения create-реагировать, просто кажется, что оно не слушает/не контролирует сеть, мне говорят, что это должно постоянно загружать POST-запрос для мониторинга сети, но не в моем случае. Я использую Metamask, и все вызовы функций смарт-контракта отлично работают, кроме событий.

event RoundStarted(uint256 closingBlock);

function roundStart() public ownerOnly {
    RoundStarted(block.number + ROUND_LENGTH);
}

И строка кода, которую я использовал в консоли разработки трюфелей, которая не работает, когда я вставляю ее в componentWillMount()

  Loto.deployed().then(function(instance){
    return instance.RoundStarted({},{fromBlock: 0, toBlock: 'latest'});
  }).then((result) => {
    return result.watch((error,result) => { 
      console.log('Found him!')
    })
  })

UPD: я обнаружил, что события отлично работают в трюфельном реагирующем блоке, так что это вроде как решает проблему, но я до сих пор не знаю, как они с этим справились, это не моя проблема с кодом, что-то о зависимостях, я хотел бы знать что мне не хватает в моем приложении create-реагировать.

Чтобы получить ссылку на контракт Лото, вы делаете что-то подобное const Loto = Contract(LotoContract); Loto.setProvider(web3.currentProvider)? Где web3 от внедренного провайдера, например, MetaMask.
@willjgriff, да, именно так, но я использую truffle-contract и файл json для получения контракта, например: лото_артефакты); Loto.setProvider(web3.currentProvider); Опять же, я думаю, что проблема больше похожа на реакцию или что-то между ними, я пробовал web3 0.20.4 и 1.0.0-29beta, обе работают для функций и всего, но не для событий.

Ответы (1)

Будет ли это работать, если вы удалите все аргументы объекта JS в вызове события контракта, например, если вы замените строку 2 в своем фрагменте наreturn instance.RoundStarted();

Я не экспериментировал с указанием начального и конечного блоков, которые я хочу отслеживать, но, возможно, указав конечный блок, поскольку он 'latest'принимает последний блок во время вызова вашей componentWillMount()функции, который, вероятно, является блоком до запуска вашего события.

Да, я пробовал это без аргументов в первый раз, и я увидел, что кто-то предложил использовать их, что кому-то помогло, поэтому я попробовал оба способа и попытался вызвать наблюдатель событий в componentWillMount(), а также в componentDidMount( ) и одновременно, и по отдельности, и по нажатию кнопки, так что я думаю, что проблема не в этом, нужно углубиться.