Proto commits in dogecoin/libdohj

These 64 commits are when the Protocol Buffers files have changed:

Commit:3dd6d75
Author:Ross Nicoll
Committer:Ross Nicoll

Bump dependency versions to match bitcoinj 0.16

The documentation is generated from this commit.

Commit:89598b5
Author:Ross Nicoll
Committer:GitHub

Update to bitcoinj 0.16 (#60)

The documentation is generated from this commit.

Commit:982af3f
Author:Ross Nicoll
Committer:GitHub

Update to bitcoinj 0.15.7 (#44)

Commit:bacc348
Author:Ross Nicoll

Restructure libdohj around Maven modules

Commit:049fa77
Author:Ross Nicoll
Committer:Ross Nicoll

Add Dogecoin payment protocol support Add Dogecoin payment protocol support, and remove unused proto definition files.

Commit:5c973f6
Author:Ross Nicoll
Committer:Ross Nicoll

Remove existing build pom.xml Added genesis block construction for Dogecoin network. Added difficulty calculations for Dogecoin network. Completed difficulty calculation code for Dogecoin. Added code for parsing Dogecoin blocks, and unit tests for same.

Commit:905629a
Author:langerhans

Merge branch 'master' of https://github.com/bitcoinj/bitcoinj into rebase Conflicts: README.md core/pom.xml core/src/main/java/com/dogecoin/dogecoinj/core/DownloadListener.java core/src/main/java/com/dogecoin/dogecoinj/core/MemoryPool.java core/src/main/java/com/dogecoin/dogecoinj/core/NetworkParameters.java core/src/main/java/com/dogecoin/dogecoinj/core/PeerFilterProvider.java core/src/main/java/com/dogecoin/dogecoinj/core/PeerGroup.java core/src/main/java/com/dogecoin/dogecoinj/core/StoredTransactionOutput.java core/src/main/java/com/dogecoin/dogecoinj/core/Wallet.java core/src/main/java/com/dogecoin/dogecoinj/crypto/EncryptedPrivateKey.java core/src/main/java/com/dogecoin/dogecoinj/crypto/KeyCrypterScrypt.java core/src/main/java/com/dogecoin/dogecoinj/jni/NativeTransactionConfidenceListener.java core/src/main/java/com/dogecoin/dogecoinj/kits/WalletAppKit.java core/src/main/java/com/dogecoin/dogecoinj/net/FilterMerger.java core/src/main/java/com/dogecoin/dogecoinj/protocols/channels/IPaymentChannelClient.java core/src/main/java/com/dogecoin/dogecoinj/protocols/channels/PaymentChannelClient.java core/src/main/java/com/dogecoin/dogecoinj/protocols/channels/PaymentChannelClientConnection.java core/src/main/java/com/dogecoin/dogecoinj/protocols/channels/PaymentChannelClientState.java core/src/main/java/com/dogecoin/dogecoinj/store/BlockStore.java core/src/main/java/com/dogecoin/dogecoinj/store/FullPrunedBlockStore.java core/src/main/java/com/dogecoin/dogecoinj/store/H2FullPrunedBlockStore.java core/src/main/java/com/dogecoin/dogecoinj/store/PostgresFullPrunedBlockStore.java core/src/main/java/com/dogecoin/dogecoinj/testing/FakeTxBuilder.java core/src/main/java/com/dogecoin/dogecoinj/testing/TestWithPeerGroup.java core/src/main/java/com/dogecoin/dogecoinj/wallet/KeyChainGroup.java core/src/main/java/org/bitcoinj/core/DownloadListener.java core/src/main/java/org/bitcoinj/core/DownloadProgressTracker.java core/src/main/java/org/bitcoinj/core/MemoryPool.java core/src/main/java/org/bitcoinj/core/StoredTransactionOutput.java core/src/main/java/org/bitcoinj/core/TxConfidenceTable.java core/src/main/java/org/bitcoinj/core/UTXO.java core/src/main/java/org/bitcoinj/params/MainNetParams.java core/src/test/java/com/dogecoin/dogecoinj/core/AbstractFullPrunedBlockChainTest.java core/src/test/java/com/dogecoin/dogecoinj/core/BitcoindComparisonTool.java core/src/test/java/com/dogecoin/dogecoinj/core/FilteredBlockAndPartialMerkleTreeTests.java core/src/test/java/com/dogecoin/dogecoinj/core/FullBlockTestGenerator.java core/src/test/java/com/dogecoin/dogecoinj/core/PostgresFullPrunedBlockChainTest.java core/src/test/java/com/dogecoin/dogecoinj/core/WalletTest.java core/src/test/java/com/dogecoin/dogecoinj/crypto/ChildKeyDerivationTest.java core/src/test/java/com/dogecoin/dogecoinj/store/WalletProtobufSerializerTest.java core/src/test/java/com/dogecoin/dogecoinj/wallet/DefaultRiskAnalysisTest.java core/src/test/java/com/dogecoin/dogecoinj/wallet/DeterministicKeyChainTest.java tools/src/main/java/com/dogecoin/dogecoinj/tools/WalletTool.java wallettemplate/pom.xml wallettemplate/src/main/java/wallettemplate/Main.java wallettemplate/src/main/java/wallettemplate/MainController.java wallettemplate/src/main/java/wallettemplate/SendMoneyController.java

Commit:2b6db0d
Author:Mike Hearn

Add an experimental HTTP based peer discovery engine that uses signed gzipped protocol buffers.

Commit:df00b1e
Author:Jarl Fransson
Committer:ollekullberg

PaymentChannelClient support encrypted wallets. Store will upgrade forward gracefully.

Commit:53688cd
Author:Andreas Schildbach
Committer:Andreas Schildbach

Replace duplicated "current wallet version" constant by code that looks it up from the .proto itself.

Commit:3aac4b0
Author:Andreas Schildbach
Committer:Andreas Schildbach

Rewrite most references to prodnet to mainnet in the comments. Does not change any actual code.

Commit:cda772d
Author:langerhans

Step 2: Move and refactor packages

Commit:22f0600
Author:Devrandom
Committer:Mike Hearn

Refactor married keychains * move handling of following keychains into the leading keychain * move multisig threshold into the leading keychain * extract MarriedKeyChain from DeterministicKeyChain

Commit:0a6f901
Author:Mike Hearn
Committer:Mike Hearn

Renamespace to org.bitcoinj away from com.google.bitcoin, as bitcoinj is no longer a Google project and being namespaced under com.google causes issues with Sonatype/Maven Central. To fixinate your code: find . -name '*.java' | xargs sed -i .bak 's/import com.google.bitcoin./import org.bitcoinj./g;s/import static com.google.bitcoin./import static org.bitcoinj./g'

Commit:03bacf4
Author:Devrandom
Committer:Mike Hearn

Cache deterministic seed

Commit:5910a7f
Author:Kosta Korenkov
Committer:Mike Hearn

Married wallets: multisig threshold could be specified That allows to create multisigs like 3-of-3. If not specified, majority of keys will be required (2-of-3, 3-of-5 and so on)

Commit:63b4b17
Author:Martin Zachrison
Committer:Mike Hearn

Payment channel API. Negotiation af the channel duration. 1. Client requests a time window, in seconds relative to now. 2. Server suggests an expire time, absolute time in seconds 3. Client accepts or rejects the servers proposal. Note that the IPaymentChannelClient.ClinentConnection interface has a new method. This will break old implementations. Let the client request the duration of a payment channel. Server can set allowed time window.

Commit:7d93055
Author:Andreas Schildbach
Committer:Andreas Schildbach

Support for recording a memo with transactions. It can be used to record the memo of the payment request that initiated the transaction. Use the new SendRequest.memo register.

Commit:5be769d
Author:Andreas Schildbach
Committer:Mike Hearn

Support for applications recording exchange rate that was valid when transaction was sent. Use the new SendRequest.exchangeRate register. Includes a test.

Commit:4834fe6
Author:Andreas Schildbach
Committer:Mike Hearn

Remove TransactionConfidence.workDone. It doesn't seem useful and was somehow buggy.

Commit:f6b2fa5
Author:Kosta Korenkov
Committer:Mike Hearn

Pluggable signers: simple local KeyBag signer Introduced pluggable signers notion. Instances of TransactionSigner could be added into the wallet, so that they subsequently applied to transaction to complete it. Existing signing code (Transaction.signInputs) was refactored into LocalTransactionSigner, which is always implicitly added to any wallet. Related pull request: #157

Commit:eff9ac2
Author:cyberzac
Committer:Mike Hearn

Support for bundling an optional info Protobuf ByteString with a PaymentAck message

Commit:1153192
Author:cyberzac
Committer:Mike Hearn

Support for bundling an optional info Protobuf ByteString with an UpdatePayment message.

Commit:92544e9
Author:Mike Hearn
Committer:Mike Hearn

Add ASSURANCE_CONTRACT_CLAIM/PLEDGE/STUB to the purpose field.

Commit:fec6cbc
Author:Devrandom
Committer:Mike Hearn

Remove support for mnemonic-less keychains

Commit:2fae120
Author:Devrandom
Committer:Mike Hearn

Fix BIP39 implementation

Commit:06755ae
Author:troggy
Committer:Mike Hearn

Married HD wallets: introduce shadow keychain notion Pull request: #99 Based on design notes: https://groups.google.com/d/msg/bitcoinj/Uxl-z40OLuQ/e2m4mEWR6gMJ

Commit:a807994
Author:Mike Hearn
Committer:Mike Hearn

Bump wallet version and add missing check (!) to detect wallets from the future. The absence/incompleteness of this feature had not been noticed before, and it means that old apps will fail to read HD wallets due to the new key enum value rather than a more sensible error (but there's still no chance of an old app accepting an HD wallet, so it should still be safe).

Commit:5638387
Author:Mike Hearn
Committer:Mike Hearn

HD wallets alpha preview

Commit:780be05
Author:Andreas Schildbach
Committer:Mike Hearn

Save value of inputs when completing transactions and persist it to the wallet protobuf. Determine the fee of a transaction in case we have all the values.

Commit:03e8934
Author:Andreas Schildbach
Committer:Mike Hearn

Update note about regenerating protobuf bindings.

Commit:268dfe2
Author:Mike Hearn

Add a simple API that lets you tag wallets with arbitrary string->byte[] pairs.

Commit:3966875
Author:Kevin Greene
Committer:Mike Hearn

Adding support for processing PaymentRequests.

Commit:da2e3e6
Author:Devrandom
Committer:Mike Hearn

Support watching of scripts/addresses in wallet

Commit:fc70f73
Author:Mike Hearn
Committer:Mike Hearn

Payment channels: require a minimum payment to initiate. This is a (backwards incompatible) protocol change that prevents clients or servers getting into a situation where they have opened a channel that they then cannot close because insufficient value has been transferred. The server is allowed to specify the minimum payment it requires in order to open any channel at all, and the client then sanity checks that. Currently the rule is very simple - the min payment must be equal to the hard-coded dust limit. In future it will get more complicated as the dust limit starts to float and a more nuanced risk analysis may become required.

Commit:0bc2878
Author:Mike Hearn

Payment channels: rename "close" to "settle". The previous overloading of the term "close" to mean both settlement of the channel (broadcast of the final payment tx) and terminating/cleaning up the underlying network connection was very confusing and made the code harder to work with. The notion of "closing" a protocol that is often embedded inside others isn't really well defined, so there's perhaps more work to do here, but this change makes the code easier to follow and is basically a big pile of no-ops.

Commit:c33c20f
Author:Mike Hearn

Wallet: record the timestamp of the last block seen.

Commit:aff5f14
Author:Mike Hearn

Payment channels: add payment acks. Add a new PAYMENT_ACK message to the protocol. Make incrementPayment return a future that completes when the server has acknowledge the balance increase. Also, prevent users from overlapping multiple increase payment requests. This resolves race conditions that can occur when the billed-for activity is asynchronous to the protocol in which the micropayment protocol is embedded. In this case, it was previously impossible to know when the async activity could be resumed as it would otherwise race with the process of the server checking the payment signature and updating the balance. Most applications of micropayments will use a single protocol that has been extended with an embedding, and thus this is not an issue. However in some rare applications the payment process may run alongside the existing protocol rather than inside it. In this case, payment acks should be used for synchronization.

Commit:dfa722c
Author:Mike Hearn
Committer:Mike Hearn

Wallet: track relative ordering of transactions within a block. Ensures re-orgs don't replay transactions out of order. Resolves issue 468.

Commit:6342af0
Author:Mike Hearn

Payment channels: protocol tweak - when the client sends a CLOSE, the server sends a CLOSE back that contains the final negotiated contract, so it can be inserted into the wallet without needing to wait for a network broadcast (this is useful if the client does not have internet connectivity at that point).

Commit:02416c9
Author:Mike Hearn
Committer:Mike Hearn

Payment channels: bug fixes and improved close behaviour. The client now has a new CLOSED state, which is entered once a CLOSE has been sent and the close transaction (final contract) has been broadcast onto the P2P network and entered the wallet. Once received, the hash of the close tx is stored in the wallet - the tx is itself already in the wallets spent pool because it connects to the output of the multisig tx. After seeing three confirmations of the close TX the state is deleted from the client wallet for good. Together these changes resolve a bug/design issue in which if a channel was opened, then closed, then another channel was opened but not closed, then a third attempt to connect to the server was made, the client would try to resume the first closed channel. That would fail because the server already deleted its state object and result in new channels being created even though the second could have been resumed. By tracking the fact that the channel was closed, it can be skipped when considering what channel to resume.

Commit:38119b9
Author:Mike Hearn

Payment channels: Better comments and logging.

Commit:6dd9076
Author:Mike Hearn
Committer:Mike Hearn

Wallet: support for key rotation. Key rotation allows you to specify a timestamp, and any money controlled by any keys created before that time will be automatically respent to keys created after it.

Commit:c98badc
Author:Matt Corallo
Committer:Mike Hearn

Store states in protobufs instead of using Java Serialization. Saves having to use reflection.

Commit:4908c24
Author:Matt Corallo
Committer:Matt Corallo

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.

Commit:c457269
Author:Mike Hearn

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.

Commit:5ae00d4
Author:Mike Hearn
Committer:Mike Hearn

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"

Commit:5d0518d
Author:Mike Hearn
Committer:Mike Hearn

Merge encrypted wallets functionality by Jim Burton.

Commit:d309863
Author:Mike Hearn

Save the last seen chain height as well as hash in the wallet.

Commit:988641a
Author:Mike Hearn
Committer:Mike Hearn

Label transactions with their source (network, wallet, other, etc). This will be used to allow spending of unconfirmed change.

Commit:83bb66c
Author:Mike Hearn

Serialize the broadcastBy set for each transaction. Resolves issue 237.

Commit:c6d900e
Author:Mike Hearn
Committer:Mike Hearn

Correct stale comment in bitcoin.proto

Commit:96e27cf
Author:Jim Burton
Committer:Mike Hearn

Renamed TransactionConfidence.OVERRIDDEN_BY_DOUBLE_SPEND to DEAD

Commit:80f141c
Author:Jim Burton
Committer:Mike Hearn

TransactionConfidence changes (coinbase phase 2) + Mike's feedback

Commit:a0da0c5
Author:Mike Hearn
Committer:Mike Hearn

Refactor transaction signing code so users can get the signature hash of an arbitrary input. Also add/fix comments in bitcoin.proto and make the Transaction.pool field optional.

Commit:0e52c98
Author:Mike Hearn

Use the standard Maven directory layout, rename "lib" to "core". Mavenize submodules.

Commit:216deb2
Author:Mike Hearn

Re-organize the source tree so people can depend on bitcoinj without pulling in the examples, tools, or dependencies thereof.

Commit:69ee4c7
Author:Miron Cuperman
Committer:Miron Cuperman

Be lenient in parsing tx confidence protobuf, store pubkeys, cleanup

Commit:1c28bd3
Author:Miron Cuperman
Committer:Miron Cuperman

Persist TransactionConfidence to protobuf

Commit:5d27257
Author:Miron Cuperman

Rationalize protobuf Pool enum

Commit:1a2ce7d
Author:Miron Cuperman
Committer:Miron Cuperman

Fixes based on input from Mike, fix invariant checking, fix spentBy

Commit:a8fd0d4
Author:Miron Cuperman
Committer:Miron Cuperman

Wallet protobuf cleanup. * Un-nest protobuf * Add rest of tx fields, ASN.1 private key * Pending-inactive combo * Tests

Commit:319c52b
Author:Miron Cuperman
Committer:Miron Cuperman

Read Wallet from protobuf stream

Commit:6af16c8
Author:Miron Cuperman
Committer:Miron Cuperman

Protobuf serialization for Wallet