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
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
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
Andreas Schildbach
9a34ab2a28
TransactionOutPoint: make field fromTx
immutable
2023-04-08 21:50:02 +02:00
Andreas Schildbach
a7d2e9ee18
TransactionOutPoint: make field connectedOutput
immutable
2023-04-08 21:34:14 +02:00
Andreas Schildbach
e89ccb9f2e
TransactionOutPoint: don't use accessors in equals()
and hashCode()
2023-04-08 21:31:50 +02:00
Andreas Schildbach
622989f62d
Transaction: introduce helper getOutput(outpoint)
to get an output by outpoint
2023-04-08 21:28:13 +02:00
Andreas Schildbach
e2107a0e6e
Script: make field creationTime
immutable
2023-04-08 21:17:30 +02:00
Andreas Schildbach
d55f179047
Script: make field program
immutable
...
Also rename the accessor to `program()`. Caching of programs is removed,
except for the case where an instance is constructed with one.
2023-04-08 21:17:30 +02:00
Andreas Schildbach
131b37f5d2
Script: make field chunks
immutable
...
Also rename the accessor to `chunks()`.
2023-04-08 21:17:30 +02:00
Andreas Schildbach
2444fad85b
Script: migrate a native constructor that wraps chunks to of()
static constructor
2023-04-08 21:17:30 +02:00
Andreas Schildbach
28af827c0e
Script: migrate two native constructors into a parse()
static constructor
2023-04-08 21:15:32 +02:00
Andreas Schildbach
87bf6c0266
Transaction: make more use of getInput(index)
2023-04-08 16:33:41 +02:00
Andreas Schildbach
054defe54c
Transaction: make more use of getOutput(index)
2023-04-08 16:33:36 +02:00
Andreas Schildbach
3e67ef679c
FullBlockTestGenerator: rename argument outputIndex
2023-04-08 16:14:08 +02:00
Andreas Schildbach
a1237a636b
ScriptBuilder: extract private helper p2whOutputScript()
2023-04-06 18:40:33 +02:00
Andreas Schildbach
15ee38aae0
ScriptBuilder: add ability to build scripts with creationTime
2023-04-06 18:37:42 +02:00
Andreas Schildbach
6d00650efa
TransactionOutput: divorce from Message
...
It is never sent on its own, so it doesn't need to be a `Message`.
* A static constructur `read()` replaces the native constructor that deserialized
from a payload.
* A `write()` helper replaces `bitcoinSerializeToStream()`.
* A `serialize()` helper replaces `bitcoinSerialize()`.
This comes with tests.
2023-04-06 18:14:47 +02:00
Andreas Schildbach
7da2820fa0
TransactionInput: check range of value
...
The value can't be negative. This also adds a test.
2023-04-06 17:59:47 +02:00
Andreas Schildbach
d880570d54
TransactionWitness: add copyright line
2023-04-06 17:58:32 +02:00
Andreas Schildbach
2b2bc0ce17
TransactionWitness: require non-null pushes
2023-04-06 17:56:16 +02:00
Andreas Schildbach
ae22162de5
TransactionWitness: make immutable
...
Except for the pushes themselves.
2023-04-06 17:54:13 +02:00
Andreas Schildbach
2699ea1708
TransactionWitness: add read and write helpers
...
* A static constructur `read()` deserializes from a payload.
* A `write()` helper replaces `bitcoinSerializeToStream()`.
* A `serialize()` helper gets the serialized bytes.
This comes with a test.
2023-04-06 17:52:25 +02:00
Andreas Schildbach
41f684523d
Peer: log a bit of statistics about incoming inv
messages
2023-04-04 15:32:41 +02:00
Andreas Schildbach
86e0980d19
TransactionInput: fix toString()
throws on unparseable script
2023-04-04 11:08:02 +02:00
Andreas Schildbach
37fbe5ed7d
TransactionOutput: fix toString()
throws on unparseable script
2023-04-04 10:51:57 +02:00
Sean Gilligan
5f510d777b
TransactionInput, TransactionOutput: compare parent tx using equals()
not object reference
2023-04-04 10:17:25 +02:00
Sean Gilligan
7ef88e709e
TransactionOutPoint: make hash
and index
immutable
...
* Make the two fields `final`
* Rename accessors to `hash()` and `index()`
* Provide deprecated stubs for the old "get" methods
2023-04-04 00:06:47 +02:00
Andreas Schildbach
90be667779
TransactionInput: divorce from Message
...
It is never sent on its own, so it doesn't need to be a `Message`.
* A static constructur `read()` replaces the native constructor that deserialized
from a payload.
* A `write()` helper replaces `bitcoinSerializeToStream()`.
* A `serialize()` helper replaces `bitcoinSerialize()`.
This comes with a test.
2023-04-03 23:58:14 +02:00
Andreas Schildbach
06070eeaf2
Buffers: add write helpers writeLengthPrefixedBytes()
and writeLengthPrefixedString()
...
Includes a test.
2023-04-03 23:55:11 +02:00
Andreas Schildbach
fbc5185b5a
TransactionOutPoint: divorce from Message
...
It is never sent on its own, so it doesn't need to be a `Message`.
* A static constructur `read()` replaces the native constructor that deserialized
from a payload.
* A `write()` helper replace `bitcoinSerializeToStream()`.
* A `serialize()` helper replace `bitcoinSerialize()`.
* A `BYTES` constant replaces `getMessageSize()`.
This comes with a test.
2023-04-03 22:17:31 +02:00
Andreas Schildbach
4248804f82
Sha256Hash: migrate to byte[] serialize()
from byte[] getReversedBytes()
2023-04-03 22:12:51 +02:00
Andreas Schildbach
edf889306b
VarInt: migrate to byte[] serialize()
from byte[] encode()
2023-04-03 22:11:00 +02:00
Andreas Schildbach
98d86375ae
Services: migrate to byte[] serialize()
from ByteBuffer buffer()
2023-04-03 22:09:06 +02:00
Andreas Schildbach
5ded7782be
Message: remove params
field and accessor
2023-04-03 20:24:55 +02:00
Andreas Schildbach
4f872b9dce
VersionMessage: remove params
from constructor
2023-04-03 20:22:16 +02:00
Andreas Schildbach
00c15e45c3
TransactionOutput: add a toString()
variant that can print addresses
2023-04-03 19:23:27 +02:00
Andreas Schildbach
f385d27825
Block: remove deprecated method getBlockInflation()
...
Without `params` there is no way to keep this method.
2023-04-03 19:17:34 +02:00
Andreas Schildbach
fb9b578542
VersionMessage: move isBloomFilteringSupported()
to Peer
2023-04-03 19:07:55 +02:00
Andreas Schildbach
f2fa39ef3e
HeadersMessage: remove params
from constructors
2023-04-03 19:05:45 +02:00
Andreas Schildbach
c613a7d98a
Block, FilteredBlock: remove params
from constructors
2023-04-03 19:04:23 +02:00
Andreas Schildbach
6bd8e8e6bc
AddressMessage: add/update class-level JavaDoc
2023-04-03 18:31:51 +02:00
Andreas Schildbach
e13e7db23c
AddressEventListener, PeerGroup: add/update JavaDoc of onAddr()
2023-04-03 18:25:58 +02:00
Andreas Schildbach
5e1c556a15
Services: add anyOf()
helper to check for at least one of the given node services
2023-04-03 17:54:26 +02:00