halo

command
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2024 License: GPL-3.0 Imports: 2 Imported by: 0

README

Halo

Halo is a cosmos-SDK application blockchain client.

Flow

The following describes the consensus flow:

   CometBFT         ABCI++        ┌──── EVMEngine ─────────
 ─────────────────────────────    │
                                  │ 1. Did we trigger an optimistic payload build earlier?
 1. Ask proposer                  │    - No:  ask geth to build a new payload (execution block)
 to build next block              │    - Yes: no need to ask geth, since we already did
       │                          │
       │                          │ 2. Get resulting built payload from geth
       └──────► ┌───────────────┐ │
                │PrepareProposal│ │ 3. Collect txs (msgs) to include in consensus block
       ┌─────── └───────────────┘ │    - Make MsgExecutionPayload with above payload
       │                          │    - Ask attest module for MsgAddVote (extracted from VE)
       │                          │    - Ask EVM tracking modules for other TXs (e.g. staking)
       ▼                          │
 2. Send proposal                 │ 4. Return txs (msgs) to include consenus block
 to all validators
       │
       │                          ┌──── App ───────────────
       │                          │
       └──────► ┌───────────────┐ │ 1. Extract and decode all txs in proposed block
                │ProcessProposal│ │
       ┌─────── └───────────────┘ │ 2. Ask EVMEngine to verify MsgExecutionPayload
       │                          │    - Ask geth if payload is a valid head
       ▼                          │
  3. Continue and                 │ 3. Ask Attest module to verify MsgAddVote is valid
  complete consensus
       │
       ▼
  4. Provide finalised
  consensus block to              ┌──── App ───────────────
  all validators                  │
  and full nodes                  │ 1. Extract and decode all txs in finalised block
       │                          │
       └────────► ┌─────────────┐ │ 2. Ask EVMEngine to process MsgExecutionPayload
                  │FinalizeBlock│ │    - Inform geth of this new payload
       ┌───────── └─────────────┘ │    - Instruct geth to update head to this new payload
       │                          │    - If this node is next proposer (and optimistic enabled)
       ▼                          │       - Ask geth to build a new payload
  5. Sleep and then               │
     start again at 1.            │ 3. Ask Attest module to process MsgAddVote
                                  │    - Merge all votes into the application DB (creating
                                  │      pending attestations for new xblocks)
                                  │    - Approve all attestations with quorum votes

Documentation

Overview

Command halo is the main entry point for the halo consensus client.

Directories

Path Synopsis
attest
module
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
testutil
Package testutil is a generated GoMock package.
Package testutil is a generated GoMock package.
Package cmd provides the cli for running the halo consensus client.
Package cmd provides the cli for running the halo consensus client.
evmengine
module
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.
Package evmstaking monitors the omni stake pre-deploy contract and converts its log events to cosmosSDK logic.
Package evmstaking monitors the omni stake pre-deploy contract and converts its log events to cosmosSDK logic.
evm
valsync
module
Code generated by protoc-gen-go-pulsar.
Code generated by protoc-gen-go-pulsar.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL