Happy Birthday, SportCrypt
It was pointed out to us in our chat that our smart contract just had its first birthday!
We’d like to take this opportunity to reflect a bit on the previous year and where we are going next.
Our mainnet contract was created on Jan 19th 2018, although we were on the testnet for a couple months before that which is why our site says “Established 2017”.
We launched just before SuperBowl LII and ran a promotion where we gave out a small amount of free ETH to anyone who tried out the site and left some feedback. Since then we haven’t really done any advertising other than some posts on our social media.
Today our contract has processed over 23k transactions, with more than 7000 ETH bet. We have a small but growing core of users, many of whom use the site regularly. Thank you so much, your support means a lot to us!
As many of you have noticed, we haven’t been doing much (visible) work on the site lately. That’s because we’ve been focusing on the next version which is getting close to a release. It’s going to be like SportCrypt is now, but better. We’re going to improve the user experience, make it faster, and increase decentralization.
New Smart Contract
We’re nearly done the next version of our smart contract. It will fix some minor issues we’ve noticed with the current contract and add some new features we’re looking forward to using:
- Bet with any token, not just ETH
This is a feature that has been requested often. Especially in times when the price of ETH is volatile, some people are uncomfortable holding positions in ETH and would prefer to bet with “stable coins” that are designed to hold their value against USD (for instance). In fact, the new version of the contract will support betting with any ERC-20 token. When we launch we will have betting available in DAI (one of the most popular stable coins) as well as ETH (wrapped ETH technically). Another side-effect of this is that you won’t need to deposit your tokens into our smart contract anymore — all bets will be “wallet to wallet”.
- EIP 712 signatures
When you create an order on SportCrypt, MetaMask pops up with an unhelpful window full of a jumble of random characters and you don’t really have any idea of what you are signing. There is a new standard called EIP 712 that we will support to improve this experience. You can read more about it and see screenshots in MetaMask’s blog post.
- Take multiple orders in a single bet
Sometimes there are multiple orders at acceptable prices and it is a pain to individually create trades to take them all. With the new contract you’ll be able to submit a single bet that specifies all the orders you are willing to accept. The contract will try to fill them in the same transaction, in the order you specify, up to the trade limit you set. This should make betting easier and reduce “collisions” where multiple traders try to take the same orders.
- More granular odds
Currently you can specify odds only at integer prices (in implied probability). So, for example, you can create an offer at 50 or 51 (+100 or +104 in american odds), but not in between. The new version of the contract will allow you to specify prices in between those. However, to encourage meaningful price competition, orderbooks may have policies on the prices of orders they will relay. More to come on that later.
- Merkleized oracle specification
In the current smart contract, there are special addresses controlled by us known as the “owner” and “admin” addresses. No smart contract with such a setup can be described as fully decentralized. That’s why we’re getting rid of them. In the next version of the contract we will have absolutely no special privileges over anyone else. In order to specify which addresses have the power to act as oracles, “grader” addresses will be embedded into the match IDs via a merkle tree structure. In addition to improving decentralization, this will allow us to implement multi-sig oracles, where 2 or more parties must agree on the result of a match before it is considered finalized. Related to this, we will be introducing modest grading fees, but we intend to be extremely price competitive.
- Atomic order matching
In some cases we’ve seen “crossed orderbooks” where the price to buy is lower than it is to sell. Smart traders have been quick to take advantage of these arbitrage opportunities for a quick profit. However, in order to do so they’ve needed at least some free capital available, and, more importantly, run the risk that one of the trades succeeds and the other fails, leaving them carrying a position. We’re fixing that. There will be a new method on the smart contract specifically designed for risk-free arbitrage. No capital will be required and there is no risk of a partial-fill. Not only will this help keep the orderbook consistent, but it will enable new ways to use the system. For instance, you could place an order at slightly worse odds than an existing order in the opposite direction and allow the arbitrage bots to fill your trade — at 0 gas cost for you! In fact, we plan to have completely gas-free front-ends to our system that exploit this (but the current transaction-based exchange functionality will continue to exist for advanced users).
- Batched claims
Since you may have positions in multiple tokens, we wanted to make it as cheap and simple as possible to claim all your winnings. So, to support this you’ll be able to issue a single claim command that collects winnings for multiple tokens. In addition, you can issue claims for other people’s addresses if you feel like paying their gas costs for them. Normally users will probably not do this, but it allows for “betting agents” like the gas-free interfaces described above to submit claims on their users’ behalf.
- More cancellation options
If you want to cancel orders now, you need to send transactions to the blockchain for each individual order. Not only is this expensive, but it can take a long time if you have many orders to cancel. We’re adding a few new options to manage your orders. First, there will be a way to send a single transaction that cancels all orders created before a certain time. Second, we’re introducing the concept of order groups, where multiple orders can share the same fill limit, and that fill limit can be cancelled in a single transaction. So, for example, you could limit your orders on NFL to a certain collateral limit. This would prevent you from being over exposed to NFL (while still sharing collateral) and allow you to cancel all your NFL orders immediately, without affecting your orders on other sports. This functionality is very generic and you are free to arrange your orders into any order groups you choose.
- Bugfixes and optimizations
We’re fixing a few minor bugs in the contract, such as the annoying “0 value trades” that sometimes appear when there has been a trading collision or the market maker has run out of collateral. We’re also optimizing gas usage as much as possible without making the contract too complicated. For example, we’re “borrowing” a neat trick from the 0x protocol where we don’t bother to validate a signature (~5k gas) if the order has already been partially filled, because the signature was validated previously.
Our current orderbook implements an ad-hoc websocket protocol that was basically built out just enough for our web client to use. Despite this, we’ve had at least 4 independent people figure out the protocol and build automated market making and trading bots on top of our platform!
- Official API
This has been something we’ve known we need for a while. Our users have spoken and we hear you. We are building a well-documented, easy to use API with full-featured examples in several languages.
Our orderbook is currently quite centralized, and we’ve always wanted to get away from this. We’ll be taking our first steps in this direction soon by allowing our users to host their own orderbook replicas. Users may want to do this for efficiency, or may want to host their own private “dark pool” orderbooks.
To be honest, the current UI code is something of a mess and it is getting more and more difficult to add new features. We’re working on a big refactor that will use the new orderbook API, and cleanup the code which will allow us to roll out new features much more quickly.
The new version of the UI will be much faster since we are reducing our dependency on infura. We want the full page download and render to happen in less than 1/2 a second for the majority of our users.
From now on, mobile will be a high priority in all our user interface designs. Many of our users are already using Trust Wallet, Cipher, and FireFox Mobile with MetaMask. Although these do work, it’s a pretty sub-optimal experience that we plan to improve upon.
As a bonus for those of you who are still reading, we’re going to let you know early about a new brand-name for SportCrypt.
Truth be told, we’ve never been 100% happy with the name SportCrypt. When we were starting this project we looked around a bit for a name that embodied what we were building, and SportCrypt was the best we could come up with at the time: It had references to sports betting and to cryptocurrency, was short and easy-to-type, and the .com domain name was available.
However, after we’ve got to know our users and market better, we’ve decided to go in another direction. Our favourite users aren’t sports fans, or occasional recreational bettors. They are the true, unrepentant degens.
Hunting for value on college basketball totals? Testing out a +EV model for Slovakian handball? Attractive line on the annual hotdog eating contest? Got a tip on the Airedale terrier at the Westminster dog show?
We’ve got you covered.
SportCrypt.com is becoming degens.com (Q1 or Q2 2019)
Looking forward to another awesome year and beyond!