implementar contrato en blockchain privado usando trufa

Configuré una cadena de bloques privada en local usando geth. Lo que hice:

  1. crear genesis.json
  2. inicializar
  3. adjuntar
  4. crear cuenta, desbloquear cuenta y comenzar a minar
  5. truffle init, escribir contrato, migraciones y actualizar truffle.js

module.exports = { networks: { development: { host: "localhost", port: 8545, network_id: "*", } } };

cuando trato de migrar el contrato, recibo el siguiente error:

Could not connect to your Ethereum client. Please check that your Ethereum client:
    - is running
    - is accepting RPC connections (i.e., "--rpc" option is used in geth)
    - is accessible over the network
    - is properly configured in your Truffle configuration file (truffle.js)

usando este comando para iniciar un nodo con geth:

geth --port 3000 --networkid 58342 --nodiscover --datadir="privchain" --maxpeers=0 autodag --rpc --rpcport 8545 --rpcaddr 127.0.0.1 --rpccorsdomain "*" --rpcapi "eth,net,web3" --ipcapi "eth,net,web3"

Este es mi archivo genesis.json:

{
  "config": {
    "chainId": 58342,
    "homesteadBlock": 0,
    "eip155Block": 0,
    "eip158Block": 0
  },
  "nonce": "0x0000000000000033",
  "timestamp": "0x0",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0x8000000",
  "difficulty": "0x100",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x3333333333333333333333333333333333333333",
  "alloc": {}
}
De acuerdo con su configuración de truffle, debería haber un proceso evm (por ejemplo, testrpco ganache) ejecutándose en su máquina y escuchando en el puerto 8545.
@goodvibration, quiero implementar un contrato en una red privada, así que sugiera si necesito actualizar truffle.js
¿ Está su nodo geth abriendo correctamente una interfaz RPC en http://localhost:8545? ¿Y ha especificado algún --rpccorsdomainargumento al iniciar geth?
Usé este comando para iniciar el nodo con geth: geth --port 3000 --networkid 58342 --nodiscover --datadir="privchain" --maxpeers=0 autodag --rpc --rpcport 8545 --rpcaddr 127.0.0.1 -- dominiorpccors "*" --rpcapi "eth,net,web3" --ipcapi "eth,net,web3"
Creo que deberías cambiar el puerto en truffle.js para que coincida con tu puerto geth
no te entendí! Tengo el puerto 8545 en el puerto truffle.js y el puerto geth. quiero cambiar el puerto i truffle.js de 8545 a 8546
Asegúrese de que ninguna otra aplicación esté usando el puerto 8545. ¿Aparece algún error cuando inicia geth? Puede intentar agregar --verbosity 4a la línea de comando geth para ver más registros. También puedes intentar eliminar --rpcaddr 127.0.0.1y dejar que Geth lo resuelva.
@Ismael, No funciona.

Respuestas (2)

En primer lugar, eche un vistazo a la salida de Geth. Debería decir algo como:

HTTP port opened on localhost:8545

Si dice eso y no puede conectarse, puede probar todo esto:

  1. Intenta acceder usando tu navegador web (probé con Chrome). Si funciona, verá su página en blanco. A veces arroja un mensaje como "host no válido". En ese caso, debe agregar --rpcvhosts="*" para permitir que cualquier host se conecte a su host.

  2. Intenta conectarte usando:

    telnet [dirección IP] [puerto]

Además de lo mencionado anteriormente, intente ir primero para un enfoque simple. Si yo fuera tú, probaría primero:

geth --rpc --rpcport 8545 --rpcaddr "0.0.0.0" --rpccorsdomain "*" --rpcapi "eth,net,web3" --ipcapi "eth,net,web3"

Si está configurando su cadena de bloques privada en Windows, instale el cliente testrpc usando el siguiente comando en cmd

npm install -g ethereumjs-testrpc

Luego migre su contrato, debería funcionar.ingrese la descripción de la imagen aquí

Mejor aún, npm install -g ganache-cli. Ver aquí _