EthMadness — Winners & Payouts

Brendan Lee
Nodesmith
Published in
3 min readApr 10, 2019

March Madness 2019 has come to a close! Congrats to Virginia and Tony Bennett — a well deserved title for the Cavaliers & a fun OT game for the rest of us. This also brings us to the end of EthMadness! Thanks to everyone who filled out a bracket & joined us for the inaugural year. Check out this blog post on how we built EthMadness and made the UX responsive without any server side code.

Across the Men’s & Women’s brackets, we had 700 brackets submitted from over 300 unique addresses!

Here are the winnings brackets on the men’s side:

  1. “With 4.4 to go!” (0xee9Cf471F4Fb9cf37120f7cbe8fE5Bf91CdEA773) — 350 DAI.
  2. WeWillWin_3 (0x4B4369020C13420B3cD85B33D8952c1BC9a30eD7) — 100 DAI.
  3. Hoos Baby (0x7945561d43d9B7f582F9c250ab5f02C44C34D9fb) — 50 DAI. (tied point wise with 2nd place, but lost score breaker tie).

And on the NCAAW side, we had one address submit all three top brackets (0x41C41D8487c67fD90d6a0d2F794a78799636A020) — same Dai prizes apply. Congrats!

Best Name Contest:

We decided that to award 50 Dai to what we considered the best named bracket. Congrats to Ether You Win or You DAI — fusing a few of our favorite things — crypto, basketball, & Game of Thrones.

Payout Details

Due to the decentralized nature of EthMadness — payouts are not immediate. The ‘judging’ period takes place in two phases:

  1. Oracles submit the final game results (i.e. a perfect bracket) — in the future, we will use a decentralized oracle network to accomplish this. This year, we had 4 trusted oracles, with their addresses tied to their personal identity, submit the results. Thanks to Kim from Aion Network & Michael from Pocket Network!

We have just finished this phase!

  • Here is the transaction that advanced marked the tournament as complete and advanced the contract to the ‘oracle vote’ state.
  • These are our oracle vote transaction — Oracle 1, Oracle 2, Oracle 3, Oracle 4.
  • And here is the transaction that advanced the contract state from the ‘oracle vote’ state to the ‘reveal’ state (which we are currently in and is described below).

2) A week long ‘reveal period’. This mechanism exists due to the price of executing bracket scoring. With 200 brackets, the gas cost of the execution would’ve been manageable, but with 100,000 brackets, we’d run out of gas if we tried to judge all the brackets — effectively DDoSing the contract. Instead, we use a common pattern of a reveal period — where anyone can submit a transaction that says — ‘my bracket was the 1st place bracket, please verify that, and then the payout should go to me’.

To make things easy, we’re submitting the ‘reveals’ for each winning bracket since there’s not much at stake here, given we’re the ones who put up the prize pool. If instead ,players had submitted their own buy-ins, it would be important for players to submit their own reveals. Anyone can still submit a reveal for our current bracket challenge, but we thought it’d be easier to submit them on behalf of the top brackets.

For example, you could execute the claimTopEntry method — https://etherscan.io/tx/0x5a45aa1c464000f705a9cb8c971abf07e8d8cf70720fe6e9f8f272cb29518fe0 — with the encoded bracket data that was submitted via the UI and associated with a specific address.

Once the reveal period is over, we can advance the contract to the completed state, which will trigger the DAI payouts. Long story short, winners will receive their Dai payouts in about a week!

The winning bracket

Future Plans

We’ll hopefully run this challenge again next year, so feel free to leave some feedback if there are any features you’d like to see added for next year: https://github.com/nodesmith/eth-madness/issues

The code is open source, so we’d love to see others run with it and repurpose it for other tournaments.

Thanks again for participating! And make sure to check out our other blog post on how we built the dApp and made it responsive with client side + Ethereum network only .

--

--