Gibt es eine Möglichkeit, neue Adressen für die Brieftasche einer anderen Person zu generieren?

Ich dachte, ich hätte gesehen, dass diese Funktion irgendwo existiert, aber ich kann die Referenz nicht finden.

Anwendungsfall: Alice muss mehrere Bitcoin-Transaktionen an Bob senden und möchte jedes Mal eine andere Zahlungsadresse verwenden, aber weder Alice noch Bob möchten Bob damit belästigen, dass er eine neue Adresse für Alice senden muss. Weder Alice noch Bob wollen, dass Alice Bobs privaten Schlüssel hat.

Jeder Dienst, der Bitcoins in mehreren Transaktionen an einen Client sendet, könnte diese Funktion nutzen. Aktuelle Dienste, die ich gesehen habe, wie Mining, verwenden einfach immer wieder dieselbe Adresse, was nicht empfohlen wird.

Wie heißt diese Funktion?

Welche Bitcoin-API (falls vorhanden) erleichtert dies, oder wie würde ich mit der Verwendung dieser API-Funktion beginnen?

BEARBEITEN

Mit Hilfe der Antwort konnte ich dies tun, indem ich bitwasp/bitcoin zu meinem PHP-Projekt und diesem Code hinzufügte:

//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());
}

Antworten (1)

Bob kann Alice einen erweiterten öffentlichen Schlüssel (xpub) zur Verfügung stellen. Dadurch kann Alice so viele Adressen wie nötig generieren, die alle für Bob über den entsprechenden erweiterten privaten Schlüssel (xpriv) zugänglich sind, auf den nur er Zugriff hat.

Es gibt viele Tools und Bibliotheken, die die Adressableitung von xpubs unterstützen, wie z. B. BitcoinJS-lib .

Blockchain.info ist meines Wissens der einzige Explorer mit xpub-Unterstützung, und das gilt auch nur für p2pkh-Adressen. Hier ist ein Beispiel: https://blockchain.info/xpub/xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz

Der Prozess, nach dem ich suche, wird in BIP32 im Abschnitt über das Generieren öffentlicher untergeordneter Schlüssel aus öffentlichen übergeordneten Schlüsseln beschrieben . Dann ist hier eine beispielhafte Verwendung, die anonym verwendet werden kann. Sie haben Recht, es gibt viele Implementierungen, aber haben Sie eine Ahnung, ob der Bitcoin Core JSON RPC-Server dies unterstützt oder nicht? Danke.
Bitcoin Core unterstützt BIP32-Ableitungen, hat aber kein Konzept von xpubs. Sie müssen woanders suchen. Bitcoinjs-lib ist ein guter Ausgangspunkt