metadata: {"signature": "0x47282b67c5c369331e835273730b110fa406b816d07ce021abeacf296a42ed9117b62dd803230f4a8f55d1c9c7c0f16879ce23ade88da71189bce7ee794a37d11c", "application": {"round": "0xf50fa2dc5cbe583670323bc5acdeb02c447cd8b3", "answers": [{"type": "email", "hidden": true, "question": "Email Address", "questionId": 0, "encryptedAnswer": {"ciphertext": "BKs9VscfkZ5U0UJG2mmqZtW+QTX1HWsXbCnlxN6SxzoEXm2hIl8WlrwxLMK0iEn0", "encryptedSymmetricKey": "9766c45cb8d8f50b3f20f8fe9b7fa3387d4449483ca5b1c26604f5761db27eafb478417bfac280b51803bf77cbc3900db4d9a0c03110cbeff76f8888cbabfbd789eff318fab3877c003ee808043f928b8860b7283113488b87b2b22dd78dcbaa963d56a0203fa9d453c9698ddee75e4eb85b9082deec25abcc60107e94a8efd90000000000000020c122bf4819cb30abd91be14f7eabbf5f5427cc65da8fbbadb4a93ab8f7cc5a89ede4ec95f1fd028c46278d99bd4a908d"}}, {"type": "short-answer", "answer": "600", "hidden": false, "question": "Total Prior Funding for the project in USD", "questionId": 1}, {"type": "number", "answer": "1", "hidden": false, "question": "Team Size", "questionId": 2}, {"type": "short-answer", "answer": "evelynnmimijae", "hidden": true, "question": "Telegram Handle We Can Use To Contact (N/A if none)", "questionId": 3}, {"type": "short-answer", "answer": "https://github.com/evelynnmimijae/web3-plugin-faucettestnet", "hidden": false, "question": "Project GitHub Repo (Not Team Page)", "questionId": 4}, {"type": "short-answer", "answer": "evelynnmimijae - 0x41dF6C9CF03BFfF77a6a4df16048915e9b44Bf28", "hidden": false, "question": "List the Github Handles and Wallet Addresses of Each Team Member (e.g. owocki - 0x123, kbw  - 0x456)", "questionId": 5}, {"type": "short-answer", "answer": "N/A", "hidden": true, "question": "Social profiles (Twitter, Farcaster, Lens, etc.) of other main team members publicly associated with the project (N/A for solo founders)", "questionId": 6}, {"type": "link", "answer": "https://discord.com/channels/870819157602627584/870819157602627587", "hidden": false, "question": "Link to your Public Group Chat (e.g. Discord or Telegram)", "questionId": 7}, {"type": "short-answer", "answer": "N/A", "hidden": false, "question": "If you've participated in past grant rounds, please share any new updates or milestones from the prior months (N/A if you haven\u2019t participated previously)", "questionId": 8}, {"type": "short-answer", "answer": "N/A", "hidden": true, "question": "If you participated in past grant rounds using a different project payout wallet address, please share it here", "questionId": 9}, {"type": "short-answer", "answer": "https://github.com/evelynnmimijae/web3-plugin-faucettestnet", "hidden": false, "question": "Where should we look to see the impact of your project? Please provide links to public websites and/or the latest values for key metrics you track privately. This might be used in future impact reports", "questionId": 10}, {"type": "multiple-choice", "answer": "Grants", "hidden": false, "question": "Which of the following funding sources do you have? Check all that apply.", "questionId": 11}, {"type": "short-answer", "answer": "1 month", "hidden": false, "question": "How old is the project? (in months if less than one year)", "questionId": 12}, {"type": "dropdown", "answer": "North America", "hidden": false, "question": "Location/Region where the project team is based", "questionId": 13}, {"type": "dropdown", "answer": "Yes", "hidden": false, "question": "Have you read and confirmed your grant abides by the Program General Eligibility Policy?", "questionId": 14}, {"type": "short-answer", "answer": "https://learnweb3.io/hackathons/decentralized-intelligence-season-2/", "hidden": false, "question": "Which Hackathon did you Participate in?  Please provide the name and a link to the event.", "questionId": 15}, {"type": "short-answer", "answer": "https://learnweb3.io/hackathons/decentralized-intelligence-season-2/projects/03d0911a-d7f8-4020-bec3-82a52148dfd5/", "hidden": false, "question": "Include a link to your Hackathon project page showing your proof of participation, e.g., Buidlbox, Eth hackathon, Backdrop, etc.)", "questionId": 16}, {"type": "short-answer", "answer": "I came with the idea for a web3.js Faucet Plugin for Testnets built using Web3.js, Tableland, and smart contracts. The plugin allows users to request Ether for testing purposes on Ethereum testnets. It leverages the power of Web3.js to interact with the Ethereum blockchain, Tableland to manage data, and smart contracts to automate the distribution of Ether.", "hidden": false, "question": "Describe the project you developed during the hackathon. Highlight how your project offers innovative solutions or prototypes.", "questionId": 17}, {"type": "short-answer", "answer": "The Faucet Plugin for Testnets would automate requesting tokens from a faucet service. Developers can programmatically use the plugin to request tokens through a command-line interface (CLI) or within their development environment.  Use cases are improving developer experience, gas optimization, and more including Open Source Projects. ", "hidden": false, "question": "Describe how your project addresses clear needs within the OSS or tech ecosystem. Please elaborate on the specific challenges or gaps your project aims to fill.", "questionId": 18}, {"type": "short-answer", "answer": "MIT", "hidden": false, "question": "What type of open source software (OSS) license(s) do you have? Is all of your code available on public repos, or is some portion of your codebase private?", "questionId": 19}, {"type": "short-answer", "answer": "The hackathon just ended, but I plan on continuing the project starting with creating a Tableland database to test with and fixing test files. After that, I plan on making the plugin available within CLI and developer environments for devs to use directly. ", "hidden": false, "question": "What progress has your project made post-hackathon? Detail any developments, improvements, or milestones reached since the hackathon concluded.", "questionId": 20}, {"type": "short-answer", "answer": "I started my web3 creator and building journey through WomenBuildWeb3. I participated in their BootCamp and joined a team to apply for a their BUIDL Accelerator program. We did not win, but I still had the itch to keep going. The group drifted apart. Now, I'm back in the game and want to keep going. I'm passionate about preserving and expanding blockchain technology. I'm studying cybersecurity and feel that we need automation and security in this space. That's why I want to continue building this plugin. ", "hidden": false, "question": "Is there anything else you'd like to share about your project, previous work, or other affiliations? Is there anything you'd like to add that may help determine project eligibility?", "questionId": 21}, {"type": "dropdown", "answer": "Yes", "hidden": true, "question": "Would you like to opt-in to future messages from Gitcoin for updates, information, and/or interviews?", "questionId": 22}, {"type": "dropdown", "answer": "Yes", "hidden": true, "question": "Would you like to opt-in to us sharing your information with select third-parties for investment opportunities?", "questionId": 23}], "project": {"id": "0x71db3ac761cb9013f722dbabc24a292eb8d039cd3473cb974d91c463c8a3b7a9", "title": "web3.js Faucet Plugin for Testnets", "metaPtr": {"pointer": "bafkreicbi2ek2tue2ncl3pco5ceiux7tnuli6sn4zq4snvkvibxxgj2ogy", "protocol": "undefined"}, "website": "https://msha.ke/faucetplugin", "createdAt": 1713255004939, "userGithub": "evelynnmimijae", "credentials": {"github": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..AkPGPqdKLmCQLlYdSHalLMaLiZQpDM7ETk5nfaqvOZ8_MPtDWsprM_6tbkX6RnCEVaRTjf5tBs-cYERFON09Aw", "type": "Ed25519Signature2018", "created": "2024-04-16T21:00:44.381Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2024-04-16T21:00:44.381Z", "expirationDate": "2024-07-15T21:00:44.381Z", "credentialSubject": {"id": "did:pkh:eip155:1:0x41dF6C9CF03BFfF77a6a4df16048915e9b44Bf28", "hash": "v0.0.0:EfQHSEmwnVbreecod8dsKhdm5fTQFaPPrhQOuiQlFPE=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextGithubOrg#The-Web3-Cr34tive-Agency#39884663"}}, "twitter": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..5JYH37GNvkGYf1mbaY9w26JCNdzjT2hEXKKKFTToZnljTOHfMYVteT1CPRaOYxhTGGGOr831A98St_6e_GH9AA", "type": "Ed25519Signature2018", "created": "2024-04-16T08:12:09.111Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2024-04-16T08:12:09.111Z", "expirationDate": "2024-07-15T08:12:09.111Z", "credentialSubject": {"id": "did:pkh:eip155:1:0x41dF6C9CF03BFfF77a6a4df16048915e9b44Bf28", "hash": "v0.0.0:9honWCmZfdLv/+l3lX+3XvRpxEjA9+MyDhY6GBIRy/E=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextTwitter#evelynnmimijae"}}}, "description": "Overview\n\nA web3.js Faucet Plugin for Testnets will be a tool designed to streamline obtaining testnet tokens for developers working on Ethereum-based projects. The plugin addresses several challenges and improves the developer experience in several ways. \n\nThe Faucet Plugin for Testnets would automate requesting tokens from a faucet service. Developers can programmatically use the plugin to request tokens through a command-line interface (CLI) or within their development environment. The plugin currently interacts with the faucet service via HTTP requests, sending the developer\u2019s testnet address as part of the request. The faucet service then sends the requested token amount to the specified address. \n\nThis plugin incorporates Tableland\u2019s decentralized cloud database for private faucet automation. This will encourage the use of private faucets to keep bots from stealing testnet tokens. The automation process frees admins from having to approve and send tokens to developers, and developers won\u2019t have to wait for tokens to test projects, improving DevEx. \n\nFeatures\n\nUser request handling: Request validation\u2014Validates user requests to ensure they meet the criteria for receiving Ether (e.g., valid Ethereum address format). Rate limiting\u2014Implements rate limiting to prevent abuse of the faucet and ensure fair distribution of Ether.\n\n\nDatabase integration with Tableland: Address Verification\u2014Checks the Tableland database to verify if a user\u2019s address has already claimed Ether, preventing double-spending. Claim Record Management\u2014Updates the Tableland database to mark an address as having claimed Ether after a successful transaction.\n\n\nEthereum Blockchain Interaction: Transaction Sending\u2014Uses web3.js to send transactions from the faucet\u2019s Ethereum address to the user\u2019s address, transferring the requested amount of testnet Ether. Gas Management\u2014Automatically sets appropriate gas prices and gas limits for transactions to ensure they are processed efficiently.\n\n\nSmart Contract Support (Optional): Contract Interaction\u2014If the faucet uses smart contracts for more complex logic (e.g., time-locked claims), the plugin can interact with these contracts using web3.js. Event Listening\u2014The plugin listens for specific events emitted by the smart contracts to trigger actions (e.g., updating the database when a user claims Ether).\n\nUser feedback and Error handling: Confirmation Messages provide feedback to the user upon successful Ether distribution, including the transaction hash for verification. Error Handling gracefully handles and communicates errors to the user, including issues with the Ethereum network, insufficient funds, or problems with the Tableland database.\n\n\nSecurity Measures: Secure Storage of Private Keys\u2014Ensures that the faucet\u2019s private key is securely stored and not exposed, protecting the faucet\u2019s funds. Encryption\u2014Uses encryption for sensitive data, such as API keys for Tableland, to enhance security.\n\nCustomization and Extensibility: Customizable Rules allow for customization of rules, such as the amount of Ether distributed per request or the eligibility criteria. Extensibility should be designed to be easily extended with additional features or integrations as needed.\n\nUsage (Before & After Plugin)\n\nA web3.js plugin designed to automate faucet testnet requests will significantly enhance the developer experience and project functionality in several ways compared to the current process of manually requesting testnet tokens. \n\n1. Streamlined Request Process\n\nBefore: Developers often have to manually visit a faucet\u2019s website, input their Ethereum address, and submit a request for testnet tokens. This process can be tedious and time-consuming, especially for developers working on multiple projects or needing to request tokens frequently.\nAfter: The plugin automates this process, allowing developers to request testnet tokens directly from their development environment or via a CLI tool. This reduces the time and effort required to obtain tokens, enabling developers to focus more on their projects.\n\n2. Efficient Distribution and Tracking\n\nBefore: Manually tracking which addresses have already claimed tokens and ensuring fair distribution can be challenging and error-prone.\nAfter: The plugin automatically tracks which addresses have claimed tokens by integrating with Tableland, this ensures that each developer receives their fair share of testnet tokens and prevents double-spending, streamlining the distribution process and enhancing the overall developer experience.\n\n3. Enhanced Security\n\nBefore: Manually handling transactions and addresses can introduce security risks, such as accidentally exposing private keys or mishandling addresses.\nAfter: The plugin encapsulates the logic for handling transactions and addresses, reducing the risk of human error. It also supports secure storage of sensitive information, such as API keys and private keys, enhancing the security of the faucet\u2019s operations.\n\n4. Customization and Flexibility\n\nBefore: Requesting testnet tokens is often rigid and lacks flexibility. The faucet\u2019s rules may limit developers, and the request process cannot be easily customized.\nAfter: The plugin offers customization options, allowing developers to tailor the faucet\u2019s behavior to their needs. For example, they can set custom rules for token distribution, integrate with other services, or extend the plugin\u2019s functionality to support additional blockchain networks. This flexibility makes the plugin more adaptable to various development scenarios.\n\n5. Improved Collaboration and Project Management\n\nBefore: Managing testnet tokens for a team or across multiple projects can be cumbersome, as each developer needs to request tokens individually.\nAfter: The plugin can be integrated into project workflows, making it easier for teams to collaborate and manage testnet tokens. Developers can request tokens as needed, and the plugin ensures that tokens are distributed efficiently and securely. This integration enhances project management and collaboration, improving the overall developer experience.\n\n6. Educational and Learning Opportunities\n\nBefore: Developers may not fully understand the implications of requesting testnet tokens, such as the importance of gas optimization and the best practices for managing Ethereum addresses.\nAfter: The plugin can be an educational tool, providing insights into gas optimization, security best practices, and efficient transaction management. The plugin allows developers to learn more about blockchain development and improve their skills.\n", "lastUpdated": 0, "projectGithub": "The-Web3-Cr34tive-Agency", "projectTwitter": "evelynnmimijae"}, "recipient": "0x41dF6C9CF03BFfF77a6a4df16048915e9b44Bf28"}}