¿Cómo enviar una parte de los fondos desde una clave privada mediante programación?

Estoy creando una aplicación y una de mis características es poder escanear una clave privada de bitcoin y luego enviar una parte de sus fondos a otra dirección. ¿Cómo puedo hacer algo como esto en javascript o php? ¿Necesito ejecutar mi propio servidor Bitcoin?

¿Hay algún script de ejemplo que pueda usar en el que solo pueda conectar una clave privada?

Respuestas (1)

Puede usar su propio servidor bitcoind o puede usar un servicio API de terceros.

Hagamos algunos ejemplos de lo que está preguntando.
Usaré direcciones falsas cortas y claves privadas como ejemplos para facilitar las cosas.

PHP con un servidor bitcoind

<?php
require("easybitcoin.php");
$bitcoin = new Bitcoin("username", "somepassword");

//add the private key (label, key)
$import = bitcoin->importprivkey("5KL3cN..SOME_PRIVATE_KEY", "Satoshi1");
?>    

Lo que hicimos aquí fue importar una clave privada y darle una etiqueta única específica. Esta parte puede demorar un tiempo, ya que su nodo deberá volver a escanear a medida que agregó una nueva clave privada y debe verificar las transacciones.

Una vez que se vuelve a escanear el nodo, puede enviar los fondos.

<?
require("easybitcoin.php");
$bitcoin = new Bitcoin("username", "somepassword");

//send the funds from the Satoshi1 account/label
$send = $bitcoin->$bitcoin->sendfrom("Satoshi1","1receivingAddress", 0.5);
echo $send ? $send : "Oops an error: ".$bitcoin->error;
?>    

Lo que hicimos arriba fue usar el sendfrom()comando JSON RPC para enviar 0.5BTC desde la cuenta/etiqueta Satoshi1 a la dirección de recepción 1. Si tiene éxito, responderá con el ID de la transacción, o si hay un error, imprimirá el error.

Este es solo el código, aún necesitará configurar su VPS con bitcoind o puede ejecutar un nodo en la computadora de su hogar y experimentar localmente usando algo como xampp.

PHP con una API de terceros

Aquí hay un ejemplo con la API de billetera blockchain.info. Puede importar la clave privada usando su utilidad de creación de billetera y luego enviarla desde esa dirección específica.

$private = "5KL3cN..SOME_PRIVATE_KEY";
$url = "http://127.0.0.1:3030/merchant/YOUR-GUID/create?password=YOUR-PASSWORD&api_code=YOUR-API-CODE&priv=".$private;
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); //change to true if your host can verify SSL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        
curl_setopt($ch, CURLOPT_URL, $url);
$ccc = curl_exec($ch);
$json = json_decode($ccc, true);
echo "<pre>";
var_dump($json);
echo "</pre>";

Luego, una vez creado, puede enviar desde esa nueva dirección específica que se importó.

$from = "1fromAddress"; 
$to = "1receivingAddress";
$url = "http://127.0.0.1:3030/merchant/YOUR-GUID/payment?password=YOUR-PASSWORD&api_code=YOUR-API-CODE&from=".$from."&amount=1000000&to=".$to;
//amounts are in satoshi so 1000000 is 0.01BTC
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        
curl_setopt($ch, CURLOPT_URL, $url);
$ccc = curl_exec($ch);
$json = json_decode($ccc, true);
echo "<pre>";
var_dump($json);
echo "</pre>";

Si necesita ayuda para configurar la API de billetera de bitcoind o blockchain.info, le sugiero que consulte mis tutoriales en youtube. La parte más difícil con la ruta de terceros es obtener una clave API; Escuché que blockchain.info ha sido estricto con estos últimamente.

método de servidor bitcoind: https://www.youtube.com/watch?v=cMM-t7azzJE
blockchain.info método de terceros: https://www.youtube.com/watch?v=X8jsaf4sEgs

¿Supongo que esta es la versión que necesitaría descargar y ejecutar? bitcoin.org/en/download : solo quiero asegurarme. ¡gracias por la respuesta!
¿También se puede hacer esto con otras billeteras que no requieran descargar toda la cadena de bloques como el núcleo de bitcoin?
La versión de bitcoind requerirá que descargues y ejecutes bitcoin core. Sin embargo, puede podarlo si le preocupa el espacio en el disco duro y aún tiene la funcionalidad completa de la billetera.
pero la cosa es que no quiero que almacene las claves privadas. ¿Hay un servicio para tal cosa? o simplemente tendría que eliminarlo de estas aplicaciones manualmente? ¿Qué comando usaría uno entonces?