• Ethereum DEX with ERC20 trade pairs
  • we don’t have own token and the development is done on our own resources
  • deposit/withdrawal model
  • we never have access to your tokens and all actions should be signed by tokens owner
  • the wallet can be unlocked with private key, keystore file or MetaMask extension
  • you pay only gas fee of deposit transactions
  • 0% deposit fee, 0% trade fee, 0% withdrawal fee
  • gas fees of trade and withdrawal transactions are covered by DEX bucket
  • source of the DEX bucket is your tips
  • real time off-chain orders and on-chain trades in the Smart Contract
  • cheapest gas costs for trade transactions, much cheaper than 0x protocol or IDEX

Hello All,

We would like to talk about our recent release of Ethereum Decentralized Exchange on the MainNet.
The website is available here

This is awesome news for the Ethereum community, we created DEX with the best offer on the market and we are proud of it!

Let’s take a look how does it work and why would you give it a try ;)

There is a lot more work planned to extend and improve it, but the core functionality and trades are already available and the Smart Contract already deployed on the MainNet.

You should know we have no investments and we don’t have our own tokens, like every startup in the crypto world. All development is done on our own resources and because we believe in decentralized future.

To better understand what we offer we will go through the trade flow and explain each step in details.

The exchange can be found here:

If you ever tried crypto exchange like Binance then you might notice all is very familiar for you in the interface.
We offer similar model with deposits and withdrawals, but it works very different under the hood.

Firstly, you need to unlock the wallet, you can use your private key, keystore file or Metamask extension.
The private key never leaves your browser and used to sign transactions.

Once the wallet is unlocked you will have option in the UI to make a deposit to the Smart Contract.
The Smart Contract is deployed and can be found here
Everyone can verify code of our Smart Contract and you can see in the code that any action with your tokens needs your signature, therefore can’t be done without you.
The key factor here is that we never have access to your tokens.


You can deposit Ether or ERC20 tokens at this moment.
The deposit of Ether is done in a single transaction.
This transaction is send from your account and you need to have Ether on your balance to cover deposit amount plus GAS fees. It’s a call of deposit function of our Smart Contract.
Usually the GAS price is around 3–8 gwei.
Your first deposit of Ether needs 45258 GAS and all next deposits 30258 GAS, this is because of how the storage update costs are calculated.
Here are some examples just in information purposes: (fee 0.00018238974 Ether) (fee 0.0002450898 Ether)

At the current price of Ether it’s ~$0.05.
There are no other deposit fees, you need to pay only GAS fee and it goes to the miners.

The deposit of ERC20 tokens can be done in two transactions from your account, you need to pay GAS fees here as well.
The first transaction is ERC20 approve, it’s send to allow second transaction where our Smart Contract transfer your tokens to the Smart Contract balance and register your deposit.
It costs ~45817 GAS, here is example

When approval transaction is confirmed you can call depositToken method of our Smart Contract.
If it’s your first tokens deposit it costs 69322 GAS, all next deposits of the same tokens will cost you 27193 GAS, but the cost depends from the token contract.
Here are examples:

The deposit transactions you can send from any wallet you like if it supports calls of the Smart Contract methods. The easiest way just send it from our website.

The Smart Contract holds your balances with 8 decimals precision.
Therefore the minimum amount for deposit of Ether is 0.00000001 Ether or 10000000000 wei.
The amount in depositToken method also supposed to be with 8 decimals, it’s converted to token decimals inside Smart Contract.
Example: the ERC20 token has 18 decimal, you want to deposit 1 token, you need to send 100000000 amount in depositToken method, it will be converted to 1000000000000000000 and used in the transfer method of ERC20 Smart Contract. So if you call depositToken method of our Smart Contract it’s always accepts amount as value with 8 decimals (1 token = 100000000).

It’s very easy and intuitive to do from the UI.

The good thing is that from this moment you don’t pay any fees!


Now you can create exchange order or fill orders from the orders book.

If you try to buy or sell tokens and there is not enough amount available or no orders at desired rate, there will be created new off-chain order, it means you just need to sign order hash, which is generated from the order parameters. This hash and signature then will be used if someone will try to fill your order.
How exactly it’s generated can found in the trade method of the Smart Contract code. The order can be filled partially, but only with initial price.
It also can’t be filled for more amount than you set and this is verified in the Smart Contract.

If you change your mind and want to change price, you need to cancel your order and create new one. This does not require to send any transaction, so it’s GAS free.
We have also expiration time of the order, it’s ~7 days by default, the order will be automatically removed in 7 days by our services from the order book, because the time period is checked in the Smart Contract and we can’t fill expired order.
The order expiration time can be changed in the UI.

If you try to buy or sell tokens and we found orders matches your parameters we will process trade. It means we send transaction from our admin account with order hash parameters and your trade parameters to fill that order. Since it’s send from our account it’s GAS free for you.

The orders match is done on the client side, we are trying to find best price for you even if you enter price higher or lower than market offers. If there are no available orders at desired rate, then there will be created new order for the amount left after fill attempts.

Once the trade transaction is confirmed you will see your balance is updated and the new amount of tokens available for withdrawal.


The withdrawals are processed similarly to the trades, we just need your signature, then transaction will be send from our admin account and therefore it’s GAS free for you.
To avoid spamming we added time limit to allow only one withdrawal per hour. There is no minimum amount.

You might notice some misleading and ask — how can you deny withdrawal if you say the tokens under user’s control?
The point is that we have two withdrawal functions in the Smart Contract. 
We just talked about withdrawAdmin function, but we have also withdraw function.
The withdraw function can be called by you directly, so even if our services completely down you still can withdraw all your tokens to the wallet balance.
The difference is that before you can call withdraw function, you firstly need to call tradesLock function and in 20000 blocks it will allow you to call withdraw function.
These 20000 blocks is around 83 hours, we take this time period to cancel your orders and finalize all your trades, so we can provide real time balances for users and real time order book.
In such way your order is valid if you just sign order hash and there is no need to place it in the Smart Contract storage.
When we spot your tradesLock call from the Smart Contract evens we will remove your orders from the order book and deny any new trade order from you.
To restore trade functionality you need to call tradesUnlock function of the Smart Contract and then you can use service as previously.

All this means you can keep your tokens in the Smart Contract and it’s safe, because you always can withdraw it.

This approach significantly reduces trade costs and we will talk more about it below.

All limits and fees can be found here

We created trade flow to look as easy as possible for users, because we think the user should not care about all challenges with sending transactions, GAS estimates, costs and nonce processing.
The user wants just to exchange tokens and here it’s — just click and it will be processed. The very important thing, that we already mentioned, we never have access to your tokens, the tokens are in the Smart Contract and controlled by rules in the Smart Contract. Everyone can verify that nothing can be done with your tokens without your signature.


You might already think about how can you cover GAS fees if nothing is taken from the users. Indeed, we cover GAS fees and we aimed to keep zero trade fees. In order to cover GAS fees we created Tips functionality. The Tips is a way to thank us for the free service.
This is completely on your own, you can set up auto-tips and that percent will be deducted from your trades automatically in the similar way as it would be usual trade fees. The difference is that you can define how much you want to pay. If you want you can use the service for free. Or just send some specific amount one time.

So the source of the funds to cover GAS costs is your tips.

We believe this model can work.

We need to cover GAS costs, servers costs, salaries and so on. We will be working on other ways of monetization, e.g. ads on the site or subscription model, or referral program.
But we want to provide zero trades costs for users.

As long as our admin balances are not empty we can cover GAS costs and keep zero trade fees, but we have a backup scenario and theoretically we can enable trade fees up to 0.5%, the limit is defined in the Smart Contract and can’t be exceeded.


Now let’s talk more about trade costs for us, that we cover with admin accounts.
We were writing the Smart Contract with idea to have GAS costs as low as possible, so the code might not look pretty, but it’s efficient.

Here are our results, if it’s first fill of the order
and all next fill transactions of the same order
It costs 118713 and 103649 GAS.

You might know about recent Constantinople hark fork on the Ropsten TestNet, the guys were working on improvements and GAS costs improvements included in this update.

With Constantinople hark fork we have such results:
It costs 99577 and 84577 GAS.

It means once the fork is done on the MainNet we will have lower GAS costs.

We can find trade transactions of other Ethereum decentralized exchanges with similar user experience and compare to our results.

Here are trade costs for IDEX: (172644 GAS) (158092 GAS) (142900 GAS)

Here are exchange transactions if you use 0x protocol: (376555 GAS) (259302 GAS) (245772 GAS)

You can make your own conclusions.

Now you see what we built, but unfortunately very few amount of people are aware of our Nescrow DEX.
We will be working in this direction as well, but you can help us a lot.
Just share info about us and invite your friends to try Nescrow DEX.

Thank you in advance!

Stay tuned by following our twitter:

NES Team