A Wildly Popular Ethereum Gambling Game Just Paid Out 3 Million Dollars
'Fomo3D' is a controversial and popular Ethereum application, and the lottery's winner may have clogged the blockchain itself to win.
Screengrabs: Fomo3D, KnowYourMeme. Composition: Author
The most popular application for Ethereum right now isn’t digital kitty collectibles (such innocent days)—it’s a depraved gambling game called Fomo3D that describes itself as “a psychological social experiment in greed.” On Wednesday, the first round of the game ended and paid out a jackpot worth roughly $3 million USD in ether to a player.
According to the game’s developers, they weren’t just lucky: the winning player burned through their own digital cash to rig the game for themselves.
Fomo3D has been variously described as a possible scam, abject gambling, bad, and the most interesting thing happening with Ethereum. The game works like this: players continually purchase “keys” as a timer counts down, with each key purchase adding time to the clock. When the clock runs out, the jackpot is given to the last person to buy a key. Key purchases contribute to the pot and a portion gets paid out to players proportional to the number of keys they hold. You can buy keys to get a passive income from people buying keys after you, or play to win the pot. Yes, it is crazy.
On Wednesday, a player took home winnings worth over 10,000 ETH, or just under $3 million USD, which represented just under half of the total pot of 21,811 ETH (the rest was distributed among other players and put back into the pot). According to a developer announcement in the game’s Discord channel, the winner essentially gamed the Ethereum blockchain to take the prize. As the developer put it, they “absolutely out fucking skilled” everyone else playing, including automated key-buying bots, by jamming up the Ethereum blockchain just long enough to block out other players, ensuring that they bought the last Fomo3D key.
There is some publicly-viewable evidence to back this claim up. Let’s briefly walk through it.
First, let’s note that the winning Ethereum address was “0xa169df5ed3363cfc4c92ac96c6c5f2a42fccbf85,” which we’ll just refer to as the winning address from here on out. The jackpot transaction was included in block 6191962 (bundles of transaction data called “blocks” are posted to the chain every few seconds) at 7:04 AM on Wednesday. Got that? OK, let’s move on.
If we go back and see the last time that the winning address appeared on the blockchain, we see that it purchased a key from Fomo3D earlier in the morning, the transaction for which was included in block 6191896 at 6:48 AM on Wednesday. Now this is where it gets interesting.
Following the block that included the winning address’ key purchase are several very curious blocks. Now, most blocks of Ethereum transaction data contain a few dozen or even hundreds of transactions. It’s unusual, but not unheard of, to see blocks with only a few transactions in them, but following closely after the winning address’ key purchase are six consecutive blocks with under 10 transactions in them.
If we look inside these blocks, we can see that they’re monopolized by transactions to one particular contract address, which was created by the owner of the jackpot-winning address. These transactions appear to have paid a high price for “gas” (functionally transaction fees for miners) ensuring that miners included their transactions in blocks before anybody else’s in order to collect the exorbitant fees, while also using up most of the gas allowed in a block.
The six blocks between the winning key purchase and when blocks become monopolized also contain transactions to that contract, but it wasn’t until block 6191903 that the winner really managed to stodge the blockchain with their own transactions for a brief window. Apparently, long enough to run out the clock on Fomo3D and become the last keyholder standing, and the winner of the nearly $3 million USD pot.
There are some questions to consider regarding this explanation, however. There was a gap of about 50 blocks between the time that the winning address was able to monopolize blocks and the time of the jackpot payout. In those blocks are numerous key-buying transactions to Fomo3D. According to a Fomo3D developer I spoke to over Discord chat who goes by the pseudonym “inventor,” the round ended automatically after the timer hit zero and sent the funds to an in-game “vault” that the winner only collected dozens of blocks later in block 6191962. The transactions to Fomo3D in the intervening blocks represent the start of round two and an hour-long “grace period” where key buying is disabled and funds were routed back to the players’ vaults, according to inventor.
So was the winner’s strategy cheating, or brilliant? According to inventor, it was just part of the game. “It sounds like the winner carefully studied the behavior of the automated [bots] people had managing buy-ins for them. Watched their behavior. Spent days and lots of ETH testing ways to defeat them,” inventor wrote me, “and found a moment when no other human players were playing.” According to a Fomo3D developer announcement in Discord, they estimate the winner spent 40 to 50 ETH—or $11,000 to $13,800 USD—on preparing their play at winning $3 million.
This strategy wasn’t guaranteed to win, inventor said, as another human player could have purchased a key at the same time (but with slightly less gas so it would be processed after, making them the Fomo3D leader), and the winner’s blockchain-clogging play would have simply ensured a win for someone else.
In the cryptocurrency world, there’s always room for unseen shenanigans hiding around the corner. But the story so far of how Ethereum’s wildest, most degenerate experiment paid out its first jackpot is interesting enough to consider. The blockchain is one big economic game, and the winners sometimes blur the line between cheating and brilliance.
Listen to our podcast about the world’s greatest mysteries that were solved by science.
Correction: In an earlier version of this article a block height was written as "6191986" when in fact it was "6191896." Motherboard regrets the error.