Cómo transferir ETH entre dos direcciones usando geth y json rpc

Tengo geth ejecutándose en mi servidor. Estoy construyendo un sitio web php que actúa como billetera. Ahora puedo crear direcciones. Necesito poder depositar y retirar ETH entre direcciones en el mismo nodo. Comienzo geth con el siguiente comando.

go-ethereum/build/bin/geth console  --rpc --rpcapi="db,eth,net,web3,personal,web3" --rpccorsdomain "*" --syncmode "light"

¿Cómo lograr la funcionalidad de una billetera en geth sobre rpc? ¿Hay un comando o una llamada API para eso? Me resulta difícil entender la documentación.

ACTUALIZACIÓN : Lo que quiero hacer es transferir ETH de una cuenta a otra. A continuación se muestran las llamadas a la API que probé y los errores que obtuve en el navegador cuando llamé a la función de transferencia en mi clase php. alguien me puede corregir por favor

{"jsonrpc":"2.0","id":1,"método":"personal_signAndSendTransaction","params":[[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f0724","4567gas "0x76c0","gasPrice":"0x9184e72a000","valor":"0x9184e72a","datos":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}],"contraseña"}]

Error fatal: RPCException no detectada: json: no se puede descomponer la matriz en el valor Go del tipo eth.SendTxArgs

{"jsonrpc":"2.0","id":1,"método":"personal_sendTransaction","params":[[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas": "0x76c0","gasPrice":"0x9184e72a000","valor":"0x9184e72a","datos":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}],"contraseña"}]

Error fatal: RPCException no detectada: el método personal_sendTransaction no existe/no está disponible lanzado

{"jsonrpc":"2.0","id":1,"método":"eth_sendTransaction","params":[{"from":"0xb60e8dd61c5d32be8058bb8eb970870f07233155","to":"0xd46e8dd67c5d32be8058bb8eb970870f07244567","gas":" 0x76c0","gasPrecio":"0x9184e72a000","valor":"0x9184e72a","datos":"0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"}]}

Error fatal: RPCException no detectada: la cuenta está bloqueada lanzada

¡Por favor ayuda!

no use eth_sendTransaction, tendrá que desbloquear la cuenta y eso es inseguro. Tus usuarios van a ser hackeados y vas a ser odiado. Ese eth_sendRawTransaction y firme la transacción antes de enviarla, con javascript. Su mejor ejemplo es myphpwallet, descargue las fuentes y simplemente copie todo el proceso de firma de la transacción y listo.
¿Puede enviar un enlace a myphpwallet?
lo siento, es myetherwallet, no myphpwallet
descargar extensión de cromo

Respuestas (2)

En la consola Geth, puede usar la función sendTransaction:

web3.eth.sendTransaction({
    from: "0xE618A4B5A516f371Ce26d9A1DBE7839F4e3812GB",
    to: "0xE618A4B5A516f371Ce26d9A1DBE7839F4e3812CB",
    value: web3.toWei(1, "ether")
})
Quiero interactuar con geth desde mi navegador usando json rpc. ¿Hay algún método para convertir 1, etc. al formato 'web3.toWei(1, "ether")})' que pueda pasar?

Puede usar eth_sendtransaction para enviar una transacción al destino

En la sección de parámetros

params: [{
    "from": "0xb60e8dd61c5d32be8058bb8eb970870f07233155",
    "to": "0xd46e8dd67c5d32be8058bb8eb970870f07244567",
    "gas": "0x76c0", // 30400
    "gasPrice": "0x9184e72a000", // 10000000000000
    "value": "0x9184e72a", // 2441406250
    "data": "0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675"
}]

Debería obtener una firma de transacción

{
    "id":1,
    "jsonrpc": "2.0",
    "result": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"
}

Esto funciona en cuentas que han sido desbloqueadas en geth previamente.

si tengo una dirección, quiero agregar 1 ETC a esa dirección, ¿cómo puedo hacer eso?
¿Puedes mostrar un ejemplo?
¿Podemos enviar ether a una dirección fuera de mi red?
Necesita comprar algunos Ether, enviarlos a la cuenta que está desbloqueada en el gethcliente y debería poder enviar fracciones de ese Ether a otras direcciones.
¿Qué significa "fuera de su red"? ¿Cómo define su red? Puede enviar Ether a cualquier dirección. Incluso si la dirección no existe.
quise decir direcciones generadas por otros intercambios como bitrex como "fuera de su red". Pero entendí tu punto.
¿Puedes mostrar un ejemplo si tengo dinero? ¿Cómo debo hacer la llamada API?
puede depositar y retirar mediante llamada eth_sendTransaction
Retirar no existe realmente como un concepto dentro de la red Ethereum. Simplemente significa enviar ETH a otra dirección. Así que sí, se puede hacer poreth_sendTransaction
La otra respuesta es un muy buen ejemplo de cómo enviar Ether de una dirección a otra.
Quiero interactuar con geth desde mi navegador usando json rpc. ¿Hay algún método para convertir 1, etc. al formato 'web3.toWei(1, "ether")})' que pueda pasar?
No hay forma de convertir ETC a ETH en un contexto de cadena de bloques
perdon error de ortografia!! quería transferir 1 ETH desde una dirección etherum (generada por el nodo geth que se ejecuta en mi servidor) a otra dirección ethereum (puede estar en algún intercambio) usando json rpc. ¿Es eso posible? He actualizado mis preguntas con las llamadas que probé