Why We Built Our Auction System Off-chain, and Other UX Decisions

We’ve been building limitedcards for the better part of the year, and what a ride it has been. Inspired by the CryptoKitties phenomenon that came to light last year (has it been a year already?!), we started to explore the possibilities that the glorious ERC-721 standard could enable. Insurance claims, real estate, music, art, product inventory, financial services, notarizing…oh so many options. After evaluating what we would be passionate about, we decided to set out on a mission to facilitate the use of NFTs in the sports industry. Lots of people love sports, and so do we!

Our goal is to tokenize every athlete, in every sport, in every country, at every level, and build experiences around them. Our v1 is far from realizing that vision, but yah, one step at a time. For now, what we’ve built out is a ERC-721 compliant marketplace, supporting the buying and selling of limitedcards’ sports collectibles. In building this, there’s been a wide range of design decisions made, addressing Dapp specific considerations. What follows are a few of the key designs we’ve made.

With typical trading cards, an athlete will have a distribution of numerous editions, of varying rarity. While we could follow suit, we wanted to stay true to the rarity and non-fungible nature of the ERC-721 token. There will only ever be one edition released, for every active athlete, on a season basis. For example, there will only be one Steph Curry token released, for the 2018-2019 season. These will be the epitome of rare, one-of-a-kind digital collectibles.

While we don’t currently have game-play elements incorporated, we do have plans to offer them. To be forward-thinking, we evaluated the types of data that would be needed, and the architecture to best support it. There’s an abundance of athlete attributes that can be captured, such as height, weight, number, position, and career stats. Those attributes would no doubt be useful when we look to incorporate game play, such as Fantasy elements, so we wanted to retain and store much of that data. Storing data in a contract is not cheap, so how much of it should be stored in it? To provide us with cost savings, and the flexibility to add/remove attributes as needed, we’ve opted to store the athlete attributes out of contract, using the standard metadata token URI field for ERC-721 tokens. The next questions was, do we store the data locally, or on a 3rd party solution like IPFS. We weighed the pros/cons of storing the data locally, especially for performance benefits, as we had experienced some questionable load-times using IPFS on occasion. We ultimately decided to do both. We store the data locally so that the user experience on our site wouldn’t be adversely affected. We also store on IPFS to decentralize the data, so that the token can be fully utilized without our intervention, enabling also for other Dapps to build on top of it. We now have the best of both worlds.

One aspect we wanted to improve upon with our Dapp, was to try to incorporate more social elements, surrounding the token ownership. Beyond simply just owning the collectible, what could you do with it? On our individual collectible pages, we’ve implemented a feed feature, where the collectible owner, can engage in conversations, with the collectible fans. Even though individuals may not be able to own the collectible, they can still “Like” the collectible, and engage with it. As the collectible gains in popularity, the collectible owner, will have a growing fan base in which to engage and interact with.

An important aspect of our Dapp is our marketplace and auctioning functionality. While evaluating alternative marketplaces and auction systems, we thought about how we can differentiate ourselves. We wanted to prioritize the user experience, so that those unfamiliar/new with blockchain wouldn’t have too much difficulty navigating through the service. We did some interesting things here to achieve that vision.

Many of the Ethereum based marketplaces that utilize auctions, are based on the Dutch auction type (popularized by CryptoKitties), where you specify a high starting price, then the price decrements in intervals, until a bid is made, and bought. This auction type works pretty well on the Ethereum blockchain, because the gas required to conduct the sale, is minimal. Gas is only required to place the collectible into escrow, then again when the bid is made, and purchased. However, Dutch auctions don’t necessarily lead to the best outcome for the seller, and creates a cheapening perception of the collectible, as the price continually declines. We wanted to create a better experience for the seller, without negatively influencing the perceived value of the collectible, which meant that a Dutch auction was not the way to go.

Evaluating other auction types, we ended up deciding to run our auctions in the traditional English style, with incrementing bids. Sellers no longer need to dwell on how to effectively price their collectibles. However, the problem with running this type of auction, on Ethereum, is that a bid, does not necessarily lead to a purchase. You could end up continuously making bids, having to spend gas to make those bids, without ever winning. Costly and not ideal for the bidder/buyer. Problematic! Wouldn’t it better to be able to make bids, without having to spend gas? Absolutely! To address this, we’ve decided to run the auctions off-chain, so that there will be no costs associated with simply making a bid. This also means, that the collectible does not need to be placed into an escrow contract, while it’s listed for sale, so the collectible will remain under the owner’s control. Not only that, we support automatic/proxy bidding, just like eBay. I’m sure there’s some of you reading this, and already groaning about how off-chain bidding isn’t decentralized. In weighing the pros and cons, and thinking about addressing the larger mass market, we’re confident in this decision made. We’re prioritizing the user experience, over the perceived decentralization value.

As we’re running the auctions off-chain, and not collecting the bid amount at the time of the bid, there is the possibility that the winner, ends up not making payment. This isn’t a new problem for the typical English style auction. eBay is affected by this sort of situation as well, but hey, they’re still running a successful auction platform. To decrease the likelihood of winners not following through with their payment, we are introducing a concept called “Verified” bids, where we connect with the bidders’ digital wallet, to confirm whether they have sufficient funds to cover the bid. If they do, we mark their bid as “Verified”. At the end of the auction, the seller can choose whether to go with the highest “Verified” bid (which may not be the highest overall bid), or the overall highest bid (which may not be verified, and more prone to non-payment). Ideally, the highest overall bid, will also be “Verified”.

Another notable point about our auctions, is that, as we are running them off-chain, we have flexibility in the currency used to capture the bids. Most auctions running on Ethereum are based on ETH, which can be problematic, when there’s big swings in it’s market value, on a daily basis. To stabilize the value of the bids, we’ve opted to capture the bids in fiat, US dollars, which should also help those unfamiliar with ETH/crypto, ease into the platform. At the end of the auction, the US dollar bid amount, will be converted to ETH at market rate. The collectible will then be escrowed into an Escrow contract, at the converted ETH value. The winning bidder, would then make payment into the Escrow contract, using ETH, which would then automatically transfer them the collectible. Important to re-iterate that the seller doesn’t need to send their collectible into on-chain escrow, until they’ve selected a winner for their auction.

The future for limitedcards is exciting, and we’re looking forward to have you join us on this adventure. We know that there’s a lot left to be desired with our v1, but if you bare with us, we’ll get there. The platform is live, running on Main-net, and available for use. We have much more planned in terms of the post-purchase experience, but if you have any thoughts and suggestions, we’re all ears! We’d love to hear your feedback and any questions you may have about how the ecosystem works.

Also, we’ll be giving away collectibles pretty frequently, so be sure to check out our homepage for the giveaways.

View Giveaway

Please enable JavaScript to view the comments powered by Disqus.