Skip to content

BlocSoc-iitr/selene

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tests linter

Introduction

Selene is a fast, open source, portable & secure light client for Ethereum written in Golang. We plan to ship Selene as the underlying software behind wallets that use light clients. We derived our inspiration from Helios which is a light client written in Rust. The project is in active maintenance on the dev branch.

Architecture

High Level Overview

The image attached below is a simple demonstration of what Selene is and how it works at a high level:

High Level Overview

Architecture

Below is the complete architecture of how a light client like Selene works under the hood:

Selene Architecture

Data Flow

  1. The Consensus Layer provides sync information and verified block headers to the RPC Server.
  2. The RPC Server passes block information and verified headers to the Execution Layer.
  3. The Execution Layer validates Merkle proofs based on the state root and requested data.

Centralised RPC Server

This server acts as an intermediary between the Consensus and Execution layers. It handles:

  • Providing block headers of previous blocks from checkpoint to the latest block
  • Transmitting block gossip of block head
  • Passing verified block headers to the Execution Layer

Execution Layer

The Execution Layer is responsible for processing transactions and maintaining the current state of the blockchain. It includes:

A Validate Merkle Proofs field that:

Takes state root and requested data as input Outputs a boolean (true/false) indicating the validity of the Merkle proof

Consensus Layer

The Consensus Layer is responsible for maintaining agreement on the state of the blockchain across the network. It includes:

  • Getting weak subjectivity checkpoints
  • Logic for determining current and next sync committees
  • A Syncing process that:
    • Uses sync committee makeup to fetch previous block headers
    • Syncs for each sync committee period (~27 hours) up to the latest block
  • A verify bls sig function that:
    • Takes blsaggsig and blspubkey[] as input
    • This function verifies a BLS aggregate signature. It accepts the aggregated signature (blsaggsig) and an array of public keys (blspubkey[]), returning a boolean value that indicates whether the signature is valid.

Project Roadmap

August 2024

  • Milestone: Finalize Project Architecture
    • Completion and documentation of overall project structure and design.

September 2024

  • Milestone: Finalize Core Modules
    • Common, Configuration, and Consensus modules development completed.
    • Initial integration tests conducted on these core components.

October 2024

  • Milestone: Execution Module Review & Consensus Testing
    • Execution module undergoes thorough review for compliance and optimization.
    • Consensus module unit testing completed to ensure stability and correctness.

November 2024

  • Milestone: Refactoring and Finalization of Key Modules
    • Refactoring of the Consensus module to improve modularity and performance.
    • Execution and Client modules finalized, with documentation prepared for each.

Upcoming Milestones

  • Execution Module Refinement: Refactor the Execution module and complete its unit tests.
  • CLI and Build Module Completion: Finalize and test Command-Line Interface (CLI) and build modules for deployment readiness.

Installing

Yet to come.

Usage

Yet to come.

Testing

In progress.

Warning

Selene is still experimental software. We hope to ship v0.1 by November 2024.

Current Team behind Selene

Vasu Khanna ( Chief Innovator )
Sambhav Jain
Veer Chaurasia
Nilav Prajapati
Utsav Sharma
Shourya Chaudhry
Abdullah Azeem

Contributing

We openly welcome contributions to selene from the broader ethereum community. For details, refer CONTRIBUTION GUIDELINES.

About

A fast & portable light client for Ethereum in Golang.

Resources

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5

Languages