Core System Components

Ethereum Syncing

Checkpoints: Ensuring uptime and state immutability

When synchronizing the eoracle chain state with Ethereum, the validator set affirms checkpoints, encapsulating snapshots of the eoracle state. Checkpoints function as immutable references for clients, and validators routinely checkpoint all activity occurring on-chain to Ethereum.

Checkpointing entails the procedure of documenting and validating a snapshot of the system's state at a specific moment. Checkpoints play a crucial role in enhancing security by facilitating rapid verification of the blockchain's state, eliminating the need to execute the entire blockchain's activity to verify the state. The benefits and utility of checkpoints are synchronization points for new validators and a deterrent against specific types of threats, such as 51% attacks.

Summary

  • Validators operating within the eoracle chain assume the responsibility of checkpointing, cementing the state commitment to Ethereum.

  • A checkpoint serves as a snapshot of the eoracle state. This snapshot is stored as a Merkle root and represents the state of the eoracle chain at the point in time it was created.

  • The checkpoint process is important for ensuring the network's security as it enables a source of truth on Ethereum to detect and prevent any potential fraud or malicious activity on the eoracle chain.

CheckpointManager

A CheckpointManager smart contract retains and manages checkpoints of the eoracle chain.

This interface supports the following functionality to enable the management of checkpoints, such as recording a new checkpoint, verifying the aggregated validator set BLS signature, and retrieving details of the eoracle chain state. The contract also stores the current validator set, and records checkpoint metadata.

The contract also implements a BLS signature scheme to verify the signatures submitted by the validators. The validators' signatures are aggregated, and the contract checks whether the required voting power threshold is met to accept the checkpoint.

Networking

eoracle distributed networking layer utilizes the libp2p protocol. Libp2p provides primitives for peer-to-peer networking such as peer discovery, connection administration, and reliable messaging. The network relies on a secure Identity Service to manage peer connectivity and handshaking, ensuring only valid peers can join the network.

Peer discovery

Libp2p's distributed hash table (DHT) based on the Kademlia algorithm is used for peer discovery. The DHT stores information about other peers in the network, such as their cryptographic identity and network addresses. New nodes can use the DHT to find other peers that are currently online. Nodes periodically send out connection requests to maintain connections in the network.

Gossipsub

Gossipsub is a decentralized, peer-to-peer messaging protocol used to broadcast messages efficiently across the network. Gossipsub allows for efficient and reliable message propagation while minimizing the bandwidth requirements of the network.

To learn more about libp2p networking, check out the official libp2p documentation.

Access Control

eoracle chain uses access control lists (ACLs) to manage and control access to specific network resources, contracts, or functionalities.

ACL Types

eoracle uses the following ACLs:

  • Contract Deployer Allow List: Controls which addresses can deploy contracts on the network.

  • Transactions Allow List: Controls which addresses can send transactions on the network.

Remote Procedure Call Interfaces

JSON-RPC

JSON-RPC is a remote procedure call (RPC) protocol encoded in JSON. It enables the communication between distributed systems, often found in microservices architectures. JSON-RPC is a lightweight, language-agnostic protocol that allows developers to build scalable applications with low-latency communication between services. With its simplicity and support for multiple programming languages, JSON-RPC offers an accessible and flexible tool for building distributed systems.

gRPC

gRPC is a popular RPC (remote procedure call) framework that enables efficient communication between distributed systems. It is commonly used in microservices architectures and is especially useful for building high-performance, scalable applications that require low-latency communication between services. With its support for multiple programming languages and its built-in support for data serialization, gRPC provides a powerful and flexible tool for building distributed systems.

eoracle JSON-RPC

The eoracle JSON-RPC is implemented as an API consensus.

When a client makes a remote procedure call to the server, the JSON-RPC protocol abstracts the details of network communication, serialization, and deserialization. The JSON-RPC client sends a request message to the JSON-RPC server, which deserializes the request message, executes the appropriate method, and serializes the response message. The JSON-RPC server then sends the response message back to the client, which deserializes the response message and returns the result to the caller.

eoracle gRPC

libp2p provides the underlying networking layer for establishing connections between peers. By creating a gRPC server instance on each peer in the network and allowing gRPC client connections to be established, a network API can be created that enables clients to interact with the network.

When a client makes a remote procedure call to the server, the gRPC protocol abstracts the details of network communication, serialization, and deserialization. The gRPC client sends a request message to the gRPC server, which deserializes the request message, executes the appropriate method, and serializes the response message. The gRPC server then sends the response message back to the client, which deserializes the response message and returns the result to the caller.

Last updated