Andreas Schildbach
301c8e4a76
VarInt: implement equals()
and hashCode()
...
`originallyEncodedSize` is not considered on purpose, because it is only
relevant for serialization.
2023-03-27 16:26:16 +02:00
Andreas Schildbach
2faaf9febc
VarInt: direct use of ByteBuffer
for reading and writing
2023-03-27 16:00:37 +02:00
Sean Gilligan
b4abf7d794
VarInt: get rid of code duplication in deprecated constructor
2023-03-27 15:50:13 +02:00
Andreas Schildbach
b528fb5180
build.gradle: update SLF4J to 2.0.7
...
Starting with SLF4J 2.0.0, we can use the fluent logger API.
2023-03-27 15:25:02 +02:00
Sean Gilligan
2e3e6d4485
TransactionBroadcast: add awaitSent()
method
...
This just returns the used internally (and therefore tested) `sentFuture`.
2023-03-27 12:28:27 +02:00
Sean Gilligan
bce7b11038
Script: downsize MAX_SCRIPT_ELEMENT_SIZE
to int
from long
...
* The value is 520
* Java collection sizes are `int`
* All usages are as `int`
2023-03-27 09:54:42 +02:00
Sean Gilligan
ee74f34dcc
FullBlockTestGenerator: use writeInt64LE()
for writing a 64-bit integer
...
Previously two `writeInt32LE()` and a right-shift on an `int` by 32 were used.
2023-03-27 09:48:01 +02:00
Sean Gilligan
37a06b150f
Transaction: replace Guava Lists.reversed()
with JDK equivalent
2023-03-27 09:38:38 +02:00
Andreas Schildbach
c5faecf3b6
SegwitAddress: flip arguments of new static constructor fromBech32()
...
Otherwise the deprecation cycle won't be of much use for consumers who pass `null` for `params`.
2023-03-27 09:23:04 +02:00
Andreas Schildbach
150c911750
LegacyAddress: flip arguments of new static constructor fromBase58()
...
Otherwise the deprecation cycle won't be of much use for consumers who pass `null` for `params`.
2023-03-27 09:17:37 +02:00
Andreas Schildbach
4bdb0f85e4
BitcoinURI: flip arguments of new constructor
...
Otherwise the deprecation cycle won't be of much use for consumers who pass `null` for `params`.
2023-03-27 09:14:11 +02:00
Sean Gilligan
b13fe5a5d2
ForwardingService: make coinsReceivedListener()
use wallet
parameter
...
...instead of `kit.wallet()`.
2023-03-27 09:11:17 +02:00
Sean Gilligan
3ad07ea28c
ForwardingService: rename forwardingCoinSelector()
parameter
...
...to `parentTxId` (which is more clear and correct)
2023-03-27 09:08:27 +02:00
Sean Gilligan
884072c9e3
WalletAppKit: make Closeable
2023-03-26 19:40:28 +02:00
Sean Gilligan
84c8a2887a
ForwardingService: make Closable
not AutoCloseable
...
`Closeable` implements `AutoCloseable` but narrows the exception thrown
from `Exception` to `IOException`. ForwardingService.close() currently
doesn't throw any exceptions.
2023-03-26 19:37:08 +02:00
Andreas Schildbach
c10cf7ccbe
Sha256Hash: direct use of ByteBuffer
in hashCode()
...
A hash code is just an arbitrary number. It doesn't care about signedness and endianess.
2023-03-26 19:07:22 +02:00
Andreas Schildbach
d478eb2a55
Network: migrate legacyAddressHeader()
and legacyP2SHHeader()
from NetworkParameters
2023-03-26 18:59:51 +02:00
Andreas Schildbach
ba72884832
Transaction: add back a byte[]
-based constructor as deprecated
2023-03-26 18:53:06 +02:00
Sean Gilligan
c05fefe8f8
MarriedKeyChain: simplify Builder.followingKeys()
...
* Add `followingKey()` method that takes a single key
* Deprecate unused `followingKeys(DeterministicKey, DeterministicKey...)`
* Replace usage of Guava's `Lists.asList()`
2023-03-26 18:49:32 +02:00
Sean Gilligan
6e1fc2cda9
WalletTool: rename tx
from t
in send()
2023-03-26 18:15:54 +02:00
Sean Gilligan
17f9b1dcfe
WalletTool: don't unnecessarily reinitialize tx variable t
in send()
2023-03-26 18:13:43 +02:00
Sean Gilligan
f58d07a623
ForwardingService: start()
returns receiving address
2023-03-26 18:10:09 +02:00
Sean Gilligan
3e1855b201
SendRequest: make field tx
immutable
2023-03-26 18:03:56 +02:00
Andreas Schildbach
4bdb8d7836
CheckpointManager: fix wrong unit of time
...
This mistake was introduced in commit 838b12c046
.
The original line before the `java.time` migration was:
`60 * 60 * 24 * 7; // one week in seconds`
2023-03-26 17:58:10 +02:00
Sean Gilligan
795da8f54b
Wallet: replace Guava newArrayList()
with singletonList()
2023-03-26 11:16:09 +02:00
Sean Gilligan
b7cf58ba6d
GuiUtils: replace Guava Throwables.getRootCause()
with private helper method
...
Private helper walks up the chain and avoids loops.
2023-03-26 01:50:02 +01:00
Sean Gilligan
66d96ab29d
WalletPasswordController: remove use of Guava Longs
...
Use ByteBuffer in private methods for long to byte[] conversion.
2023-03-26 01:47:03 +01:00
Sean Gilligan
8566819ff2
SendMoneyController: use CompletableFuture
not Guava
...
This is the last remaining use of Guava futures in
WalletTemplate.
2023-03-26 01:35:34 +01:00
Andreas Schildbach
7302a24962
.gitlab-ci.yml: create job artifacts
2023-03-26 00:28:11 +01:00
Andreas Schildbach
1753bc4ea7
.gitlab-ci.yml: print build environment at end of log
2023-03-25 21:03:43 +01:00
Andreas Schildbach
26e5500ae8
.gitlab-ci.yml: append JDK to job names
2023-03-25 21:01:00 +01:00
Andreas Schildbach
b585f9f08e
KeyChainGroupTest: reduce false positive rate for the bloom filters
...
This will hopefully reduce spurious test failures.
2023-03-25 13:29:20 +01:00
Andreas Schildbach
3bbbf40fa4
Message: add back deprecated method unsafeBitcoinSerialize()
2023-03-25 13:19:59 +01:00
Andreas Schildbach
c581dfb791
ByteUtils: rework JavaDoc of all writeInt*()
helpers
2023-03-24 19:35:52 +01:00
Andreas Schildbach
47a5d73035
ByteUtils: rename all writeUInt*()
helpers to writeInt*()
...
This creates overloads in some cases.
2023-03-24 19:34:06 +01:00
Sean Gilligan
f3c4b5fcf4
BloomFilter: use signed integer for the nonce (nTweak)
...
It's arbitrary data and we're not supposed to do math on it, so it's
safe to use a signed Java `int`.
Also use `new Random().nextInt()` to generate the nonce. We were
previously generating a random double, multiplying by `Long.MAX_VALUE`
and then truncating the low 32-bits of the long. Using `.nextInt()`
might actually generate MORE randomness since there will be no truncation.
2023-03-24 18:34:09 +01:00
Andreas Schildbach
b39ad1904d
Message: remove check against max message size in checkReadLength()
...
Checking against the remaining bytes in the payload should be enough.
The payload can't be longer than max message size.
2023-03-24 16:15:21 +01:00
Andreas Schildbach
9b3b11fd0f
Message: allow parse()
to throw BufferUnderflowException
...
The exception is now handled by the one caller to `parse()`, rather than
by various helpers.
2023-03-24 16:08:17 +01:00
Sean Gilligan
08e8c0c022
BloomFilterTest: use hex representation for constant
...
This avoids the `L` and also shows more clearly the
bit-pattern being used.
2023-03-24 15:44:34 +01:00
Andreas Schildbach
48f4d143f3
FeeFilterMessage: disallow negative fee rate
...
Fee rates are signed "int64_t", according to BIP-133. The spec doesn't
mention, but it goes without saying that negative fee rates make no
sense.
2023-03-24 15:32:54 +01:00
Andreas Schildbach
31d98af8f6
TransactionOutput: disallow negative values
...
Negative values obviously make no sense, except for `-1` which is
used as a sentinel value when calculating `SIGHASH_SINGLE` signatures,
so unfortunately we have to allow that here.
2023-03-24 15:30:02 +01:00
Andreas Schildbach
5bb1e123b6
VersionMessage: serialize negative time
values
...
Surprisingly, version messages serialize time as a `int64_t` (signed 64-bit integer).
2023-03-24 15:26:10 +01:00
Andreas Schildbach
7a0939f7e4
Ping: require a nonce value
...
Pings without nonce are not protocol compliant since version 60001.
Our minimum version is at 70000.
2023-03-24 13:16:34 +01:00
Sean Gilligan
42eb791d39
SeedPeers: use ByteBuffer
directly for address conversion
...
IPv4 addresses in `int` form don't care about signedness, and we
won't do math on them.
2023-03-24 11:31:26 +01:00
Andreas Schildbach
94bdbc29a0
UTXO, TransactionOutputChanges: remove unused serialization code
...
This was left over when we removed `UTXOsMessage` in d07e75e2a8
.
2023-03-24 10:49:32 +01:00
Andreas Schildbach
dadeb71cb3
VersionMessage: use skipBytes()
to skip over a value we don't ware about
2023-03-23 18:47:39 +01:00
Andreas Schildbach
ed57fa08ed
Message: make serializer
field immutable
...
This requires two new pass-through constructors, but in return we
get rid of the setter.
2023-03-23 13:34:31 +01:00
Andreas Schildbach
b8f77abe62
SeedPeers: fix conversion of int representation of IPv4 addresses to InetAddress
...
Usage of `writeUint32LE()` is wrong on two counts:
* `InetAddress.getByAddress()` expects big-endian values, and the method
above encodes as little-endian.
* Java int is signed, even if the Java hex literal appears unsigned. The
above method expects unsigned values.
So we add the previously missing `writeInt32BE()` to ByteUtils and use it.
2023-03-23 00:28:37 +01:00
Andreas Schildbach
72370d0ff6
Sha256Hash: add reading from and writing to ByteBuffer
...
Includes a test.
2023-03-22 22:19:54 +01:00
Andreas Schildbach
30dec4ff7c
Message: replace readBytes(1)[0]
with readByte()
2023-03-22 21:39:05 +01:00