For the Embiggen Airdrop we loaded OpenRelay with 27 million orders ready for people to fill. But 0x orders have to be an offer to trade one token for another. On the surface, we couldn’t use 0x orders as a way to simply give away tokens — with 0x, users need to give us something in exchange. We just want to give away Embiggen — not ask for anything in exchange — but that’s not how 0x works.
Our first idea was to make an offer of 30 MBGN for 1 wei of WETH. But that would require three transactions:
- Wrap 1 wei worth of ETH to create WETH
- Set allowances for the 0x Exchange to trade that WETH
- Submit the order to the 0x Exchange to receive Embiggen
That’s a lot to ask of someone who might only be moderately amused by the idea of Embiggen. So we put our heads together and came up with NotCoin.
NotCoin is not a coin. It’s a stateless contract that acts like an unlimited token. In NotCoin, everyone has an unlimited balance, can transfer an unlimited amount of NotCoin, and everyone has given everyone else an unlimited allowance to draw from their account. NotCoin will report that any calls to it succeeded and fire the appropriate ERC20 events, but it doesn’t actually track any balances or allowances at all.
By making our Embiggen offers against NotCoin, users already have everything they need to complete the order — an unlimited supply of NotCoin, and preset allowances for the 0x Exchange to trade it on the user’s behalf. In one click (plus confirming through their wallet), the user can submit the order to the 0x Exchange. Since NotCoin doesn’t actually track balances, it’s about as cheap as an Exchange transaction can get in terms of gas. On top of that, when we deployed NotCoin we happened to get an address with 2 null bytes at the front - given the way Ethereum packs data, that actually saves a few extra units of gas relative to a typical address, but it was totally unintended.
You can of think of a 0x Order with NotCoin as the taker token as a way to write off-chain checks for ERC20 tokens. If you’re already trading that token on 0x you won’t even have to set an allowance, you can just send somebody an order and it’s up to them to cash it in for the token you offered them. Like a check there’s no strong guarantee that the funds will be there when you go to redeem your claim, so it’s by no means as secure as just sending someone the token, but we’ve already demonstrated there’s at least one good use case for this kind of tool, and there’s probably many more we haven’t imagined.
If you want to see how NotCoin works, check it out on EtherScan. You can interact with it just like any other ERC20 token, and while it was deployed especially for the Embiggen Airdrop, today it stands on its own, so anyone who needs a token that doesn’t do anything is welcome to reuse it.