Address
有沒有辦法為別人的錢包生成新地址?
我以為我在某處看到了此功能,但找不到參考。
案例: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