Transactions
如何判斷未使用的輸出在哪個帳戶中?
當我去發送硬幣時,我希望交易忽略某個帳戶中未使用的硬幣。
我想我可以在 wallet.cpp 中做到這一點,但我不確定如何。
也許在 AvailableCoins() 函式中?如果硬幣在此帳戶中,是否繼續?我想我需要創建一個函式,如:
bool isInAccount(string strAccountName, CWalletTx *wtx)
我該怎麼做呢?
您的問題是基於對帳戶系統的誤解。不過,這是一個非常普遍的誤解。
未使用的輸出與帳戶無關。
傳入交易記入與接收交易地址相關聯的賬戶餘額。但賬戶只有餘額——他們不“擁有”發送給他們的硬幣。賬戶餘額可以變為負數,並且可以通過
move
命令進行修改,而無需更改硬幣。未使用的輸出作為一個整體屬於錢包,賬戶只是跟踪誰/什麼擁有它們的數量 - 而不是具體是哪些。這就像把屬於你和朋友的錢放在一個錢包裡。您跟踪您欠朋友的金額,但您不跟踪錢包中的哪些特定紙幣或硬幣屬於他們。
要做你想做的事,你要麼需要使用單獨的錢包(將硬幣完全分開保存),要麼使用硬幣控製或原始交易 API,它允許你手動指定要使用的硬幣。
您是否希望能夠使用比特幣守護程序來做到這一點?你可以看看
獲取帳戶
RPC 呼叫。此方法的幫助是:
獲取帳戶“比特幣地址”
返回與給定地址關聯的帳戶。
參數: 1. “bitcoinaddress” (string, required) 用於賬戶查找的比特幣地址。
結果:“accountname”(字元串)帳戶地址
例子: > 比特幣-cli 獲取帳戶“1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ” > curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getaccount", "params": ["1D1ZrZNe3JUo7ZycKEYQQiQAWd9y54F4XZ"] }' -H '內容類型:文本/純文字;' http://localhost:8332/