Metamask No se pueden enviar transacciones a la red privada de Ethereum

Estoy usando la extensión Metamask.io en Google Chrome. Conectó correctamente Metamask.io a la red privada alojada en la instancia de AWS EC2 utilizando la dirección de socket (IP: número de puerto). Basic Contract se implementó en la cadena de bloques utilizando Remix IDE para la programación de solidez. Puedo obtener la información (función getInstructor). Sin embargo, no se puede configurar la nueva información del instructor.

Pasos -

  1. En Remix IDE, llamo a la función.
  2. Abre la ventana emergente de Metamask y uso el precio de gasolina predeterminado.
  3. La transacción nunca se ejecuta.

En el nodo blockchain privado de ethereum, traté de encontrar transacciones pendientes y no había ninguna. Como se muestra,

> eth.pendingTransactions
[]

Sin embargo, al intentar esto,

web3.eth.getBlock("pending")
{
  difficulty: 25082169,
  extraData: "0xd583010701846765746885676f312e39856c696e7578",
  gasLimit: 4712388,
  gasUsed: 0,
  hash: null,
  logsBloom: "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
  miner: null,
  mixHash: "0x0000000000000000000000000000000000000000000000000000000000000000",
  nonce: null,
  number: 1557557,
  parentHash: "0xf84ce5ff7845f399eb698bfc33abeb24a8e459096d7ad9c097de3eb6130a6360",
  receiptsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  sha3Uncles: "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  size: 537,
  stateRoot: "0x017184c9d24daab688c39468af064cd3ab748f5adc9c5b1fd3c5bcc2f3a318a0",
  timestamp: 1523753000,
  totalDifficulty: 0,
  transactions: [],
  transactionsRoot: "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  uncles: []
}

Hace unos días pude realizar esta transacción básica, pero ahora no. Incapaz de entender cuál es el problema.

Posibles errores -

De acuerdo con estas discusiones

los nodos mineros y la transacción no se envían , intenté crear otra cuenta personal y dejarla mía (eso falló).

¿Estás minando en tu nodo? es decir, corriste mine.start(1)o algo similar. De su bloque pendiente tiene el número 1557557, que es bastante alto para una red de prueba privada, ¿qué eth.blockNumberdevuelve? ¿Estás seguro de que te estás conectando a la red correcta?
He estado minando en mi nodo. Sí, estoy absolutamente seguro de que me he conectado a la red correcta (mi red de prueba privada con la IP:Puerto correspondiente). Aquí está la información del número de bloque:> eth.blockNumber 1558456

Respuestas (3)

La configuración "habitual" para el desarrollo es no conectar Metamask a su nodo de AWS porque no desea exponer las API a ese nodo. Supongo que estás usando POA, ¿verdad?

Simplemente ejecute un nodo local en su computadora y conecte metamask a localhost.

De forma predeterminada, el nodo solo aceptará conexiones de localhost. Puede cambiar esto para aceptar conexiones de cualquier persona con: --rpcaddr "0.0.0.0".

Tenga en cuenta que cada vez que se desbloquea una clave privada, cualquiera en Internet puede usar esta clave consultando su servidor rpc y enviando transacciones.

Parece que tienes este problema: https://github.com/MetaMask/metamask-extension/issues/1722

Intente configurar chainIdy networkIdcon el mismo valor para ayudar a MetaMask a cumplir con EIP-155.

Una guía para usar un nodo personalizado con MetaMask está aquí: https://github.com/MetaMask/faq/blob/master/USERS.md#using-a-local-node

El hecho de que pude enviar transacciones anteriormente me ayuda a decir que lo más probable es que no tenga ningún problema con MetaMask para cumplir con EIP-155 (ya que si ese fuera el caso, no habría podido enviar transacciones anteriormente). Establecí networkId en un valor particular mientras giraba la red privada y parece correcto. Creo que el problema al que me enfrento tiene algo que ver con el hecho de que actualmente solo soy yo quien está en la red con fines de prueba y he estado probando muchas transacciones. Por lo tanto, ahora la velocidad se ha convertido en un problema. No estoy seguro si estoy 100% en lo cierto. Pero adivina.
No tengo el bloque EIP155 configurado en mi custom-genesis.json, además de que mi ID de red es 1205 configurada durante la creación del servicio geth multiusuario, que es diferente de la configuración chainId = 0 en genesis.

Tuve un problema similar. Básicamente, mi contrato inteligente no tenía "pagadero" en la función donde envía Ethereum. Estás diciendo que todo funciona correctamente, puedes buscar, metamask se abre pero no envía Ethereum. Intente agregar "pagadero" y avíseme si eso funcionó para que sepa analizar más a fondo su problema.