Pensé que vi que esta función existía en alguna parte, pero no puedo encontrar la referencia.
Caso de uso: Alice necesita seguir enviando múltiples transacciones de bitcoin a Bob y quiere usar una dirección de pago diferente cada vez, pero ni Alice ni Bob quieren molestar a Bob con tener que enviar una nueva dirección para que Alice la use. Ni Alice ni Bob quieren que Alice tenga la clave privada de Bob.
Cualquier servicio que envíe bitcoins en transacciones múltiples a un cliente podría hacer uso de esta función. Los servicios actuales que he visto, como la minería, simplemente reutilizan la misma dirección una y otra vez, lo cual no se recomienda.
¿Cómo se llama esta característica?
¿Qué api de bitcoin (si corresponde) lo facilita, o cómo comenzaría a usar esta función de api?
EDITAR
Con la ayuda de la respuesta, pude hacer esto agregando bitwasp/bitcoin a mi proyecto php y este código:
//bitwasp/bitcoin library
require_once(__DIR__.'\..\../vendor/autoload.php');
//use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Key\Deterministic\HierarchicalKeyFactory;
use BitWasp\Bitcoin\Key\Deterministic\HierarchicalKeySequence;
use BitWasp\Bitcoin\Key\Deterministic\MultisigHD;
use BitWasp\Bitcoin\Network\NetworkFactory;
use BitWasp\Bitcoin\Address\PayToPubKeyHashAddress;
//$xpub = 'xpub661MyMwAqRbcGYcu6n1FmV1TbE8EwnSKecRZLvKAMyj4qLf15qXsoNryiKNvCkRq3z5kBCeZG8115jj28eVqmeKBJZPqjAfwRD3TGx1w5hY';
//$xpub = 'xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz';
//$path = '0/0'; // 1st receiving address
// $path = '0/2'; // 3rd receiving address
// $path = '1/0'; // 1st change address
// $path = '1/1'; // 2nd change address
public static function NewReceivingAddress($xpub, $index, $change = false){
$key = HierarchicalKeyFactory::fromExtended($xpub, NetworkFactory::bitcoin());
$path = ($change ? '1' : '0').'/'.$index;
$child_key = $key->derivePath($path);
return new Result('data',(new PayToPubKeyHashAddress($child_key->getPublicKey()->getPubKeyHash()))->getAddress());
}
Bob puede proporcionarle a Alice una clave pública extendida (xpub). Esto le permitirá a Alice generar tantas direcciones como sea necesario, todas las cuales serán accesibles para Bob a través de la correspondiente clave privada extendida (xpriv), a la que solo él tiene acceso.
Hay muchas herramientas y bibliotecas que admiten la derivación de direcciones de xpubs, como BitcoinJS-lib .
Hasta donde yo sé, blockchain.info es el único explorador compatible con xpub, y eso solo se aplica a las direcciones p2pkh. Aquí hay un ejemplo: https://blockchain.info/xpub/xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz
todmo
Raghav Sood