Zapier for on-chain activities! Setup eternally running trigger-action pairs for cross-chain and off-chain interactions.
Inspiration
Web3 is in it's static phase. Contracts are not dynamic. You call a contract, it performs an action and it stops. This is similar to the read-only version of web2. Web2 became dynamic with the advent of APIs and webhooks. Apps could call each other, share events and trigger actions. This is missing in web3. Since this is missing in web3, the potential usecases of smart contracts are restricted. If you want to perform an on-chain action based on a trigger/event, it's extremely hard and expensive right now. This is a larger infrastructure problem and efforts have been made in the past to solve but all the solutions fall short on the width they cover and are constrained for the particular applications they are built for. Therefore, we decided build Relic which uses hybrid combinations of on-chain/off-chain technologies to solve this problem.
What it does
Our core product is a trigger-based automation framework. dApps/developers or individual users can come to Relic, define a trigger (smart contract method invocations, emitting of events, etc.), define an off-chain (custom API calls & webhooks) or on-chain (contract calls, funds transfer, etc.) action and link them together. For instance, you can trigger liquidation of a particular asset on Uniswap if it drops below certain price. Another example would be to transfer your deployed investments from Compound to Aave according to the APYs or passing of a governance proposal in their DAOs. Personally, we have used Relic to track transfer in ownership our favourite ENS domains to snipe them whenever available :)
How we built it
-
Relic listens to every block being deployed on the chain (ethereum mainnet, polygon mainnet, sonr, avalanche) and use our custom built query language to parse them. We match the transactions with parameters mentioned in "triggers" setup by users and perform the required off-chain or on-chain actions.
-
For on-chain actions, we provide each user with a semi-custodial wallet. Each of the contract invocations mentioned are signed by that wallet, and user just have to fund it to manage the gas fees.
Challenges we ran into
Making sure we don't miss on any blocks being mined and transactions executed - we implemented fail/safe across our architecture. Implementing a safe semi-custodial wallet for high stakes automations was a challenge, we had to deep dive into encryption models.
Accomplishments that we're proud of
Relic is intrinsically cross-chain by nature. Your triggers can be on any chain, independent of where you want to perform the action.
What we learned
We learnt more about blockchain nodes and understanding the nature of blocks and headers. The nuances and thus benefits of each chain we worked with were fascinating. While designing our architecture, we implemented robust mechanism to eternally run tasks and jobs.
What's next for Relic
We envision Relic solving major difficulties across web3 applications and use-cases, in proximate future. We plan on transforming into a fully featured framework which works on any chain and is highly composable.