Trüffel + INFURA für den Einsatz

Ich habe vor kurzem begonnen, Truffle zu verwenden, um meine Entwicklung zu automatisieren/beschleunigen.

Da ich es immer noch verstehe, bin ich auf eine Barriere gestoßen, als ich versuchte, INFURA für Migrationen zu verwenden.

INFURA-Knoten antworten nicht auf blockFilter- Anfragen und daher funktionieren Migrationen in Truffle nicht wie in ihrem Truffle + INFURA-Integrationsbeitrag angegeben .

Irgendwelche Ideen, wie dies funktioniert, außer den Code von Truffle auf Polling zu ändern, anstatt Ereignisse zu empfangen? :)

BEARBEITEN: Nachdem ich nach einer Lösung gesucht hatte, um die Bereitstellung von Verträgen zu validieren, entschied ich mich für Augurs großartigen öffentlichen Knoten, der Filtermethoden verfügbar macht.

Antworten (3)

INFURA-Knoten sind öffentlich und erhalten viel Verkehr, und das ist der Grund, warum einige JSON-RPC-Methoden nicht zugelassen werden müssen. Wir arbeiten jedoch an einer Lösung, die alle Methoden verfügbar macht.

Vor einiger Zeit haben wir unsere Architektur geändert, sodass Load Balancer nicht das Problem sind.

Ich werde mich beim Truffle-Team über die Verwendung von Filtern erkundigen und diesen Beitrag aktualisieren.

Wenn Sie der Engine in Ihrer truffle.js einen FilterSubprovider von web3-provider-engine hinzufügen, können Sie den Vertrag für Ropsten bereitstellen. Ich habe dies nicht im Mainnet versucht.

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

Infura gibt Ihnen keinen eigenen Knoten. Stattdessen betreiben sie einen Load-Balancer vor einem Pool gemeinsam genutzter Knoten. Aus diesem Grund verbieten sie zustandsmodifizierende Aufrufe.

Ich würde vorschlagen, dass Sie sich Folgendes ansehen: https://github.com/MetaMask/provider-engine Es ermöglicht Ihnen, einige RPC-Aufrufe vollständig clientseitig zu verarbeiten.

Ich kenne die Web3-Provider-Engine und tatsächlich wird sie in Truffle (oder zumindest einer Abzweigung davon) verwendet. Es erfüllt seinen Zweck und nimmt newFilter- Aufrufe an, INFURA ist hier das Problem. Da es nicht in der Lage ist, zustandsändernde Aufrufe zu verarbeiten, kann dies einfach nicht clientseitig erfolgen. Mir wurde klar, dass nicht einmal MetaMask das für mich tun konnte! :)