>
> the getBalance() to go red
>
Not sure what you mean here. All my code is above. I get the balances of my
confirmed transactions by syncing my SPV wallet with the blockchain of my
fully validating node as shown in the WalletBundle constructor.
On Friday, May 11, 2018 at 5:07:18 PM UTC-5, Bobby_Bouche wrote:
>
> off topic how were you able to get the balances to display? I get the
> getBalance() to go red and cant figure out why
>
> On Friday, May 11, 2018 at 12:08:24 AM UTC-4, Ian Pierce wrote:
>>
>>
>> I'm trying to get the pending transactions from my localhost node
>> (NetworkParameters
>> params = RegTestParams.get();) using my SPV wallet. So when I create a
>> transaction sending funds from my localhost node to my SPV wallet I
>> immediately see the transaction instead of waiting for it to be confirmed.
>>
>> I see the pending 0 conf transaction on my node when I execute:
>>
>> ./bitcoin-cli -regtest listtransactions
>> {
>> "account": "",
>> "address": "n4BMZgwrL8xoduXDh1tgrfRXV8r8YhYxLS",
>> "category": "send",
>> "amount": -10.00000000,
>> "vout": 0,
>> "fee": -0.00003360,
>> "confirmations": 0,
>> "trusted": true,
>> "txid":
>> "725ad4dcfee6378e699745534bad95a52baae4496ad0ca6a735dfcaa2b8ba77d",
>> "walletconflicts": [
>> ],
>> "time": 1525835288,
>> "timereceived": 1525835288,
>> "bip125-replaceable": "no",
>> "abandoned": false
>> }
>>
>> I see that my wallet is listening for the correct address:
>>
>> addr:n4BMZgwrL8xoduXDh1tgrfRXV8r8YhYxLS is listed along with the other
>> two public addresses which already received transactions. The other two
>> transactions were confirmed on my localhost blockchain and the wallet finds
>> those no problem.
>>
>> wallet.toString()
>> Wallet containing 20.00 BTC (spendable: 20.00 BTC) in:
>> 0 pending transactions
>> 2 unspent transactions
>> 0 spent transactions
>> 0 dead transactions
>> Last seen best block: 102 (2018-05-09T02:41:50Z):
>> 403e15efadaa0723a34525c8a99d3b48dcb686970b7fb4e3cce46ef39ea097b1
>>
>> Keys:
>> Earliest creation time: 2018-05-08T05:11:55Z
>> Seed birthday: 1525756315 [2018-05-08T05:11:55Z]
>> Key to watch:
>> tpubD8oxvS8LoVzaMfThLGMpapwiX4DpSGyxE2EME6WyG5ZnEBvBkGkMUgsBKpuDYKv6se5P3vpEgVXT46eANE7cuyBkVwJMQcnRagQTwspf5GV
>> addr:mpwXH58im3MBLszzZhhui9tboT4re13ToE
>> hash160:675ea5e47418ba7b4bdae54dc3a905726d38aa80 (M/0H/0/0)
>> addr:mhYeYHdmbVAhkwnsn9QrAYUdiCV31zGuin
>> hash160:16424340810fabe6d5c7285199809b4257553bae (M/0H/0/1)
>> addr:n4BMZgwrL8xoduXDh1tgrfRXV8r8YhYxLS
>> hash160:f895ff8dbc68d497c83f49dc4d3e69db03e11635 (M/0H/0/2)
>>
>>
>> >>> UNSPENT:
>> 10.00 BTC total value (sends 0.00 BTC and receives 10.00 BTC)
>> confidence: Appeared in best chain at height 104, depth 103. Source:
>> NETWORK
>> 88e4fb901b77bf2639c75fa7ceacc35a4a3c69848f4f1b338c6443419b918261
>> updated: 2018-05-09T03:06:09Z
>> version 2
>> time locked until block 71
>> in PUSHDATA(22)[00141a0baa176e8b351f24a5bd53489f931af9d19a62]
>> 39.999962 BTC
>>
>> outpoint:480d793055e871a89a4575b30fa12bfb896a8ddac963cc814c7342e4303750a1:1
>> hash160:f6ef780f621daa3c47dffb2f12fb2343e0f96d8a
>> sequence:fffffffe
>> out HASH160 PUSHDATA(20)[fc9b41dcd99fd7249cea58498db7bed0c8437100]
>> EQUAL 29.9999284 BTC
>> out DUP HASH160
>> PUSHDATA(20)[16424340810fabe6d5c7285199809b4257553bae] EQUALVERIFY CHECKSIG
>> 10.00 BTC
>> fee 0.00024 BTC/kB, 0.0000336 BTC for 140 bytes
>> prps UNKNOWN
>> 10.00 BTC total value (sends 0.00 BTC and receives 10.00 BTC)
>> confidence: Appeared in best chain at height 103, depth 715. Source:
>> NETWORK
>> 480d793055e871a89a4575b30fa12bfb896a8ddac963cc814c7342e4303750a1
>> updated: 2018-05-09T02:58:24Z
>> version 2
>> time locked until block 102
>> in
>>
>> PUSHDATA(72)[3045022100ccafa7d27952e3e0290457944900d0d3840858f264978d255130d8d833960dd3022074f4d29f3f4759e0a14e280e9801aa7d709a725773fb3e257b89328c42cdab4d01]
>>
>> outpoint:efa1370d76908a548792b290ebbb88d2f034d96cf4b7a2cc59329f01411615fa:0
>> sequence:fffffffe
>> out DUP HASH160
>> PUSHDATA(20)[675ea5e47418ba7b4bdae54dc3a905726d38aa80] EQUALVERIFY CHECKSIG
>> 10.00 BTC
>> out HASH160 PUSHDATA(20)[f6ef780f621daa3c47dffb2f12fb2343e0f96d8a]
>> EQUAL 39.999962 BTC Spent by
>> 88e4fb901b77bf2639c75fa7ceacc35a4a3c69848f4f1b338c6443419b918261
>> prps UNKNOWN
>>
>> My main file.
>>
>> public class PaymentsReceived {
>> public static void main(String[] args) {
>> try {
>> WalletBundle bundle = new WalletBundle(args[0]);
>> Wallet wallet = bundle.getWallet();
>> PeerGroup peerGroup = bundle.getPeerGroup();
>>
>> Coin availableCoin =
>> wallet.getBalance(Wallet.BalanceType.AVAILABLE);
>> Coin availableSpendableCoin =
>> wallet.getBalance(Wallet.BalanceType.AVAILABLE_SPENDABLE);
>> Coin estimatedCoin =
>> wallet.getBalance(Wallet.BalanceType.ESTIMATED);
>> Coin estimatedSpendableCoin =
>> wallet.getBalance(Wallet.BalanceType.ESTIMATED_SPENDABLE);
>>
>> System.out.println("Balance: " +
>> bundle.getWallet().getBalance().toFriendlyString());
>> System.out.println("Available Balance: " +
>> availableCoin.toFriendlyString());
>> System.out.println("Estimated Balance: " +
>> estimatedCoin.toFriendlyString());
>> System.out.println("Available Spendable Balance: " +
>> availableSpendableCoin.toFriendlyString());
>> System.out.println("Estimated Spendable Balance: " +
>> estimatedSpendableCoin.toFriendlyString());
>>
>> List<TransactionOutput> watchedOutputs =
>> wallet.getWatchedOutputs(true);
>>
>> for (final TransactionOutput output : watchedOutputs) {
>> System.out.println("watched output: " + output.toString());
>> }
>>
>> Collection<Transaction> pendingTransactions =
>> wallet.getPendingTransactions();
>>
>> for (final Transaction transaction : pendingTransactions) {
>> System.out.println("pending tx: " + transaction.toString());
>> }
>>
>> List<TransactionOutput> spendCandidates =
>> wallet.calculateAllSpendCandidates(false, false);
>>
>> for (final TransactionOutput output : spendCandidates) {
>> System.out.println("spend candidate output: " +
>> output.toString());
>> }
>>
>>
>> } catch (UnreadableWalletException e) {
>> e.printStackTrace();
>> } catch (IOException e) {
>> e.printStackTrace();
>> } catch (BlockStoreException e) {
>> e.printStackTrace();
>> } catch (InterruptedException e) {
>> e.printStackTrace();
>> }
>> }
>> }
>>
>>
>> I use RegTestParams.get() and peerGroup.connectToLocalHost()to connect
>> to my localhost node. I would expect peerGroup.addWallet(wallet) to
>> associate my wallet with the public keys it's watching. But I'm not sure
>> how to sync relevant transactions from my localhost node's mempool with my
>> SPV wallet.
>>
>> public class WalletBundle {
>>
>> private final Wallet wallet;
>> private final BlockStore blockStore;
>> private final BlockChain blockChain;
>> private final PeerGroup peerGroup;
>>
>> public WalletBundle(String fileName) throws UnreadableWalletException,
>> BlockStoreException, IOException, InterruptedException {
>> File walletFile = new File(fileName);
>>
>> wallet = Wallet.loadFromFile(walletFile, null);
>>
>> final NetworkParameters params = RegTestParams.get();
>>
>> File chainFile = new File("restore-from-seed.spvchain");
>>
>> boolean downloadBlockchain = true;
>>
>> // if (chainFile.exists()) {
>> // chainFile.delete();
>> // downloadBlockchain = false;
>> // }
>>
>> blockStore = new SPVBlockStore(params, chainFile);
>> blockChain = new BlockChain(params, wallet, blockStore);
>> peerGroup = new PeerGroup(params, blockChain);
>>
>> blockChain.addWallet(wallet);
>> peerGroup.addWallet(wallet);
>>
>> System.out.println("Starting PeerGroup");
>> peerGroup.start();
>> peerGroup.connectToLocalHost();
>>
>> DownloadProgressTracker bListener = new DownloadProgressTracker() {
>> @Override
>> public void doneDownload() {
>> System.out.println("blockchain downloaded");
>> }
>>
>> @Override
>> protected void startDownload(int blocks) {
>> super.startDownload(blocks);
>> System.out.println("number of blocks to DL: " + blocks);
>> }
>> };
>>
>> if (downloadBlockchain) {
>> System.out.println("Starting Blockchain download");
>> peerGroup.startBlockChainDownload(bListener);
>>
>> System.out.println("Waiting...");
>> bListener.await();
>> }
>>
>> System.out.println("Allow unconfirmed transactions");
>> wallet.allowSpendingUnconfirmedTransactions();
>>
>> wallet.saveToFile(walletFile);
>> System.out.println("Saved wallet to file");
>>
>> System.out.println(wallet.toString());
>> }
>>
>> public Wallet getWallet() {
>> return wallet;
>> }
>>
>> public BlockStore getBlockStore() {
>> return blockStore;
>> }
>>
>> public BlockChain getBlockChain() {
>> return blockChain;
>> }
>>
>> public PeerGroup getPeerGroup() {
>> return peerGroup;
>> }
>> }
>>
>>
>> The stdout from executing my Main method:
>>
>> Starting PeerGroup
>> Starting Blockchain download
>> Waiting...
>> number of blocks to DL: 2
>> blockchain downloaded
>> Allow unconfirmed transactions
>> Saved wallet to file
>> Wallet containing 20.00 BTC (spendable: 20.00 BTC) in:
>> 0 pending transactions
>> 2 unspent transactions
>> 0 spent transactions
>> 0 dead transactions
>> Last seen best block: 102 (2018-05-09T02:41:50Z):
>> 403e15efadaa0723a34525c8a99d3b48dcb686970b7fb4e3cce46ef39ea097b1
>>
>> Keys:
>> Earliest creation time: 2018-05-08T05:11:55Z
>> Seed birthday: 1525756315 [2018-05-08T05:11:55Z]
>> Key to watch:
>> tpubD8oxvS8LoVzaMfThLGMpapwiX4DpSGyxE2EME6WyG5ZnEBvBkGkMUgsBKpuDYKv6se5P3vpEgVXT46eANE7cuyBkVwJMQcnRagQTwspf5GV
>> addr:mpwXH58im3MBLszzZhhui9tboT4re13ToE
>> hash160:675ea5e47418ba7b4bdae54dc3a905726d38aa80 (M/0H/0/0)
>> addr:mhYeYHdmbVAhkwnsn9QrAYUdiCV31zGuin
>> hash160:16424340810fabe6d5c7285199809b4257553bae (M/0H/0/1)
>> addr:n4BMZgwrL8xoduXDh1tgrfRXV8r8YhYxLS
>> hash160:f895ff8dbc68d497c83f49dc4d3e69db03e11635 (M/0H/0/2)
>>
>>
>> >>> UNSPENT:
>> 10.00 BTC total value (sends 0.00 BTC and receives 10.00 BTC)
>> confidence: Appeared in best chain at height 104, depth 103. Source:
>> NETWORK
>> 88e4fb901b77bf2639c75fa7ceacc35a4a3c69848f4f1b338c6443419b918261
>> updated: 2018-05-09T03:06:09Z
>> version 2
>> time locked until block 71
>> in PUSHDATA(22)[00141a0baa176e8b351f24a5bd53489f931af9d19a62]
>> 39.999962 BTC
>>
>> outpoint:480d793055e871a89a4575b30fa12bfb896a8ddac963cc814c7342e4303750a1:1
>> hash160:f6ef780f621daa3c47dffb2f12fb2343e0f96d8a
>> sequence:fffffffe
>> out HASH160 PUSHDATA(20)[fc9b41dcd99fd7249cea58498db7bed0c8437100]
>> EQUAL 29.9999284 BTC
>> out DUP HASH160
>> PUSHDATA(20)[16424340810fabe6d5c7285199809b4257553bae] EQUALVERIFY CHECKSIG
>> 10.00 BTC
>> fee 0.00024 BTC/kB, 0.0000336 BTC for 140 bytes
>> prps UNKNOWN
>> 10.00 BTC total value (sends 0.00 BTC and receives 10.00 BTC)
>> confidence: Appeared in best chain at height 103, depth 715. Source:
>> NETWORK
>> 480d793055e871a89a4575b30fa12bfb896a8ddac963cc814c7342e4303750a1
>> updated: 2018-05-09T02:58:24Z
>> version 2
>> time locked until block 102
>> in
>>
>> PUSHDATA(72)[3045022100ccafa7d27952e3e0290457944900d0d3840858f264978d255130d8d833960dd3022074f4d29f3f4759e0a14e280e9801aa7d709a725773fb3e257b89328c42cdab4d01]
>>
>> outpoint:efa1370d76908a548792b290ebbb88d2f034d96cf4b7a2cc59329f01411615fa:0
>> sequence:fffffffe
>> out DUP HASH160
>> PUSHDATA(20)[675ea5e47418ba7b4bdae54dc3a905726d38aa80] EQUALVERIFY CHECKSIG
>> 10.00 BTC
>> out HASH160 PUSHDATA(20)[f6ef780f621daa3c47dffb2f12fb2343e0f96d8a]
>> EQUAL 39.999962 BTC Spent by
>> 88e4fb901b77bf2639c75fa7ceacc35a4a3c69848f4f1b338c6443419b918261
>> prps UNKNOWN
>>
>> Balance: 20.00 BTC
>> Available Balance: 20.00 BTC
>> Estimated Balance: 20.00 BTC
>> Available Spendable Balance: 20.00 BTC
>> Estimated Spendable Balance: 20.00 BTC
>> spend candidate output: TxOut of 10.00 BTC to
>> mpwXH58im3MBLszzZhhui9tboT4re13ToE script:DUP HASH160
>> PUSHDATA(20)[675ea5e47418ba7b4bdae54dc3a905726d38aa80] EQUALVERIFY CHECKSIG
>> spend candidate output: TxOut of 10.00 BTC to
>> mhYeYHdmbVAhkwnsn9QrAYUdiCV31zGuin script:DUP HASH160
>> PUSHDATA(20)[16424340810fabe6d5c7285199809b4257553bae] EQUALVERIFY CHECKSIG
>>
>>
>> How can I watch my node's mempool so I can get relevant transactions
>> whose outputs satisfy the addresses that my node is watching? I would like
>> to be able to be instantly notified when a relevant transaction enters the
>> mempool.
>>
>>
>>
--
You received this message because you are subscribed to the Google Groups
"bitcoinj" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.