-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fulfilling Proposal #110 #3275
Fulfilling Proposal #110 #3275
Conversation
bisq-network#110: Fully functional and basic Monero (XMR) wallet integrated to Monero RPC Wallet running on localhost with the following features: 1. Viewing balance (total and unlocked). 2. Sending XMR. 3. Viewing XMR Primary address to receive XMR. 4. Viewing and searching transactions. 5. Transaction/payment proof/verification (almost certified complete). TODOs: 1. Completion of automation of Monero related trades (integration to wallet). 2. Unit Tests (first order - XmrFormatter and XmrValidator). 3.Payment proof testing completion.
@niyid Before reviewing, would you mind squashing all the "cleaning up" commits into a single commit, and also fixing the merge conflicts? |
@niyid Thanks for your effort. I noticed an outdated version of the Monero Java library is being used, v0.0.2. I recommend updating to v0.1.0 which includes a lot of clean up work and does make some breaking changes to the API. Specifically, |
@woodser Edit: I will try updating to Please ignore earlier suggestion on conversion to Gradle. I found the solution. Apologies on that. |
The conficts I am seeing below seem to be transient or recently occurring. For instance in the case of |
@niyid Yes, those conflicts happened because your PR touches files that have been changed with the recent merges. |
Is it only necessary to add a Gradle project file to be usable as a Gradle project? I don't mind such a file being added. Do you mind providing what you are looking for? Otherwise I can look into it.
Thanks for pointing that out. I forgot to bump the version in the POM. I will release an update shortly which does that. |
@woodser For instance, see the issue below as the Maven project was not automatically built into a JAR: |
@niyid I updated the POM version and tagged a new release. |
# Conflicts: # common/src/main/proto/pb.proto # core/src/main/resources/i18n/displayStrings.properties # desktop/src/main/java/bisq/desktop/main/account/AccountView.java # desktop/src/main/java/bisq/desktop/main/settings/preferences/PreferencesView.java # desktop/src/test/java/bisq/desktop/GuiceSetupTest.java
@woodser Thanks for the hint. Now no conflicts; but it won't build because the |
Hi @niyid, thanks a lot for working on this! My fear is that this great effort may stuck in limbo simply because of the sheer volume of changes. Of course, this is inherently a big feature. However, there is virtually always a way to split into smaller, thinner "features", even if they are artificial. As a side note, in modern software engineering, individual pull requests should be pieces of work on the order of hour(s) to 2-3 days max. In no case many weeks of active coding should be merged at once. |
Thanks @battleofwizards I acknowledge the volume of work that has been done. But I had to also separate the delivery to units otherwise I would still not have done a PR yet. This PR is simply the Monero Wallet UI without any integration to Bisq trades. That is the next unit (integration to trades) I am delivering hopefully before the end of this cycle. Also, the only thing keeping this in limbo right now is the monero-wallet-rpc library which I am working on to play nicely with Gradle (as it is on Maven). The project has been completely merged and rebased and good to go. I have built on my workspace and successfully launched the application with no issues. Once again, thanks for the nice words. Regards. |
build.gradle
Outdated
@@ -82,7 +82,7 @@ configure(subprojects) { | |||
|
|||
dependencies { | |||
testCompile "junit:junit:$junitVersion" | |||
compile 'woodser:monero-wallet-java:0.0.2-SNAPSHOT' | |||
compile 'woodser:monero-wallet-java:0.1.1-SNAPSHOT' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Probably rename to woodser:monero-java:0.1.1-SNAPSHOT
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of adding the new jar dependency, it would be better to simply add this code to Bisq so it can be reviewed together with this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That is a pragmatic suggestion. But I actually restrained myself from doing just that. I am exploring what I had earlier missed: the use of the apply plugin: 'maven'
directive.
There is no headache. We all agree to stick with best software development practices. I will update the PR over a 2/3 day period Apologies for the inconvenience. Regards. |
@battleofwizards Yes, I will release a lite version shortly with the minimum necessary for integration with Bisq. |
I have released a minimum version of monero-java which provides only basic wallet functionality using monero-wallet-rpc: https://github.com/woodser/monero-java-lite. It preserves RPC tests from monero-java. I estimate the total lines of code to be ~8K, of which ~2K are non-trivial logic and the rest are POJOs or auto-generated. |
Thanks a lot @woodser! This looks like a good step forward. The next order of business would be dependencies of the Unfortunately, we can barely accept any dependencies :( This reluctance extends even to dependencies that are already part of Bisq (for various reasons). Please consider if it makes sense for you to get rid off virtually all runtime dependencies. My hunch is that maybe only http client is vital and then even that should be out when we finally move to Java 11+. Regarding JSON I am not aware how much advanced processing you really need. |
@woodser @battleofwizards @erciccione Thanks everyone for your cooperation and understanding. I have replaced I expect this is more manageable on the code review front as @woodser and I push for a separate PR to include Regards. |
Thanks a lot. Even within the limited time, you have made it easier to integrate Regards. |
@battleofwizards I have removed all dependencies except Jackson, HttpClient, JUnit, and log4j. The library utilizes advanced JSON processing using Jackson including managed and back references, field aliasing, and polymorphic deserialization. I expect it will be difficult to switch this functionality to another library, but do you suggest another library to try? JUnit is not a runtime dependency so it should be ok? log4j logging can be removed if needed. |
@woodser thanks! Please use standard Java logging so your lib is flexible for inclusion in any project (so no log4j). The Jackson is a no-go. In Bisq we use Google |
@niyid just a quick minor comment. I have not looked into the code (because there is 5200+ lines of it ;)) but glimpsed the |
Apologies for that. I made several changes to make the You can be reassured that most of those quoted lines of code are from pre-existing classes that were touched (with maybe total of less than 30 lines added across all). The new additions are the real meat; and they are less than 40 classes in total. |
Good work you are doing. I was able to easily replace the validations you did with JUnit in non test-case classes with You can replace Log4J with |
@battleofwizards |
Yes, and that is enough of a problem. BTW, up until recently we had 3 libs for the same purpose: |
Are you aware of any performance matrix across these libraries? I like the "faster" in EDIT: I did find a few benchmarks and the most recent pages are below: https://github.com/fabienrenaud/java-json-benchmark We need to look into this. Regards. |
This is pretty much irrelevant because we are not making any blank slate decision here - not even close. From what I looked the codebase is simply cemented on using Google gson. |
I updated
|
@woodser wow, very nice! Thanks a lot. |
hi all, solid work as far as I can tell, but in one of the last dev calls which you can see here: https://www.youtube.com/watch?v=YnTA3p-5v00 |
@mrosseel integrating wallets is not a long term goal, right, but keep in mind that implementing the new protocol could take a year or more and a lot of discussions, but the integrated Monero wallet is basically ready (this PR). The problem with the integration was mostly related to the amount of dependencies that would have needed to be included, now that @woodser trimmed most of them i think could be possible to to move forward with this faster than we expected (correct me if i'm wrong). @niyid @wiz @battleofwizards what's your opinion? |
@woodser @erciccione Regards. |
There are conflicts to be resolved in this PR. |
This PR has since been migrated to the Monero Integration Incubator Repository at https://github.com/bisq-network/incubator-bisq-xmr-integration. I think this should be closed.
…On Tue, Nov 12, 2019, 12:58 Christoph Atteneder ***@***.***> wrote:
There are conflicts to be resolved in this PR.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#3275?email_source=notifications&email_token=AE2MWR2IUVQZBVAHELTRQS3QTKK7DA5CNFSM4IXG65PKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOED2APUA#issuecomment-552863696>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AE2MWR5TAEZX6UKTC2NMFQTQTKK7DANCNFSM4IXG65PA>
.
|
This is to initiate the update necessary for the fulfillment of proposal
bisq-network/proposals#110:
Fully functional and basic Monero (XMR) wallet integrated to Monero RPC Wallet
running on localhost with the following features:
TODOs:
wallet).
3.Payment proof testing completion.