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
Andreas Schildbach
36129e53ef
gradle.yml, graalvm.yml: declare job timeout
2023-05-09 17:32:51 +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
7d00afc7a0
WalletTool: extract creation of SendRequest
to private method
...
This is a step towards an immutable `SendRequest`.
2023-05-04 10:38:19 +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
Andreas Schildbach
369445d1e8
StoredBlock: make method deserializeCompact()
not use MessageSerializer
...
Its usecase is limited to fixed formats, currently binary checkpoints
and `.spv` block stores.
2023-05-03 22:52:58 +02:00
Sean Gilligan
8aace05d3a
BitcoinSerializer: remove methods equals()
and hashCode()
...
There is no reason to have these.
2023-05-03 18:06:35 +02:00
Sean Gilligan
c1f10b9378
gradle.yml, graalvm.yml: update gradle-build-action to 2.4.2
2023-05-01 19:52:27 +02:00
Sean Gilligan
db1172c210
DummySerializer: remove unused class
2023-05-01 19:49:22 +02:00
Sean Gilligan
a0df016841
Block: remove unused DummySerializer
2023-05-01 19:46:09 +02:00
Andreas Schildbach
4ab6e88560
UnitTestParams: don't solve()
the genesis block for unit tests
...
It won't really solve it anyway, because the difficulty check is
disabled.
2023-05-01 19:24:52 +02:00
Andreas Schildbach
9a747e6e96
WalletProtobufSerializer: migrate to Network
from NetworkParameters
2023-04-28 23:21:35 +02:00
Andreas Schildbach
4187f2328d
MarriedKeyChain: remove married key chains
...
The current implementation is based on plain P2SH. I assume as of
today one would prefer an implementation based on taproot or at least
segwit (P2WSH).
Note the `isFollowing` and `sigsRequiredToSpend` fields in the
`DeterministicKey` message of the wallet protobuf are preserved for
now, because they might come in handy for a future implementation and
in general it's hard to remove fields from protobufs.
Also removes the `marry` action from `WalletTool`.
2023-04-28 23:07:49 +02:00
Sean Gilligan
7e36ed0ea9
build.gradle: use archiveClassifier
if available
...
`classifier` was deprecated in Gradle 5.1 and removed in Gradle 8.x,
so use `archiveClassifier` on Gradle 5.0 or later.
2023-04-24 20:18:32 +02:00
Andreas Schildbach
db9dd488a2
build.gradle: revert "update protobuf-gradle-plugin to 0.9.1"
...
This reverts commit 3c2d199ac6
.
It isn't compatible with our Gradle 7.x-based CI builds.
2023-04-24 10:57:08 +02:00
Andreas Schildbach
3c2d199ac6
build.gradle: update protobuf-gradle-plugin to 0.9.1
2023-04-23 11:40:47 +02:00
Sean Gilligan
abbd7b5ac6
build.gradle: update protobuf-javalite to 3.22.3
2023-04-23 01:34:34 +02:00
Sean Gilligan
ae812e99cb
.gitlab-ci.yml: add SAST jobs
2023-04-21 00:59:37 +02:00
Sean Gilligan
c17aea7bd9
.gitlab-ci.yml: move before_script
and after_script
to each job
...
Also, move the `apt-get install` lines into the `before_script` sections.
This will allow us to add other jobs that don't or can't run these scripts.
2023-04-20 22:51:49 +02:00
Andreas Schildbach
2b6b28a6b0
BitcoinURI: restore ability to parse URIs from any network
...
This includes a test.
2023-04-20 18:59:27 +02:00
Andreas Schildbach
bf02dbfb96
WalletProtobufSerializer: remove network
from method readTransaction()
2023-04-20 00:03:53 +02:00
Andreas Schildbach
0676e5cbe9
WalletProtobufSerializer: remove network
from methods readConfidence()
and connectTransactionOutputs()
2023-04-19 23:38:56 +02:00
Andreas Schildbach
5db73f2d7a
BitcoinURI: migrate to static from native constructors
2023-04-19 23:08:40 +02:00
Andreas Schildbach
429dfedce9
BitcoinURI: rework exception handling for amount field
...
* The check against `maxMoney` is removed. There BIP21 spec does not restrict
the amount towards positive infinity. The new maximum is now dictated by
`Coin.parseCoin()`: `Long.MAX_VALUE` satoshis
* The check for negative amounts now throws `OptionalFieldValidationException`
directly, rather than re-throwing via `ArithmeticException`.
* Exception messages now use string concatenation like everywhere else.
* Tests around the new max amount are added/changed.
2023-04-19 23:04:39 +02:00
Andreas Schildbach
fe4bc813ef
KeyChainGroupStructure: deprecate accountPathFor()
variant that takes NetworkParameters
...
It seems this was forgotten earlier.
2023-04-19 23:00:28 +02:00
Andreas Schildbach
e7017bfc2f
KeyChainGroup: migrate to Network
from NetworkParameters
2023-04-19 22:58:52 +02:00
Andreas Schildbach
3e7761c81c
KeyChainGroupTest: remove usage of deprecated variants of method DeterministicKey.deserializeB58()
2023-04-19 18:57:46 +02:00
Andreas Schildbach
7b8b8d60a4
DeterministicKeyChain, MarriedKeyChain: migrate to Network
from NetworkParameters
2023-04-19 18:52:45 +02:00
Andreas Schildbach
f305954285
BasicKeyChain: migrate to Network
from NetworkParameters
2023-04-19 18:50:57 +02:00
Sean Gilligan
9291841f8d
Wallet: use Network
in static factory methods
...
* Adds new methods taking `Network` rather than `NetworkParameters`
* Deprecates all converted methods
* Updates tests, examples, and tools that use these calls
2023-04-18 12:47:09 +02:00
Sean Gilligan
3f3f9bb636
Transaction: use stream in hasWitnesses()
2023-04-17 17:06:45 +02:00
Sean Gilligan
ab08261ef2
Transaction: use foreach loop in readWitnesses()
2023-04-17 17:04:16 +02:00
Sean Gilligan
c64eb6c87e
Transaction: make inputs
/outputs
use List
interface
...
There is no need for the to be declared as `ArrayList`.
2023-04-17 16:58:44 +02:00
Andreas Schildbach
126ccbfd98
Message: restore deprecated method unsafeBitcoinSerialize()
...
Also adds a `deprecatedMembers()` test.
2023-04-17 12:08:11 +02:00
Andreas Schildbach
2ead9f7c57
BaseMessage: remove deprecated method getHash()
...
It was never fully implemented anyways.
2023-04-16 23:05:10 +02:00
Sean Gilligan
5eb67285db
Message: rename methods serialize()
and messageSize()
...
Provide deprecated implementations of `bitcoinSerialize()`
and `getMessageSize()`.
2023-04-16 18:49:32 +02:00
Andreas Schildbach
6ddf8d8cf5
RejectMessage: make immutable
2023-04-16 18:34:54 +02:00
Andreas Schildbach
b9a25641a3
FeeFilterMessage: make immutable
2023-04-16 17:42:54 +02:00
Andreas Schildbach
74678d6abc
VersionMessage: make a constant final
2023-04-16 10:47:01 +02:00
Andreas Schildbach
c3d20cb9b4
Ping, Pong: make immutable
2023-04-16 10:32:54 +02:00
Andreas Schildbach
1d58722630
Coin: add reading from and writing to ByteBuffer
...
* A static constructur `read()` that deserializes from a payload.
* A `write()` helper to write to a buffer.
* A `serialize()` helper to get the serialized bytes.
* A `BYTES` constant for the number of serialized bytes.
Includes a test.
2023-04-16 10:10:09 +02:00
Sean Gilligan
97b88fffdf
BaseMessage: make bitcoinSerializeToStream()
abstract
...
Rather than log an error at runtime, the compiler should fail with an error
when subclasses of `BaseMessage` don't implement `bitcoinSerializeToStream()`.
2023-04-16 08:54:34 +02:00