forked from w3f/Grants-Program
-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
7752d8a
commit 25d41fc
Showing
1 changed file
with
132 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,132 @@ | ||
# Eventure | ||
|
||
- **Team Name:** GenesisDAO by Deep Ink Ventures GmbH | ||
- **Payment Address:** Ethereum Mainnet, 0x918a4363C35156c8F85F86795a79189e5A1ef557, USDC | ||
- **Level:** 3 | ||
|
||
## Overview | ||
|
||
We want to propose an addition to the standard development stack that we have so far (and not only within the polkadot ecosystem) built for each project we started: Making the historic, current and progressing state of the underlying blockchain available for dApps and other user-facing applications. | ||
Eventure aims to resolve this prevalent issue faced by both our team and the broader blockchain development community: the repetitive task of setting up backend infrastructure for user-facing clients and middleware in blockchain applications. | ||
Currently, developers must manually listen for events emitted by Substrate-based blockchains, parse them into a queryable structure, and expose them via an API and Websockets. This process not only is labor-intensive but also introduces the risk of error and inefficiency. | ||
Within our work for both commercial / closed source as well as within our contributions to the open source web3 ecosystem we have started with an inhouse stack and extended / forked it for the problem at hand. The ecosystem is seeing a lot of people doing the same task over and over again. | ||
|
||
- listening for the blockchain to emit events | ||
- parse them into a queryable structure | ||
- make them queryable deep into the past | ||
- create a lot of logic to recover from missed blocks, system downtime and so on to have a full API server | ||
|
||
We propose therefore an architecture that can be run as a standalone infrastructure by everyone and that is fully open source. | ||
|
||
<br /> | ||
<p align="center"> | ||
<img width="600" src="https://github.com/deep-ink-ventures/Grants-Program/assets/120174523/5c31d6dc-5abf-4b4b-820e-6c9b36ddc38c"> | ||
</p> | ||
<br /> | ||
|
||
The stack is built upon our previous experience of creating APIs and Websockets on top of blockchains, specializing on substrate based chains (and their pallet_contracts based ecosystems on top), automating and abstracting the details along the way. | ||
|
||
## Project Details | ||
### Technology Stack and Architecture | ||
|
||
The Eventure system is architected in Rust and makes use of the Actix framework for handling web APIs and Websockets. PostgreSQL serves as the relational database, responsible for storing the parsed events. For efficient and fast querying, Elasticsearch is integrated into the system. | ||
|
||
### Core Components | ||
The cornerstone of Eventure is its event parsing mechanism. It is designed to ingest and index events emitted by Substrate-based blockchains, creating a reliable, complete, and searchable record. This parsed data is stored in an optimal format conducive for downstream applications and queries. | ||
To address challenges in dApp development, Eventure incorporates support for common FRAME pallets frequently used in Substrate runtimes. By having built-in models for these pallets, the system gains an inherent understanding of accounts, assets, and their historical balances. This significantly simplifies the UI development process in dApps, allowing for easy access to recurring UI patterns and information like asset holdings and historical performance that to date require to do quite some heavy lifting. | ||
The system exposes a RESTful API that allows for advanced queries on the state of core elements like accounts, assets, and the system as a whole. This API is built on top of Elasticsearch, enabling efficient and complex queries. For real-time updates, Eventure also offers a Websockets interface. This serves as a one-stop solution for clients to connect and receive real-time updates about account changes and other events from the underlying blockchain. | ||
|
||
<br /> | ||
<p align="center"> | ||
<img width="600" src="https://github.com/deep-ink-ventures/Grants-Program/assets/120174523/a5a9e795-5472-4166-a48a-13516d70a08f"> | ||
</p> | ||
<br /> | ||
|
||
## Ecosystem Fit | ||
Eventure seeks to enhance the existing infrastructure of the Polkadot and Kusama ecosystems by bridging the gap between their technological advancements and the broader goal of end-user adoption. While these ecosystems offer robust and cutting-edge foundations for scalable blockchain platforms, there is still a need for tools that simplify the development process for end-user applications. Eventure aims to provide such tooling, thereby easing the developer burden and accelerating the time-to-market for new applications. | ||
The project's scope extends beyond Substrate developers. Eventure also serves as an abstraction layer for smart contracts, particularly those written in ink! or other languages built on top of Substrate. This provides these smart contract developers with easier tooling and a more streamlined development process, further expediting their time to market. In doing so, Eventure positions itself as a versatile tool within the Substrate ecosystem, benefiting both dApp developers and smart contract creators. | ||
This focus on simplifying the development process aligns well with the overarching aim of the Polkadot and Kusama ecosystems to foster a more developer-friendly environment, which in turn is expected to catalyze wider end-user adoption. | ||
|
||
## Team | ||
|
||
### Contact | ||
|
||
- **Contact Name:** Ole Breite | ||
- **Contact Email:** [email protected] | ||
|
||
### Legal Structure | ||
|
||
- Deep Ink Ventures GmbH, registered with the commercial register at the local court of Berlin, HRB 247342 | ||
|
||
### Experience | ||
Our team brings a wealth of experience not just within the Polkadot ecosystem—evidenced by contributions such as [Genesis DAO](https://github.com/deep-ink-ventures/genesis-dao-node) and [pallet_hookpoints](https://github.com/deep-ink-ventures/pallet_hookpoints) — but also in cross-chain development of user-facing dApps and applications. | ||
We specialize in creating experiences that are intuitive and user-friendly, rather than cumbersome and foreign. | ||
|
||
Additionally, we have substantial experience in constructing middleware abstraction layers designed to compensate for the inherently non-relational structure of blockchain key-value stores | ||
and the distributed nature of information across various pallets and contracts. Checkout [Genesis DAO's self-rolled Event Service](https://service.genesis-dao.org/redoc/) to get an idea how a service like eventure could enhance dApp development experience. | ||
|
||
## Development Roadmap :nut_and_bolt: | ||
|
||
### Overview | ||
|
||
- **Total Estimated Duration:** 4 months | ||
- **Full-Time Equivalent (FTE):** 3 | ||
- **Total Costs:** $100,000 USD | ||
|
||
### Milestone 1 — Backend Infrastructure, Event Parsing, and Elasticsearch Setup | ||
|
||
- **Estimated Duration:** 2 months | ||
- **FTE:** 2 | ||
- **Costs:** $30,000 USD | ||
|
||
#### Deliverables | ||
|
||
| Number | Deliverable | Specification | | ||
| ------ | ----------- | ------------- | | ||
| **0a.** | License | Apache 2.0 | | ||
| **0b.** | Documentation | Inline documentation of the code and architectural documentation. | | ||
| **0c.** | Testing Guide | Unit tests for core functionalities, along with a guide describing how to run these tests. | | ||
| 1. | Event Parsing | Implement event parsing logic to create a reliable and searchable index of blockchain events. | | ||
| 2. | Database Setup | Setup PostgreSQL database for storing parsed events. | | ||
| 3. | Elasticsearch Setup | Setup Elasticsearch for fast and efficient querying. | | ||
|
||
### Milestone 2 — FRAME Support and RESTful API | ||
|
||
- **Estimated Duration:** 2 months | ||
- **FTE:** 2.5 | ||
- **Costs:** $35,000 USD | ||
|
||
#### Deliverables | ||
|
||
| Number | Deliverable | Specification | | ||
| ------ | ----------- | ------------- | | ||
| **0a.** | License | Apache 2.0 | | ||
| **0b.** | Documentation | Update inline documentation and create API documentation. | | ||
| **0c.** | Testing Guide | Extend unit tests to cover new functionalities, along with a guide describing how to run these tests. | | ||
| 1. | FRAME Support for Pallet Balances | Extend the system to include pre-built models for the `pallet_balances`. | | ||
| 2. | FRAME Support for Pallet Assets | Extend the system to include pre-built models for the `pallet_assets`. | | ||
| 3. | FRAME Support for System Pallet | Extend the system to include pre-built models for the `system` pallet. | | ||
| 4. | RESTful API | Implement RESTful API for querying the state of core actors and historical events. | | ||
|
||
### Milestone 3 — Websockets and Advanced Query Builder | ||
|
||
- **Estimated Duration:** 2 months | ||
- **FTE:** 3 | ||
- **Costs:** $35,000 USD | ||
|
||
#### Deliverables | ||
|
||
| Number | Deliverable | Specification | | ||
| ------ | ----------- | ------------- | | ||
| **0a.** | License | Apache 2.0 | | ||
| **0b.** | Documentation | Finalize all documentation, including deployment and user guides. | | ||
| **0c.** | Testing Guide | Comprehensive unit tests, along with a guide describing how to run these tests. | | ||
| 1. | Websockets Interface | Implement Websockets interface for real-time updates. | | ||
| 2. | Advanced Query Builder | Implement an advanced query builder, potentially based on GraphQL, details to be finalized after further research. | | ||
|
||
|
||
## Future Plans | ||
In the nearby future, we aim to enhance Eventum in two significant ways. | ||
First, although Eventum is built to function as a standalone system that can be run by any user, we plan to offer a hosted version specifically for the Kusama and Polkadot chains. This hosted version will provide a "bring-your-own-chain" functionality, allowing for easy integration with other Substrate-based blockchains. | ||
Second, we intend to broaden the system's capabilities by adding support for smart contract standards based on Solidity, such as ERC, and Substrate-based Ink standards like PSP. This will enable auto-indexing and model population for basic smart contract primitives, making Eventum even more versatile and useful for a wider range of blockchain ecosystems. | ||
|