project screenshot 1
project screenshot 2
project screenshot 3
project screenshot 4
project screenshot 5
project screenshot 6

Grimoire

Grimoire makes web3 more inclusive and accessible with open, quality, community-checked captions and transcriptions.

Grimoire

Created At

Scaling Ethereum 2023

Winner of

👯 Polybase — Pool Prize

📜 Scroll — Just Deploy!

Project Description

Grimoire is a platform that helps users make online content more accessible and inclusive by creating transcriptions of audio/video content using SRT, VTT, LRC files, as well as plain-text transcriptions. In additon, users can also request transcriptions and propose revisions to improve them. The quality of the transcriptions is decided by the community via a 5-stars-based rating, ensuring accuracy and accountability. Requests can be more visible by upvoting them. Users that provide quality contributions are issued an attestation of contribution.

Powered by web3 under the hood, Grimoire strives to create a transparent and open hub for transcriptions. To onboard the next million/billion users, not only do we need to make content more accessible, but we also have to bring familiar web2 experience with content creation. By providing a way to access to community-sourced and synchronized captions for free, we hope that Grimoire's infrastrucure can be used by other platforms, developers and creators, opening the way to create quality, inclusive and accessible web3 experiences.

How it's Made

Grimoire was created from scratch and includes 4 main components :

  1. A Smart contract, built using Solidity and deployed across multiple chains, including Gnosis Chiado, Optimism Goerli, Polygon Mumbai, Filecoin Hyperspace, Scroll Alpha, Polygon zkEVM, and Taiko Sepolia. Its main functions include managing the creation, retrieval, event emission, and updating of requests, transcriptions propositions, and revision propositions. The contract also facilitates the fetching of transcription revisions based on their current state, as well as proposed transcriptions for a specific request, and checking if a valid person is approving revisions ;

  2. a subgraph, used for storing and removing requests, transcriptions, revisions based on the events emmited from our smart contract and indexing the IPFS metadata of our created requests and revisions, with the help of The Graph templates feature. Thanks to the events emitted, we can also handle updating our entities, such as adding new approved revisions to the transcriptions, approving and adding a new transcription to a request, and changing whether a request should be able to receive new transcription proposals. We can also change the state of revisions to be approved or rejected. The subgraph also enables fast and powerful full text search search queries.

  3. a webapp (solid-start, wagmi/core) which interacts with the smart contract, subgraph, and indexer. To make Ethereum addresses more readable, the webapp uses the ENS subgraph, and we planned to use the Everest subgraph to bring the community a step further.

  4. a database/indexer that uses Polybase. This database has 2 main purposes. N°1 - be the source of truth (we use it as a "cross-chain indexer", to display requests regardless of the network the user is currently using) ; N°2 - store data that help us rank transcriptions and requests easily: ratings/votes for transcriptions, and upvotes for requests

We also interact with Optimism's attestation station smart contract so that when a reviewer accepts a contribution (a transcription or a revision), an attestation is issued for this contributor. We were able to make this process chain-agnostic and gas-free by using a Gelato's relayer.

Upon being issued, a message is also sent from the reviewer to the contributor via Push Chat REST SDK to inform them that their contribution was accepted, and that they received this attestation.

You can access our code here :

  • organization: https://github.com/grimoiredotxyz
  • front-end : https://github.com/grimoiredotxyz/grimoire
  • smart contract: https://github.com/grimoiredotxyz/smartContracts
  • subgraph: https://github.com/grimoiredotxyz/grimoireSubgraph

--

Deployed smart contracts:

Used for the demo :

  • Polygon Mumbai : 0xD9f939e8eCD876Ca0908E8CE35C109161488E895
  • Gnosis Chiado: 0x92C410556C7AeD3C9aa6ED3552431C876770FF99
  • Optimism Goerli: 0x239b986D8B3bAB3e89D9586a5D83c5C0B08Fc3D3 -
  • Scroll Alpha tesnet: 0xF91F71e2AB73a5298CAb2aD8df0EBE6e176961Ce
  • Filecoin Hyperspace: 0xB293049B4940C3AF4191C8b03f79C8c0e5B39199
  • Polygon zkEVM (testnet): 0x239b986D8B3bAB3e89D9586a5D83c5C0B08Fc3D3
  • Sepolia (Taiko testnet): 0x239b986D8B3bAB3e89D9586a5D83c5C0B08Fc3D3

We found a bug after recording the demo, so we had to redeploy our smart contracts, here are the list of the current deployments

--

Deployed subgraph: https://thegraph.com/hosted-service/subgraph/timotejgerzelj/grimoire-subgraph

--

Demo video accessible on Loom: https://www.loom.com/share/32fea123ab2b4f33adec5ca13b5f5739

background image mobile

Join the mailing list

Get the latest news and updates