¿Qué puedo usar para permitir que los usuarios envíen transacciones a través de un sitio web?

Estoy tratando de crear un sitio web que permita a varios usuarios enviar transacciones de Ethereum sin tener que instalar un nodo. Mi servidor está ejecutando un nodo, que está configurado para aceptar solicitudes de cualquier dirección de Internet, y parece que debería poder conectarme al nodo desde cualquier dispositivo a través de un navegador web. ¿La API de JavaScript de Ethereum es útil para hacer esto? ¡Gracias!

Aunque es posible, se desaconseja permitir conexiones RPC desde cualquier host debido a implicaciones de seguridad. El patrón habitual es tener un software del lado del servidor que se comunique con el nodo Ethereum detrás de un firewall.

Respuestas (2)

Sí, puede usar web3.ETH.sendTransactionpara Envía una transacción a la red.

web3.eth.sendTransaction(transactionObject [, callback])

Ejemplo

// compiled solidity source code using https://chriseth.github.io/cpp-ethereum/
var code = "603d80600c6000396000f3007c01000000000000000000000000000000000000000000000000000000006000350463c6888fa18114602d57005b6007600435028060005260206000f3";

web3.eth.sendTransaction({data: code}, function(err, address) {
  if (!err)
    console.log(address); // "0x7f9fade1c0d57a7af66ab4ead7c2eb7b11a91385"
});
Esta pregunta no responde con respecto a si necesita o no necesita un nodo ejecutándose en el lado de los usuarios
@MikkoOhtamaa ¿Por qué no? web3 puede conectarse a cualquier nodo, ¿verdad?
¿Está diciendo que uno debería ejecutar un nodo Ethereum de cara pública que permita conexiones RPC desde cualquier host? Por lo que sé, no se recomienda ejecutar la interfaz RPC pública debido a las implicaciones de seguridad.
@MikkoOhtamaa sí, lo sé. OP no está preguntando o parece estar preocupado por eso.

Configure su nodo, luego cree una API pública que acepte la entrada de transacciones sin procesar firmadas. Podría hacer esto con hooked web3 y sus usuarios podrían usar eth-lightwallet de ConsenSys.

signing.signTx(keystore, pwDerivedKey, rawTx, signingAddress, hdPathString)

Firma una transacción con la clave privada correspondiente a la dirección de firma.

Entradas

  • almacén de claves: una instancia del almacén de claves con el que firmar la TX.
  • pwDerivedKey: la clave derivada de la contraseña de los usuarios (Uint8Array)
  • rawTx: cadena hexadecimal que define una transacción sin procesar codificada por RLP.
  • firmaDirección: cadena hexadecimal que define la dirección desde la que enviar la transacción.
  • hdPathString: (opcional) una ruta en la que crear las claves de cifrado.

Valor de retorno

Cadena hexadecimal correspondiente a la transacción sin procesar codificada por RLP.