metadata: {"signature": "0xe8d20359969a40dd87a05631e1918e6f1c11e64c3142a3d5e748a97981f2ca687714b8e378122b2eaa7829caf3672d7dbbb26a458cff9d6e50dfdc226d29c4031c", "application": {"round": "0x7492a8c4ed29b1f1559888bd832fae5d33e10370", "answers": [{"type": "email", "hidden": true, "question": "Email Address", "questionId": 0, "encryptedAnswer": {"ciphertext": "K78DQmIChfebVVhfc5Cohm5hd1oKjyWVYxTg1CdEgkYJwGwpotaAadBSYGzftbT5", "encryptedSymmetricKey": "906c3006272b313f595a19eab47a3f5ac78a6063c5ac0b620d52568ab6bc687d956c3ba3b97ef7378ce2f039adfadc005cb96623d5cb22c4ccecf056a4cbc077fea7ac03c4996d28add918f198c0a318cea3866178401bc6c29b4a68e1cfceb33c9ccdaa5835359ea3c83f37a09d023e17c2484fa4084657c4e3134665997c6500000000000000207c70d936cbec7fb706c874e6e5d32bcdce3a92af35dc1f99bb2785743fc6d69c74f3ef8c8c7c505b0d8bfc8f3ba92288"}}, {"type": "paragraph", "answer": "I hope this public good will become well adopted and anyone who is involved with ECR721s will become comfortable and acquainted with my project. This instantly adds an additional utility to any collection by directly funding the community!", "hidden": false, "question": "What impact do you hope to have (or have had) on the Gitcoin Community with this project? How do you measure your impact? (e.g. viewers, forks, branches, likes)", "questionId": 1}, {"type": "multiple-choice", "answer": "Both (mixed)", "hidden": false, "question": "Are you applying for funding for work done, proposed, or both?", "questionId": 2}, {"type": "paragraph", "answer": "I've written a smart contract in Solidity to create events and for users to claim their funds if eligible, tested it in Foundry, scripts to search the blockchain and record data and then use it to create leaves, a script to create merkle trees using leaves, a script to create Merkle proofs, a script to create signatures and signed messages if you are using the ECSDA recover optional feature.", "hidden": false, "question": "If you have work completed, please describe it below and include links where possible:", "questionId": 3}, {"type": "paragraph", "answer": "I still need to revise all the code I've written, add additional functionality as I see fit, create remaining API for the 3 scripts without them, create pages and forms on the frontend for the remaining scripts, create home pages, loading pages, error pages, etc for the frontend. I also want to create a more robust and detailed test that covers every single line of code in the `Claim` smart contract.", "hidden": false, "question": "If you have work you are planning to do, please describe it below and include estimates of how much time (in hours) you expect it will take: ", "questionId": 4}, {"type": "paragraph", "answer": "No", "hidden": false, "question": "Has this work been previously funded? If so, by who and for how much? ", "questionId": 5}, {"type": "multiple-choice", "answer": "Yes", "hidden": false, "question": "Are you working on this as an individual?", "questionId": 6}], "project": {"id": "1:0x03506eD3f57892C85DB20C36846e9c808aFe9ef4:1172", "title": "Loyalty Harvest", "metaPtr": {"pointer": "bafkreialbmvf3mnpfxuh6zpyd2rvfoonqehv6wq3xpax5lrr7wd6mjshru", "protocol": "1"}, "website": "https://github.com/RohanNero/Loyalty-Harvest", "createdAt": 1694931914974, "userGithub": "RohanNero", "credentials": {}, "description": "The goal of this project is to create a standardized template for  `Reward Event`s. These are simply a period in which holders of a certain NFT are rewarded depending on the amount of time they held their NFT. For example, if I create a `Reward Event` for my NFT collection from block number 10 to block number 20 and fund the event 5 ETH, (for the sake of easy understanding, imagine there are 5 NFTs in total). Then if the user holding `tokenId` 0 holds all the way until block 20, they would receive 1 ETH since they were eligible for 1 in total (5 / 5 = 1). However, if the user holding `tokenId` 1 sold at block number 15, they would get 0.5 ETH.  These `Reward Events`,  allow anyone to incentivize users to hold an NFT they currently own and for new users to buy one. These rewards can be a portion of the sales or revenue from any avenue, the possibilities are endless depending on the user's desired application. The organizer/creator of the event only has to run a script to generate a merkle root using the nft collection data during the event period. Then any user who held can create a merkle proof, and then claim their rewards. This allows the organizers and the users to only have to create a single transaction throughout the entire duration of the event, and since the organizer is only uploading a Merkle root and some additional information about the event, this has very low gas costs. I've already written the smart contract, tests, scripts to create leaves from an inputted nft address, create a Merkle tree using the leaves, create a proof using the tree and the leaves, create a signature that can be recovered to claim the funds. Using ECDSA isn't required to claim, but an additional feature for users who wish to claim from an address other than the one they held the NFT with. I need to flesh them out, write additional tests, and finish creating my frontend that users can interact with, so far only the create leaves script has a functional API paired with it. On my localhost frontend, I'm able to use an input form that searches the blockchain at `nftAddress` from `blockStart` to `blockEnd` and creates leaves using the data from the period, aka what block the NFT was sold at, if it was sold. This is extremely dynamic and can quickly be used to create events for any collection at any time with any amount of funding, and the entire thing is secured through cryptography on the blockchain, in the Merkle Tree, and if using it, the ECDSA recovery.\n", "lastUpdated": 0, "projectTwitter": "RohanNero"}, "recipient": "0xe4A98D2bFD66Ce08128FdFFFC9070662E489a28E"}}