Search projects, hackathons, sponsors and tech

    ← All projects

    Demo

    About

    The problem it solves ## Inspiration This project was inspired by Violet Evergarden's episode "A Loved One Will Always Watch Over You," where a sickly mother hires Violet, a writer, to write 50 intimate letters to her daughter. The letters are sent on the daughter's birthday after the mother passes away. For 50 years, the daughter receives memorable letters from her deceased mother. With this project, I wanted to implement a similar idea but using a decentralized solution. In the anime, the letters were sent by a postal company that could lose the letters or go out of business. ## Features Until Then offers the following features: - A user can send a gift with an optional letter together with money. The sender chooses a release date. - The sender can choose to yield the money in AAVE with ETH or LINK so the gift amount can potentially grow while locked. - A receiver can only claim the gift on the release date. - After the gift is claimed, the receiver gets the money and can decrypt the letter content. - Every week, there is a $100 giveaway for users who claim a gift. - The first 100 users receive an airdrop of UNTIL tokens on Avalanche.

    How it's made

    Challenges we ran into Managing all the Chainlink services was quite challenging. Each service has its own gas requirements and setup process. Sometimes, fixing a small bug meant I had to redeploy everything from scratch. I tried to automate the deployment as much as possible, but some manual steps were still necessary. For example, with Log-based Upkeeps, I couldn't find an easy way to update the contract without deleting and recreating the Upkeep. The CCIP integration with Avalanche was also tricky to test from Sepolia, as each transaction took around 23 minutes to complete. It was a bit challenging to get the Chainlink Function working. My initial approach was to use the Pinata SDK, but I later realized it wasn't supported. It also took some time to figure out the correct way to update the source in the contract using the JavaScript codebase. I eventually managed it by creating a few utility scripts.