Inspiration

Storing your files should be simple, seamless, and safe. However, the current platforms that do this are not as secure as we would like. Platforms like Github, Google Drive, and 1Password are all centralized storage, controlled by a third party that is able to overcharge or inhibit access to resources at any time. Control should be given to the user, not the corporations. As such, we decided to create DDrive!

What it does

DDrive decentralizes conventional file storage and sharing using on chain protocols and methods. We support uploads up to 1 TB with Jackal Storage, and stores these files in an on-chain cloud storage system. A user is able to store anything from passwords, to API keys, to IAM access secrets, to code snippets. It uses the secure IPFS and GPG security protocol to encrypt and transfer/share files between users. To incentivize users, we allow the user to swap Solana and other types of cryptocurrency with Jackal coins using Axelar's general token passing (callContract() method), in order to purchase more storage while using their interchain protocol. We also want to support the ability to mint the file on the blockchain in order to share certain secure files globally, in the case of open source use cases, which allows a decentralized and de-controlled protocol to share files (as compared to presigned URLs for example). We also want to support being able to upload all file types including images, and sending those securely without sacrificing latency, and possibly automate a way to create Jackal storage wallets. We also want to definitely support more interchain communication and types of transfers. Finally, we'd need to build our own interchain protocol token transfer in order to set up a secure cross chain transaction and proof of work.

How we built it

We used the Jackal storage secure protocol to store files, and the Axelar general message and token transfer capabilities with interchain to support users through Jackal, We also set up a user tutorial, to teach users how to get the basic Jackal wallet set up with Keplr or Phantom, or to use a cross site app like Sollet to connect to Metamask (best wallet in my opinion). We used the Solana wallet CLI and the SOL testnet to create smart contracts that build transactions on the Solana blockchain, and deployed a swapping mechanism using Axelar's general token transfer protocol to swap cryptocurrency from standard types (Ethereum, Solana, Polygon) to Jackal. We also calculated gas costs using Axelar's gas cost estimation function. We used Solidity and Typescript to create our smart contracts and call the SDKs, and possibly Rust in the future to integrate into a full stack system. For our full stack application, we used the Next.JS stack with a MongoDB database to perform (centralized) user authentication.

Challenges we ran into

We ran into a lot of Jackal issues, with the lack of documentation (but there was a lot of mentorship, thank you Jackal :D). We ran into versioning and install issues due to incompability (e.g. using Vite over React, Typescript support, Jackal-js versions), having to debug issues browser issues with limited Typescript logs, having to depend on JSDoc and codebase understanding in order to implment functions, and having to script the RC to ping multiple domains to find one not blocked by a CORS proxy. We also had some trouble working with Axelar, as the smart contract error handling was not as intuitive as we wished, and using Remix was quite difficult, as deploying transactions often woudl fail intermittently without reason. The Axelar testnet also took a long time to setup, as we had to work with transferring funds interchain and switching between wallets (for Jackal as well) for cross wallet transfers and syncs. This in turn provided a roadblock for us to work with Solana's stack as well. A lot of our time was spent debugging and fixing errors, as we had to debug issues cross chain, and on-chain, and jumping between errors was quite difficult with a frontend and backend to deal with as well. We had to come up with workarounds for a large part of our systems. Furthermore, as we were beginners at this hackathon, we had to pick up a very complex SDK and protocol from scratch, and watch tutorials that often just led to more questions. For the frontend, using Next.js for the first time was challenging as we didn’t know what the difference between Next.js and React was. Using Tailwind for the first time was also a challenge as getting used to Tailwind’s structure was a little confusing. We had a great deal of trouble for the backend to store the file into a database then Jackal and in reverse obtaining the files because the nature of typescript and how we set up the routing for pages which didn’t allow for component to be called or useState variable to be passed into it.

Accomplishments that we're proud of

We're proud that we were able to build a working full stack application in 48 hours, and integrated a partially working web3 component, and a much deeper understanding of blockchain security/storage protocols. We're proud that we learned how to use sponsor technologies very quickly, and apply our knowledge to integrate different protocols and technologies. We're proud of having a much better understanding of the Jackal codebase, web3 related errors, and how to use npm versioning to manipulate our codebase to target specific functionalities. We're proud of having a very innovative and long term idea, as well as a product that we can work on after the hackathon.

What we learned

We learned a lot of information about how to deploy transactions onto the blockchain and how to use different web3 technologies to do more than just cryptocurrency. We learned how to perform interchain transactions, swap blockchains with ease and read gas costs, . We also learned how to debug blockchain errors, and how we could search for transactions on AxelarScan or EtherScan. We were able to learn a lot and start building on three different sponsor protocols, and learned about SDKs and setting up wallets quite quickly, though smart contracts are going to be a long term understanding. We're also proud of the fact that we learned about the Rust stack, which is super helpful when deploying smart contracts on DevOps/cloud services.

What's next for DDrive

We want to continue working on DDrive long after the hackathon has ended. As all of us are interested in startups, we believe that DDrive is a good long term idea to pivot to and potentially create a MVP and full product for. As such, we want to fully build out the features we want to add (as listed in What It Does section), but also add features that facilitate a simpler way to access our app and use web3 services, such as setting up webhooks to access SDKs more easily (we would love to use Helius to perform more difficult Solana RPC transactions), writing documentation for setting up our app/using our app (in the frontend), teaching users about our sponsors and how blockchain is such an important feature. Most importantly, we want to collaborate with the amazing sponsors who have given us support during the hackathon to continue working on our project, through Accelerate or Incubator/Grant programs. We also want to improve the security of file sharing even further, and do research into web3 advancements in blockchain security, in order to further encrypt secure data. Furthermore, we could pivot to blockchain edtech, as our product is a very good case study into the dangers of centralized storage, and the companies at the forefront of change.

Built With

Share this project:

Updates