¿Cómo compilar e implementar un contrato inteligente sin ejecutar un nodo completo?

Soy nuevo en la solidez y la programación de contratos inteligentes. Ya he realizado y desplegado contratos inteligentes con éxito, pero siempre usando Mist.

Ahora no puedo hacerlo, porque no puedo completar una actualización de nodo con la cadena de bloques completa, y ahora siento que nunca terminaré. Así que estoy buscando alternativas.

Entonces, mi pregunta es, probablemente muy básica, pero ¿hay alguna forma de implementar un contrato sin ejecutar un nodo completo?

Respuestas (4)

  1. Instale https://metamask.io/ y
  2. Vaya a https://remix.ethereum.org/
  3. Haga clic en configuración -> elija su compilador (por ejemplo, 0.4.19+commit.c4cbbb05). Tenga en cuenta que la optimización no está marcada.
  4. Inicie sesión en metmask y elija su red (sugeriría primero probar usando la red de prueba de ropsten y usando el botón de compra para obtener ETH de un grifo gratuito)
  5. Volver a la pestaña de compilación
  6. Eliminar el contenido del contrato de ejemplo
  7. Pegue su contrato (debería compilarse automáticamente)
  8. Haga clic en la pestaña ejecutar
  9. Haga clic en el botón de despliegue
  10. Metamask se abrirá, elija el precio de su gasolina y haga clic en Enviar para firmar su transacción
  11. Abra metmask nuevamente, haga clic en el hash de la transacción , que debería redirigirlo a algo como https://ropsten.etherscan.io/tx/0xabc123 ....
  12. Una vez publicado . Haga clic en la dirección del contrato, que debería ser una URL como https ://ropsten.etherscan.io/address/0x987cba ...
  13. Haga clic en la pestaña Código de contrato en etherscan, haga clic en Verificar y publicar
  14. Establezca el nombre del contrato en el nombre exacto como en remix, Compiler en la misma versión exacta que en remix y establezca la optimización en "No" si no hizo clic en remix en el paso 3.

Ahora debería tener un contrato publicado, con el código fuente en etherscan.

Suena genial, solo una pregunta más: normalmente vuelvo a poner mi contrato implementado en Mist para ejecutar funciones adicionales como establecer un valor en una variable en ese contrato. ¿Cómo puedo hacer esto con su método?
Cuando hace clic en crear y se extrae, verá una interfaz para el contrato, no es genial, pero funciona. Debe ingresar una especie de valor similar a json, es decir, poner comillas alrededor de números grandes, hashes y cadenas. @MoisésBriseñoEstrello

Usualmente uso truffle e infura.io para implementar contratos de manera programática y reproducible.

Infura proporciona un servicio público web3, debe registrarse en el servicio que brindan ACCESS_TOKENy debe usar, por ejemplo https://mainnet.infura.io/ACCESS_TOKEN.

Este no es un nodo geth completo, algunas cosas aún no son compatibles .

Sigo esta guía para configurar truffle para usar el punto final de infura proporcionado usando Infura (o un proveedor personalizado) .

Otra posibilidad es alquilar un nodo en QuickNode o servicio similar.

Siento que esta es la mejor respuesta ahora. Infura suena como la solución, pero ¿y si no quiero usar trufa? ¿Existe un método más simple para pegar mi código ya escrito en una herramienta más simple?
Creo que esta es la mejor respuesta ahora. Porque he incluido muchas bibliotecas que simplemente no puedo migrar a Remix.

Presumiblemente, no hay forma de hacerlo sin tener un nodo completo sincronizado.

Es un problema bastante común para muchas personas que Mist no pueda cargar la red principal por completo. Tal vez, puede intentar sincronizar con geth desde la línea de comando y luego implementar el contrato usando node.js, como en este ejemplo

Siempre lo sincronizo con geth, pero siempre faltan 12,000 bloques para terminar. Los nuevos bloques de ethereum aparecen más rápidamente que mi sincronización de geth. ¿Sabes cómo optimizarlo?
¿Te refieres a tener tu nodo sincronizado local? ya que puedes hacerlo con un nodo público sincronizado...
Simplemente puede implementar en un nodo público en ejecución existente... sin necesidad de infura

Podría compilar el contrato y crear y firmar una transacción para la implementación. Como se hace aquí . Luego, puede enviar esa transacción a un explorador de bloques como Ethernode:Pushtx