Address

有沒有辦法為別人的錢包生成新地址?

  • April 5, 2018

我以為我在某處看到了此功能,但找不到參考。

案例:Alice 需要不斷向 Bob 發送多個比特幣交易,並且每次都希望使用不同的支付地址,但是 Alice 和 Bob 都不想讓 Bob 不得不發送一個新地址供 Alice 使用。Alice 和 Bob 都不希望 Alice 擁有 Bob 的私鑰。

任何在多筆交易中向客戶發送比特幣的服務都可以使用此功能。我見過的目前服務,比如挖礦,只是一遍又一遍地重用同一個地址,不推薦這樣做。

這個功能叫什麼?

什麼比特幣 api(如果有的話)促進了它,或者我將如何開始使用這個 api 功能?

編輯

在答案的幫助下,我能夠通過將 bitwasp/bitcoin 添加到我的 php 項目和以下程式碼來做到這一點:

//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 可以為 Alice 提供一個擴展的公鑰 (xpub)。這將允許 Alice 生成所需數量的地址,Bob 可以通過相應的擴展私鑰 (xpriv) 訪問所有這些地址,只有他可以訪問。

有許多工具和庫支持從 xpubs 派生地址,例如BitcoinJS-lib

據我所知,blockchain.info 是唯一支持 xpub 的瀏覽器,並且也只適用於 p2pkh 地址。這是一個例子:https ://blockchain.info/xpub/xpub6CUGRUonZSQ4TWtTMmzXdrXDtypWKiKrhko4egpiMZbpiaQL2jkwSB1icqYh2cfDfVxdx4df189oLKnC5fSwqPfgyP3hooxujYzAu3fDVmz

引用自:https://bitcoin.stackexchange.com/questions/73466