goldfinch-eng / mono

The main Goldfinch monorepo, including contracts, front-ends, etc.
MIT License
52 stars 44 forks source link

Create NFT's for Flight Academy awards ceremony #5

Closed blakewest closed 2 years ago

blakewest commented 2 years ago

Problem Statement

It would be awesome to give Flight Academy participants NFT's. We were gonna use POAPs, but the POAP team seems to be backed up, and doesn't have time to talk to Goldfinch.

Potential solutions

Could the community can spin up an NFT contract on Polygon or some other L2? Then we just need a way for people to claim. You could use a Merkle Distributor to let people claim, and could maybe create a simple front-end page (potentially using this repo).

There may be other ways to do it then what I'm describing! What are people's thoughts?

FuryJohnson commented 2 years ago

A few questions before start:

  1. Do you want to reserve the rights to make an additional mint (in case someone change the address)
  2. Will be another NFT for reward in next season or same?

Thank you!

About Solutions:

I think, no problem in other L2, We try first variant and then, will try to improve it. All attempts I can publish in that repo, in separate branch

unordered-set commented 2 years ago

also: could you please publish the list of public keys of participants? iirc it was not in the chain, right?

blakewest commented 2 years ago

@FuryJohnson ... 1.) No let's not worry about this 2.) Having the ability to do another NFT would be cool, but not critical. We might do other seasons, or aware different NFT's for different levels of completion (which points to using an ERC-1155 rather than ERC-721). But again, I don't think this is critical for now. Even just one NFT for everyone who completes it would be awesome. We don't have to overthink this.

@unordered-set yeah we can get that to you soon, but don't have it quite yet. The list was def not on-chain. But either way I think we'd use a Merkle Distributor (ie. what Uniswap did here). Unless there's some other way to distrubute NFT's to thousands of people cheaply...

unordered-set commented 2 years ago

Thank you very much for your reply. Great, i think we are on a same page and we can continue!

unordered-set commented 2 years ago

I think we are more or less ready with the contract.

Contract https://mumbai.polygonscan.com/address/0xaf8291a7e1b481967e34d5c7adfbd24c7dfa7a69 (passes validation of the source code as well)

And minted NFT:

Screenshot_20211124_235731_io metamask

So now I am waiting for the final list of participants to generate a Merkle tree + ideas what to place to the image, just logo or something else?

And yes, SYMBOL and NAME would be better to coordinate with you as well, GFAP is really an abbreviation which I am not very proud of 🙄

FuryJohnson commented 2 years ago

@unordered-set , I think @blakewest can answer the question)

blakewest commented 2 years ago

Awesome! A few things...

Follow up questions

@andrew-goldfinch how many types of participation NFT's would you want to give out? And if we want multiple, what exactly are they for (so that we could give unique symbols to each). If we're cool with just one type, let that be known too!

@andrew-goldfinch Do we have the art that we want to use? (whether for one type or multiple types)

@andrew-goldfinch can we get them the list of addresses that participated?

@unordered-set what email should we use to send you the list of addresses?

unordered-set commented 2 years ago

I think switching to ERC-1155 is a bit dangerous right now, because everything is already prepared and I'm a bit scared to start doing new things. Also, maintaining a long-standing contract is much more expensive. Doing one-shot hermetic minting contract is easy, repeating it easy as well. But when you are switching to ERC-1155 with a feature to add more possible tokens to it etc, you need an infrastructure to store private key, manage the contract etc.

I am more than happy to deploy additional contracts when needed instead. Or I can check more detailed about 1155 for the next graduation. And we can even back-fill it.

About my email: could you please reach me on UNORDERED_SET@TUTANOTA.COM . And just to confirm - in order to generate Merkle tree proofs there are two ways to do it. 1) I'm generating it on my PC, and we are emailing / discording proof to each participant (not nice idea, but it helps is to keep public keys hidden, although I don't think it makes sense, because all of the LP token holders etc, you can easily get it from onchain) 2) we are generating the proof on the frontend on the fly. This makes the list of addresses visible to everyone, who wants to digg into the code.

I'm more into following 2) if you don't have any objections

blakewest commented 2 years ago

@unordered-set good points regarding ERC-1155. Yeah let's stick with the ERC-721. Let's see if we want to repeat and deploy 1 or 2 more. Need to wait on @andrew-goldfinch to give us the final answer here as well as the list of addresses.

Regarding the list of addresses, I don't have any issues with no. 2. While not all flight academy participants will be on-chain (since not all participated as LPs), many did, and the public key is not sensitive information anyway. Plus they'll be nothing else to really connect it to in the outside world, so I think it's fine. @andrew-goldfinch when you have finalized the address list (and NFT styles that each address should get), please email it over.

@unordered-set what was your plan for the front-end claiming process?

Thanks! This is gonna be great!

unordered-set commented 2 years ago

@blakewest , frontend was mostly managed by @FuryJohnson . Overall, I've seen the code, it is straightforward. Connect Wallet, ensure that network is Polygon, press "MINT", show your token on OpenSea.