Las transacciones pendientes no se minan

condiciones previas

Estoy ejecutando una red privada con Geth, tengo contratos inteligentes personalizados implementados por Truffle y una interfaz simple que usa Metamask como proveedor para conectar la red.

Versiones

  • Geth: 1.8.12-estable
  • Trufa: v4.1.13 (núcleo: 4.1.13)
  • Solidez: v0.4.24 (solc-js)

Bloque Génesis

{
    "config": {
        "chainId": 331788,
        "homesteadBlock": 0,
        "eip155Block": 331788,
        "eip158Block": 0
    },
    "nonce": "0x0000000000000000",
    "timestamp": "0x00",
    "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "extraData": "0x00",
    "gasLimit": "10000100000",
    "difficulty": "20",
    "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "coinbase": "0x0d33f764b19d03df4daa283859577378a01c5cad",
    "alloc": {
        "0x0d33f764b19d03df4daa283859577378a01c5cad": { "balance": "1000000" }
    }
}

Iniciando la red privada

geth --identity "node" --rpc --rpcport "8545" --rpccorsdomain "*" --datadir=/ethereum/data --ethash.dagdir=/ethereum/ethash --port "30303" --nodiscover --rpcapi "db,eth,net,admin,web3,debug" --networkid 331788 init /ethereum/genesis.json
geth --identity "node" --rpc --rpcaddr="0.0.0.0" --rpcport "8545" --rpccorsdomain "*" --datadir=/ethereum/data --ethash.dagdir=/ethereum/ethash --port "30303" --nodiscover --verbosity=9 --rpcapi "admin,db,eth,net,web3,miner,personal,debug" --networkid 331788

Preparación

Una vez que la red privada está activa, me conecto a ella geth attachy luego ejecuto lo siguiente:

personal.unlockAccount(web3.eth.coinbase, "123123", 150000);
miner.setGasPrice(1); miner.setEtherbase(personal.listAccounts[0]); miner.start(5);

Así que desbloqueo mi cuenta de coinbase y empiezo 5 mineros con valor de precio de gas 1. Después de un tiempo, puedo implementar mis contratos, lo que hago a continuación. Entonces toman los primeros tres valores nonce para mi cuenta de coinbase. Cuando el contrato se está implementando, txpool.inspectme muestra lo siguiente:

pending: {
  0x0D33f764b19d03DF4DAa283859577378a01C5Cad: {
    2: "contract creation: 0 wei + 10010000 gas × 32 wei"
  }
},
queued: {}

Los contratos se implementan bien.

Envío de transacciones

En la interfaz, tengo el siguiente código para enviar transacciones a mi contrato personalizado mediante truffle-contractabstracción:

sampleNameContract().use(function (instance) {
        return instance.addRecord(recordId, address, recordId, address, { gas: "0x10000", from: address })
    }).then(function (value) {
        console.log(`Tx: ${value}`)
    })

Al ejecutar este fragmento, Metamask me pide que apruebe la transacción y lo hago. Como resultado, tengo la siguiente información en txpool.inspect:

pending: {
      0x0D33f764b19d03DF4DAa283859577378a01C5Cad: {
        3: "0x440C9c5DBC21cedcAfF1a98ac7A48b5c6930cd0c: 0 wei + 10010000 gas × 32000000000 wei"
      }
    },
    queued: {}

Esta transacción nunca se extrae ni se aplica y se deja en el grupo de tx como pendiente para siempre.

Asunto

La transacción que envío a mi contrato personalizado desde la interfaz nunca se extrae ni se aplica. ¿Puedes ayudarme a resolver esto?

No relacionado directamente. Pero esto podría darle algunas ideas/indicadores: medium.com/@jgm.orinoco/…

Respuestas (1)

Intente ejecutar una transacción utilizando una dirección 0x0d33f764b19d03df4daa283859577378a01c5cadpara la que ya había asignado previamente algunos éteres. Es posible que el costo de la transacción sea comparativamente alto y necesite más tiempo para extraer suficientes éteres para ejecutar una transacción.

Hola asvisosila, Actualmente, mi cuenta tiene 55130.000 ETH. ¿Cómo puedo obtener mi costo de transacción actual en esa red privada?
¿Eres capaz de implementar tu contrato en ganache? Le recomiendo que use ganache para el desarrollo y prueba de DAPP. Ganache asigna previamente 100 éteres en 10 cuentas (el valor predeterminado es 10) inicialmente para que pueda probar su aplicación rápidamente.
asvisosila, No, estoy ejecutando el nodo geth donde puedo implementar contratos sin errores usando Truffle. Sin embargo, tengo que intentar usar algo más para que funcione, ya que hasta ahora no pude solucionarlo :(