¿Cómo conectar un sitio web a un nodo geth?

Antes de que DApp-browser Mist estuviera disponible, esta biblioteca web3 parece el camino a seguir para construir un puente desde el contrato hasta una interfaz (sitio web).

Pero, no puedo hacer que los ejemplos muy básicos funcionen.

Estas fuentes carecen de algunos puntos importantes:

  1. ¿Cuál es el comando exacto para iniciar geth para ejecutar los ejemplos? He utilizado:

    geth --rpc console 2
    

    durante la minería, etc.

  2. Este ejemplo tiene la línea:

    web3.setProvider(new web3.providers.HttpProvider());
    

    ¿Debería ser host local?

    web3.setProvider(new web3.providers.HttpProvider('http://localhost:8545'));
    
  3. ¿Hay alguna forma de ocultar web3.setProvidery otro código JavaScript de la fuente de la página visible para el usuario? Si la dirección del nodo geth es pública, eso podría ser un problema de seguridad.

Tal vez estoy haciendo preguntas obvias aquí, pero no debería ser demasiado problema agregar al menos el argumento de inicio geth a los tutoriales. El mejor de los casos sería tener una guía paso a paso sin suposiciones en blanco.

El mismo problema. Estoy tratando de usar web3.js (o web3.min.js) dentro de mi aplicación NW.js. Mi archivo index.html contiene: <script type="text/javascript" src=" raw.githubusercontent.com/ethereum/web3.js/master/dist/… "> </script> Probé esto y también probé haciendo 'npm init' y 'npm install ethereum/web3.js --save' - Obtengo un error similar en ambos casos. TypeError: e no es una función en chrome-extension://kbkmobamaomphkjgbgdnoonjhcdgmell/node_modules/web3/dist/web3.min.js:1:59528 en chrome-extension://kbkmobamaomphkjgbgdnoonjhcdgmell/node_modules/web3/dist/web3.min. js:1:60409 en XMLHttp

Respuestas (2)

Para el punto número uno, esto debería funcionar: sin embargo,
geth --rpc --rpccorsdomain="*" console 2>> geth.log
correr --rpccorsdomain="*"es peligroso, especialmente si tiene cuentas desbloqueadas. Pon tu nombre de dominio en lugar de *. Para host local, agregue--rpcaddr="localhost"

El peligro, por supuesto, es que los sitios web pueden gastar su éter e incluso enviárselo a sí mismos. (¡Sin ningún aviso ni nada!) Cada vez que veía un sitio que decía a los usuarios que hicieran esto, sentía que los estaban estafando. Apéguese a Mist / Ethereum Wallet, son los oficiales y le preguntarán antes de transferir fondos.

Para agregar a la respuesta de Ethan Wilding , para realizar pruebas locales de forma segura, puede usar la --devbandera y conectarse al nodo con el nombre de usuario 'prueba' y la contraseña 'prueba'.

Entonces el gethcomando para probar se convierte en:
geth --dev --rpc --rpccorsdomain="*" --rpcaddr="localhost"

[precaución: solo debe usar estos indicadores para la prueba del modo de desarrollo local, nunca en una red real]

Y conectar el cliente web3.js es:
web3.setProvider(web3.providers.HttpProvider(null, 0, 'test', 'test'));
donde nulo establece el host http://localhost:8545y 0 desactiva el tiempo de espera

Una vez hecho esto, el código de muestra se conectará al nodo local, aunque hay una buena posibilidad (al menos por ahora) de que muchas muestras no funcionen porque no parecen estar actualizadas. Pero web3.js/example/balance.html funciona bien.

--rpccorsdomain="*"es el menos seguro.
no te equivocas en general, pero ¿para las pruebas de desarrollo en un servidor local? agregaré una nota para no hacer esto en producción :)