¿Qué es http://localhost:8545?

¿Por qué algunos sitios web relacionados con ethereum (por ejemplo, regis.nu, hay muchos otros) me dicen que no pueden encontrar un nodo ejecutándose en http://localhost:8545 y qué puedo hacer al respecto?

Regis.nu me permitió crear una "billetera ligera" y luego tuve que poner algo de éter allí, pero realmente no quería hacer eso. Quería usar mi propia billetera. Intenté empezar con 'geth' pero ahora me estoy metiendo en aguas profundas y no sé nadar.

Entonces pregunta: ¿Cómo puedo iniciar un nodo en http://localhost:8545 ?

Respuestas (2)

http://localhost:8545es el puerto RPC de su software de nodo Ethereum que se ejecuta localmente.

Al ejecutar geth, la implementación Go del software del nodo Ethereum, los parámetros de la línea de comando para crear y configurar este servicio RPC son los siguientes:

user@Kumquat:~$ geth --help | grep rpc
  --rpc                         Enable the HTTP-RPC server
  --rpcaddr "127.0.0.1"         HTTP-RPC server listening interface
  --rpcport "8545"              HTTP-RPC server listening port
  --rpcapi "db,eth,net,web3"    API's offered over the HTTP-RPC interface
  --rpccorsdomain               Domains from which to accept cross origin requests (browser enforced)

Los valores predeterminados para --rpcaddr, --rpcporty --rpcapipermitirán que la página web regis.nu se conecte a su gethnodo local. Sin embargo, deberá configurar --rpccorsdomainpara permitir que su navegador web tenga acceso a su nodo Ethereum local.

Para iniciar un nodo en su máquina local proporcionando a la página web regis.nu acceso a su nodo, intente:

geth --rpc --rpcaddr "127.0.0.1" --rpcport "8545" \
  --rpc --rpccorsdomain "http://regis.nu" console

Nota: La configuración funcionará --rpccorsdomaincon "http://regis.nu"la página web regis.nu. Si tiene problemas para conectarse, comience a probar "*"para verificar si la página web puede conectarse a su nodo, luego encuentre la configuración correcta para minimizar su riesgo de seguridad; consulte Intercambio de recursos de origen cruzado para obtener más información. Y tenga en cuenta que el uso "*"podría ser arriesgado.

Al examinar el código JavaScript en regis.nu/main.js vinculado desde regis.nu, verá:

 module.exports={nodeAddress:["http://localhost:8545","http://104.41.138.167:8545"], ...}

La página primero intentará conectarse a su puerto RPC localmente, luego probará el puerto RPC disponible en la dirección IP 104.41.138.167.

Cargué http://regis.nuen mi navegador web, luego hice clic en el Startbotón, pero el sitio web no pudo conectarse al puerto RPC de mi ejecución local geth. Tuve que permitir temporalmente http://localhostmi complemento NoScript dentro de mi navegador antes de que la página web regis.nu pudiera conectarse a mi gethnodo local y enumerar mis cuentas.

Referencia útil:

Leí en alguna parte que --rpccorsdomain "*" era un poco demasiado abierto. ¿Puedo poner el nombre de dominio (en este caso regis.nu) ahí? Gracias por la respuesta muy informativa por cierto.
Acabo de probar la página web y establecer --rpccorsdomain en regis.nuno funciona, pero http://regis.nufunciona.
Gracias. Otro lugar donde vi que esto sucedió fue etherid.org donde dicen explícitamente (ahora que lo veo): Tenga en cuenta que usar --rpccorsdomain "*" es peligroso.
En su lugar, debe usar --rpccorsdomain "subdom.domain.com" como, por ejemplo, con múltiples opciones:--rpccorsdomain "*.myetherwallet.com,*.ethereum.org"

La configuración predeterminada de la red Localhost 8545 codifica ChainID en 5777. Sin embargo, Ganache ha abandonado la configuración de ChainID para que siempre sea 5777. Ya no podemos confiar en esto (fuente: pregunté). Esto produce mensajes de error realmente difíciles de depurar como "Este contrato no está implementado en esta red".

Descubrí esto cambiando el proveedor de MetaMask a:

new ethers.providers.JsonRpcProvider("http://127.0.0.1:8545") Y funcionó. Así que decidí comparar los dos proveedores y ver qué era diferente. Resulta que ChainID siempre se configuró (incorrectamente) en 5777.

Reproducir

Inicie una instancia de Ganache con ganache-cli Cambie MetaMask a la configuración predeterminada "Localhost 8545" Inspeccione el objeto window.ethereum Observe que ChainID es 5777 independientemente del ChainID real (que se muestra en la terminal cuando ejecuta ganache-cli) Solución alternativa actual

Simplemente cree un nuevo perfil de red (con la opción "RPC personalizado" en el menú desplegable) con http://127.0.0.1:8545 y deje todos los valores predeterminados en blanco y el ChainID será correcto.