BeQuest Protocol

BeQuest Protocol

Your assets are your legacy, Keep them safe forever!

The problem BeQuest Protocol solves

According to a survey, more than $20 billion in digital assets (coins, tokens, and NFTs) have already been lost due to the loss of private keys or deaths.
In real life, a person has assets like a home, jewelry, stocks, etc. These assets are stored forever with the person and even after the person's demise, these assets are transferred to the next heir according to their will, right? yeah..! so why not do the same with valuable digital assets like coins, tokens, etc.?
Most times, when a person dies or misplaces their private key, their cryptocurrencies are lost forever on the blockchain.

BeQuest Protocol has a secure Smart Contract in which users will approve and sign their BeQuest request using the DApp and through Chainlink's automation user's request will be executed accordingly

Bequest Protocol enables users to leave their digital assets, such as wrapped coins, tokens, and so on at their next wallet or beneficiary's/heir's address.
The assets will always be at the owner's address and will be transferred to the beneficiary according to the user's request.
The user doesn't have to share their precious private key with anyone, just approve and sign the transaction request which requires three vital pieces of information - Beneficiary Address, Amount (of Assets), and Time. This information is stored in the BeQuest Protocol's smart contract.
Your request will be carried out correctly by a smart contract after the time period given by the user or the heir will have access to manually execute the transaction after the given time period by the user.

Challenges we ran into

Run Time Error:

If someone puts a non-ERC20 token address in the request, the entire request chain was disrupted, requests further than that were not being executed, and the entire transaction was being reverted. We didn't know how we could skip a failed request and keep that transaction going for the remaining request. We searched a lot and didn't find a way until we saw a few video help guides related to "How to Send Batch Transaction". Because try-catch cannot handle run-time errors in solidity, a different approach known as "Low-Level Call" is used, and hurray, we did it.

Deployment Error:
We faced the bundler issue where it converts ** to math.pow which doesn't support big numbers.

Discussion