How I Exposed a Cryptocurrency Exchange's Dirty Tricks to Fight Competition
Karthik Varma
Posted on September 30, 2018
It's no wonder that post the bullish market run in 2017, cryptocurrencies are known to almost everyone across the world š. That run attracted more players into the market. From people tempted to make easy money to investors who catered to this sudden spike in users from institutional players to rookie users. Many new platforms known as crypto exchanges where people can buy and sell cryptocurrencies began to sprout up.. As of April 2018, Bitcoin.com has reported that there are around more than 500 cryptocurrency exchanges. Since there was a sudden spike in the number of exchanges, these exchanges resorted to using various tactics to gather more users onto their platform from competitions to airdrops and referral programs.
BitBns is one of the popular Indian cryptocurrency exchange. It started operating from December 2017. Even though they were new into that market it didnāt take them much time to gather a good reputation thanks to the founders who were already running a good company and a growing user base thanks to the bearish market š
When they started they went on a listing spree. They had more digital assets than Koinex, Coinome and even other popular exchanges. People just loved BitBns because of their quick support and that they were offering more choices of cryptocurrencies.
But post Q1 2018 there were many exchanges in the market and all these were using all kind of possible tricks from trading competitions to referral programs to get that market share.
The factors that matter to users to select their exchanges are:
- 24 Hours Volume (People donāt want to wait a lot of time for their orders to get executed)
- Good Support (People donāt like waiting and since cryptocurrencies are highly volatile they expect quick support)
More Listings (People love to buy all kinds of different cryptocurrencies)
24 Hours Volume plays a very crucial part in regards to any cryptocurrency exchange because CoinMarketCap wonāt list exchanges that donāt have volumes above a particular threshold. The CoinMarketCap ranking is very important for all exchanges as its like the search index of all crypto assets or exchanges. Essentially CMC is like Google for crypto-assets and exchanges.
In fact traders like me check the volumes on CMC first and then go to various exchanges. Now coming back to BitBns, it already has all other things except volumes. Maybe due to this they decided to manipulate it just to gain market share.
Decoding:
I have traded on most of the Indian exchanges in the past and BitBns didnāt have that great volumes. Then when BitBns suddenly had better volumes compared to WazirX, Koinex and Coindelta, I thought it was a system bug.
In the past, BitBns was accused of having faked their volumes and they explained that there was a bug in the system. This was even reported by Coincrunch in March, 2018.
Coin Crunch India@coincrunchinWe investigated an issue reported by a user about ETN volumes on BitBns.
We found that BitBns is incorrectly calculating the volume of trade. the trade volume is doubled in most cases.
@bitbns please respond
#Cryptocurrency #Trading #Volume #Exchange #Bitbns #Investigation12:51 PM - 17 Mar 2018
Now when it comes to July, 2018 when most of the Indian exchanges volumes are decreasing drastically, BitBns volumes are still good. I had my doubts about it and wanted to check if it was true. To my realisation ,indeed the volumes shown are wrong.
Firstly, I looked at how the Trade History is updated on the website. Essentially, trade history contains the history of last ten executed trades. It shows a timestamp, the volume and the PPU(Price Per Unit).
Later I found out from the XHR requests that the trade history data is sent using Polling APIs.
There were two APIs. One for generating a Session ID and then the other which uses this Session ID to fetches the Trade History data.
Due to this I decided to check the volumes of BTC and XRP markets as they are in the top five markets by volume on BitBns. Now I knew how to fetch the data and had to decide my stack.
I was quite familiar with Node.js and decided to use it to put all the data I fetch into a database.
After that, I decided on using MySQL because it seemed like the most logical to me. I used MySQL like 3 years back before this and whenever I tell my friends that I use MySQL even now they just laugh š¹
I used axios to fetch data from the APIs. However, the response I received was so shitty I had to clean up the response and turn it into parseable JSON.
I sorted out everything to fetch the data and then had to store everything in MySQL. I programmed it in such a way so that when the program starts it puts the data as it is in the database on the first run. Then from later on it compares the latest record in the database with the newly fetched data from the trade history. If new records are detected based on the timestamp from the API-fetched data, then it is inserted into the database.
I created a table for XRP and BTC each with the SNo, TimeStamp, Volume, PPU columns.
This is how data is stored inside MySQL:
If the timestamp, volume and PPU are same for data, then it is treated as duplicate data and does not get stored in DB. This case is extremely rare but I put it just incase if anything went wrong.
I used mail services to send notifications once the script ran and once to send an aggregated volume after 24 hours directly to the email.
After that, I put everything in a setInterval to keep fetching and storing the data.
An overview of the different functions I used:
Since the time interval is pretty high, you might think that we may miss some trades. However in Indian markets thats actually a great refresh rate. This is because there arenāt many trades as they are on Binance. Nonetheless, I didnāt miss any data.
I was fully ready with my code and deploying it.
I deployed my program on WeDeploy and the MySQL DB on Google Cloud Platform. The deployment and infrastructure was not at all a problem, thanks to the amazing team at WeDeploy.
Results:
I stopped my program exactly 24 Hours after it has begun. Even though we got the aggregated results on the email, I decided to aggregate them myself inside MySQL. The below are the results from the program.
Here are the 24 Hours aggregated volume of XRP and BTC markets based on our program:
There was a drastic difference between the volumes reported by BitBns and CoinMarketCap
On BitBns and CoinMarketCap :
The 24 Hours Volumes on BitBns of XRP Market (Right) and BTC Market(Left):
The volumes shown on CMC after 24 Hours:
The Volumes shown on BitBns and CoinMarketCap are called as Rolling Volumes. It means that when you open their website, the Volume shown on the website is from the past 24 hours.
If you open it at a time
T
then the volume shown is fromT-24
.
On BitBns website, the 24 Volume of XRP is shown as 3,75,410 and the 24 Volume of BTC is shown as 20.266.
Let's compare this with result of our program.
- The program said that the 24 hour volume of XRP is 62,365 and on BitBns it says 3,75,410 . The volume reported on the website is more than 500% than the actual volume.
- Again the 24 hour volume of BTC is 2.638 according to our program and on BitBns it says that it is 20.266. The volume reported on the website is more than 668% than the actual volume.
BitBns is reporting a manipulated 24 hour holumes. It reported 501% more incase of XRP and 668% incase of BTC than the original volumes.
We can clearly see that that BitBns is faking its volumes in order to gain a competitive edge over other exchanges. We have no idea many other exchanges are reporting fake volumes.
Special thanks to MCD-50 for helping me out.
In case you want to verify my claims, here is the link to the project on GitHub
Posted on September 30, 2018
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
September 30, 2018