Commit graph

3870 commits

Author SHA1 Message Date
Sean Gilligan
148a40b2ed TransactionInput: don't use setParent() in constructor 2023-08-08 19:55:50 +02:00
Sean Gilligan
7a558fb557 TransactionInput: use private constructor via this() in constructor for unsigned input 2023-08-08 19:52:48 +02:00
Sean Gilligan
1ce554c901 TransactionInput: don't call super() in constructor
`Object` is the superclass now.
2023-08-08 19:47:57 +02:00
Sean Gilligan
50d678d3e2 TransactionInput: make parent field private 2023-08-08 19:38:54 +02:00
Andreas Schildbach
0a58d0a5c3 TransactionInput: convert an if-else into expression with ternary operator 2023-08-08 11:54:34 +02:00
Sean Gilligan
2b68d8da8e ServicesTest: add missing package declaration 2023-08-08 11:45:21 +02:00
Andreas Schildbach
50c0f2eae9 VersionMessage: re-add service bit constants as deprecated 2023-08-01 15:13:05 +02:00
Sean Gilligan
b0b0b02683 Block: simplify initialization of genesisTxScriptPubKeyBytes
Use `ScriptBuilder` rather than static initializer and `ByteArrayOutputStream`.
2023-08-01 15:09:37 +02:00
Sean Gilligan
0b57bbc701 Wallet: fix two deprecated @link in JavaDoc 2023-08-01 15:02:02 +02:00
Andreas Schildbach
3dbaaa23b0 build.gradle: update Guava to 32.1.2-android 2023-08-01 11:15:44 +02:00
Andreas Schildbach
c1307c1190 build.gradle: update Bouncy Castle to 1.76 2023-07-31 11:34:36 +02:00
Sean Gilligan
36dce3d9d5 wallet.proto, paymentrequest.proto: move generated files to dedicated packages
* Modify the `java_package` setting in our two `.proto` source files
 * Move 2 existing generated-but-checked-in Protos.java files to
   dedicated packages (i.e. packages without hand-coded "artisanal" files)

This is a step towards more compatibility with ProtoBuf tooling which
sometimes likes to delete the generated files and:

 > can't distinguish between "old generated code" and "your artisan source files."

and more importantly it is a step towards fixing Gradle 8 caching issues.
2023-07-28 21:55:26 +02:00
Andreas Schildbach
a7446b65ae Prepare 0.17-SNAPSHOT 2023-07-28 10:46:14 +02:00
Andreas Schildbach
ab91a94695 Tag 0.17-alpha2 2023-07-27 21:36:45 +02:00
Sean Gilligan
7efab37c6c DnsDiscovery, MultiplexingDiscovery: use Network in constructors 2023-07-27 10:56:06 +02:00
Sean Gilligan
27cb2fc3cc TestWithWallet, WalletTest, DefaultCoinSelectorTest: rename and import some network constants
This also removes some usage of deprecated methods.
2023-07-20 19:51:50 +02:00
Sean Gilligan
dead2c74ab AddressParser: simpler address parsing by making it a @FunctionalInterface
We`re making `AddressParser` the `@FunctionalInterface` and a nested class
is used to define an `AddressParserProvider`
2023-07-18 23:54:59 +02:00
Sean Gilligan
39c34186cc BlockChain: use Network in constructors
Constructors that take NetworkParameters are marked as @VisibleForTesting.
This is because of the special UNITTEST NetworkParameters that is required for
certain tests.
2023-07-18 23:10:36 +02:00
Andreas Schildbach
02fd2f036a build.gradle: update equalsverifier to 3.15 2023-07-16 12:45:39 +02:00
Andreas Schildbach
98fcb0c840 build.gradle: update Jackson to 2.15.2 2023-07-16 12:37:30 +02:00
Sean Gilligan
1e1bf41f9d build.gradle: update Bouncy Castle to 1.75 2023-07-14 11:41:01 +02:00
Andreas Schildbach
f6cebd33bd build.gradle: update Guava to 32.1.1-android 2023-07-10 11:16:51 +02:00
Andreas Schildbach
c68cd2e616 TransactionOutput: fix regression with calculating getMinNonDustValue() for the multisig case 2023-07-05 16:10:07 -07:00
Sean Gilligan
8c3cf0acd5 Threading: use BlockingQueue interface internally
This makes it clear that we're not using specific features
of the `LinkedBlockingQueue` implementation class.
2023-06-13 21:37:46 +02:00
Sean Gilligan
d05d44c8c3 Threading: use ExecutorService for THREAD_POOL
Guava's `ListeningExecutorService` is no longer needed.
Update type of private executor in PaymentSession to match.
2023-06-13 21:33:55 +02:00
Andreas Schildbach
5c5b2969d7 Wallet: extract local variables tempParentFile and destParentFile in method saveToFile()
This is meant to make it a bit clearer why a NullPointerException would occur.
2023-06-13 09:04:00 +02:00
Andreas Schildbach
87a2892bca Wallet: improve JavaDoc of method saveToFile() 2023-06-13 08:54:41 +02:00
Andreas Schildbach
097bb06cb0 Wallet: rename saveToFile() method parameter temp to tempFile 2023-06-13 08:48:40 +02:00
Sean Gilligan
6126821968 Bech32: add JavaDoc headers to public types that were missing them 2023-06-09 12:06:02 +02:00
Sean Gilligan
eec12bae44 Bech32: replace <p></p> XHTML-style header with <p> HTML5-style header 2023-06-09 12:06:02 +02:00
Sean Gilligan
828cf58ab1 package-info.java: update package JavaDoc 2023-06-09 12:05:58 +02:00
Sean Gilligan
3429737f81 AddressParser: add JavaDoc to interface Strict 2023-06-09 11:50:46 +02:00
Sean Gilligan
e76b28a8ca MultiplexingDiscovery: fix empty seeds precondition for RegTest
`checkArgument` should not throw with an empty seeds list _if_ running on RegTest.

The test is disabled because it requires a RegTest node that is advanced
1 block (typically via `generateblocktoaddres`) during the course of the test.
2023-06-04 16:35:49 +02:00
Andreas Schildbach
0275dd3ffc build.gradle: update Guava to 32.0.0-android 2023-06-01 10:42:59 +02:00
Sean Gilligan
5032664f5c build.gradle: update BouncyCastle to 1.73 2023-06-01 10:38:00 +02:00
mitr15fan15v
a74932221c InsufficientMoneyException: remove extra space in exception description 2023-05-23 11:09:27 +02:00
Sean Gilligan
192444f09a ByteArray: immutable byte array wrapper
This is used for AesKey, and can be used for more.
2023-05-23 11:03:17 +02:00
Andreas Schildbach
4dea86a015 checkpoints.txt: refresh bundled checkpoints 2023-05-11 20:01:45 +02:00
Sean Gilligan
dce352f591 Wallet: properly handle unconnected request inputs in completeTx()
This adds a test for and fixes issue #2063.

The changes do the following:

1. Build a preliminary list of candidate UTXOs.
2. Use the preliminary list to fix unconnected/valueless inputs before
   calculating `valueNeeded`.
3. Create a new candidate list without the UTXOs that were already present
   in inputs and use it as input for generating the `CoinSelection`.

Test changes:

1. Update existing test to show the improvement (i.e. no wasted fee).
2. Add a new test (based on PR #3055) that shows no duplicate inputs.

This work is based on changes by @michael-swiggs in PR #3055.
2023-05-10 17:16:30 +02:00
Sean Gilligan
15a9086122 Wallet: use getInputSum() in completeTx(), separately warn about null values
Note that this changes behavior slightly. We are now warning on inputs with null value
and skipping inputs with no value in the sum. Previously we were checking for non-null
getConnectedOutput(). I reviewed the code and whenever getConnectedOutput() is non-null,
getValue() should also be non-null. There might be cases where we have a value and
no connected output, but in those cases I think we should use the value.
2023-05-10 09:49:46 +02:00
Sean Gilligan
9f76385c9d Wallet: use forEach() to add inputs to req.tx in completeTx() 2023-05-10 09:09:38 +02:00
Sean Gilligan
74b7b11681 Transaction: use Stream.reduce() in getInputSum() 2023-05-09 23:09:28 +02:00
Sean Gilligan
27ff0823bb Wallet: always enforce OP_RETURN limit in completeTx()
Without this fix (and code cleanup) the `OP_RETURN` limit is not
enforced when `ensureMinRequiredFee` is false or `emptyWallet` is true.

Parameterize `twoOpReturnsPerTransactionTest()` to test all combinations
of `ensureMinRequiredFee` and `emptyWallet`.
2023-05-09 16:52:23 +02:00
Sean Gilligan
3a28163d50 Wallet: use List interface where possible
Some local/private/protected declarations were using
`LinkedList` or `ArrayList` when they should be using
the generic `List`.
2023-05-08 19:41:25 +02:00
Sean Gilligan
7cb61b0399 Transaction: use stream in method getOutputSum() 2023-05-05 00:49:14 +02:00
Sean Gilligan
9de77cdd67 Wallet: replace mutated value with effectively final valueNeeded in completeTx() 2023-05-04 19:05:53 +02:00
Sean Gilligan
8ce4dbaff7 Wallet, TransactionOutput: use TransactionOutput.serialize() not bitcoinSerialize()
Fix the last two usages of this deprecated method.
2023-05-04 10:30:46 +02:00
Sean Gilligan
760e7dac83 Wallet: use ternary operator to reduce mutated local vars in calculateFee() 2023-05-04 10:27:26 +02:00
Andreas Schildbach
8fe1d84a59 SPVBlockStore: make method initNewStore() take genesisBlock
This makes the method independent of `NetworkParameters`.
2023-05-03 23:05:04 +02:00
Sean Gilligan
f62259b780 BitcoinSerializer: store packetMagic in instance field 2023-05-03 22:56:24 +02:00