{"title": "DApilink", "logoImg": "bafkreiffgxx7gdsubrfaq4gmy5boe65zf7k6qez7jclk5o2e2orsajjyf4", "website": "https://github.com/ronykris/dapilink", "bannerImg": "bafkreidhqdvhgxx4utvhxxhf3k3qmg3sptmhztrqsgpicpwb5x57qc5riy", "createdAt": 1699388100923, "userGithub": "ronykris", "credentials": {"github": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..IsvpFVfrMr4SjFPcaDcp63gZGYnzxAu_1W4lvbhnVbMZEA4hJSQX1MIB7PFmGEt0V5OYoI5aXFPuSeH47emIAA", "type": "Ed25519Signature2018", "created": "2023-11-07T20:55:25.972Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2023-11-07T20:55:25.972Z", "expirationDate": "2024-02-05T20:55:25.972Z", "credentialSubject": {"id": "did:pkh:eip155:1:0x0ed18cFf1e16Db3f8b76D05c84182E4849ab03D4", "hash": "v0.0.0:TzAwlrESoHrzCT+VGtxLKjUudfhVkPln9rKjaJ4Bjqw=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextGithubOrg#dapilink#20333193"}}, "twitter": {"type": ["VerifiableCredential"], "proof": {"jws": "eyJhbGciOiJFZERTQSIsImNyaXQiOlsiYjY0Il0sImI2NCI6ZmFsc2V9..LLuahSqJ64_3HwVFuvvgxcrORIX9EJEDgt9pQWEPuDWnBfMas4b3bCI6vl1eAEVn8QpUuSLfHPmdE2E88XDnBA", "type": "Ed25519Signature2018", "created": "2023-11-07T20:05:14.116Z", "proofPurpose": "assertionMethod", "verificationMethod": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC#z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC"}, "issuer": "did:key:z6MkghvGHLobLEdj1bgRLhS4LPGJAvbMA1tn2zcRyqmYU5LC", "@context": ["https://www.w3.org/2018/credentials/v1"], "issuanceDate": "2023-11-07T20:05:14.116Z", "expirationDate": "2024-02-05T20:05:14.116Z", "credentialSubject": {"id": "did:pkh:eip155:1:0x0ed18cFf1e16Db3f8b76D05c84182E4849ab03D4", "hash": "v0.0.0:Zy6plAYqSNYBwXe3qyZWvUjmyxeqShAqhqQ+ntWogNk=", "@context": [{"hash": "https://schema.org/Text", "provider": "https://schema.org/Text"}], "provider": "ClearTextTwitter#lowcodekrish"}}}, "description": "## **DApilink: Confidential Oracle Solution**\n\n### **Project Description**\n\n\"Unlock the Future of Blockchain: Seamlessly Connect Worlds with our Bridgeless and Confidential Oracle Solution on Sapphire Blockchain!” Say goodbye to bridges and centralized bottlenecks - our groundbreaking solution empowers seamless, secure, and bridgeless communication between chains and the external world. Join us in revolutionizing the blockchain landscape!”\n\nThe project aims to create a robust, decentralized and secure Oracle solution on the Sapphire blockchain. Oracles play a pivotal role in the blockchain ecosystem by enabling smart contracts to securely interact with external data sources and other blockchains. Traditional Oracle solutions often rely on centralized entities, which can pose security risks and introduce points of failure. **Our goal is to develop a confidential Oracle solution that ensures decentralization, security, and ease of use for users and developers alike. It provides a plug and play mechanism to interact with blockchains without bridges, external data sources or each oracle deployed on blockchains.**\n\n**Key Features:**\n\n1. **Decentralization:** Our Oracle solution will be controlled by a confidential smart contract running on Sapphire blockchain thereby eliminating single points of failure and enhancing the overall security and reliability of the system.\n2. **Distributed Network:** We will establish a network of trusted nodes managed and authenticated by the smart contract ensuring high availability and low latency for data retrieval and transmission.\n3. **Sapphire Blockchain Integration:** The smart contract will use signatures to authenticate and manage the nodes.\n4. **Secure Communication:** Sapphire para time is a confidential EVM. Therefore, the entire contract , the data and transactions are encrypted. The nodes would also run in a secured, sanboxed and confidential environment to enable secure communication between the nodes and external sources, guaranteeing the integrity and confidentiality of data.\n5. **Bridgeless Interoperability:** Unlike traditional solutions that require bridge contracts to communicate with other chains, our Oracle solution will facilitate seamless cross-chain communication without the need for additional bridge contracts. \n\n**Recognition:** This project was built in a Privacy for web3 hackathon organized by the oasis protocol and was one among the esteemed winners of the Standards track. \n\nThat said, we are applying for the **GG19** grant and specifically for the **Web3 Open Source Software** track to take **DApilink** forward.\n\n### **Monetization**\n\n- Charge the user a nominal fee per txn (txn + platform charges)\n- Fee based on level of service (eg: premium customers get faster processing) per txn\n- Subscription slabs based on offerings\n\n### **Funds Utilization**\n\nThe funds from the Gitcoin grant will be utilized for:\n\n1. **Development:** At the moment the product has limited functionality. The goal is to implement a secured, encrypted infrastructure for the oracle to enable authenticated, genuine HTTP call outs and interchain operability.\n2. **Security Audits:** Conducting comprehensive security audits to identify and address vulnerabilities, enhancing the overall robustness of the Oracle solution.\n3. **Infrastructure Charges:** Hosting charges of the serverless functions, virtual machines and shared development environments.\n4. **Community Outreach:** Organizing workshops, webinars, and developer meetups to educate the community about confidential Oracles and their importance in the blockchain ecosystem.\n5. **Documentation:** Creating detailed documentation and tutorials to guide developers in integrating our Oracle solution into their projects and fostering widespread adoption.\n6. **Hiring:** If need be hire an additional member to handle marketing and community outreach\n\n### **Why Support Us**\n\n1. **Innovation:** Our project represents an innovative approach to solving the Oracle and Bridge related problems while pushing the boundaries of what is currently possible in the blockchain space.\n2. **Community Impact:** By developing a decentralized and confidential Oracle solution, we empower developers to build more secure and reliable decentralized applications, enabling growth and innovation within the blockchain community.\n3. **Open Source:** We are committed to open-source principles, ensuring that our solution remains transparent, accessible, and collaborative.\n\n### **Team**\n\nAt the moment we are a team of two full stack developers. I am [Krish](https://github.com/ronykris), a data storage technologist by profession and have been building solutions and apps in web3 since a while now. My team mate is a talented young lad, [Arsalan](https://github.com/Arsalaan-Alam). He is currently pursuing engineering in Computer Science, a prolific builder, marketeer and a creative genius for his age.\n\n### **Roadmap**\n\n- **Phase 1:** Revamp to build production level software (Month 1-2)\n    - Optimize code to improve performance, security and transaction charges\n    - Integrate modules and write the CICD pipeline to run automated tests\n- **Phase 2:** Development (Month 3-4)\n    - Focusing on decentralization, security, and integration with Sapphire blockchain.\n    - Implement a bridgeless contract and escrow services on sapphire to enable interchain operability\n    - Write tests and improve the CICD pipeline\n- **Phase 3:** Testing and Optimization (Month 5-6)\n    - Conduct extensive testing, including security testing, load testing, and network resilience testing.\n    - Optimize the solution for performance and scalability.\n- **Phase 4:** Community Engagement and Adoption (Month 7-8)\n    - Launch the decentralized Oracle solution on the Sapphire blockchain.\n    - Engage with the community through workshops, webinars, and developer outreach programs.\n    - Provide ongoing support to developers integrating our Oracle solution into their projects.\n- **Phase 5:** Maintenance ( Month 8 onwards)\n    - Maintain code, perform penetration tests and vulnerability scans from time to time\n    - Fix bugs and implement new feature requests\n\n### Inspiration\n\nOur inspiration to develop this solution stemmed from a shared vision of democratizing access to secure, real-world data within the blockchain ecosystem. Witnessing the immense potential of smart contracts and decentralized applications, we were driven by the need to eliminate the existing limitations that centralized Oracles and bridge contracts impose. We envisioned a future where blockchain technology seamlessly integrates with the external world without compromising on security or decentralization. This vision fueled our passion to innovate, pushing us to explore new horizons in the realm of blockchain interoperability. We were motivated by the belief that true blockchain adoption hinges on creating a trustless environment where smart contracts can autonomously interact with accurate, reliable data from diverse sources. This desire to bridge the gap between blockchain and real-world applications inspired us to embark on this journey, paving the way for a more interconnected, secure, and decentralized digital future.\n\n### Tech Stack\n\n**DApilink** is an open source oracle for sapphire that doesn't need chainlink support to talk to the external world. Below is the current stack and implementation. This will likely go through a change to plug in confidential nodes.\n\nDApilink has 3 primary modules\n\n1. The client\n2. The contract\n3. The nodes\n\nLet's look at how each module operates:\n\n### [The client](https://github.com/ronykris/dapilink/tree/master#the-client)\n\n- the client is the end user facing app that accepts the api specifications (endpoint, params, body, headers and method)\n- the client interacts with the sapphire contract to mutate the state of the contract with the api spec\n- it listens on events to detect the completion of the job\n- retrieves the cid from the contract and fetches the data from the ipfs gateway\n\n### [The contract](https://github.com/ronykris/dapilink/tree/master#the-contract)\n\nAka the brain of this tool. It is the backbone of this implementation. In nutshell it is responsible for the following operations\n\n- relayer\n- credential manager\n- node manager\n\nBelow is how the contract is made to work\n\n- it takes the user supplied api specifications and updates a structure\n- generates unique string to identify the request and updates a mapping with the specifications\n- it queries the state to fetch an ID of the node to carry out the api invocation after authentication\n- when the node reverts with the data it updates the state with the cid of the search results\n- the client retrieves the cid to fetch the results\n- the contract currently runs on sapphire testnet\n\n### [The nodes](https://github.com/ronykris/dapilink/tree/master#the-nodes)\n\nAka the oracle are individual nodejs services that does the following\n\n- performs a login to the contract and registers it self\n- it listens on events from the contract to perform authentication before triggering the job\n- upon authentication it triggers the api request\n- fetches the api response data and uploads to ipfs through a self hosted gateway\n- updates the state of the contract with the cid of the uploaded data\n\nEach node is a VM in Google cloud as of now. But it can be any container hosted anywhere as long as it has an active internet connection\n\nBy supporting our project, you are contributing to the advancement of decentralized technology and empowering developers to create more secure and versatile blockchain applications. We are excited about the potential of our confidential Oracle solution and look forward to making a lasting impact on the blockchain ecosystem.\n\nThank you for considering our application. We are open to any questions or discussions you may have regarding our project. Please feel free to reach out to [Krish](mailto:rony.kris@gmail.com) and/or [Arsalan](mailto:studyfreak1234@gmail.com).", "logoImgData": {}, "bannerImgData": {}, "projectGithub": "dapilink", "projectTwitter": "lowcodekrish"}