NFT concept with the main goal of bringing over ETH NFT community and exposing them to some of the Unique Selling points of SecretNFTs
Crypto Punk would be purchased and held in an escrow / bridge account (this could be done via smart contract or manually held by Tor)
x number of CipherPunks would be created on SecretNFTs (maybe 100 or 1000) with varying degrees of random ski mask, as well as some ciphered info on them. Think of each CipherPunk as a lootbox, which one (or more) of which contain real life loot of a cryptopunk.
Users can buy CipherPunks on secretnfts, with an âunmaskâ date built in for 1 week later
Users can discuss the cipher / easter egg (similar to call of duty community easter egg deciphering)
As community figures out the cipher clues, more cipherpunks will be more desirable, worth more, however floor price of cipher punks should be cryptopunk floor / x number of cipher punks. E.g. if floor is 40k usd for crypto punk and 1000 cipher punks exist, then each cipher punk should be worth $40
On unmask date, the contract will allow users to unmask their cipher punk, revealing if they hold the true cryptopunk (think like the scooby doo unmasking)
tor/secret network will announce winner and send to winner
Questions
Will cipherpunks be for sale on secretNFTs only, or could we release mirrors on opensea?
Will you burn your secretNFT after unmasking or keep it as your secret NFT, or will it bridge into ETH as its own nft (maybe with ski mask), but 1 is unmasked to punk
How to plan the cipher, how difficult is this, is it crackable?
Resources
Foundation will need to buy 1 Crypto Punk
Will need to hire front end / UI for the buy, sell, unmask process
Will need to hire backend from secret community to work on SecretNFT
Will possibly need to hire backend solidity dev to create bridge / unmasking contract on ETH side
x number of CipherPunks strategically donated to verified punk owners to help spread awareness (if 1000 cipher punks exist, possibly airdrop 50 to active punk owners who are active on twitter / discord)
This is really creative! Its like a lottery that shows off the uniqueness of secretNFTs. Iâd definitely buy a cipherpunk if it was at the right price and gave me the chance to win big!
This would also be a very good opportunity for marketing if we are able to get some press and present it the right way.
I do like the idea but for me it is a bit unclear how we would facilitate secret network capability.
Can I as an owner unmask after a certain time-frame?
I assume Cipher is public, is there any connection between cipher and the info which one is the âactualâ punk? It seems like this in regards to (5)
I am currently thinking about ways how we could integrate the encrypted data even more to showcase secret network capabilities.
One thing to keep in mind is that if you plan to not allow anyone to unmask their CipherPunk to see if it contains the CryptoPunk until some set time, you will need to implement some sort of time oracle.
While a contract can check the time against the current block info, anyone could run a fork offline, change the blockheight/time and do a tx on their single node that is running in the âfutureâ to see whether they have the winner, so you would need a mechanism that prevents them from being able to glean that info if on a fork.
This can be implemented a number of ways, includingâŠThe unmasking call could query some time oracle contract that gets updated by some centralized, authenticated source. The unmasking process could include a request to unmask, that needs to be confirmed by some operator that monitors for requests, and then signs off on it with their addressâŠ
I wonder though if using a centralized oracle for timing defeats some of the purpose, you can do unlockable content within rarible or opensea , using their centralized servers⊠so maybe we should avoid the delay and let it be a free for all, just set floor price a bit above (punk floor price / x number of cipher punks) and let people buy them up immediately.
Thanks for the feedback on a possible exploit on this running someoneâs own chain
I guess I donât really view the centralization as a deal breaker because there are already points of centralization in the whole ideaâŠYou have one person buying the cyptopunk, one person sending it to escrow, a centralized bridge operator that will release the cryptopunk whenever the right cipherpunk is sent to the bridge, etcâŠAdding another centralized component to a list of several doesnât seem to violate anything in my opinion.
And in that light, if you are already fully accepting that the idea is just going to have points of centralization, you could make the ability to unmask as simple as having a handle msg that only an admin address can use that letâs everyone unmask their cipherpunk after he executes the msg. That would also prevent someone from being able to do it on a fork.
You could even turn that part into a game if you want. Create clues that if anyone solves it will provide the mnemonic for the address that has the ability to enable unmasking. Then anyone who solves the puzzle can add the mnemonic to any wallet and unlock the unmask ability for everyone
To simplify things, I think a 2 phase CipherPunk roll out could go like this:
Phase 1 - Simple Sealed Bid of 1 CryptoPunk, hidden within x CipherPunks
1 cipher punk holds the private key to an ETH wallet that holds a cryptopunk
can market the eth address to prove it exists
cipher floor price should be cryptopunk floor price (possibly slightly less based off users needing to bridge, but any savvy investor will see this as a buy opportunity)
Showcases the sealed bid aspect as well as private metadata (literally putting in the private key for an eth wallet)
Phase 2 - Lootbox type game - 1000 CipherPunks
Private key of wallet is distributed via mnemonic over 12 cipher punks
clues in the metadata as community works together to solve the puzzle, buy new cipherpunks to decipher the mnemonic
The mnemonic will be the key to a metamask wallet which holds a cryptopunk
Because phase 1 was succesful, people will trust this and try to game it, creating buzz as people try to solve it
Talked to can about the idea to just put the private key of an eth wallet in the metadata , then no bridge operator needed, the winning user will just get access to the eth wallet holding the eth nft.
If you put the mnemonic in the private metadata, youâll want to make sure that a sale can only be finalized by the seller performing some HandleMsg (i.e., if using an auction model, only the seller can close the auction).
Otherwise, someone can do an offline attack where they buy every cipherpunk on their own fork (doesnât matter how much they spend because those tokens are not actually being spent on the real chain), and look at the private metadata of every one of them since they own all the cipherpunks on the forked chain, and just use the private key to claim the cryptopunk without even buying one real cipherpunk.
Ok so this is basically like âaccept offerâ option from the seller? Does this mean that, in general, secret metadata will not be able to exist in secretNFTs on open auctions (that donât require a seller action)?
If you are talking about sealed-bid auctions, it isnât really âaccept offerâ because the seller wouldnât know what the offer is. It is just âclose auctionâ which accepts whatever the highest bid is.
Every auction has to be closed to finalize a sale. For the OTC auction, either the seller can do it, or after the auction ending time has passed anyone can do it. If you plan on putting something in the metadata that has value that resides outside of the state of the SN blockchain, you should only allow the seller to close the auction to prevent off-chain attacks
Iâm not sure if that âvalue residing off-chainâ is clearâŠ
Basically if you are selling information that has value, someone acquires that value from learning that information (the value has no dependence on the SN blockchain). But when you are selling that information for tokens, those tokens only have value if it has been transferred on the chain that everyone agrees represents the state of the network. So you only want to release that information if there is confirmation/assurance that you have/will receive the chain-dependent value