The decentralized exchange development watcher thread

This is where I would like to comment on recent developments happening in the decentralized exchanges world.

I would like to start with Mercury, which @peerchemist told me about.

It’s alpha is out just a few hours, but I’m seriously impressed.

To be honest: I did not execute any trades so far, but the wallet functions seem to work plendidly. It also looks absouletly fantastic.

Here is the announcement thread on Bitcoin talk:

Get it here:

Tip: java v. 8 recommended
Linux users can run it with

 java -jar " Mercury Wallet.jar"

mind the " "! The file name in the package has a space in front.

Edit: They have NBT on their “maybe” list!
Edit2: I’ve been running to clients and the orders do seem to find each other, but aren’t executed yet. But impressive first alpha anyway.


Now we can p2p;

1 Like

Mercury uses atomic swap trades, its a simple matter of modifying the client to steal from any potential traders. Be wary.

I’m calm as I can’t get trades executed.

This sounds like a problem, that’s been tackled in several p2p applications like bittorrent and eMule.
I thought eMule had a working system to detect (modified) and ban hostile clients.

You can only execute trades with test coins.

They have all the fluff using a centralized server with no actual content - how to trade? Decentralized exchanges haven’t been created yet because it is hard to find a solution to the how to trade question not the how to store an orders in a decentralized way but they didnt even do that they use central server for order data. So far it is gimick until they provide code for the hard part of the problem which is not making a pretty UI.

Hostile clients that steal potentially lots of money and just change their key and ip address? Seems like a bad solution.

I tried to exchange Testnet BTC with main chain Dogecoin. The orders were visible in both clients but I could not buy / sell.

My experience and knowledge about bad-client detection in p2p networks is near zero. sorry.

@tehter my understanding was, that those trades are executed on blockchain. Can you explain briefly how an attacker would cheat on the blockchain?

I was talking with Matt from Mercury. He told me about some further technical requirements, that I can’t really appraise.

Here is what he told me:

I’m open to Nubits being on Mercury, but there are some technical
details that would need to be addressed before Nubit-centric trading can
be possible (the way things are now, Nubits could only be trustlessly
traded with Bitcoin). One is the ability to accept nonstandard
transaction scripts onto the network, Bitcoin Core 0.10 just made this
possible on Bitcoin, the Nubits developers would have to do the same.
Also, another is implementing OP_CHECKLOCKTIMEVERIFY, an addition to the
script system that would make trading much more robust (Bitcoin does
not yet have this, so implementing it would give Nubits an edge for
trustless trading).

Any thoughts from the devs? @JordanLee e.g.?


Yes they happen on the blockchain, but they are atomic. So they hope one person to write a custom client that initiates a trade, lets the other trader give them money and but have customizations that prevent them from sending their portion of the trade. Which is why the author is hoping OP_CHECKLOCKTIMEVERIFY will be implemented. But until that is a reality, they are just building fluff.

Ensuring early adoption of NuBits on decentralized exchanges is very important to lowering liquidity costs

Regarding OP_CHECKLOCKTIMEVERIFY, we should consider adding it to facilitate NuBit use on emerging decentralized exchanges such as Mercury. I won’t have time to research the issue for some time, so I’m wondering if @erasmospunk or @sigmike can look into this.

It is worth noting that OP_CHECKLOCKTIMEVERIFY is remarkably similar to parking, which suggests the following questions:

  1. Do we want to suggest Mercury use our parking mechanism instead of OP_CHECKLOCKTIMEVERIFY? Right now the protocol does not permit parking for zero premium, but changing the protocol to allow this is already planned for the next protocol release (formerly known as 0.6.0 but will be called 2.0 going forward).
  2. Another option is to implement OP_CHECKLOCKTIMEVERIFY but have it encapsulate the parking mechanism. Would this be optimal from the perspective of conforming to an emerging standard?
  3. We could also implement OP_CHECKLOCKTIMEVERIFY completely independent of the parking mechanism. We would need to evaluate how OP_CHECKLOCKTIMEVERIFY and parking might interact in our system (what happens if you use OP_CHECKLOCKTIMEVERIFY on an output and then attempt to park it?)

One thing to keep in mind is that parking is for a specific block duration, whereas OP_CHECKLOCKTIMEVERIFY can be for a block duration or a time duration.

I’m hoping someone will have time to research these issues, as I probably won’t be able to for a couple of weeks.


Hi @JordanLee, I am following Peter Todd’s OP_CHECKLOCKTIMEVERIFY proposal for quite a while so let me share what I know. The proof-of-concept is quite old and Peter submitted the draft last October as BIP 64 for Bitcoin:

I wouldn’t say that it is similar to parking, since the OP_RETURN field will not be used. Instead, it is just another ScriptSig operator that asks for a block height as integer (nLockTime) and clients agree that these funds are unspendable until the block height was reached.

In the “Detailed Specification” section of the document above you will see what I mean. It is extremely simple to implement. I can even point you to a PPC fork which already has it (the full commit contains 85 lines).


@creon Would I be correct in understanding that you prefer option 3?

Haha that is the question all the Bitcoin main developers are fighting about, but Bitcoin is of course extremely conservative. In my opinion OP_CHECKLOCKTIMEVERIFY enables many use-cases and it is unlikely that it will lead to any unforeseen consequences. Compared to all the Nu stuff this protocol change can probably be considered as totally safe :smile:

So yes, I would say we should make this operator. Of course special care has to be taken with parking and burning.

EDIT: Well with “we” I of course actually mean you if you are planning to implement it before going open-source. Ideally it should be combined with the 0.6 hard fork.

Nice to hear that there is interest in OP_CHECKLOCKTIMEVERIFY as it mitigates the risk of trasaction maleability and refund transactions when we deal with atomic cross-chain trading.

It is interesting to combine the parking feature with OP_CHECKLOCKTIMEVERIFY but we have to be very careful as the unpark transaction creates NBT.

1 Like

Regarding the parking transaction, the output could be replaced with something like this:


The part after OP_DROP is the classical Pay-to-PubkeyHash

This parking output will contain more money than the inputs so the minter must validate that this amount is correct one factoring the current parking rates and the time the money will stay parked.

This transaction output will be spent like a normal transaction with the only difference is that the new transaction must set the nLockTime field to be after the <unpark time> and before the current network time.

One advantage is that there is no need for one separate unpark transaction because the output becomes spendable after a specific amount of time and it is not necessary to spend it once the time passes, it only needs to appear in the UI as spendable.

Mercury just got an update to 0.0.2


There is a bug hunt for Mercury on

I would really like to see your explanations there, and the best thing: you will get a bounty!

I’m too busy building an actual distributed and decentralized exchange to review their java GUI.

They don’t even store the orders in a decentralized way, you connect to their centralized server that manages the orderbook. It would be very easy for them to cheat by switching around orders and giving them a lead on price changes. It is fluff.

1 Like

Any announcements soon?

BlackHalo went live today.

1 Like

More than an exchange apparently:

Quote from the home page

Price Growth, no more volatility
An upcoming revolutionary change is coming to crypto-currency in the Halo platform. We are working on a currency that has the ability to inflate and deflate. Interest rates are controlled by votes and thus, users can grow their own coin in a stable fashion ending the era of the infamous “pump and dump”. You will be able to sell reserve bonds, perform advanced contracts and be your own bank. For Blackcoin, this sister currency will be a stable hedge adding health to the economy.