Trufa + INFURA para despliegue

Recientemente comencé a usar Truffle para automatizar/acelerar mi desarrollo.

Como todavía estoy aprendiendo, me encontré con una barrera al intentar usar INFURA para migraciones.

Los nodos de INFURA no responden a las solicitudes de blockFilter y, por lo tanto, las migraciones en Truffle no funcionan como se indica en su publicación de integración de Truffle + INFURA .

¿Alguna idea sobre cómo hacer que esto funcione además de cambiar el código de Truffle para sondear en lugar de recibir eventos? :)

EDITAR: después de buscar cualquier solución para validar la implementación de contratos, me conformé con el gran nodo público de Augur que expone los métodos de filtro.

Respuestas (3)

Los nodos INFURA son públicos y reciben mucho tráfico, y esa es la razón por la que se deben deshabilitar algunos métodos JSON-RPC. Sin embargo, estamos trabajando en una solución que hará que todos los métodos estén disponibles.

Hace un tiempo modificamos nuestra arquitectura, por lo que los balanceadores de carga no son el problema.

Verificaré con el equipo de Truffle sobre el uso de filtros y actualizaré esta publicación.

Agregar un FilterSubrovider de web3-provider-engine al motor en su truffle.js le permitirá implementar el contrato en Ropsten, no lo he probado en la red principal.

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

Infura no te da tu propio nodo. En su lugar, ejecutan un equilibrador de carga frente a un grupo de nodos compartidos. Es por eso que no permiten las llamadas que modifican el estado.

Le sugiero que busque en: https://github.com/MetaMask/provider-engine Le permite manejar algunas llamadas RPC completamente del lado del cliente.

Sé sobre web3-provider-engine y en realidad se usa en Truffle (o al menos una bifurcación de eso). Sirve para el propósito y acepta llamadas newFilter , INFURA es el problema aquí. Como no es capaz de manejar llamadas de modificación de estado, esto simplemente no se puede hacer del lado del cliente. ¡Me di cuenta de que ni siquiera MetaMask podía hacer eso por mí! :)