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.
{
"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" }
}
}
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
Una vez que la red privada está activa, me conecto a ella geth attach
y 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.inspect
me muestra lo siguiente:
pending: {
0x0D33f764b19d03DF4DAa283859577378a01C5Cad: {
2: "contract creation: 0 wei + 10010000 gas × 32 wei"
}
},
queued: {}
Los contratos se implementan bien.
En la interfaz, tengo el siguiente código para enviar transacciones a mi contrato personalizado mediante truffle-contract
abstracció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.
La transacción que envío a mi contrato personalizado desde la interfaz nunca se extrae ni se aplica. ¿Puedes ayudarme a resolver esto?
Intente ejecutar una transacción utilizando una dirección 0x0d33f764b19d03df4daa283859577378a01c5cad
para 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.
Zulhilmi Zainudin