Commit graph

4614 commits

Author SHA1 Message Date
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
Sean Gilligan
792183dfef FeeFilterMessageTest: add tests for FeeFilterMessage 2023-04-16 08:50:54 +02:00
Sean Gilligan
5cdbde165f FeeFilterMessage: don't call super() in bitcoinSerializeToStream() 2023-04-16 08:46:15 +02:00
Andreas Schildbach
917a1097c3 BaseMessage: remove method parse() 2023-04-16 08:32:55 +02:00
Andreas Schildbach
e6125b49a2 BaseMessage: remove field serializer 2023-04-16 08:32:55 +02:00
Andreas Schildbach
306ad03e6a Transaction: move parse() to static constructor read() 2023-04-16 08:32:55 +02:00
Andreas Schildbach
8a819c761c Block: move parse() to static constructor read() 2023-04-16 08:32:55 +02:00
Andreas Schildbach
3cf9e89893 FeeFilterMessage: move parse() to static constructor read() 2023-04-16 08:32:55 +02:00
Andreas Schildbach
89d568de18 RejectMessage: move parse() to static constructor read() 2023-04-16 08:29:45 +02:00
Andreas Schildbach
38ea113c2f HeadersMessage: move parse() to static constructor read() 2023-04-16 08:28:04 +02:00
Andreas Schildbach
92355b1c32 BloomFilter: move parse() to static constructor read() 2023-04-16 08:26:02 +02:00
Andreas Schildbach
a155caa076 AddressV1Message, AddressV2Message: move parse() to static constructor read() 2023-04-16 08:12:58 +02:00
Andreas Schildbach
a114c6ca0e GetBlocksMessage, GetHeadersMessage: move parse() to static constructor read() 2023-04-16 08:10:38 +02:00
Andreas Schildbach
eac2c1fee3 FilteredBlock: move parse() to static constructor read() 2023-04-16 08:07:56 +02:00
Andreas Schildbach
70e652850e GetDataMessage, InventoryMessage, NotFoundMessage: move parse() to static constructor read() 2023-04-16 08:05:38 +02:00
Andreas Schildbach
e7ead0b3cb VersionMessage: move parse() to static constructor read() 2023-04-16 08:01:22 +02:00
Andreas Schildbach
14ba406298 Pong: move parse() to static constructor read() 2023-04-16 07:58:28 +02:00
Andreas Schildbach
1f8ed23e24 Ping: move parse() to static constructor read() 2023-04-16 07:56:18 +02:00
Andreas Schildbach
7d31021663 Transaction: remove the input and output re-reading
We needed this to correctly determine the message length, but that
requirement is gone.
2023-04-14 19:40:30 +02:00
Sean Gilligan
1fef4e2cdb Message: extract interface, add BaseMessage abstract class 2023-04-14 19:33:29 +02:00
Andreas Schildbach
78a76f76a5 BuffersTest: move the tests for extreme message lengths to here from MessageTest
It's much simpler to test the affected read helpers directly.
2023-04-14 19:26:49 +02:00
Andreas Schildbach
a22a446eb1 Buffers, Messages: in various parse() methods, throw BufferUnderflowException if read length doesn't fit an int
Previously, `ArithmeticException` was thrown which is unlikely to be handled by
consumers.

`BufferUnderflowException` is the correct exception to throw, under the assumption
that a giant length can't be followed by a collection of equally giant length.
2023-04-14 19:18:29 +02:00
Andreas Schildbach
ba8849ca13 VarInt: fix long values accepted as an int value
`-1` and `Integer.MIN_VALUE` (and all values inbetween) are in fact
very large VarInts that can only be expressed as a long. So their
test data have been moved from `VarIntTest.integerTestVectors` to
`longTestVectors`.

`intValue()` is changed to guard against such cases, and a helper
`fitsInt()` is introduced.

JavaDocs are added to `intValue()` and `longValue()` to clarify the
expected value ranges.
2023-04-14 19:10:15 +02:00
Sean Gilligan
5f5e7384a2 WalletAppKit: call awaitTerminated() in close()
This adds basic unit tests.
2023-04-13 19:58:13 +02:00
Sean Gilligan
dc5dbc1db7 BitcoinNetwork: remove ID_UNITTESTNET
It is no longer used in the unit tests.
2023-04-13 16:49:32 +02:00
Sean Gilligan
134202c63f BitcoinNetwork: improve JavaDoc
Make sure the string values are easily found in JavaDoc and in IDEs
that display JavaDoc.
2023-04-13 16:46:52 +02:00
Andreas Schildbach
6b7fe58955 ListMessage: fix number of inventory items read as long 2023-04-13 12:03:18 +02:00
Andreas Schildbach
838d14d027 PeerAddress: make immutable
* Static constructors `simple()` and `inet()` that replace the native constructors.
2023-04-13 00:21:36 +02:00
Andreas Schildbach
2c62951a31 PeerAddress: divorce from Message
It is never sent on its own, so it doesn't need to be a `Message`.

* Static constructor `read(protocolVariant)` replaces the native constructor that deserialized
  from a payload.
* `write()` helper replaces `bitcoinSerializeToStream()`.
* `serialize()` and `getMessageSize()` helpers replace `bitcoinSerialize()`.
2023-04-13 00:19:40 +02:00
Andreas Schildbach
0401a0cde2 PartialMerkleTree: make immutable 2023-04-13 00:16:16 +02:00
Andreas Schildbach
cd75c6ab6b PartialMerkleTree: divorce from Message
It is never sent on its own, so it doesn't need to be a `Message`.

* Static constructor `read()` replaces the native constructor that deserialized
  from a payload.
* `write()` helper replaces `bitcoinSerializeToStream()`.
* `serialize()` and `getMessageSize()` helpers replace `bitcoinSerialize()`.

Includes a test.
2023-04-13 00:13:24 +02:00
Andreas Schildbach
cc5d735eb4 VersionMessage: for field receivingAddress don't use PeerAddress
Rather, use `InetSocketAddress` and `Services`.

This makes `time` in `PeerAddress` a required field. It also drops
support for TORv2 addresses in `VersionMessage` (if that was ever
a thing).
2023-04-11 13:52:16 +02:00
Andreas Schildbach
7383a32e2a VersionMessage: remove field fromAddr
The field is unused by the Bitcoin protocol. Bitcoin Core fills it up
with zeros. From now on, we'll do the same.
2023-04-11 13:44:16 +02:00
Andreas Schildbach
d4f8058164 Wallet: in signTransaction() don't care about the witness being empty
It does not matter for the data being signed.

This removes `Script.createEmptyWitness()` as it's unnecessary as well.
2023-04-11 13:21:22 +02:00
Sean Gilligan
ce07733bbf Wallet: constructor use Network rather than NetworkParameters
With deprecation.
2023-04-11 13:02:11 +02:00
Sean Gilligan
f41336657d LocalTransactionSigner: make key local var effectively final 2023-04-11 12:47:01 +02:00
Sean Gilligan
e94d5a4b49 GenerateLowSTests: remove unused NetworkParameters 2023-04-10 01:49:15 +02:00
Sean Gilligan
4b9981015c ProtocolVersion: move to top-level class from NetworkParameters
* Rename `getBitcoinProtocolVersion()` to `intValue()`
* Deprecate `NetworkParameters.getProtocolVersionNum()`. This eliminates
  what seems to be an unnecessary level of indirection.
* Add tests.

This will also help eliminate a dependency on `NetworkParameters` in some places.
2023-04-10 01:35:20 +02:00
Andreas Schildbach
414bcf8b6c MessageSerializer: remove variant makeTransaction(payload, hash) 2023-04-10 01:18:30 +02:00
Andreas Schildbach
1346504fb0 Transaction, TransactionInput, TransactionOutput: remove unCache() 2023-04-10 01:18:30 +02:00
Andreas Schildbach
b8d3c4a641 Transaction: remove fields cachedTxId and cachedWTxId
Transaction IDs seem to be quick enough to calculate.
2023-04-10 01:18:30 +02:00
Sean Gilligan
c4439db699 FakeTxBuilder: use Network not NetworkParameters 2023-04-09 10:33:15 +02:00
Sean Gilligan
c6ef0b69b1 Transaction: use Network not NetworkParameters in verify() 2023-04-09 10:27:21 +02:00
Andreas Schildbach
4e75444644 TransactionOutPointTest: add test deprecatedMembers()
The idea is any change in method signatures will be more visible in diffs.
2023-04-08 21:53:04 +02:00