Cómo hacer una GUI con Geth

En realidad, ni siquiera estoy seguro de si lo que estoy preguntando es posible.

Por el momento, puedo ejecutar un script en Geth Console que está creando un contrato local. Me gustaría crear una interfaz simple con 2 entradas y un botón de envío para embellecer el proceso.

¿Tienes alguna idea sobre la manera más fácil de hacerlo?

Respuestas (2)

Debería echar un vistazo a la biblioteca web3 , es una biblioteca de JavaScript para Ethereum. Por lo tanto, podrá crear una interfaz web simple para compilar e implementar contratos.

Encuentre un ejemplo simple (la mayor parte del código se extrae de la documentación de web3):

// Import web3
var Web3 = require('web3');


// create an instance of web3 using the HTTP provider.
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); 


var contractSource = "" + 
    "contract test {\n" +
    "   function multiply(uint a) returns(uint d) {\n" +
    "       return a * 7;\n" +
    "   }\n" +
    "}\n";

// Compile the contract source
var contractCompiled = web3.eth.compile.solidity(contractSource);

// It should return sometihng like that
// contractCompiled  : {
  "test": {
    "code": "0x605280600c6000396000f3006000357c010000000000000000000000000000000000000000000000000000000090048063c6888fa114602e57005b60376004356041565b8060005260206000f35b6000600782029050604d565b91905056",
    "info": {
      "source": "contract test {\n\tfunction multiply(uint a) returns(uint d) {\n\t\treturn a * 7;\n\t}\n}\n",
      "language": "Solidity",
      "languageVersion": "0",
      "compilerVersion": "0.8.2",
      "abiDefinition": [
        {
          "constant": false,
          "inputs": [
            {
              "name": "a",
              "type": "uint256"
            }
          ],
          "name": "multiply",
          "outputs": [
            {
              "name": "d",
              "type": "uint256"
            }
          ],
          "type": "function"
        }
      ],
      "userDoc": {
        "methods": {}
      },
      "developerDoc": {
        "methods": {}
      }
    }
  }
}


// Deploy your contract
var contract = web3.eth.contract(contractCompiled.test.info.abiDefinition);
var contractInstance = contract.new();

Espero que esto te ayude a crear una interfaz simple.

De lo contrario, me gusta mucho Truffle , que es un marco Ethereum y proporciona una poderosa herramienta de línea de comandos para desarrollar, compilar, probar e implementar contratos.

Esto debería ser un comentario, pero fue demasiado largo, así que... lo siento.


Web3 es definitivamente la forma más fácil de hacerlo hoy en día. Nosotros en MyEtherWallet.com no teníamos el lujo de Web3 en el pasado, por lo que estamos configurados de manera muy simple y continuamos haciendo las cosas sin web3.

Recientemente creamos una interfaz de usuario para implementar contratos @ https://www.myetherwallet.com/#deploy-contract

Obtiene su código de bytes, gas, y luego selecciona su clave privada / archivo de almacén de claves para generar, firmar y transmitir la transacción. La clave privada nunca sale de su máquina.

Consideramos agregar la compilación de Solidity, pero decidimos que Browser Solidity es increíble y le brinda todas las opciones y versiones que desea, así que ¿por qué molestarse?

Una vez que tenga el código de bytes compilado, la implementación es bastante fácil. Calcule el gas, genere el TX utilizando los datos proporcionados (el código de bytes), fírmelo y transmítalo. El código de esa página se puede ver aquí: https://github.com/kvhnuke/etherwallet/blob/mercury/app/scripts/controllers/deployContractCtrl.js