What is this?
Mars Maiers is a bayesian game, a social trust experiment and a blockchain study—all played out
as a year long art project. It was created by Jacob Bijani and Allan Yu.
This is the first sealed-bid auction (aka silent-auction, or blind-auction) built on the L1 Ethereum blockchain. You can view our custom contract here.
A sealed-bid auction means you won’t know the number of bids or the highest price for any given auction until it is settled,
even though all bids are committed to the blockchain. We’ve bent a transparent, decentralized, and immutable blockchain protocol
into doing something it wasn’t originally designed to do.
Each auction will settle with a reveal of the artwork, the number of bids, the highest bidder, the winning price,
and the daily AES-128 encryption keys to prove that all bids on-chain are accurate.
The game began on January 1, 2022 and is now underway. Good luck and happy bidding!
One art piece minted everyday for one year,
starting on January 1, 2022 at midnight UTC.
The format is a “first price-sealed bid” auction,
aka silent or blind auction. This means you will not know who is bidding,
how many people are bidding, or the highest bid price of an auction, until it ends.
The art piece, a daily AES-128 encryption key for proof, the winner,
and all bids will be revealed once an auction settles.
Every bid is immutable and committed to the blockchain.
One auction ends every day, at midnight UTC.
NFT will be automatically minted to the winner’s wallet. There is no need for the winner to do additional settling.
You can bid on any auction that has not ended.
All lost bids are refundable as soon as that day’s auction ends, or when the project concludes.
You may increase your bid prior to an auction ending as many times as you’d like.
Each piece is a one-of-one hand made NFT by Allan Yu.
All media will be hosted on IPFS.
You can place a bid on any day before that auction ends.
Bids you make for an auction are cumulative, meaning you can increase your bid for a day at any time.
No one will know how many people have placed a bid for a particular day prior to that auction ending.
No one will know what the highest bid is for a particular day prior to that auction ending.
You may socially finesse bid information from others.
You may use past auction data to triangulate and predict future price points.
All bid information will be revealed immediately after an auction ends.
Bid with confidence.
In the event the highest bid for an auction was placed by more than one person, the winner will be chosen by a tiebreaker.
Tie breakers are awarded to the person who placed their bid first.
If a person placed more than one bid for the auction, we will use the time from their oldest bid.
This is an incentive for you to bid on a day that’s further out.
You can refund the lost bids of an auction as soon as that day’s winner is announced,
but you will incur a small gas fee for the transfer.
Alternatively, once the project concludes you can refund all failed bids in a single transaction.
This way you can save gas, but you will have to wait until January 1, 2023 to do so.
Simple Bidding Strategy
A light brush up on the Bayesian Nash equilibrium might help, maybe?
All bid information is committed on-chain, but the day for which the bids are for is encrypted.
This means you can see the general pulse of bid activity, but have no way of knowing what day they refer to.
You may spread out your bids for a particular auction by placing many small bids throughout the year to try and throw people off your trail
(e.g. if you want to bid 1.25 ETH on day 69, you could place five separate bids of 0.25 ETH throughout the year instead of one large bid).
There is nothing stopping you from sharing information about what the bids are, or what they could be.
All transactions on the Ethereum blockchain are public, and include: the user creating the transaction, the value of the transaction,
and the parameters called by the transaction. In our case, this means the blockchain includes:
- the bidders wallet address
- the value of the bid
- the time of the bid
- the auction you bid on
To make this a sealed-bid / silent auction, we obscure (D) the “auction day” your bid was placed on using AES-128 encryption.
Every “auction day” has its own unique encryption keys.
When a user places a bid using our site, we hash a string containing the “auction day” they wish to bid on and their wallet address.
We call this a bid token, and they are unique to each user + day pair.
The user then creates a transaction using their bid token, and sends the value they would like to bid.
Our off-chain backend reads the incoming transactions, and is able to decrypt the bid token and understand what “auction day” the bid refers to.
When settling an auction, it sorts the bids and picks the highest cumulative value.
Once a day’s auction closes, we publish the encryption keys used to create the bid tokens for that “auction day”. This way, you can review past transactions
and confirm nothing was tampered with off-chain. See below for more information on how to decrypt bid tokens.
Who’s Behind This?
The contract was designed and developed by Jacob Bijani.
The art is created by Allan Yu.
The original Mars Maiers project took another life form, which you can read about here.
You can view the Mars Maiers archive here.
Find the project on Discord and Twitter, or us personally @allanyu_ and @jcb.
Thank you to Steve for being a guardian angel over this project.
Thank you to Tida for leaving town for a week, in which Jacob built most of this.
Thank you to Bodge for your advice and guidance.
Thank you to all of our friends for the support and feedback throughout this process.
How to Decrypt Daily Keys?
1. Go to a bid transaction on etherscan and tap on “See More”
2. Hit “Decode Input data” to decode the transactions hex payload.
3. The input parameter is your encrypted bid token.
4. Go to the day that you believe this transaction to correlate to
and find that day’s encryption key and IV (initialization vector).
5. Use any AES-128-CBC algorithm to decode the bid token using the key and IV.
You can use an online decryption tool like aes.online-domain-tools.com,
(with which we have no affiliation). Be sure to enter the input values as hex.
6. If you entered everything correctly, you should see a string of ASCII text.
The format is “
DAY-OF-YEAR;WALLET-ADDRESS”, which should match the bid’s day, a bidder’s wallet address.
7. As you can see here 001 is day 1, and 0xe7b... is the bidder’s wallet address.
This hash, which was created for the bid and submitted to the blockchain prior to the auction being settled, is proof that the on-chain bid is accurate.