Bitcoind
如何使用 getnewaddress 和標籤 api 複製 getaccountaddress 行為
問題正在
getaccountaddress
被棄用,並且它具有我嚴重依賴的特定行為(與帳戶無關)。只要沒有傳入交易,它就會在多個呼叫之間為您提供相同的地址……我所做的基本上是在
getaccountaddress ""
每次需要顯示地址時呼叫。這個問題
getnewaddress
旨在始終為您提供一個新地址,因此我最終會用大量毫無意義的地址淹沒錢包,這些地址永遠不會收到任何東西。我正在嘗試使用標籤 API 複製舊行為,但我想出的最好方法是組合
getaddressesbylabel
和解析所有listtransactions
輸出以查找是否有未使用的接收類型地址,如果沒有找到則生成新的。這似乎容易出錯且難以擴展,因為地址的數量可能會增長並且可能會很快變得非常大。
我有哪些選擇?是否有 API 呼叫可用作呼叫的替代
getaccountaddress ""
或組合呼叫?
可以使用標籤來模仿 getaccountaddress 的相同功能。
這是python中的一個例子:
#!/usr/bin/env python3 import bitcoin.rpc bitcoin.SelectParams('regtest') proxy = bitcoin.rpc.Proxy() def get_unused_address(): label = 'donations' unused = None try: addr_list = proxy.call('getaddressesbylabel', label) except bitcoin.rpc.JSONRPCError as err: if err.error['code'] == -11: # No addresses with label addr_list = None if addr_list: # Addresses with label found for addr in list(addr_list.keys()): # Check for tx received r = proxy.call('listreceivedbyaddress', 0, True, False, addr) if not len(r[0]['txids']): # Unused address found! unused = addr break else: # Used address found, remove label proxy.call('setlabel', addr, '') if not unused: # Address with label not found, generate a new one unused = proxy.getnewaddress(label) return unused print("Unused address is: %s" % get_unused_address())
比特幣錢包賬戶是為個人使用而設計的,所以你的案例需要在不同的層上開發,正如 G. Maxwell 在這裡解釋的那樣:https ://github.com/bitcoin/bitcoin/issues/3816#issuecomment-37052569