Truffle + INFURA для развертывания

Недавно я начал использовать Truffle для автоматизации/ускорения разработки.

Поскольку я все еще разбираюсь в этом, я столкнулся с барьером при попытке использовать INFURA для миграции.

Узлы INFURA не отвечают на запросы blockFilter , поэтому миграции в Truffle не работают, как указано в сообщении об интеграции Truffle + INFURA .

Любые идеи о том, как заставить это работать, кроме изменения кода Truffle для опроса вместо получения событий? :)

РЕДАКТИРОВАТЬ: после поиска любого решения для проверки развертывания контрактов я просто остановился на большом общедоступном узле Augur, который предоставляет методы фильтрации.

Ответы (3)

Узлы INFURA являются общедоступными и получают много трафика, поэтому некоторые методы JSON-RPC необходимо запретить. Однако мы работаем над решением, которое сделает доступными все методы.

Некоторое время назад мы изменили нашу архитектуру, поэтому балансировщики нагрузки не являются проблемой.

Я узнаю у команды Truffle об использовании фильтров и обновлю этот пост.

Добавление FilterSubrovider из web3-provider-engine в движок вашего truffle.js позволит вам развернуть контракт в Ropsten, я не пробовал это в основной сети.

const FilterSubprovider = require('web3-provider-engine/subproviders/filters.js')
engine.addProvider(new FilterSubprovider())

Infura не дает вам собственный узел. Вместо этого они запускают балансировщик нагрузки перед пулом общих узлов. Вот почему они запрещают вызовы, изменяющие состояние.

Я бы посоветовал вам изучить: https://github.com/MetaMask/provider-engine . Он позволяет вам полностью обрабатывать некоторые вызовы RPC на стороне клиента.

Я знаю о web3-provider-engine, и на самом деле он используется в Truffle (или, по крайней мере, в его форке). Он служит этой цели и принимает вызовы newFilter , здесь проблема в INFURA. Поскольку он не может обрабатывать вызовы, изменяющие состояние, это просто невозможно сделать на стороне клиента. Я понял, что даже MetaMask не может сделать это для меня! :)