Sean Gilligan
19fcdcdd5b
TestFeeLevel, WalletTest: use Wallet.waitForConfirmations()
instead of Transaction.getConfidence().getDepthFuture()
2023-08-25 23:42:39 +02:00
Sean Gilligan
c4714f64f8
TransactionConfidence: store overriding txId, rather than transaction reference
...
This is a breaking change as `getOverridingTransaction()` has been removed with a replacement
of `getOverridingTxId()`.
Note that ProtoBuf serialization only stores the txId, so this change does not affect
serialization/deserialization.
2023-08-25 23:39:17 +02:00
Sean Gilligan
14eb9ebf00
TxConfidenceTable: reduce access to fields of WeakConfidenceReference
inner class
...
* Remove unneeded public modifier from `hash` member and constructor
* Make `hash` member final
2023-08-25 23:34:06 +02:00
Sean Gilligan
9da2182415
ListenerRegistration: use streams and Optional
in removeFromList()
2023-08-25 23:28:37 +02:00
Sean Gilligan
027037c8d5
TransactionFuture: make 2-arg getDepthFuture()
private
...
Hopefully we can deprecate or make private the 1-arg variant soon.
2023-08-25 23:26:00 +02:00
Sean Gilligan
624df43ada
DnsDiscovery: remove Linux gethostbyname bug workaround from 2015
2023-08-25 23:23:18 +02:00
Sean Gilligan
07ca73cce7
ByteArray: add defensive copy in bytes()
getter
2023-08-25 23:17:04 +02:00
Sean Gilligan
49f7ddbc0f
BlockImporter: support signet and regtest too
...
* Update usage for `args[1]` to "(mainnet|testnet|signet|regtest)"
* Use `BitcoinNetwork.fromString()` to parse `args[1]`
2023-08-25 23:14:04 +02:00
Sean Gilligan
b792354f55
BlockImporter: init chain
with ternary operator
2023-08-25 23:09:48 +02:00
Sean Gilligan
7f5fc6f2b7
BlockImporter: remove unsupported "Disk" option from usage
2023-08-25 23:07:01 +02:00
Sean Gilligan
59ab13680d
BlockFileLoader: make stream of ByteBuffer
available
...
* Inner class `BlockFileIterator` now iterates `ByteBuffer`
* `stream()` method calls `MessageSerializer.makeBlock()`
* `streamBuffers()` method makes raw `ByteBuffer` blocks available
* Add integration test `streamEntireBitcoindBlockChainAsBuffers()`
2023-08-23 18:21:01 +02:00
Sean Gilligan
62e2e013c4
BlockFileLoaderBitcoindTest: add blockstore test, improve output
2023-08-23 18:12:51 +02:00
Sean Gilligan
dd8c4ed372
BlockFileLoaderBitcoindTest: new (ignored) integration test that reads bitcoind blocks
...
This is ignored because:
a) It requires bitcoind installation with a blockchain directory
b) It takes about 1 hour to run
2023-08-23 18:08:56 +02:00
Sean Gilligan
47129b91e5
BlockFileLoader: buffer reading of block files
...
For now, use 16MB of buffer. That's enough to hold 16 "full" 1MB blocks.
2023-08-23 18:03:18 +02:00
Sean Gilligan
c5cbff1e47
BlockFileLoader: fix end-of-file handling issue
...
When reads return fewer bytes than requested, it's either an end-of-file
or an error. For now, we'll treat it as end-of-file.
2023-08-23 17:58:35 +02:00
Sean Gilligan
2248513489
BlockFileLoader: effectively final sizeBytes
, dataBytes
...
When reading blocks from the file stream use two effectively final
`byte[]` rather than reuse a single `byte[]`. This also makes the code
more readable by using more meaningful variable names.
2023-08-23 10:44:40 +02:00
Sean Gilligan
7776f7c907
BlockFileLoader: refactor to use single-file Block iterator internally
...
* Replace iterator that iterates all blocks in a file list with iterator
that iterates all blocks in a single file
* Rewrite stream() to use flatMap() on a stream of blocks in a file (internally
using BlockFileIterator)
* Rewrite iterator() to use stream()
This is a step towards a standalone capability to iterate/stream the blocks
in a single .dat file. It also is a step towards higher-performance
implementations that can use multiple threads.
2023-08-23 10:41:45 +02:00
Sean Gilligan
18126e368b
BlockFileLoader: add stream()
2023-08-23 10:37:19 +02:00
Sean Gilligan
46b2704f79
BlockFileLoader: correct Iterable
implementation
...
To be iterable, `iterator()` must be able to be called twice.
This is a breaking change, as users will no longer be able to use
`BlockFileLoader` directly as an `Iterator` and must call
`.iterator()` first. See the change in `BitcoindComparisonTool`.
Also adds tests.
2023-08-23 10:35:32 +02:00
Sean Gilligan
9d81529eaa
TransactionConfidence: convert Factory
to interface
2023-08-23 10:24:22 +02:00
Sean Gilligan
dd401ec04a
TransactionConfidence: make Factory
package private
...
Also mark as `@VisibleForTesting`.
2023-08-23 10:20:24 +02:00
Sean Gilligan
512a71d342
TransactionConfidence: make fields broadcastBy
, listeners
final
2023-08-23 10:13:46 +02:00
Sean Gilligan
f998802df7
TxConfidenceTable: extract private methods getConfidence()
and newConfidence()
...
This makes the code more functional and more readable.
2023-08-23 10:10:25 +02:00
Sean Gilligan
0a4592f189
BloomFilter: make hashFuncs
, nTweak
, and nFlags
final
2023-08-23 10:02:29 +02:00
Sean Gilligan
9bc0140910
Wallet: use Set
interface (instead of HashSet
) in internal declarations
2023-08-23 09:57:36 +02:00
Sean Gilligan
6de5c2b9a8
Wallet: declare CompletionException
on methods that complete transactions
...
Adjust the signature of these methods to match the actual behavior
and the JavaDoc.
Note: `BadWalletEncryptionKeyException` is a subclass
of `CompletionException` which is unchecked.
2023-08-11 14:11:38 +02:00
Sean Gilligan
5d708b62d4
Wallet: document return value of adjustOutputDownwardsForFee()
in JavaDoc
2023-08-10 19:39:57 +02:00
Sean Gilligan
cc88c3a9d4
Wallet: use functional style in method calcBloomOutPointsLocked()
2023-08-10 19:31:30 +02:00
Andreas Schildbach
05c625113f
TestFeeLevel: use messageSize()
not serialize().length
2023-08-10 19:26:53 +02:00
Andreas Schildbach
7c1209db51
Wallet: use messageSize()
not serialize().length
2023-08-10 19:24:24 +02:00
Sean Gilligan
60a37657d5
TransactionOutput: use messageSize()
not serialize().length
2023-08-10 19:20:28 +02:00
Andreas Schildbach
6b38774a38
PartialMerkleTree: rename method messageSize()
from getMessageSize()
...
Keep the old method as deprecated.
2023-08-10 18:59:58 +02:00
Andreas Schildbach
e7b11c0713
TransactionWitness: rename method messageSize()
from getMessageSize()
...
Keep the old method as deprecated.
2023-08-10 18:57:20 +02:00
Andreas Schildbach
c58232ef75
TransactionInput: rename method messageSize()
from getMessageSize()
...
Keep the old method as deprecated.
2023-08-10 18:54:15 +02:00
Sean Gilligan
210eaf91b3
TransactionOutput: rename method messageSize()
from getMessageSize()
...
Keep the old method as deprecated.
2023-08-10 18:49:25 +02:00
Andreas Schildbach
591ff3a027
TorUtils: new utility for Tor/Onion addresses
...
Move Tor/Onion related code there.
Also adds tests.
2023-08-10 18:11:47 +02:00
Andreas Schildbach
ef3d5decc0
Contexts.md: remove outdated reference to Tor/Orchid support
2023-08-09 18:01:59 +02:00
Sean Gilligan
16ac8751bb
Block: add new constructors to reduce mutability
...
* New constructors and static factory methods
* Update code to use the new constructors
* Remove `public` from `@VisibleForTesting` setters where possible
2023-08-09 16:55:24 +02:00
Sean Gilligan
734993db68
TransactionWitness: use non-deprecated Script.program()
2023-08-09 16:50:48 +02:00
Sean Gilligan
90427cd7cd
WalletAppKit: use non-deprecated Wallet.autosaveToFile()
2023-08-09 16:48:02 +02:00
Sean Gilligan
87a8383aae
TransactionOutput: clarify isDust()
JavaDoc
2023-08-09 16:46:15 +02:00
Andreas Schildbach
041f394a8a
DnsDiscovery, BtcFixedFormat: fix some JavaDoc links
2023-08-09 16:45:03 +02:00
Andreas Schildbach
1e4b633161
Wallet, SPVBlockStore: fix misspelled "whether" in JavaDocs
2023-08-09 16:42:11 +02:00
Sean Gilligan
370c5d382c
Wallet: add more diagnostic info to InsufficientMoneyException
...
Add a new constructor that provides more information about available funds, total
outputs, and fee in addition to amount missing. Use it in `Wallet.calculatFee` to
provide more information when the exception occurs.
2023-08-09 11:19:42 +02:00
Sean Gilligan
2f9ce85e07
Wallet: add more diagnostic info to CouldNotAdjustDownwards
exception
...
Add `output.value` and calculated `nonDustValue` to the exceptions message
string. Provide those values to the constructor in `calculateFee`
Add a constructor to parent class that takes a message String.
2023-08-09 11:14:44 +02:00
Sean Gilligan
b2b8c0a4a3
Transaction: use _
to separate thousands in constants
2023-08-09 10:42:24 +02:00
Sean Gilligan
fa323f745e
TransactionOutput: simplify method isDust()
...
Replace `if` with boolean logic and revise related comment.
2023-08-09 10:32:27 +02:00
Andreas Schildbach
f907a6b86f
Block: convert an if into expression with ternary operator
2023-08-09 00:51:36 +02:00
Andreas Schildbach
4e91a274d9
Block: annotate and document the null
transactions case for main constructor
2023-08-09 00:47:52 +02:00
Sean Gilligan
098e268808
MainNetParams, TestNet3Params, SigNetParams, RegTestParams: migrate GENESIS_TIME
constants to Instant
2023-08-09 00:40:25 +02:00