hz

Mar 117 min read

$NOT: Unruggable $MNO wrapper

Back story

The story starts at block 5235 when the micro-nothing token was created, back then and to this day the basic unit of STX called uSTX or micro stx which is 1 millionth of an STX, this was before the current SIP-010 standard existed (latest standard trait published at block 16733). micro-nthng was the first usable coin in the STX ecosystem which was supported by the then Stacks Wallet now Leather. The coin had a max supply of 100 Trillion tokens all minted at deployment and distributed among 5 addresses.

Since $MNO was used by the community already and had been experimented with and basically both a memecoin about the worthlessness inherent in all non-utility tokens, creating a new token after SIP-010 multiple revisions felt wrong. And now comes the wrappers v5 at block 6644 and v6 at block 11548 both deprecated quickly after the latest and current revision of SIP-010 and the dominant wrapper became v8 at block 17715 up until recently this was the default wrapper that is only missing the implementation of both the later created SIP-016 metadata standard and SIP-019 metadata update notification standard. This token is compatible with DEX listings since it conforms to SIP-010, but back then the only DEX around was Arkadiko.

The stacks community as a whole was super small and we wanted to distribute the token to everyone and had multiple lists but never felt like the right parameters and it was worthless anyway and the faucet distributed 1M tokens per call anyway and was running just fine. The token not having any value and never promising anything and never actually having anything inherent to it but the memes created around it and the small community that sprung up around it during 2021, all these circumstances have given us full autonomy to do whatever we wanted with it.

After a while the project died down as all of us were heads down on our own projects in stacks and outside, and totally forgot about it for the next two years.

MEME REVIVAL

During a random tweet the Stacks Arabia twitter account mentioned wrapped nothing got a few folks in the replies like TO and Chiente who were interested in the project.

Then I started a conversation with the 3 other holders to get all their tokens and find a mechanism to airdrop most of the tokens in the fairest way possible, the results were 14B airdropped directly to 4500 addresses total 65T tokens and the rest (20T) were claimable through a first come first served basis and then free for all.

You might ask why not airdrop them directly, bro??

Well we had two complications, I had donated 1T to a contributor who promised a better faucet but never delivered and ghosted after I inquired about the lost tokens, and one of the majority holders lost 10T tokens in a lost wallet situations because he didn’t think much of nothing (as did all of us) and there were not enough tokens to go around to the final list, so I had improvise a fair solution first come first served basically if you’re on list during the first week the contract was deployed you get the exact amount as the first 4500 addresses 14B (exactly 14206942069).

The claim was over and now we had the listing problem and with 11% of the supply lost I basically lost interest in listing it but now we had a community of folks who got an airdrop from no where and were super interested in the token taking off.

Proof of Burn

The first solution I thought about for this problem was a proof of burn mint -I still like that idea.

Basically you prove that you have burnt the tokens in a contract and claim a new token that derives its value from the burnt $MNO, there was a huge disagreement in the community and they were very split on that approach which was understandable since people would basically burn the historic block 5235 token, and the divide continued for two days of debates and there wasn’t just enough support for the upgrade and I almost moved to do a token vote on the upgrade to gauge the actual percentage of people who wanted to do a proof of burn mint. Gladly that went nowhere and I and another community member Ghislo thought of a brilliant idea. why don’t we just take a snapshot and only block the 11% dead wallet holders addresses?

$NOT wrapper

The design of the solution depended on two things a snapshot of $MNO that had to be hardcoded into the contract and a snapshot of the v8 wrapper balances.

Since the old contract had basically zero functionality but transfers, this was done through a map

(define-map mno-snapshot principal uint)

There were 3B $MNO locked in the legacy v5 and v6 wrappers that I thought it would be irrelevant to implement a function for them to claim and that I’d just airdrop to them after the upgrade

For the v8 wrapper however it was much easier basically I had a blockheight filter in place to get the exact balance and wrap it at snapshot

(at-block (unwrap-panic (get-block-info? id-header-hash SNAPSHOT-BLOCK))
    (unwrap-panic
        (contract-call? .wrapped-nothing-v8 get-balance address)))

And if the upgrade failed and we had to revert it there was two ways:

  1. Unwrap the exact amount you wrapped which would make you always eligible to wrap

  2. Unwrap any other amount, which would mark you ineligible for rewrapping

So you might ask why complicate things and what does this accomplish?

Well, the first thing is the 10% tokens brad lost were all the old $MNO so I just excluded all of them from the $MNO snapshot and are now 0 for the wrapper.

The second thing is the 1% that were lost by our late contributor were snapshot at the block for the v8 wrapper, the contributor is the only person I have named in a contract in my life, and I allotted them 14B just like everyone else.

The max supply of the new token is 89T (exactly 88,975,877,083,900) basically restricting the supply of the new wrapper to 89% of the original $MNO.

The success of this mission depended on a lot of contributors in the community who pushed against my obsession with Proof-of-Burn and stacks being slow af also helped me reflect on these decisions and make better ones.

Conclusion

In conclusion, the micro-nothing token's journey from its creation at block 5235 to its recent revival showcases the evolution of the Stacks ecosystem and the resilience of its community. The memecoin's humble beginnings as a joke about the worthlessness of non-utility tokens eventually led to its transformation into a thriving community, despite facing numerous challenges along the way.

The successful revival of micro-nothing was made possible through the collaboration and dedication of various community members who worked together to airdrop tokens to thousands of addresses, overcome listing problems, and develop a unique solution for upgrading the token's wrapper. This innovative approach involved taking snapshots of both the original $MNO and the v8 wrapper balances, allowing for the exclusion of lost tokens and ensuring a fair distribution of the new token among its dedicated community members.

The micro-nothing token's story serves as a testament to the power of innovation, collaboration, and adaptability within the Stacks ecosystem. As the community continues to grow and evolve, it is projects like these that demonstrate the potential for creativity and success in the face of challenges.

All the code is opensource you can check the contracts and the upgrade app your self here on github.

Share this story