Commit Graph

309 Commits

Author SHA1 Message Date
Andreas Schildbach
509694d9ad ForwardingService: reduce redundant console output at startup 2022-07-28 15:00:20 +02:00
Sean Gilligan
62fecfa37c ForwardingService: don't wait for blockchain synchronization before entering RUNNING state
This will speed up synchronization because the .setMaxConnections() call
will occur before synchronization is finished and the necessary number of Peers
will be found sooner.

Also IMO this a better example because most apps should not block while syncing the chain.
2022-07-28 14:45:07 +02:00
Sean Gilligan
6be2fd4999 ForwardingService: add directory parameter for wallet files
This will allow integration tests to put the files in a temporary directory
and is a good practice in general.
2022-07-28 13:27:03 +02:00
Sean Gilligan
fb6add760b ForwardingService: improve the implementation of close()
* Don't try to remove listener (access .wallet()) unless kit.isRunning()
* Don't wait for termination, just call kit.stopAsync()
* Add some JavaDoc
2022-07-19 09:28:42 +02:00
Sean Gilligan
498d638915 ForwardingService: properly handle shutdown
* ForwardingService to implement AutoClosable and use try-with-resources
* Add `kit.stopAsync()` and `kit.awaitTerminated()` in `close()`
2022-07-19 02:24:06 +02:00
Andreas Schildbach
9fc5d32abd ForwardingService: upper-case two constants 2022-07-18 23:23:39 +02:00
Andreas Schildbach
be744c2fe1 ForwardingService: infer network from address
This means for mainnet and testnet, you don't have to provide the network name.
It will be inferred from the address. For signet and regtest however the network
name is still needed.
2022-07-18 23:05:44 +02:00
Sean Gilligan
165804965e ForwardingService: convert to CompletableFuture
* Use `CompletableFuture` for all asynchronous operations
* Use `thenCompose` to chain them
* sendTransaction takes a SendRequest and returns a TransactionBroadcast
* The main "CoinsReceived" listener method uses one .thenCompose() for
  completing/signing/preparing-to-broadcast the transaction and another for waiting
  for it to be confirmed by peers.
2022-07-18 21:55:47 +02:00
Andreas Schildbach
e1585cebac ForwardingService: print the hash of the forwarding transaction earlier 2022-07-17 19:53:11 +02:00
Andreas Schildbach
691cd46267 ForwardingService: limit the number of peer connections required
Nowadays on testnet or signet it takes a long time to discover enough bloom-enabled peers.
2022-07-17 19:42:57 +02:00
Sean Gilligan
50f46651b4 ForwardingService: move getPrefix() to end of file
This is meant to make the coming refactoring to CompletableFuture more
readable. It was in the middle of three main methods.
2022-07-17 00:13:19 +02:00
Sean Gilligan
95fb0ec3a4 ForwardingService: move println's and busy wait from waitForCoins() to forward()
This is in preparation for a refactoring to CompletableFuture, coming in a future commit.
2022-07-16 23:26:23 +02:00
Andreas Schildbach
c9835eb668 ForwardingService: support segwit addresses as receive address
This also potentially fixes the wallet not detecting incoming payments,
because it's looking for the wrong script type.
2022-07-16 22:54:30 +02:00
Andreas Schildbach
5259cc1d72 ForwardingService: replace copyright with generic statement 2022-07-16 21:44:04 +02:00
Sean Gilligan
ed525652a4 ForwardingService: extract method waitForConfirmation() 2022-07-16 11:52:28 +02:00
Sean Gilligan
68cacbebbc ForwardingService: rename one of the two forward() methods to clear up confusion 2022-07-16 11:42:37 +02:00
Sean Gilligan
a057cd04f6 ForwardingService: simplify argument parsing 2022-07-15 22:37:51 +02:00
Sean Gilligan
8e4cae391c ForwardingService: split main() into main() and forward() 2022-07-15 19:54:21 +02:00
Sean Gilligan
ccba23bd29 ForwardingSevice: add an address parameter to forwardCoins()
This makes forwardCoins() a little more generically-useful and
simplifies the coming conversion to CompletableFuture.
2022-07-15 15:59:28 +02:00
Sean Gilligan
a06134cc18 ForwardingService: simplify getPrefix()
Use network.toString(). This also adds support for SIGNET. It changes the
filename for MAINNET, but as this is just an example I don't think we really
need to preserve backward-compatibility for the filename.
2022-07-15 15:53:43 +02:00
Andreas Schildbach
95b063f3f4 ForwardingService: fix context not initialized 2022-07-14 10:44:50 +02:00
Sean Gilligan
d29c80a1ed ForwardingService: use BitcoinNetwork.fromString() to parse network CLI parameter 2022-07-13 23:32:51 +02:00
Sean Gilligan
9f02cd2af3 WalletAppKit: add constructor with BitcoinNetwork, deprecate others
* WalletAppKit: add a constructor that takes a BitcoinNetwork
* WalletAppKit: deprecate constructors taking netParams or Context
* WalletAppKit: add an accessor for network()
* Update examples, tools, and wallettemplate to use the new constructor
2022-07-13 22:59:17 +02:00
Andreas Schildbach
50ccb6b8fc Network: rename MAIN to MAINNET and TEST to TESTNET
The old, shorter names can be used as an alternate name so they will still be accepted for user-facing input.
2022-07-13 22:04:31 +02:00
Andreas Schildbach
bca5faaba2 ForwardingService: fix testnet parameter in parseNetwork() 2022-07-10 20:51:24 +02:00
Sean Gilligan
42639c2d11 ForwardingService: add signet support 2022-07-10 00:05:40 +02:00
Sean Gilligan
24d0e68725 ForwardingService: move network argument parsing to parseNetwork()
Also adds an explicit "main" option.
2022-07-10 00:04:21 +02:00
Sean Gilligan
e5dc4f0c24 ForwardingService: remove unused imports 2022-07-09 23:39:32 +02:00
Sean Gilligan
cbe1833e04 ForwardingService: create singleton class, simplify main() 2022-07-09 22:24:15 +02:00
Sean Gilligan
d3599482c8 ForwardingService: extract getPrefix() 2022-07-09 22:21:18 +02:00
Sean Gilligan
a8e43b1b15 ForwardingService: use BitcoinNetwork where possible 2022-07-09 20:51:50 +02:00
Sean Gilligan
89fb6fe0a8 ForwardingService: extract requiredConfirmations to a variable 2022-07-09 12:18:22 +02:00
Sean Gilligan
44d0576ce4 org.bitcoinj.base: move Base58, Bech32, AddressFormatException to base 2022-06-23 11:48:01 +02:00
Sean Gilligan
0645a835de org.bitcoinj.base: move Script.ScriptType to a top level type in base 2022-06-22 18:13:34 +02:00
Sean Gilligan
93cc0ac9c5 org.bitcoinj.base: move Sha256Hash and byte/math Utils members to base
* move o.b.core.Sha256Hash to o.b.base.Sha256Hash
* move byte and math utility methods from o.b.core.Utils to a new
  o.b.base.ByteUtils class
2022-06-22 17:40:50 +02:00
Sean Gilligan
84e737acdf org.bitcoinj.base: introduce new package that provides fundamental types with minimal dependencies
This also moves Coin, Fiat, its parent Monetary and the related MonetaryFormat into the new base package.

See the provided package-info.java for details.
2022-06-21 19:25:47 +02:00
Andreas Schildbach
837b614906 ForwardingService, PrivateKeys: also parse segwit addresses from arguments 2022-05-01 00:12:22 +02:00
Andreas Schildbach
eb71e0b0c6 DoubleSpend, SendRequest: migrate hardcoded addresses to segwit 2022-05-01 00:10:28 +02:00
Sean Gilligan
c3896e6caf examples/tools: use explicit script type and wallet structure
* Explicitly use P2WPKH (this changes behavior to segwit)
* Explicitly use BIP32 (this is the same behavior as before)
2022-04-30 23:24:25 +02:00
Sean Gilligan
a6e5c88ce8 build.gradle: add detailed deprecation warnings to all modules 2022-04-19 10:07:55 +02:00
Sean Gilligan
1219e0d7b0 InternalUtils: replace Guava Joiner and Splitter with native JDK equivalent
Also deprecate the old Joiner and Splitter related members of Utils.
2022-04-10 16:20:00 +02:00
Sean Gilligan
003b6dc52d SendRequest: migrate from ListenableFuture to CompletableFuture 2022-03-07 22:33:27 +01:00
Sean Gilligan
b8c72c996a FetchTransactions, PrintPeers: more CompletableFuture conversions 2022-03-07 14:39:50 +01:00
Sean Gilligan
eb56d71f8f TransactionConfidence: Convert to CompletableFuture 2022-03-04 13:04:41 -08:00
Andreas Schildbach
52babf52b0 LevelDBBlockStore, LevelDBFullPrunedBlockStore: remove LevelDB-based block stores 2022-03-04 18:27:40 +01:00
Sean Gilligan
9db8b49c50 Convert TransactionBroadcast, Wallet.doMaintenance() to CompletableFuture
* Use ListenableCompletableFuture on all public APIs
* Use CompletableFuture internally, in example, and in tests
* Add new FutureUtils class
* Add 2 new static methods to ListenableCompletableFuture
2022-02-24 20:48:54 +01:00
Sean Gilligan
7626b27850 build.gradle: update picocli to 4.6.3 2022-02-18 09:02:24 +01:00
Sean Gilligan
ea208935ff build.gradle: Update SLF4J to 1.7.36
Starting with version 1.7.36, SLF4J releases are reproducible.
2022-02-18 08:54:36 +01:00
Sean Gilligan
0d67977ca1 build.gradle: Update examples and tools submodules to JDK 11 2022-01-04 03:03:44 +01:00
Andreas Schildbach
d3d5edbcbd NetworkEnum: delete unused class from examples 2021-12-25 11:26:47 +01:00
Sean Gilligan
a2cf303655 build.gradle: require JDK 11 for the build
Uses javac -release option to validate API for older JDK.
2021-12-24 11:35:37 +01:00
Andreas Schildbach
0b5d40e49f Remove references to a specific testnet faucet. 2021-10-22 09:08:21 +02:00
Sean Gilligan
6da10f8641 build.gradle: Update SLF4J to 1.7.32. 2021-09-17 11:51:11 +02:00
Andreas Schildbach
e407240b7e Support BIP133 feefilter messages. 2021-05-03 16:23:51 +02:00
Andreas Schildbach
1db44fb4f1 PeerMonitor: Show an additional column with the results of an getaddr request. 2021-04-22 16:50:07 +02:00
Andreas Schildbach
04a71b09af PeerMonitor: Increase initial size of window. 2021-04-22 16:02:19 +02:00
Andreas Schildbach
39bb7faafb PeerMonitor: Simplify a switch-case. 2021-04-22 15:59:09 +02:00
Andreas Schildbach
ffb02ae760 Script: Deprecate non-segwit variant of correctlySpends(). 2021-03-07 09:43:55 +01:00
Andreas Schildbach
8906e7cc27 Transaction: Add toHexString() for converting a transaction to raw hex format. 2021-02-16 11:26:09 +01:00
Andreas Schildbach
4c094ef193 WalletTool, BuildCheckpoints, FetchBlock: Migrate parsing of command line options from JOpt to picocli. 2021-02-11 16:15:16 +01:00
Andreas Schildbach
f0bbb92bcf ForwardingService: Get rid of unused forwardCoins() method argument. 2020-10-24 16:45:04 +02:00
Andreas Schildbach
b6b221ae1b Apply "Anonymous type has shorter lambda alternative" refactoring. 2020-09-07 21:13:14 +02:00
Andreas Schildbach
c08a4d97d3 Apply "Anonymous type can be replaced with lambda" refactoring. 2020-09-07 21:13:14 +02:00
Andreas Schildbach
4847a9df27 Apply "Explicit generic type can be replaced with <>" refactoring. 2020-09-07 21:10:44 +02:00
Andreas Schildbach
7d9f109ee1 Peer: Deprecate a redundant constructor. 2020-03-04 17:34:11 +01:00
Andreas Schildbach
06bd0a841e PeerDiscovery: Change getPeers() return type from array to list.
This gets rid of a lot of array/list conversions.
2020-03-04 12:35:02 +01:00
Sean Gilligan
e4c6b98536 Make Guava an api dependency using java-library
Use the Gradle java-library plugin to make Guava an `api`
dependency since Guava types are used in the bitcoinj public API.

This allows us to remove explicit dependencies on
Guava in the other modules.
2020-02-29 15:28:09 -08:00
Andreas Schildbach
0112e3ccbe Update slf4j to 1.7.30. 2020-01-23 01:16:58 +01:00
Andreas Schildbach
68538e57af Update Guava to 28.2-android. 2020-01-23 01:09:35 +01:00
Andreas Schildbach
ded215e69e Update slf4j to 1.7.29. 2019-11-21 12:35:13 +01:00
Andreas Schildbach
f396327246 Update Guava to 28.1-android. 2019-10-21 12:15:53 +02:00
Sean Gilligan
03d7d7369f Update slf4j to 1.7.28.
1.7.28 fixes an error in 1.7.27 that could affect some users of JPMS modules.
2019-08-27 12:16:59 +02:00
Andreas Schildbach
5fb2b44d47 PrivateKeys: Send coins before stopping the PeerGroup. 2019-08-09 11:29:14 +02:00
Sean Gilligan
1394f91d61 Update slf4j to 1.7.27. 2019-08-08 09:43:56 +02:00
Andreas Schildbach
cee5264ab9 build.gradle: Specify javadoc encodings. 2019-07-26 17:14:37 +02:00
Sean Gilligan
951d18b9a7 Update slf4j to 1.7.26. 2019-07-26 10:43:57 +02:00
Andreas Schildbach
d67f060e27 Remove Micropayment Channels.
Now that HTLC-based bi-directional payment channels are state of the art, nobody will ever use the old style.
2019-07-15 11:05:14 +02:00
Sean Gilligan
806afa0441 Replace Guava newArrayList()/newLinkedList() with direct call to the JDK 7 constructor.
This is recommended by deprecation comment in Guava.
2019-06-01 13:58:11 +02:00
Sean Gilligan
7bfeff65f6 build.gradle: Use plugins block rather than 'apply plugin' statements. 2019-04-18 16:41:12 +02:00
Sean Gilligan
783dd45c4b Wallet: Remove (or reduce visibility of) the deprecated constructors.
Replace usages in unit tests and examples with usage of the static createDeterministic() constructor.
2019-04-08 11:23:41 +02:00
Sean Gilligan
170cc80e45 Update Guava to 27.1-android. 2019-04-05 10:31:35 +02:00
Andreas Schildbach
83b1e44d7d settings.gradle: Prefix project names by 'bitcoinj-'. 2019-03-24 10:34:23 +01:00
Andreas Schildbach
08bb331cc3 Update jopt-simple to 5.0.4. 2019-02-15 04:03:39 +01:00
Andreas Schildbach
f24a4aa19a Update Guava to 27.0.1-android. 2019-02-15 03:34:11 +01:00
Andreas Schildbach
34e8bc217a build.gradle: Configure Eclipse plugin. 2019-02-14 23:03:24 +01:00
Andreas Schildbach
bfe2a195b6 Receive to and send from native segwit addresses
- Hierarchical-deterministic derivation of native segwit addresses.
- Receive payments to native segwit addresses.
- Spend and sign payments from native segwit addresses.
- Watch-only wallets with native segwit addresses (zpub/vpub).
- WalletAppKit, Wallet-tool and Wallet-template are taught to deal with segwit-enabled wallets.

Be aware this adds a new field in the wallet protobuf: output_script_type in Key, which keeps track
of the script type of DeterministicKeyChains. Protobufs will be migrated; old DeterministicKeyChains
are assumed to be of type P2PKH.

Includes some code by Fabrice Drouin.
2019-02-11 16:48:37 +01:00
Andreas Schildbach
53a63c43bb Transaction: Add getTxId() and getWTxId(); deprecate getHash() and getHashAsString(). 2019-02-06 02:15:11 +01:00
Andreas Schildbach
a5fd9c6848 KeyBag: Rename method findKeyFromPubHash() to findKeyFromPubKeyHash(). 2019-02-01 18:02:20 +01:00
Andreas Schildbach
53908d8939 KeyBag, TransactionBag: Rename parameters pubkey to pubKey, pubkeyHash to pubKeyHash. 2019-02-01 18:01:45 +01:00
Andreas Schildbach
0875d4a5b3 ECKey: If DER-encoded signatures cannot be parsed, throw SignatureDecodeException rather than RuntimeException. 2019-01-03 11:55:32 +01:00
Andreas Schildbach
7b0a9c207f Update Guava to 25.1-android. 2018-11-27 13:41:58 +01:00
Andreas Schildbach
2992cc16ff build.gradle: Specify source encodings. 2018-10-31 11:12:49 +01:00
Andreas Schildbach
aaa5262ef4 Migrate from Maven to Gradle 3.4 for building. 2018-05-01 16:49:30 +02:00
Andreas Schildbach
7e9c45ad55 ForwardingService: Fix hardcoded fee by simply emptying the entire wallet to the forwarding address. This will make sure the library is calculating the correct fee. 2018-03-13 23:03:48 +01:00
Andreas Schildbach
7f5b6753f5 Use Address whereever possible in the API, rather than LegacyAddress.
This is a preparation for the remaining segwit changes. LegacyAddress
variables in unit tests are also changed.
2018-03-05 10:35:09 +01:00
Andreas Schildbach
e11119b64f Rename VersionedChecksummedBytes→PrefixedChecksummedBytes, Address→LegacyAddress and AbstractAddress→Address.
This also renames corresponding test classes and mentions in comments.
2018-02-28 16:57:16 +01:00
Andreas Schildbach
dedeb01dac Move ECKey.toAddress() to Address.fromKey().
This is a preparation for supporting native segwit addresses. Keys can't know what
type of address is wanted. In future, there will also be a SegwitAddress.fromKey().
2018-02-26 02:13:18 +01:00
Andreas Schildbach
cb01312395 Update to slf4j 1.7.25. 2018-02-23 12:24:06 +01:00
harryge00
911f6d49c0 SendRequest example: Fix the print info. 2018-02-10 17:43:25 +01:00
Andreas Schildbach
c927f0238b Rename variable peers to peerGroup, as the name can be misleading. 2017-12-21 12:47:13 +01:00