Mike Hearn
5219a42df9
Wallet: refactor saving code into a separate class that uses a Java scheduled executor rather than the messy and likely buggy custom threading code. Synchronously save the wallet on way more codepaths, now we only do write coalescing for new best block notifications.
2013-07-10 16:46:56 +02:00
Matt Corallo
acc2877329
Reject dust outputs with ensureMinRequiredFee ( fixes #429 )
2013-07-10 16:28:29 +02:00
Mike Hearn
48cee2e668
KeyCrypterScrypt: Fix some minor code style issues.
2013-07-10 16:27:01 +02:00
Mike Hearn
53dc5c2e6a
Make Andreas happy. Resolves issue 423.
2013-07-10 16:23:05 +02:00
Matt Corallo
b51485ca23
Peer Bloom filter generation -> new PeerFilterProvider interface
2013-07-10 15:59:51 +02:00
Matt Corallo
2061d28e52
Use direct byte buffers instead of normal ones in niowrapper
2013-07-10 15:55:21 +02:00
Matt Corallo
e6965d0217
Always accept time-locked txn we create, make refund tx source self
2013-07-10 15:53:59 +02:00
Matt Corallo
1277df32d8
Fix a few minor typos.
2013-07-10 15:53:19 +02:00
Mike Hearn
2c44a4fad7
PeerGroup: Require Bloom-filtering capable peers by default. Resolves issue 421.
2013-07-10 15:52:09 +02:00
Mike Hearn
34d804ecca
PeerGroup: fix naming of vPingTimer
2013-07-10 15:33:24 +02:00
Mike Hearn
5b78601b4a
Wallet: make last seen block height default to zero not -1
2013-07-10 15:32:36 +02:00
Mike Hearn
d92314dd18
Peer/Group: Clear some static analysis warnings related to the (buggy) optionality of the block chain and some threading issues.
2013-07-10 15:32:20 +02:00
Mike Hearn
4c0930a961
AbstractBlockChain: Correct minor logging issue
2013-07-10 14:42:47 +02:00
Mike Hearn
8a74b3da2c
Minor logging fixes. Resolves issue 423.
2013-07-09 14:57:20 +02:00
Mike Hearn
f473267da2
Exception handling: provide a global variable in Threading that receives all unhandled exceptions from all framework threads.
...
Replaces the now removed PeerEventListener.onException() callback.
2013-07-09 14:47:38 +02:00
Mike Hearn
ea19d3164a
TCPNetworkConnection: allow manually constructed one-offs to be given a Peer object.
2013-07-09 14:43:37 +02:00
Mike Hearn
e3e80c357d
BitcoinSerializer: Remove some optimisations that date from the time when someone was trying to make bitcoinj into a super scalable multiplexor, and allow writing of arbitrary byte arrays that get checksummed and prefixed.
2013-07-09 14:43:12 +02:00
Mike Hearn
975dea6e16
VersionAck: Delete some whitespace
2013-07-09 14:42:28 +02:00
Matt Corallo
09752848bb
Announce transactions to wallet in order even from FilteredBlocks
2013-07-09 13:05:35 +02:00
Mike Hearn
a05d69537d
Remove JavaDocs from AbstractWalletEventListener so IDEs will automatically inherit them.
2013-07-08 13:24:32 +02:00
Mike Hearn
24b825252f
Fix a bogus assert in Threading
2013-07-05 14:21:43 +02:00
Mike Hearn
8869e57fa0
AbstractBlockChain: add a bit more logging.
2013-07-05 13:49:43 +02:00
Mike Hearn
573e04491c
Threading: fix the user thread to be daemon so programs can shut down properly again.
2013-07-05 12:23:28 +02:00
Mike Hearn
a8a8d3a044
AbstractBlockChain: Fix some nullity annotations and a few other misc things.
2013-07-05 11:56:27 +02:00
Mike Hearn
d316cf316f
AbstractBlockChain: Replace mention of BOBS in class javadoc with SPVBlockChain.
2013-07-05 11:48:28 +02:00
Mike Hearn
aaa71c0811
Fix AbstractBlockChain.removeListener. Found by IntelliJ.
2013-07-05 11:47:42 +02:00
Mike Hearn
35a7f38d86
Make block chain listeners run in given executors and default to the user thread.
2013-07-05 10:54:21 +02:00
Mike Hearn
2537ff47b5
Extend executor-specific event handlers to PeerGroup and Peer. Rename Threading.sameThread to Threading.SAME_THREAD
2013-07-05 10:54:21 +02:00
Mike Hearn
50b71979bb
Fix removal of event listeners. Make PeerGroup also allow specification of arbitrary executors and run event listeners in those.
2013-07-05 10:54:21 +02:00
Mike Hearn
c552c0cbdd
Move ListenerRegistration out into utils and make it generic.
2013-07-05 10:54:21 +02:00
Mike Hearn
f6d14db8e6
Wallet: allow choice of executor to run event listeners in, default to user thread.
2013-07-05 10:54:20 +02:00
Mike Hearn
3185923d4a
Add @Override annotations to PeerEventListener.
2013-07-05 10:54:20 +02:00
Mike Hearn
cdd1c5e38a
Change onKeyAdded to be onKeysAdded that takes a list, and run it in the user thread.
2013-07-05 10:54:20 +02:00
Mike Hearn
0907a3852b
Add a test to ensure that wallet listeners that throw exceptions don't prevent the others from running.
2013-07-05 10:54:20 +02:00
Mike Hearn
dd83d55df4
Add JavaDocs for TransactionConfidence.Listener.Reason
2013-07-05 10:54:19 +02:00
Mike Hearn
a28cb5c59a
Don't mark transactions that have just been completed as pending, and then fix a stupid efficiency bug in AbstractBlockChain that was revealed by the change.
2013-07-05 10:54:19 +02:00
Mike Hearn
6b7d653614
Major rework of how confidence listeners are called:
...
* API change: TransactionConfidence.Listener now takes a reason enum describing the general class of change.
* Confidence listeners are now invoked in the user code thread as well, thus eliminating any chance of unexpected re-entrancy.
* The wallet batches up confidence changes and executes them all at the end of major operations, avoiding confusing intermediate transitions that could occur in the previous design.
* Much code has been simplified as a result and it's now harder to screw up.
2013-07-05 10:54:19 +02:00
Mike Hearn
5de80dfedf
Introduce a user code thread which is used for running event listeners.
...
This ensures that when user provided event listeners are invoked, we're not holding any locks at that time and thus event listeners can do whatever they want with no risk of accidental inversions or deadlocks. A utility method is available to wait for all preceding events that were triggered to complete, which is useful for unit tests. Reimplement how balance futures work in order to avoid the wallet registering an event handler on itself, this means you cannot accidentally deadlock yourself by running getBalanceFuture().get() inside an event listener.
Future changes will modify how transaction confidence listeners are run to work the same way, and make other kinds of event listener run in the user code thread as well.
The user code mechanism is usable with any executor, opening up the possibility of automatically relaying event listeners into GUI threads for some kinds of apps.
2013-07-05 10:54:18 +02:00
Mike Hearn
b87879fd42
Rename the Locks class to Threading in preparation for more stuff.
2013-07-05 10:54:18 +02:00
Mike Hearn
1296074e8f
Add another Block c'tor. Resolves issue 424.
2013-07-04 12:12:52 +02:00
Mike Hearn
4265e9c692
Optimize imports in payment channels.
2013-07-03 15:18:20 +02:00
Matt Corallo
715e3596d2
Fix another deadlock when storing channel in wallet
2013-07-03 14:53:59 +02:00
Matt Corallo
8fd8683461
JavaDoc in StoredServerChannel + updateValueToMe s/public//
2013-07-03 14:53:54 +02:00
Matt Corallo
c36e725d7d
Use Reentrant locks in a few more places, fix deadlocks(s) on close
2013-07-03 14:53:46 +02:00
Mike Hearn
2d84b3c27b
Deasymock PaymentChannelStateTest
2013-07-03 14:49:43 +02:00
Mike Hearn
a5940282d0
Rewrite ChannelConnectionTest to avoid easyMock, duplication and busy wait loops.
2013-07-02 11:55:37 +02:00
Mike Hearn
93abc34e08
Narrow PeerGroup -> TransactionBroadcaster in the channels code.
2013-07-01 13:17:57 +02:00
Mike Hearn
ec51162ae4
Correct PaymentChannelServerListener class javadoc.
2013-07-01 13:13:29 +02:00
Matt Corallo
4908c241f7
Implement server-side and client-side payment channel protocols.
...
This implements micropayment payment channels in several parts:
* Adds PaymentChannel[Server|Client]State state machines which
handle initialization of the payment channel, keep track of
basic in-memory state, and check data received from the other
side, based on Mike Hearn's initial implementation.
* StoredPaymentChannel[Client|Server]States manage channel
timeout+broadcasting of relevant transactions at that time,
keeping track of state objects which allow for channel
resume, and are saved/loaded as a WalletExtension.
* Adds PaymentChannel[Client|Server] which manage a connection
by getting new protobufs, generating protobufs for the other
side, properly stepping the associated State object and
ensuring the StoredStates object is properly used to save
state in the wallet.
* Adds PaymentChannel[ClientConnection|ServerListener] which
create TCP sockets to each other and use
PaymentChannel[Client|Server] objects to create/use payment
channels.
The algorithm implemented is the one described at
https://en.bitcoin.it/wiki/Contracts#Example_7:_Rapidly-adjusted_.28micro.29payments_to_a_pre-determined_party
with a slight tweak to use looser SIGHASH flags so that the
Wallet.completeTx code can work its magic by adding more inputs if
it saves on fees.
Thanks to Mike Hearn for the initial state machine implementations
and all his contracts work and Jeremy Spilman for suggesting the
protocol modification that works with non-standard nLockTime
Transactions.
2013-06-27 14:15:49 +02:00
Matt Corallo
3d74934b6f
Add a length-prefixed protobuf connection server/client.
...
This forms the base for payment channel network connections, with
a simple single-threaded server which accepts new connections, a
simple single-threaded client which makes a single connection to a
server, and a ProtobufParser which handles data generated by a
connection, splits them into Protobufs and provides a reasonable
interface to users who wish to create/accept protobuf-based
connections.
2013-06-27 14:15:44 +02:00
Matt Corallo
65202b8ab5
Add support for WalletExtensions to WalletAppKit.
2013-06-27 14:15:43 +02:00
Matt Corallo
880b413b24
Add a TransactionBroadcaster abstraction to PeerGroup.
2013-06-27 14:15:43 +02:00
Matt Corallo
7cd38bc77a
Wallet: Enable autoSaveListener for 0-delay autosave.
2013-06-27 14:15:42 +02:00
Mike Hearn
c4572696b1
Some fixes to wallet serialization:
...
1) Switch the outpoint index field to be uint32 and fix isCoinBase() to consider the unsigned versions only. Resolves issue 420.
2) Regenerate the protobuf and fix an out of date definition in WalletProtobufSerializer that it exposed.
2013-06-27 14:01:02 +02:00
Mike Hearn
7f68923529
KeyCrypterScryptTest: Clear static analysis warnings and port to junit 4.
2013-06-24 17:52:09 +02:00
Mike Hearn
0c00b24bbc
Disable native secp256k1 so DCE can delete the relevant code entirely.
2013-06-24 17:48:58 +02:00
Mike Hearn
fbd767320c
Delete the long since obsolete DiskBlockStore.
2013-06-20 15:10:47 +02:00
Mike Hearn
85cd4499f9
Delete NamedSemaphores. It's something that was introduced by Miron
...
and looks like a broken attempt to implement file locking. Neither
store that tried to use it is supporte anymore so don't bother replacing
with real file locks.
2013-06-19 15:43:18 +02:00
Mike Hearn
4d4768ba8c
Fixup last commit
2013-06-19 15:34:05 +02:00
Mike Hearn
ad3bb53327
Allow TransactionInput.verify to take an output as a parameter.
2013-06-19 13:08:09 +02:00
Mike Hearn
f98088221e
Make TransactionOutput.getMinNonDustValue() more documented and provide a simpler function for it.
2013-06-19 11:30:27 +02:00
Mike Hearn
215a131f8b
Typo fix in ECKey
2013-06-19 11:30:27 +02:00
Mike Hearn
354446dd40
Add new helper methods to Transaction[Signature]
...
Add a method for signing a given input and use it.
Convert some code that was working with raw bytes to use TransactionSignature.
Rename Transaction.hashTransactionForSignature to just hashForSignature.
General API tweaks and cleanups.
2013-06-19 11:30:27 +02:00
Mike Hearn
57c1ecbd01
Refactor some code in ECKey into ECKey.ECDSASignature, and introduce a new TransactionSignature class.
...
It extends ECDSASignature and adds support for holding and working with sighash flags. Make some code use it instead of raw byte handling.
2013-06-19 11:30:26 +02:00
Mike Hearn
2149fea7e6
TODO: KeyCrypterScryptTest sometimes fails because key crypto is still relying on padding bytes in some cases.
2013-06-18 17:35:35 +02:00
Mike Hearn
5be443c2d3
Clear some minor static analysis warnings.
2013-06-18 16:33:56 +02:00
Mike Hearn
8b8bf50144
Version 0.10-SNAPSHOT
2013-06-18 16:33:06 +02:00
Mike Hearn
bfbc9c0cf6
Don't use my DNS seed. It's not running on secure hosting so I shut it down.
2013-06-17 16:11:20 +02:00
Mike Hearn
4494d34be0
Use correct private key header byte in reg test mode.
2013-06-17 15:43:57 +02:00
Mike Hearn
960bf2626b
DumpedPrivateKey: Verify that the final byte is set to 1. Resolves issue 411.
2013-06-17 15:43:46 +02:00
Mike Hearn
d8a0cc59c1
Re-order ECKey imports.
2013-06-17 14:28:48 +02:00
Matt Corallo
be88a05c93
Make TransactionOutput.getMinNonDustOutput exact.
2013-06-17 11:07:55 +02:00
Matt Corallo
d6fec93be3
Add canonical signature/pubkey methods to ECKey and tests therefor.
2013-06-17 11:07:55 +02:00
Matt Corallo
ec3708d159
Introduce SIGHASH_ANYONECANPAY_VALUE to replace 0x80 constants.
2013-06-17 10:59:25 +02:00
Matt Corallo
1e24dea569
Fix wallet extensions by adding setKeyCrypter and using auto-save.
2013-06-17 10:59:15 +02:00
Matt Corallo
e2e72a275d
Fix deserialization of wallet transactions with a far-out locktime.
2013-06-17 10:59:06 +02:00
Matt Corallo
63be9b705b
Make all addOutputs and addInputs return the newly added in/output.
2013-06-17 10:59:00 +02:00
Matt Corallo
5f1a9c246b
Add Wallet.maybeCommitTx to not throw when tx is already in pending
2013-06-14 15:04:31 +02:00
Mike Hearn
74110a12d9
Note that a tx of exactly 1000 bytes may overpay.
2013-06-12 17:42:18 +02:00
Mike Hearn
c91e811fc7
Make SendRequest.completed back to being private.
2013-06-12 17:26:12 +02:00
Mike Hearn
87ab410a2f
Make feePerKb apply to the first kilobyte as well.
2013-06-12 17:16:07 +02:00
Mike Hearn
c9f0ecae3d
Delete 3 fee tests that weren't adding any coverage and Matt can't remember what they're for.
2013-06-12 16:21:02 +02:00
Mike Hearn
20049fb9f8
Use RegTestParams.get()
2013-06-12 11:11:59 +02:00
Mike Hearn
80b66a8945
Split a bit more code out of the giant fee calculation function.
2013-06-11 12:29:28 +02:00
Mike Hearn
b865e6a510
Make Transaction.addInput(TransactionOutput) return the created input. Use it to make a minor simplification.
2013-06-11 12:24:14 +02:00
Mike Hearn
6077d32c4a
Refactor fee calculation out of wallet.completeTx(). Introduce a (not widely used yet) InsufficientMoneyException.
2013-06-11 12:21:20 +02:00
Mike Hearn
46914b12b7
Make completeTx once again return a bool (pending replacement with an exception), and update the fee field with the calculated fee.
2013-06-11 11:40:40 +02:00
Mike Hearn
afaebd062a
Rename enforceDefaultClientFeeRelayRules to ensureMinRequiredFee which is shorter.
2013-06-10 16:02:38 +02:00
Mike Hearn
9a389c9475
Move enforceDefaultClientFeeRelayRules into SendRequest instead of being a parameter.
...
Make WalletTool enforce the rules instead of ignoring them (this was an oversight).
2013-06-10 15:51:34 +02:00
Matt Corallo
518b7edcbd
Handle null hostNames in DnsDiscovery (some NP have that).
2013-06-10 13:38:01 +02:00
Matt Corallo
c9d411e8e7
Add two new WalletExtension access methods.
2013-06-10 13:36:33 +02:00
Matt Corallo
a3f1fe5390
Tweak WalletExtension slightly.
2013-06-10 13:36:27 +02:00
Matt Corallo
a7987585b8
Catch out-of-bound reads and rethrow as ProtocolExceptions.
2013-06-10 13:36:20 +02:00
Matt Corallo
dbf7728b4f
Add uint64ToByteArrayLE to Utils.
2013-06-10 13:36:14 +02:00
Mike Hearn
a525f878ca
More fixing of regtest params.
2013-06-07 16:15:36 +02:00
Mike Hearn
90fda575b6
Make bitcoind comparison tool simple to run again.
2013-06-07 13:59:20 +02:00
Mike Hearn
651880405d
Fix regtest params.
2013-06-07 13:59:10 +02:00
Mike Hearn
1288774ee4
Fix a generics warning.
2013-06-05 16:58:58 +02:00
Mike Hearn
50539ff6c2
Remove nonsensical comment: shuffling inputs does not grant extra privacy.
2013-06-05 16:49:18 +02:00
Mike Hearn
033e7e7aab
Some minor clarity improvements to DefaultCoinSelector.
2013-06-05 16:48:02 +02:00
Mike Hearn
0bdba0318a
Clear some static analysis warnings from the inspector - many assertions could be simplified and assertEquals is (expected, actual) not (actual, expected).
2013-06-05 16:41:14 +02:00
Matt Corallo
7daa54b12c
Add a few more fee solver tests.
2013-06-05 16:29:16 +02:00
Matt Corallo
c9c107afaf
Make getBalance() significantly faster.
2013-06-05 16:29:11 +02:00
Matt Corallo
72f346c10f
Add tests for user-specified inputs in SendRequests.
2013-06-05 16:29:06 +02:00
Matt Corallo
375e553bdc
Add basic fee solver to Wallet.completeTx and extensive testing.
...
This also adds support for SendRequests which have some predefined
inputs (already signed), which will be tested in a later commit.
2013-06-05 16:28:35 +02:00
Matt Corallo
86046b7122
Add comments on dust output values and constants/util to calc them
2013-06-05 16:24:39 +02:00
Matt Corallo
4b1e45fae2
Make DefaultCoinSelector aware of priority, not just depth.
2013-06-05 16:11:35 +02:00
Matt Corallo
842b30e2ca
Add basic support for existing inputs in Transaction.signInputs
2013-06-05 16:11:27 +02:00
Matt Corallo
fd4845fa90
Add new data-driven test-case
2013-06-05 14:10:42 +02:00
Matt Corallo
c6b3b82a66
Fix TxOut serialization (fixes SIGHASH_SINGLE hashing)
2013-06-05 14:10:41 +02:00
Matt Corallo
07baa230f3
Wallet: Check if tx is time-locked not just has a lock time
2013-06-05 14:10:41 +02:00
Matt Corallo
e2fea77a3d
Catch potential exception on invalid signatures
2013-06-05 14:10:41 +02:00
Matt Corallo
fb912322ff
Replace Block.fakeClock with Utils.mockClock
2013-06-05 14:10:41 +02:00
Matt Corallo
5369ca925a
Add Transaction.clearIn/Outputs and make getIn/Outputs unmodifiable
2013-06-05 14:10:40 +02:00
Matt Corallo
5993f2dc6c
Further global replace of NetworkParameters.* -> *.get()
2013-06-05 14:10:40 +02:00
Mike Hearn
f4c3b6a49d
Global search and replace to use the param-class specific instance getters and prodNet -> MainNetParams.
...
The old "prodnet" name could be confusing to non-native speakers or people who just haven't been exposed to Google lingo. Main net is more idiomatic.
Conflicts:
tools/src/main/java/com/google/bitcoin/tools/BlockImporter.java
2013-06-05 14:10:40 +02:00
Mike Hearn
52586edb33
NetworkParameters: Refactor out into separate classes.
...
Hide fields behind getters and make unit tests create anonymous subclasses
to tweak them rather than overwriting global variables.
Introduce a regtest params class for use in the comparison tool.
Conflicts:
core/src/test/java/com/google/bitcoin/core/BitcoindComparisonTool.java
core/src/test/java/com/google/bitcoin/core/FullPrunedBlockChainTest.java
2013-06-05 14:10:39 +02:00
Mike Hearn
f6f290cc05
NetworkParameters: hide more params behind a getter.
2013-06-05 14:10:39 +02:00
Mike Hearn
1f005d7b3d
NetworkParameters: hide packet magic behind a getter.
...
Conflicts:
tools/src/main/java/com/google/bitcoin/tools/BlockImporter.java
core/src/main/java/com/google/bitcoin/utils/BlockFileLoader.java
core/src/test/java/com/google/bitcoin/core/FullBlockTestGenerator.java
2013-06-05 14:10:39 +02:00
Mike Hearn
8043bc335b
NetworkParameters: hide port behind a getter.
2013-06-05 14:10:38 +02:00
Mike Hearn
ec62bbdeab
NetworkParameters: hide genesis block behind a getter.
...
Conflicts:
core/src/test/java/com/google/bitcoin/core/FullBlockTestGenerator.java
2013-06-05 14:10:38 +02:00
Mike Hearn
619495875c
Block: Make some things public that aren't going to change.
...
Conflicts:
core/src/main/java/com/google/bitcoin/core/Block.java
2013-06-05 14:10:38 +02:00
Matt Corallo
28292b45a5
Implement dumb Comparable in Sha256Hash.
2013-06-05 14:10:37 +02:00
Matt Corallo
6cdfad43a3
Make Tx.connect public by exposing enums + tweak DISCONNECT_ON_CONFLICT
2013-06-05 14:10:37 +02:00
Matt Corallo
f7c09d74ea
Introduce Transaction.hasLockTime() and use it where appropriate.
2013-06-05 14:10:37 +02:00
Matt Corallo
2bd9531da6
Add txout.setValue, public decodeFromOpN+appendByte new MultiSig.
2013-06-05 14:10:37 +02:00
Matt Corallo
b840ddfcc8
Require bitcoind replies to a inv instead of just sending blocks.
...
This makes b57 testing actually useful.
2013-06-05 14:10:36 +02:00
Matt Corallo
60520ba17a
Add new data-driven tests from the reference client
2013-06-05 14:10:36 +02:00
Matt Corallo
fad5356bd9
Properly uncache scriptSig in TransactionInput.setScriptBytes
2013-06-05 14:10:36 +02:00
Matt Corallo
70685745c3
Fix a possible ArrayIndexOOBEx in Script processing (cleaner error).
2013-06-05 14:10:36 +02:00
Matt Corallo
304bc705b8
Fix script parsing bug and test for it (partially reverts 7837a54
)
2013-06-05 14:10:23 +02:00
Matt Corallo
e8ea5cea7c
Re-enable port selection as pull-tester will need it
2013-06-04 22:18:11 +02:00
Matt Corallo
a1c1a1117a
Rename blocks in FullBlockTestGenerator to make new tests easier
2013-06-04 22:18:11 +02:00
Matt Corallo
f9ebf56047
Test importing first 100K of blocks.
2013-06-04 22:18:11 +02:00
Matt Corallo
68e6228356
Handle duplicate chain.add calls significantly more effeciently.
2013-06-04 22:18:11 +02:00
Matt Corallo
729f2f5312
Store blocks on disk during BitcoindComparisonTool to save memory.
2013-06-04 22:18:11 +02:00
Matt Corallo
a131d08a58
Move BlockImporter to a util and make it an Iterator<Block>
2013-06-04 22:18:11 +02:00
Matt Corallo
1dadb33c28
Split expensive blocks into sigExpensive and largeReorg.
2013-06-04 22:18:11 +02:00
Matt Corallo
9cbd824457
Create very large reorg test.
2013-06-04 22:18:10 +02:00
Matt Corallo
0390bc9371
Add height info to FullBlockTests, to verify the tests are correct.
2013-06-04 22:18:10 +02:00
Matt Corallo
9ddbcb88b9
Make txCounter work for larger values.
2013-06-04 22:18:10 +02:00
Matt Corallo
2e5ca9e72b
Allow FullBlockTestGenerator to indicate maximum reorg depth.
2013-06-04 22:18:10 +02:00
Matt Corallo
0ada33d2b1
Provide more opacity into exceptions.
2013-06-04 22:18:10 +02:00
Matt Corallo
939337b2db
Fix premature optimization in H2FullPrunedBlockStore (resets state)
...
This replaces the H2FullPrunedBlockStore schema with one that will
take (maybe) some more disk space while being a good bit faster.
The tradeoff made was really not worth it.
Also adds a version field to settings database incase something
other than schema changes in the future.
2013-06-04 22:18:10 +02:00
Matt Corallo
59e096e2ea
Add optional support native ECDSA (designed for sipa's impl).
...
This could be significantly more optimized if we avoided crossing
the JNI barrier as often, but as it is its waaay faster than
BouncyCastle.
2013-06-04 22:18:10 +02:00
Matt Corallo
70bffcd6f4
Move onPeerConnected to after VerAck.
2013-05-22 22:46:10 +02:00
Mike Hearn
f1750679b6
Use non-deprecated asserts in AlertMessageTest. Found by IntelliJ inspections.
2013-05-08 16:33:22 +02:00
Mike Hearn
2830d48ac1
Simply a few assertions.
2013-05-08 15:42:27 +02:00
Mike Hearn
1463213f25
Use port 18444 for regtest mode.
2013-05-08 14:30:15 +02:00
Mike Hearn
9d5b3865f5
Wallet: remove an unused variable from reorganize().
2013-05-07 12:48:34 +02:00
Mike Hearn
e2291d2fb4
Wallet: remove the affectedUs check in reorganize(). It was buggy, and if it had worked it would have introduced other issues. We always need to process the entire reorg to keep the depth and workDone counters on transactions accurate.
2013-05-07 12:00:50 +02:00
Mike Hearn
4886a137bc
TransactionConfidence: make accessors return zero rather than throw when pending, and add a method to get a depth future.
2013-05-06 17:59:31 +02:00
Mike Hearn
bacc67f26f
Peer: fix buggy log statement.
2013-05-06 17:34:48 +02:00
Mike Hearn
857da6bb29
AbstractBlockChain: add a helper method to create futures that complete when the chain reaches a particular height.
2013-05-06 16:23:08 +02:00
Mike Hearn
9a20c39b15
A few simplifications suggested by IntelliJ
2013-05-06 16:21:32 +02:00
Mike Hearn
c64453f835
Wallet: change the extensions API.
...
The old API was very limiting. Rather than have extensions be a single object that creates subclasses of the Wallet class, allow arbitrary objects to be attached to Wallets. Objects know if they are mandatory and how to serialize themselves. A wallet can have as many extensions as wanted in this way.
2013-05-06 15:40:36 +02:00
Mike Hearn
3eb3dbcf89
Better output for unusual script types in Transaction.
2013-05-06 13:53:39 +02:00
Mike Hearn
ee0b56180b
WalletAppKit - block on shutdown.
2013-05-06 13:53:15 +02:00
Mike Hearn
82e056cab7
Rename Wallet.waitForBalance() to be Wallet.getBalanceFuture().
2013-05-06 12:00:39 +02:00
Mike Hearn
e8f1418865
Wallet: Add a Wallet.waitForBalance() method.
2013-05-02 16:51:29 +02:00
Mike Hearn
dddf02d6a1
Script: Use Guava ImmutableMap for the opcodes. This is more memory efficient. They could also be lazy initialized later if we need to.
2013-04-29 14:16:48 +02:00
Mike Hearn
69537c0bf0
Script: some minor tweaks and use the ScriptOpCodes parsing in ScriptTest.
2013-04-29 14:10:36 +02:00
Alexander Lolis
52cec7f6be
Refactored the huge switch. Replaced it with a HashMap which contains OpCode -> String instead; less lines
...
Implemented getOpCode method and added a HashMap which contains String -> OpCode for the lookup
2013-04-29 13:41:03 +02:00
Mike Hearn
aa883b48b1
Wallet: Rewrite re-org handling to be simpler and use less code. And hopefully fix some bugs along the way.
2013-04-26 16:42:15 +02:00
Mike Hearn
5ae00d4e20
Simplifications to the wallet code.
...
Wallet: Remove/deprecate NOT_IN_BEST_CHAIN as a confidence type.
TxConfidence: Rename NOT_SEEN_IN_CHAIN -> PENDING which is more precise and consistent.
PeerGroup: Fix definition of "mined"
2013-04-26 16:42:14 +02:00
Mike Hearn
37290fe882
Transaction: Clear depth/work data when setting confidence type to pending.
2013-04-26 16:42:13 +02:00
Mike Hearn
83136a2b02
Transaction: Better toString() for coinbases
2013-04-26 16:42:13 +02:00
Mike Hearn
d9c21d58c7
Make wallet.getChangeAddress() visible.
2013-04-26 16:41:33 +02:00
Mike Hearn
ab7e8685b5
Fix a typo in ScriptOpCodes PUSHDATA2 string.
2013-04-26 16:41:23 +02:00
Mike Hearn
95e43566a6
Add a few more ECKey functions that accept wrapper objects.
2013-04-26 16:41:03 +02:00
Mike Hearn
8a63fbd075
ScriptBuilder: add a method that creates a multisig input script.
2013-04-26 13:51:00 +02:00
Mike Hearn
d537c8017a
Script: fix bug, OP_0/OP_FALSE is not invalid.
2013-04-26 13:50:30 +02:00
Mike Hearn
172f264ee2
Add a Transaction.hashTransactionForSignature prototype that accepts Script objects instead of byte arrays.
...
This could all be cleaned up and made more consistent in future.
2013-04-26 13:47:26 +02:00
Mike Hearn
38b40a245a
Help IntelliJ static analysis understand that nullity is impossible at that point in the code.
2013-04-26 13:46:57 +02:00
Mike Hearn
d113cbfc66
Script: Introduce a builder class that makes it easier to assemble scripts without writing raw byte streams.
2013-04-24 19:15:06 +02:00
Mike Hearn
752e7006e5
Move ScriptTest.
2013-04-24 18:23:20 +02:00
Mike Hearn
2f790520f4
Move ScriptTest
2013-04-24 18:08:11 +02:00
Mike Hearn
7db7f89582
Move Script and ScriptOpCodes to a new script package.
2013-04-23 18:51:08 +02:00
Mike Hearn
775af907ae
Widen the scoping on a few methods in preparation for moving the Script class.
2013-04-23 17:57:16 +02:00
Mike Hearn
7837a54bc0
Script: refactor in preparation for making it easier to manipulate and construct scripts using chunked form.
2013-04-22 17:08:10 +02:00
Mike Hearn
5ec4f43dee
Expand Block.toString() to use StringBuilder.
2013-04-22 17:08:10 +02:00
Mike Hearn
a0d2b36c9f
Script: ScriptChunk -> Script.Chunk and make it public.
2013-04-22 17:08:09 +02:00
Mike Hearn
80285832f8
Script: Move opcodes out to a separate ScriptOpCodes class. Improve a couple of javadocs in Transaction.
2013-04-22 17:08:07 +02:00
Mike Hearn
44ead8b6a1
Script: couple of minor reformattings.
2013-04-22 17:08:06 +02:00
Mike Hearn
e18b9d363e
Script: add support for crafting multisig outputs and hide program behind Script.getProgram()
2013-04-22 17:08:05 +02:00
Mike Hearn
f88bdc5fe3
Wallet: make keychain private and add a remove method.
2013-04-22 13:45:38 +02:00
Mike Hearn
1341529228
Script: refactor signature checking out into separate methods.
2013-04-19 16:01:55 +02:00
Mike Hearn
c53a137ca7
Pull some code up from WalletTest into a superclass to make writing test cases that need wallets+stores easier.
2013-04-19 15:20:46 +02:00
Mike Hearn
b5b984a741
BitcoindComparisonTool: minor fixes
2013-04-19 13:14:28 +02:00
Mike Hearn
82171f5b50
Deprecate the getFromAddress() getters and simplify the Script c'tor by removing superfluous parameters.
2013-04-18 15:35:34 +02:00
Mike Hearn
197f0824ae
Use my DNS seed instead of Jeff's, as his is just a static list and the nodes often appear to be overloaded.
2013-04-13 21:56:15 +02:00
Mike Hearn
42b2cfa3f0
Don't unit test failed decryption message, that's annoying.
2013-04-13 21:54:47 +02:00
Mike Hearn
34b52c95fe
Add a WalletAppKit that wraps boilerplate stuff for setting up a new app. Will convert some example apps later.
2013-04-12 16:20:52 +02:00
Mike Hearn
8fa8a195c1
Transactions: Make some methods public and add a couple of accessor methods.
2013-04-12 16:20:52 +02:00
Mike Hearn
30eb1f8043
DownloadListener: don't print redundant noise after catching up with the chain.
2013-04-12 16:20:52 +02:00
Mike Hearn
dd4d237cd9
Allow modification of the inputs/outputs list.
2013-04-12 11:10:56 +02:00
Mike Hearn
d14ac586d7
Add a few basic sanity checks on transactions received from the network at various points, to avoid syntactically invalid transactions from getting into the system (e.g. no inputs or outputs).
2013-04-12 11:10:48 +02:00
Mike Hearn
21ba7e0260
MemoryPool: Clarify logging a bit.
2013-04-12 11:10:38 +02:00
Mike Hearn
5eebca2c7d
Wallet: Add some convenience methods for spending unconfirmed transactions.
2013-04-12 11:10:31 +02:00
Mike Hearn
f1845dd552
Version 0.9-SNAPSHOT
2013-04-11 14:27:35 +02:00