Last week I spent $1000 & 15 hours trying to make a NFT as my metaverse ID card.
Here’s how it went & why blockchain as a digital identity solution has a long way to go 🎬
Why do I need a metaverse ID? Cuz I’m desperate.
My Twitter account has a rampant impersonation problem. I get messages from followers abt new ones every week just as I block/report old ones.
Imposters sell fake investment courses or paid memberships pretending it’s me. Wish I could tell you nobody fell for them. But people do. Confused & angry peeps end up coming to me for answers (I know). It’s become a reputation risk.
I asked Twitter to verify my account multiple times. They refused. Yes it sucks. But not much I can do.
So when Twitter rolled out NFT profile pic, I had an idea. NFTs are unique tokens tracked on chain. If I make one called Tascha Che & link to twitter, it’s like an ID card in the metaverse to easily verify I’m me, right?
For a sec there I thought I was a genius.
I found a computer graphic artist from Russia to make a pfp image from one of my Youtube videos. She did an amazing job. Me gusta!
But when I tried to make it into a NFT, there came so many problems. It turned out I was no genius after all. I’ll walk you through the steps so you see what the issues are & why we’re far away from creating metaverse identity for everyone in a scalable way.
Step 1: write NFT contract
Since I need to own my ID, it makes no sense to create the NFT via a platform like OpenSea since they use a shared contract that they own. Plus on OpenSea your NFT is not minted until it’s sold/transferred.
So I created a contract from scratch. It was easy. A few lines of copy-paste codes. But you can’t expect everyone in society to deploy their own contract manually. Roadblock #1.
Step 2: deploy contract
Should I deploy it to a new chain like Avalanche or Polygon? Or stick w/ good old Etherum?
Since Twitter will fetch NFTs from your Metamask wallet where all EVM compatible chains can be connected via custom RPC, technically it should be no problem for them to pull your NFTs from non-ETH chains.
Deploying to Avalanche would cost me $10, vs north of $1000 on ETH main net. No brainer, right?
But if cost is low, what’d prevent an impersonator from deploying a NFT using same name & image as mine? Yes, hash token is unique. But metadata doesn’t need be. Who is to say token ID 0x98a4ff8d… is the real Tascha & another equally unique token is the fake?
In real world your identity is pinned down by social context. Context is thin in digital world. Blockchain can help but doesn’t really solve the problem, yet.
Biggest challenge w/ identities in metaverse is not abt tech.— Tascha (@TaschaLabs) February 11, 2022
Identity in real world is established by social context. You're your parents' child, your spouse's partner, your company's employee. Those are RL "multisigs" that are hard to fake.
Metaverse has little such context.
I decided to deploy to Ethereum as I figured few impersonators would take on the large cost to deploy their own NFT to Eth L1 w/ my pfp for the highly uncertain payoff of scamming people.
It’s a twisted “proof of stake” if you will.
But I’m sure you see the irony— high cost is as much a value prop for Eth L1 as slowness a value prop for horse & buggy.
To fulfill its potential as internet of value, blockchain needs to be cars & airplanes, not horses. Requiring people to prove the validity of their ID by paying a lot for it is not scalable.
But that’s what we do now. Eth NFTs on average are worth more than those on other chains cuz it’s expensive to deploy & a game for rich people only.
Anyhow, I spent $1k & deployed the contract. But issues only got started.
Step 3: mint NFT
As you know, NFT metadata— image, video, texts— are not stored on blockchain since on-chain space is limited. That leads many to think NFTs are a joke, cuz creators can change metadata or swap out image file in off-chain storage after token is deployed.
But whether ’tis a bug or a feature is up to debate. On one hand, allowing metadata to be changed w/o restriction undermines trust in any identity system even if most creators have no incentive to alter metadata.
On other hand, as the owner of your metaverse ID, you *should* be able to change its metadata, just like you change your pic for your passport or driver’s license renewal every few yrs.
Alas, NFT is a general purpose tech & we don’t have tools yet to meet needs of these different use cases. So I created a bucket on AWS to store metadata & included the AWS link in my NFT. The fact that I can change metadata turned out a blessing, as you’ll see in a sec.
Step 4: render NFT on OpenSea & Metamask
My NFT was minted. I went on OpenSea to check it out. Usually when you connect Metamask, OpenSea automatically renders all NFTs you created. But oddly my new NFT showed blank page w/o name or description 🙁
The page didn’t give any clue what was wrong. After poking around for several hrs, I gave up & asked NFT patron saint @nftchance for help, who found an extra comma in my metadata JSON file, which explained why it wasn’t being parsed by OpenSea 🤦🏻♀️
I fixed the file in AWS & finally it’s showing. Imagine if creators weren’t allowed to change NFT metadata— I’d have wasted half Eth & got a half-assed token under my account to confuse the hell out of everybody.
You say, Tascha that’s what testnet is for, you should have tested deployment. Yes u r right. I was dumb. Yet it shouldn’t be hard for OpenSea & Metamask to throw an error & tell creator they have a problem, no? At times it feels like we have the dumb leading the dumber in web3.
Anywho, token deployed & rendering under my account. All good now? No.
(BTW, like this so far? I write about ideas on investment, macro and human potential. Subscribe to my newsletter for updates.)
Step 5: Connect NFT to Twitter
I chose edit profile pic-> select NFT on my bird app. It routed me to Metamask app but couldn’t fetch my NFTs.
It turned out you have to enable OpenSea API in your Metamask security setting, as neither Metamask nor Twitter actually query NFT data from blockchain. They simply rely on OpenSea to tell them what NFTs you have.
So after all this hype abt blockchain-enabled sovereignty, my metaverse identity still rides on a SQL database sitting in OpenSea cloud server. LOL, I know.
Nonetheless, I complied & enabled OpenSea API. My NFT pfp finally showed up on Twitter. And that’s when I realized…actually…only difference btw NFT pfp & normal ones is simply the former has a hex-shaped frame & the latter is round 🤔
To casual onlookers the two look almost same. You have to click on the pfp from one’s profile page to get the NFT details.
I suppose the reason Twitter made the distinction vague is b/c the problem that the NFT pfp feature solves is in itself vague— is it just to allow people to show off their pricey NFT or is it to enable metaverse identity?
At end of day I’m still not sure if my NFT ID will actually help people identify my real account from fake ones. Time will tell.
Don’t get me wrong. I have no doubt blockchain/NFT as a general purpose tech will change the world. But we’re at such primitive stage. Apps are poorly implemented & infra for any real use case sorely lacking. It’s good to keep a realistic view of where the industry is at.