Skip to content

Commit

Permalink
Create Eventure.md
Browse files Browse the repository at this point in the history
  • Loading branch information
deep-ink-ventures authored Sep 14, 2023
1 parent 7752d8a commit 25d41fc
Showing 1 changed file with 132 additions and 0 deletions.
132 changes: 132 additions & 0 deletions applications/Eventure.md
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.

0 comments on commit 25d41fc

Please sign in to comment.