Mike Hearn
0342feee86
PeerGroup: restore and deprecate some removed addEventListener methods
2015-10-05 17:03:20 +02:00
Mike Hearn
f5db4b92be
Reverse the order of ListenerRegistration c'tor to restore compatibility with bcj 0.13
2015-10-05 17:01:02 +02:00
Mike Hearn
9bfce1bae0
Remove no longer used variable.
2015-09-30 17:21:39 +02:00
dexX7
be41d84fb9
Add more script edge condition tests
...
Original submission:
```
commit 1c54757f8678c9131ec55c128b8f1d5b6c73c2f9
Author: Dave Collins <davec@conformal.com>
Date: Wed May 6 10:16:18 2015 -0500
Add more script edge condition tests.
This commit adds some tests to the script_valid.json and tx_invalid.json
data which exercise more edge conditions that are not currently being
tested.
```
Via:
https://github.com/bitcoin/bitcoin/pull/6112
2015-09-30 00:34:08 +02:00
dexX7
a3d378bae6
Ensure "OP_0" and "false" have the same represenstation on stack
...
During the script execution via `executeScript()` certain operations
add boolean values to the stack.
Boolean values, which are added to the stack as result, are represented
as follows in Bitcoin Core:
- `true`: as vector with one element: `[1]`
- `false`: as empty vector with zero elements: `[]`
See:
- 48efbdbe98/src/script/interpreter.cpp (L244)
- 48efbdbe98/src/script/interpreter.cpp (L246)
However, in BitcoinJ the representation of `false` differs in some
cases, where it is represented as Byte array with one element, which
is zero: `[0]`
See:
- `OP_EQUAL`: 5dcf643975/core/src/main/java/org/bitcoinj/script/Script.java (L1025)
- `OP_CHECKSIG`: 5dcf643975/core/src/main/java/org/bitcoinj/script/Script.java (L1304)
- `OP_CHECKMULTISIG`: 5dcf643975/core/src/main/java/org/bitcoinj/script/Script.java (L1381)
At minimum this has an impact on the behavior of `OP_EQUAL` and
`OP_EQUALVERIFY`, when comparing something with `OP_FALSE`/`OP_0`.
This commit attemps to fix the issue, to mirror the verification
behavior of Bitcoin Core, by adding empty Byte arrays to the stack,
instead of Byte arrays with `0`.
2015-09-30 00:30:29 +02:00
Mike Hearn
7014810cf6
Peer: Break out the onTransactionBroadcast event into a separate interface.
2015-09-18 21:10:53 +01:00
Mike Hearn
c2a67aaa59
Fix thread safety issue when creating multiple wallets in parallel.
2015-09-16 14:11:19 +01:00
Andreas Schildbach
f20cb1132d
WalletProtobufSerializer: Rethrow IllegalArgumentException when loading wallets.
2015-09-05 19:23:18 +02:00
Matt Bogosian
66a851bd30
Fix #1078 . Add ability to load Wallet without loading its transactions. Use new methods with wallet-tool reset (where transactions are deleted anyway) and with wallet-tool sync (if the --force option is provided).
2015-09-04 18:07:26 +02:00
cyberzac
7c8c2a4b02
Allowing settlement of unused channel
2015-09-04 16:13:49 +02:00
Mike Hearn
fc9ae41883
Restore some deprecated backwards compatibility glue for the event listener changes.
2015-09-02 20:40:22 +02:00
Mike Hearn
5e15c04305
AbstractBlockChain: remove useless final declarations from event listener registration methods added in recent commits
2015-09-02 20:10:38 +02:00
Mike Hearn
9470601ea5
Wallet: make balance futures work for all balance types
2015-09-02 20:10:38 +02:00
Mike Hearn
a73677e9fb
DeterministicKey: throw a KeyCrypterException instead of an IllegalStateException if the derivation check fails (as this can happen when the password is wrong)
2015-09-02 20:10:38 +02:00
Mike Hearn
48b4df73a1
Coin: more aliases
2015-09-02 20:10:37 +02:00
Oscar Guindzberg
629e5d864d
Rename getChangeAddress() to currentChangeAddress()
2015-09-01 17:39:46 -03:00
Mike Hearn
207ef37894
Coin: add plus/minus aliases for add/subtract. This activates Kotlin operator overloading support.
2015-08-31 15:46:01 +02:00
Mike Hearn
864f2529e8
Wallet: make getUnspents() public.
2015-08-31 15:12:02 +02:00
Mike Hearn
6b4123cd9f
Comparison tool: take out the warning sleep
2015-08-27 15:21:50 +02:00
Ross Nicoll
d3d11df6d7
Add BIP 34 enforcement
...
This patch primarily enforces block height being present in the coinbase
transaction input, altough it introduces a number of other fixes and
changes to support this.
* VersionTally now returns the number of blocks at or above a version, rather than just at, to enable forward-compatible support (i.e. v3 blocks include all v2 block tests)
* Block version is now explicitely provided in most tests which generate blocks, in order to ensure correct tests are applied
* Block height is now used when generating coinbase transactions
* Added support for the chain parameters to determine which tests apply to a block, so altcoins can override the defaults if needed.
* Added initial checks ahead of full BIP 66 validation checks
2015-08-27 15:12:39 +02:00
Oscar Guindzberg
c5727d12fa
Fix AbstractBlockChain comments
2015-08-27 15:08:25 +02:00
Andreas Schildbach
eec6eebc68
MonetaryFormat: add message to non-obvious precondition.
2015-08-27 11:15:12 +02:00
peacekeeper
5dcf643975
A transaction output may have multiple OP_RETURNs.
2015-08-26 12:03:41 +02:00
Oscar Guindzberg
cf980bc68c
DeterministicKeyChain.toString(): remove unnecessary check to show the xpub.
2015-08-26 11:58:34 +02:00
ollekullberg
ebc888d282
Name change: ProtobufParser → ProtobufConnection, StreamParser → StreamConnection
2015-08-26 11:07:22 +02:00
Andreas Schildbach
74af6a2c8a
Set user agent for HTTP discovery.
2015-08-25 17:50:30 +02:00
Andreas Schildbach
5bd0623a28
Convenience method PeerGroup.setRequiredServices() for connecting only to peers that can serve specific services
2015-08-25 12:44:36 +02:00
Andreas Schildbach
72763f2711
Add MultiplexingDiscovery.forServices() that builds a suitable set of peer discoveries for
...
(optional) a set of desired services.
2015-08-25 12:44:36 +02:00
Andreas Schildbach
1be65483b4
Adds a services bitmask to PeerDiscovery.getPeers(), so we can query HTTP seeds for specific services.
...
As this is a breaking change to the API, it removes IrcDiscovery (there is no point in keeping it).
Also updates OkHttp to 2.4.0.
2015-08-25 12:44:35 +02:00
Andreas Schildbach
a12ec7f49d
Fix Tor support does not use all available HTTP seeds.
2015-08-24 18:54:00 +02:00
Mike Hearn
2c8ffc84ec
Peer: Lower log priority of message about not being configured with a block chain.
...
Using Peer[Group] to download blocks with no block chain is reasonable and printing a message every time a block is received is annoying.
2015-08-24 16:58:11 +02:00
Andreas Schildbach
021b0d76fe
Add httpseed.bitcoin.schildbach.de to HTTP seeds.
2015-08-22 15:20:12 +02:00
Oscar Guindzberg
a8edae0475
MarriedKeyChain: Remove redundant check.
2015-08-20 09:42:45 +02:00
Oscar Guindzberg
6c3b545b0c
DeterministicKeyChain: Rename "externalKey" and "internalKey" attribute
...
names to "externalParentKey" and "internalParentKey".
2015-08-20 09:39:24 +02:00
Oscar Guindzberg
fe7b703237
Wallet: Rename attribute "keychain" to "keyChainGroup".
2015-08-20 09:37:30 +02:00
Andreas Schildbach
200f2368c6
AddressFormatException: Make unchecked. Base58 strings are rarely typed manually these days.
2015-08-08 16:33:29 +02:00
Ross Nicoll
ecbd021167
Refactor listener interfaces.
...
Refactor listener interfaces into their own package.
Split listener interfaces into smaller interfaces.
Make abstract implementations actually abstract.
Rearrange methods for adding listeners to put executor first.
2015-08-08 15:37:46 +02:00
Kalpesh Parmar
7a02d2e598
Database (stores MySQL/Postgres/H2) column names/objects lower case consistency fix.
2015-08-08 11:59:07 +02:00
Andreas Schildbach
98b54d78c1
If wallet is watching, mention this in the dump.
2015-08-08 11:23:41 +02:00
Andreas Schildbach
7f8a5ed182
Print human readable time when initializing a new block store with a checkpoint.
2015-08-08 10:51:01 +02:00
Mike Hearn
5f3d3a7f84
Wallet: optimization for cases where (e.g. due to spam attacks) there are tons of relevant transactions in a block.
2015-08-05 12:42:49 +02:00
Mike Hearn
09f13f7956
Tighten the exception SPVBlockStore throws when the chain file is locked.
2015-07-30 17:31:25 +02:00
Devrandom
041b51f8e6
allow unmarried chains to have P2SH addresses
2015-07-29 12:38:22 +02:00
Andreas Schildbach
fa7af642ee
BitcoinSerializerTest: Make more readable.
2015-07-28 22:15:47 +02:00
Andreas Schildbach
7744a00629
Remove lazy parsing of messages.
...
In particular:
* Message.parse(): is now always called once, in the Message constructor
* Message.parsed: removed
* Message.parseLite(): folded into Message.parse()
* Message.maybeParse(): removed
* Message.ensureParsed(): removed
* Message.isParsed(): removed
* Block.parseHeader(): folded into Block.parse()
* Block.parseTransactions(): folded into Block.parse()
* Block.maybeParseHeader(): removed
* Block.maybeParseTransactions(): removed
* Block.ensureParsedHeader(): removed
* Block.ensureParsedTransactions(): removed
* Block.isParsedHeader(): removed
* Block.isParsedTransasctions(): removed
* MessageSerializer.isParseLazyMode(): removed
* BitcoinSerializer.parseLazy: removed
* BitcoinSerializer.getSerializer(): parseLazy parameter removed
* LazyParseException: removed
* LazyParseByteCacheTest: renamed to ParseByteCacheTest
2015-07-28 22:14:59 +02:00
Mike Hearn
d753d28ba5
Wallet: take key chain lock not only wallet lock in getWatchedOutputs().
...
Flagged by the IntelliJ Inspector static analysis engine.
2015-07-28 20:59:03 +02:00
Andreas Schildbach
b7c24c6196
Wallet: Fix not removing unspent transaction outputs when clearing transactions.
...
Adds very basic unit test for resetting wallets.
2015-07-28 20:50:20 +02:00
Andreas Schildbach
bee75f8d36
TestNet3Params: Fix missing assignments for majorityEnforceBlockUpgrade, majorityRejectBlockOutdated and majorityWindow.
2015-07-28 19:07:01 +02:00
Ross Nicoll
6f03669fbd
Enforce block version supermajority for BIP 66 onwards.
2015-07-28 12:55:54 +02:00
Ross Nicoll
12602650ce
Modify data object serialization/deserialization to provide extension hooks
...
Make headerParsed, transactionParsed, headerBytesValid and transactionBytesValid protected so subclasses in the same package can access them.
Add constructor for use when a block is contained within another object (i.e. AuxPoW header)
Make headerParsed, transactionParsed, headerBytesValid and transactionBytesValid protected so subclasses in the same package can access them.
Add constructor for use when a block is contained within another object (i.e. AuxPoW header)
Add parseTransactions() method which takes in a payload offset, so block parsers can indicate that transactions do not start at byte 80.
Extract common interface from BitcoinSerializer to support alternative serializers, as well as dummy serializer for message classes which do not have their network parameters.
Thread BitcoinSerializer through messages in place of existing parseLazy and parseRetain properties.
Insert dummy serializer into message subclasses when deserialized by Java.
Replace calls to construct Block/Transaction classes from payloads, with calls to MessageSerializer, so alternative formats can be supported elegantly.
Make headerParsed, transactionParsed, headerBytesValid and transactionBytesValid protected so subclasses in the same package can access them.
Add constructor for use when a block is contained within another object (i.e. AuxPoW header)
Add parseTransactions() method which takes in a payload offset, so block
parsers can indicate that transactions do not start at byte 80.
2015-07-28 12:20:32 +02:00