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.