NFTLocker
🛅

NFTLocker

People
Description / What is your motivation?
Originally I set out to make low level evm tools, rather than writing smart contracts. (Reason being: I want tools that help me reason about the contracts I make). However, I have an NFT to give away, so although this is was intended to be a one-use contract that shows some purpose-driven functionalities of smart contracts, I think it has potential to become something far more interesting. As it is, I can deploy the original MVP without too much additional work, but it would be nice to modularize this process.
Team Story
Subtheme
NFTs
Manager
Track
Gaming
PoC (Website / Inpso / Deck)
📣 How can KB2 help? Anything goes.
Taking open source technology and using it however they want Brainstorming things they'd like to see with NFTs
Last updated on
Feb 8, 2021
Primary Track
Gaming / NFT's
Build
Security
Fairlaunch
DeFi
Project (Yes)
Project
Investable?
Mentor Connection?
My Tag
NFTs
Collab with KERNEL/ Gitcoin
Stage | Important facts
MVP
Stewards Actions?
- Connect him with other NFT projects.
Related to KB2 Fellows (Related to Copy of KERNEL Adventures (People) 1)
Stewards Thoughts!
Status
 
Introduction to this Adventure
I'm pretty scattered in general, so don't take this as a professionally structured project. This page will probably just be full of different ideas that are related to the purpose behind the NFTLocker. Feel free to add to this page anywhere you want, just try not to overwrite anything unless it's to fix an error.
Purpose Driven Programming
I learned how to program computers basically by setting a goal of what I wanted to do, and then researching everything I needed to know to get that thing done. I don't really have a decent way to explain how it works other than to say it's purpose driven programming. I set off from the start with a general idea of what it is I want to do, and then as I learn more about the topic it tends to grow naturally. I think I spend most of my time reading, very little time actually coding. So the next section at least for now is just going to be a sample of what it is like to plan obsessively before writing even a line of code.
Purpose
The purpose of the NFTLocker is to help make NFT riddle games and NFT prize distributions more automated and to incentivize participation in these events by putting the power and excitement to claim the NFT into the hands of the user. The riddle should be fair so that users are invited to try it, and the riddle should be cost effective. The riddle should have methods to verify that the answer is correct off chain, so that the user does not have to pay for each guess. The contracts should all follow best smart contract practices and minimize the costs of storage and the workload that the Ethereum network has to process. The costs for redemption should be fair to both the creator and the winner. Everyone should just win.
Problems Statement
As of right now, there's multiple ways to make an NFT riddle unfair:
  • Lying about the right password being wrong (censorship)
  • Lying about the wrong password being right (nepotism/corruption)
  • Never having a password in the first place, and only giving it to people you like (sadistic mass deception)
  • Having a non-standard process of redeeming the NFT (inefficiency)
  • possibly and probably more that I can't think of now
    Proposed Solution 1
    Currently, the best solution I can come up with is to adopt a password-protected paradigm, much like traditional web authentication schemes. For comparison, consider what happens when you log into your favorite website, Myspace.com. You have submit your email and password, but does Myspace store your password on their database? No, of course not, because Myspace follows the best security practices and stores a hash of your password instead. To make it impossible for two users who share the same exact password from having the same exact hash, Myspace adds a little salt to the password before hashing it, then it stores the hash into its database without saving the password. I propose we do this with NFTs, as well. Make NFTs like Myspace, bring Myspace back. Remember when you could edit your own page? Haahahahaaa probably not
    Attack Vectors 1
    • The creator can still share the password (nepotism/corruption)
    • The password might get hacked from the creator (security/infrastructure)
    • The password might get lost (data corruption/clerical errors)
    • The smart contract might get hacked for the NFT or outright destroyed (security/Ethereum/infrastructure)
    • Someone undesirable might win the NFT (public relations)
    • The costs of the contract execution might make it infeasible to use (inefficiency)
       
      For one, there's nothing stopping the NFT riddle creator from sharing the password with somebody. This is inherent in the problem statement, so it doesn't seem that we've improved, but I'll get to that.
      Research & Diffuse Ideas
      Random but possibly related ideas
      NFTs as puzzle rewards
      As an example of NFTs available through scavenger hunts, refer to the following two NFT contracts which serve rewards by KERNEL and Chainlink. There is obviously and probably a lot more, and if you know of any OR if you're going to deploy your own NFTs, list them here!
       
      NFTLocker
      🛅

      NFTLocker

      People
      Description / What is your motivation?
      Originally I set out to make low level evm tools, rather than writing smart contracts. (Reason being: I want tools that help me reason about the contracts I make). However, I have an NFT to give away, so although this is was intended to be a one-use contract that shows some purpose-driven functionalities of smart contracts, I think it has potential to become something far more interesting. As it is, I can deploy the original MVP without too much additional work, but it would be nice to modularize this process.
      Team Story
      Subtheme
      NFTs
      Manager
      Track
      Gaming
      PoC (Website / Inpso / Deck)
      📣 How can KB2 help? Anything goes.
      Taking open source technology and using it however they want Brainstorming things they'd like to see with NFTs
      Last updated on
      Feb 8, 2021
      Primary Track
      Gaming / NFT's
      Build
      Security
      Fairlaunch
      DeFi
      Project (Yes)
      Project
      Investable?
      Mentor Connection?
      My Tag
      NFTs
      Collab with KERNEL/ Gitcoin
      Stage | Important facts
      MVP
      Stewards Actions?
      - Connect him with other NFT projects.
      Related to KB2 Fellows (Related to Copy of KERNEL Adventures (People) 1)
      Stewards Thoughts!
      Status
       
      Introduction to this Adventure
      I'm pretty scattered in general, so don't take this as a professionally structured project. This page will probably just be full of different ideas that are related to the purpose behind the NFTLocker. Feel free to add to this page anywhere you want, just try not to overwrite anything unless it's to fix an error.
      Purpose Driven Programming
      I learned how to program computers basically by setting a goal of what I wanted to do, and then researching everything I needed to know to get that thing done. I don't really have a decent way to explain how it works other than to say it's purpose driven programming. I set off from the start with a general idea of what it is I want to do, and then as I learn more about the topic it tends to grow naturally. I think I spend most of my time reading, very little time actually coding. So the next section at least for now is just going to be a sample of what it is like to plan obsessively before writing even a line of code.
      Purpose
      The purpose of the NFTLocker is to help make NFT riddle games and NFT prize distributions more automated and to incentivize participation in these events by putting the power and excitement to claim the NFT into the hands of the user. The riddle should be fair so that users are invited to try it, and the riddle should be cost effective. The riddle should have methods to verify that the answer is correct off chain, so that the user does not have to pay for each guess. The contracts should all follow best smart contract practices and minimize the costs of storage and the workload that the Ethereum network has to process. The costs for redemption should be fair to both the creator and the winner. Everyone should just win.
      Problems Statement
      As of right now, there's multiple ways to make an NFT riddle unfair:
      • Lying about the right password being wrong (censorship)
      • Lying about the wrong password being right (nepotism/corruption)
      • Never having a password in the first place, and only giving it to people you like (sadistic mass deception)
      • Having a non-standard process of redeeming the NFT (inefficiency)
      • possibly and probably more that I can't think of now
        Proposed Solution 1
        Currently, the best solution I can come up with is to adopt a password-protected paradigm, much like traditional web authentication schemes. For comparison, consider what happens when you log into your favorite website, Myspace.com. You have submit your email and password, but does Myspace store your password on their database? No, of course not, because Myspace follows the best security practices and stores a hash of your password instead. To make it impossible for two users who share the same exact password from having the same exact hash, Myspace adds a little salt to the password before hashing it, then it stores the hash into its database without saving the password. I propose we do this with NFTs, as well. Make NFTs like Myspace, bring Myspace back. Remember when you could edit your own page? Haahahahaaa probably not
        Attack Vectors 1
        • The creator can still share the password (nepotism/corruption)
        • The password might get hacked from the creator (security/infrastructure)
        • The password might get lost (data corruption/clerical errors)
        • The smart contract might get hacked for the NFT or outright destroyed (security/Ethereum/infrastructure)
        • Someone undesirable might win the NFT (public relations)
        • The costs of the contract execution might make it infeasible to use (inefficiency)
           
          For one, there's nothing stopping the NFT riddle creator from sharing the password with somebody. This is inherent in the problem statement, so it doesn't seem that we've improved, but I'll get to that.
          Research & Diffuse Ideas
          Random but possibly related ideas
          NFTs as puzzle rewards
          As an example of NFTs available through scavenger hunts, refer to the following two NFT contracts which serve rewards by KERNEL and Chainlink. There is obviously and probably a lot more, and if you know of any OR if you're going to deploy your own NFTs, list them here!