-
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
Propose how to integrate Monero wallet into Bisq #1863
Comments
This issue was mentioned at the tail end of the monero-dev meeting yesterday and is now also mentioned to the broader Monero community: https://np.reddit.com/r/Monero/comments/9ugtzj/propose_how_to_integrate_monero_wallet_into_bisq/ |
Thanks for sharing! |
a random thought on this: perhaps a daemon could be implemented that sits between bisq and monerod and emulates the specific bitcoind RPC calls that are used by bisq. as I understand it, bisq now has a mode that can utilize bitcoind running on localhost via RPC (instead of bitcoinj library). So, if a piece of software can implement those RPC calls and translate/forward them instead to a running monerod instance, neither bisq nor monerod would need to be modified. It's an open question (area for research) how closely the bitcoind RPCs can be emulated for monerod. Many concepts are similar though. I found this mapping of api calls, as a basic starting point. Since that time, monero now supports subaddresses, which work a bit more like getnewaddress. The main benefits I see to this approach (if feasible) are that:
The main drawback is that some features of the monero api would not be accessible from bisq this way, for example options related to mixin, ring size. Configurable defaults would be used in daemon. If bisq devs find this approach interesting, I think a next step would be to list here all the bitcoind RPC calls used by bisq, and then an on-paper mapping of calls, params, and return values could be attempted to judge the feasability and identify any problem areas. |
@antoinebechamp FYI a detailed list of RPC calls for both daemon and CLI wallet can be found here: https://ww.getmonero.org/resources/developer-guides/ I can't evaIuate it technically, but like the idea of a "neutral" daemon in the middle, i think it could make implementation much easier. |
@antoinebechamp |
Here is a rough overview: BTC buyer side To make it automatic we need to make a rpc call to monerod with amount and receiver address. All other params (fee,...) can be left to default for the start. After the XMR is successfully sent (need notification for success from rpc lib or poll for state change) the buyer send the payment started message to the peer. That is done now ny the button click, with automated version the XMR sent success message triggers that sending. So the interaction with monerod is:
BTC seller side For the automated version we should listen immediately when the deposit tx is confirmed for the received XMR (in some cases the payment sent message does not arrive (bugs, network connectivy or use forget to click). So as soon the seller gets notified about the receipt of the trade amount that notoification triggers the payout. So the interaction with monerod is: One issue is that he does not see the senders address. In case he expect 2 payments with exactly the same trade amount he does not know which peer has sent it. Not a big problem in reality - I don't remember any case that there was that problem. But could be fixed if we include the XMR tx ID - or maybe use payment ID? - in the "payment started message". I am not familiar with payment ID. Though as we want to support automated trades to any altcoin in future a more generic solution (include txid in message) might be better. I think that for a minimal version no XMR wallet UI is required. The user runs monerod or UI wallet anyway and can use that for checking txs. But of course a nice next step could be to add a basic UI for the monero wallet. But I would prefer to start with a MVP. One problem is that when you send XMR mostly your balance is locked for a while. So we need to detect that case to get notified once the required wallet balance is available. Interaction with monerod is: Once reported available balance is >= trade amount to send the app can trigger the send call. |
Oh my mistake. nevermind about that approach then. You are likely aware of monero-java-rpc for RPC calls. I guess it should do what is needed, though waiting for confirmations might require polling, I haven't looked into that. Or also I found moneroJavaLibrary I guess @ManfredKarrer you already made a pretty solid proposal in your comment. |
@antoinebechamp |
What is the status of this proposal? If it has not yet been taken up, I will like to take it up. I plan to use the monero-java-rpc library which provides the following features (which I believe should suffice):
The wallet account 0 is populated from And of course it will automatically send/receive Monero from/to the wallet to in trading involving Monero. If there are any further requirements or features/functions please let me know. Regards. |
@niyid Ah cool! Status is not much more as in the above comments, nobody worked on it. |
OK. It has nothing to do with DAO. I have removed the suggested location in DAO. Does the following apply: The wallet account 0 is populated from And then when the Monero account is created, the wallet appears after Does that work? By the way, the issue has not yet been assigned to me. I will start working on it anyway. |
I would not recommend to mix the currnet "account" terminology and context with the monero wallet integration. Atm an account is just a altcoin address and you can create multiple XMR accounts with diff. addresses if you want. |
Also - even possible - I dont assume that other altcoins will get added with wallet integration. So would not consider that atm as requirement. |
Thanks for the insights. When will this be assigned? |
Hello? Any updates on assignation? |
A little reminder about 2 other related proposals:
Maybe bisq-network/proposals#86 is easier to implement ? |
For information: |
@ManfredKarrer @HarryMacfinned, I found the solution that aligns best with Bisq architecture is to connect to a TOR remote node. Does Bisq currently maintain any such nodes? Comments please. |
Hello @niyid , |
Thanks. Will do.
…On Tue, Aug 20, 2019, 09:52 Harry MacFinned ***@***.***> wrote:
Hello @niyid <https://github.com/niyid> ,
Please see bisq-network/roles#72
<bisq-network/roles#72> (Tor relay operator).
Sorry for the delay, I was absent the last days.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1863?email_source=notifications&email_token=AE2MWR75FBTL2REW6CADEX3QFOWDRA5CNFSM4GBVYIK2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD4VSCCI#issuecomment-522920201>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AE2MWR23ED2ENIY2T5DN3VTQFOWDRANCNFSM4GBVYIKQ>
.
|
In fact, what you would like is a monero remote node, running over Tor. For information, installing a monero node is not so hard, and only needs a medium sized disk. The monero blockchain is < 80GB atm. It can even run on a Raspberry Pi. |
@HarryMacfinned
Great! This is exactly what I needed (I suppose I did not initially communicate in clearer terms). I felt being a Bisq requirement, we should have our own trusted Monero remote nodes running over Tor. Many monero remote nodes may not be trustworthy or efficient enough to support Bisq.
Maybe @sqrrm could also be of some assistance?
…On Wed, Aug 21, 2019, 18:12 Harry MacFinned ***@***.***> wrote:
@niyid <https://github.com/niyid>
I found the solution that aligns best with Bisq architecture is to connect
to a TOR remote node. Does Bisq currently maintain any such nodes? Comments
please.
In fact, what you would like is a monero remote node, running over Tor.
Like indeed Bisq does with bitcoin nodes running over Tor, and reachable
thru an onion address.
For information, installing a monero node is not so hard, and only needs a
medium sized disk. The monero blockchain is < 80GB atm. It can even run on
a Raspberry Pi.
I'm running a monero node, but only episodically because it runs on
clearnet.
I have some docs about peoples running monerod over Tor ... but it seems
not so simple.
I'll try to do that with my monero node, and I'll provide you the onion
address when/if I succeed.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1863?email_source=notifications&email_token=AE2MWR6DJICTAB6GJLN3TILQFVZPLA5CNFSM4GBVYIK2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD42NUIQ#issuecomment-523557410>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AE2MWR2GKXJGQ7FXJCZ3PSLQFVZPLANCNFSM4GBVYIKQ>
.
|
@niyid I'm not sure we want to run monero nodes as a part of Bisq contributions, it seems somewhat outside of the Bisq scope. Better for users that care about that to run their own private nodes. Regarding the TOR relays run under the tor node operator role, they're meant to be pure relays to support the TOR network since Bisq relies on the TOR network. The best way to continue would be to write up a proper proposal on how to do this monero integration. This will allow for a more structured discussion. |
As @HarryMacfinned mentioned (and i agree would be the best option), Monero nodes could run the same way btc nodes are managed. In that case we would have a new role: XMR node operator. The user could have the possibility to run their own local node or use another one not managed by bisq operators. A monero Node is much smaller than a bitcoin node. I also wanted to mention that the present Tor-Monero integration is very new and will be greatly improved (see for example monero-project/monero#5793 ) |
@sqrrm , @erciccione , @HarryMacfinned , @ManfredKarrer That is exactly what I suggested. Let me know which direction is decided on. Regards. |
Can you please assign bisq-network/proposals#86 and bisq-network/proposals#87 or merge them along with #1863 with proposal bisq-network/proposals#110 please? They have all been incorporated into the proposal bisq-network/proposals#110 Thanks.
|
@niyid just reference them from bisq-network/proposals#110 until there is some kind of conclusion. |
Great. I already did. Thanks.
…On Mon, Sep 2, 2019, 17:53 sqrrm ***@***.***> wrote:
@niyid <https://github.com/niyid> just reference them from
bisq-network/proposals#110
<bisq-network/proposals#110> until there is
some kind of conclusion.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#1863?email_source=notifications&email_token=AE2MWRZCVWZ3Y2J2MM2XSMLQHVAG3A5CNFSM4GBVYIK2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD5WH7FQ#issuecomment-527204246>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AE2MWR53B45RWITGS6WY6ODQHVAG3ANCNFSM4GBVYIKQ>
.
|
This is a bounty task for writing a clearly thought out proposal how to integrate a Monero wallet into Bisq.
Basic idea is to connect with RPC to monderod and provide a basic wallet UI in Bisq for Monero. A second step would be to make sending and receiving Monero in the trade process automated.
It should be designed with iterative release cycles in mind. Start with minimal vialbel product and then move to the next level.
Security is an important factor to keep in mind.
Proposal author should be very familiar with Monero from tech and community side.
The proposal needs to have contain research in the technical feasibility and solutions (e.g. which Java library to use for RPC,...).
I suggest 500 BSQ for such a proposal. But it is open for discussion.
The text was updated successfully, but these errors were encountered: