bisq-network / bitcoinj Goto Github PK
View Code? Open in Web Editor NEWThis project forked from bitcoinj/bitcoinj
@bisq-network fork of the bitcoinj library
Home Page: https://jitpack.io/#bisq-network/bitcoinj
License: Apache License 2.0
This project forked from bitcoinj/bitcoinj
@bisq-network fork of the bitcoinj library
Home Page: https://jitpack.io/#bisq-network/bitcoinj
License: Apache License 2.0
In progress
TODO (i.e. not started yet)
I have rebased the bisq specific commits on to 0.15.3 https://github.com/bodymindarts/bitcoinj/tree/bisq_0.15.3 and would like to contribute it back to this repo.
As I do not have push access I cannot create a new branch and cannot open a PR against a branch that doesn't exist.
Perhaps someone with access could do the following:
git clone https://github.com/bitcoinj/bitcoinj.git && cd bitcoinj
git remote add bisq https://github.com/bisq-network/bitcoinj.git
git checkout v0.15.3
git checkout -b bisq_0.15.3
git push -u bisq bisq_0.15.3
Then I can open a PR against that branch to add the bisq specific commits.
I have not looked closer but that might be a critical issue we should get merged to our fork:
Transaction can serialize and deserialize according to Segwit (BIP144)
bitcoinj@b9c983e
@cbeams @ripcurlx Maybe we should try to get that into the next release as well.
These tests fail on bisq's bitcoinj fork and need to be a) fixed or b) ignored and documented.
PeerTest
DeterministicKeyChainTest
bisq has to be built using jdk 10. bitcoinj has to be built using jdk 8.
bitcoinj 0.14.4+ uses sun.misc.Cleaner.
sun.* packages should not be used directly as a rule of thumb.
bitcoinj uses them to fix some windows specific issue.
Using sun.* seemed to be the lesser evil.
The thing is sun.misc.Cleaner was removed in jdk 9.
bitcoinj does not compile if you use jdk 9, 10 or 11.
The problem was discussed on several bitcoinj mailing list msgs and github issues. The most relevant discussion happened here: bitcoinj#1477
Andreas Schildbach eventually removed the windows specific hack, which eliminates the need to use sun.misc.Cleaner (he thinks the latest versions of windows may not reproduce the bug)
Fix:
bitcoinj@1700ec0
Test:
bitcoinj@dbc4c35
Andreas Schildbach did the change on bitcoinj master (not the bitcoinj fork we use)
So, bitcoinj master can be built using jdk 8, 9, 10 or 11.
Nobody confirmed yet that without the hack, bitcoinj does not reproduce the bug on windows.
Even if someones confirm she is running bitcoinj on windows without problems, that does not mean it will run on every windows environment.
The feature that has the windows problem is marked to be refactored in bitcoinj
https://github.com/bitcoinj/bitcoinj/blob/master/core/src/main/java/org/bitcoinj/store/SPVBlockStore.java#L33
Current solution
Other possible solutions
I reviewed the changes done by bisq's to bitcoinj.
Here are the conclusions:
Already reviewed
Fixes implemented on https://github.com/bisq-network/bitcoinj/tree/bisq_0.14.7
Still to be reviewed
We need the block time when a tx is confirmed.
The code in Transaction.setBlockAppearance does not set the updatedAt if it was set before.
As Wallet.commit sets the updatedAt the update never happes.
See: https://groups.google.com/d/msg/bitcoinj/05TJbxAwKXs/D6CYV1byAgAJ
Based on log analysis, we believe that bitcoinj's lack of support for v2 Bitcoin transactions [1] may have led to some of the timeout issues we've seen recently.
Apparently, support has been implemented, but has not yet been officially released in the canonical bitcoinj project.
[1] https://github.com/bitcoin/bips/blob/master/bip-0068.mediawiki
Overview
Commit review
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.