arrow-left

Only this pageAll pages
gitbookPowered by GitBook
1 of 22

EO

Quickstart

Loading...

Loading...

Understand EO

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Operators

Loading...

Loading...

Loading...

Loading...

πŸ”Concepts

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Security

The following sections outline security aspects of the EO protocol

Data Processing

EO operators connect, compute, validate, and publish off-chain data to Dapps securely, permissionlessly and transparently.

hashtag
Reporting

Any publicly accessible real-world data can be added to the EO network, where EO operators will begin reporting on it. Reports are sourced from different endpoints, such as a WebSocket or an API. The frequency of reporting and the values to be extracted are programmable by the user. Once the operator obtains the data, it signs it and sends it in a transaction to the EO-chain. Any operator with an above-threshold stake can participate in reporting, weighing each report by their stake. A report for a specific operator cannot be faked by another party, and their participation is an immutable part of the EO-chain state once received.

hashtag
Validation & Aggregation

Operators running an EO node receive transactions with signed reports. The node then verifies the reporter's identity via their cryptographic signature. Due to the protocol's permissionless nature, reports are censorship-resistant. Periodically, smart contracts aggregate the verified reports with dedicated schemes ().

Dapps can use EO's standard aggregations, which employ advanced algorithms and protocols to identify and discard outliers, or custom aggregations defined for a specific use case. For consensus and security, the computation is distributed among the validators and verified by them.

The computational aggregation process and its result become an immutable part of the EO-chain. The decentralized, transparent, and permissionless nature of this process ascertains that the reports and the aggregation results are authentic, accurate, and verifiable. Those results are then eligible for publication.

hashtag
Publication

Publication is the process of posting EO aggregated data onto a target blockchain. A target blockchain is any blockchain network where dapps wish to use EO data. To provide EO data, each target blockchain has a smart contract that verifies, parses, and approves data signed and produced by the EO-chain.

For gas costs and efficiency, the aggregated data is hashed to a leaf of a Merkle tree, mapped to the EO state, and signed by the current valid EO Validator set. EO uses the BLS digital signature scheme, enabling large quorum participation efficiently through threshold signing and . This cryptographic scheme allows for securing desired assets with a scalable signature scheme.

hashtag
Consumption

Dapps, individuals, and institutions can easily interface with EO in the smart contract layer by using the EO Solidity SDK and reading their required aggregated data on-chain.

Users interested in low-latency or tailored updates can also use the EO REST-API. This enables users to receive all the components to prove the validity of data on-chain, and then execute a dependent transaction. All cryptography, encoding, and parsing

Off-chain infrastructure can use our WebSocket interface to cache aggregated data and provide a smooth and low-latency user experience, enabling instant integration and execution available on user-facing services. Our low-latency interface makes on-chain security and transparency accessible to provide a seamless user experience.

hashtag
Conclusion

Process Overview

  • Reporting is permissionless, transparent, and unfalsifiable.

  • Aggregation is decentralized, programmable, secure, modular, immutable, and easily verifiable.

  • Publishing is efficient, interoperable, permissionless, and censorship-resistant.

In summary, the EO platform enables users with customizable requirements, dynamic security needs, niche data dependencies, and more to define their data flow. By defining the data type, sources, aggregation logic, and other desired variables, users can programmatically and comprehensively satisfy all workflow requirements to provide data and computation on-chain.

Any party can interface with the EO network for a given data need, and retrieve the proof components, a BLS-signed Merkle root & Merkle path. This can be used to prove the validity of data cross-chain. The signed Merkle root component enables the verification of a valid EO Validator Set, while the Merkle path can then be used to prove the inclusion of aggregated data. Due to the transparent and verifiable nature of the process, users are always assured of the authenticity of the computation, operator participation, and staked security.

Consumption is dynamic, highly compatible, and a simplified user experience.
OVS
signature aggregationarrow-up-right
are abstracted by our Solidity and Typescript/Python SDK.

What is EO?

At its core, EO is an open infrastructure platform that empowers developers to build secure blockchain oraclesarrow-up-right backed by Ethereum's battle-tested security model. EO creates a foundation for specialized data services that combine deep domain expertise with unmatched cryptoeconomic security.

Smart contracts are powerful tools for executing transparent, immutable logic. However, to reach their full potential, they need reliable access to real-world data. Blockchain oraclesarrow-up-right serve as the critical bridge between blockchain systems and external data sources, enabling smart contracts to interact with the world beyond their native blockchain.

hashtag
Two essential principles guide EO's protocol:

hashtag
Trust Minimization

Trust minimization is achieved through a decentralized network of 100+ staked-backed operators, an immutable data layer, and a coordination system allowing different unrelated entities to take part and contribute while putting stakes at risk through an infrastructure that is designed to maintain trusted, reliable data operation for decentralized data machines.

hashtag
Permissionless Innovation

The EO stack provides a comprehensive platform that anyone can use to build specialized blockchain oracle services without permission or gatekeeping. Domain experts can leverage our infrastructure to deliver high-quality data solutions for their specific use cases, focusing on what they do best. With EO handling the complex security and coordination challenges, builders can freely innovate within their expertise – whether it's financial data, real-world events, or computational services – and deploy their solutions immediately.

This open architecture creates a vibrant marketplace where specialized blockchain oracle services thrive through competition and innovation. The ecosystem benefits from a rich diversity of secure data solutions, each optimized for specific use cases while maintaining rigorous security standards. This permissionless approach unlocks Web3's true potential by giving users and applications access to an ever-expanding landscape of secure, specialized data services – all protected by Ethereum-grade security.

EO Trust Model

circle-info

If you are unfamiliar with the concept of a blockchain oracle, reference the Ethereum Foundation's documentation on blockchain oraclesarrow-up-right

As blockchain technology gains widespread adoption and the usage of its applications expands, the economic significance and security requirements of blockchain oracles must grow with it.

Ethereum's Proof of Stake has established the gold standard for economic security, trust minimization, and decentralized validation. Through EigenLayer's shared security, this proven model now extends beyond Ethereum's core consensus, enabling a new generation of blockchain oracle services that inherit the same security guarantees.

Access to the largest pool of staked funds

Staked ETH is orders of magnitudes larger than the staking of all other traditional blockchain oracles combined. A blockchain oracle network with access to staked ETH inherits the established security instead of creating another pool. This access provides a more economically secure and capital-efficient way to build blockchain oracle networks.

Native staking

EO's security backing, ETH, is independent of EO operations. This makes it robust against issues that other blockchain oracles who use their token for staking, such as temporal drops in token value and death spirals. Blockchain , leading to security reduction and vice versa.

Slashing for malicious behavior

EO's system is designed to deter and address malicious activities. Utilizing , EO can initiate procedures that may lead to the slashing of an attacker's staked funds. Slashing completes EO's incentive model, matching Ethereum's security apparatus.

Distributed validation

Validators worldwide verify data accuracy, making the network robust against localized disruptions. This approach ensures that no single point of failure can compromise the system, enhancing both security and reliability. Additionally, the diverse geographic distribution of validators contributes to a more resilient and fault-tolerant network capable of withstanding various types of attacks and ensuring continuous neutrality and operations.

Economic and diverse Trust

Economic trust is the amount of capital at stake (quantity), while diverse trust is the variety and balance of nodes involved (quality).

For a protocol to achieve security and liveness in a decentralized manner, it needs a sufficient amount of economic trust and a diverse, well-balanced set of nodes. Only Ethereum has reached sufficient economic and diverse trust.

With restaking via Eigenlayer, a blockchain oracle design containing these elements is enabled, providing a practical path to achieving sufficient trust via diverse and economically trusted Ethereum validators.

EO Vision

How does the eOracle protocol compare to a typical oracle?

hashtag
The Current Reality

Today's blockchain oracle landscape is dominated by a small group of companies that must build and maintain everything: infrastructure, security, node networks, and data solutions. This "do-it-all" approach has created an unsustainable bottleneck in blockchain innovation.

hashtag
Why Traditional Blockchain Oracles Fall Short

When diving deep into solving the blockchain oracle problem, two layers of complexity emerge that make any centralized solution fundamentally insufficient.

First is the inherent complexity of data itself. Each domain demands its own specialized understanding. Financial data requires sub-second updates and sophisticated anomaly detection. Social media data demands extreme throughput and ability to track emerging patterns in real-time. Risk and cyber analysis require complex prediction models and automated decision-making. Each domain comes with its own patterns, failure modes, and expertise requirements. A solution perfect for one becomes fundamentally flawed for another.

But that's only half the challenge. Building infrastructure for trustless data delivery - with high reliability, consistent uptime, and true decentralization - requires solving deep problems in cryptography, game theory, and distributed systems. The technical complexity here rivals that of the base layer blockchains themselves.

Complex coordination problems of this scale cannot be solved by any single entity. Instead, they require the power of free market innovation, where diverse participants can contribute their specialized knowledge and compete to deliver the best solutions. Just as no single provider can solve every blockchain's unique challenges, no single blockchain oracle provider can possess all the expertise needed to bring the world's data on-chain.

hashtag
The Two-Layer Solution

EO introduces a fundamental shift: separating blockchain oracle services into distinct layers:

  • The security layer (EO) handles infrastructure and cryptographic guarantees

  • The data layer (OVS) enables specialists to focus purely on their domain expertise

This separation represents the natural evolution of a maturing market - where different participants can specialize and perfect their part of the solution, resulting in better outcomes for everyone.

The EO stack creates the foundation for a marketplace of blockchain oracle services where specialized knowledge can flourish and compete. Through this marketplace, the blockchain oracle problem will solve itself through the distributed efforts of countless builders and innovators, secured by Ethereum itself.

Oracles that leverage a sovereign token are open to attacks via value depreciation
EigenLayer

Chain Validators

Chain validators operate the EO-Chain node software, creating blocks and processing transactions from Data Validators. They are globally dispersed and are unaffiliated with EO.

Chain Validators enable aggregation modules (smart contracts) to receive, validate, and aggregate data. They store all the cryptographic proof of actions that occurred on the EO-Chain and make that information accessible to the public.

Chain validators are critical to providing neutral aggregation and cryptographic attestations of validation. They provide the distributed infrastructure for an open, programmable, and efficient verifiable data layer.

Architecture Overview

circle-info

If you are unfamiliar with the concept of a blockchain oracle, reference the Ethereum Foundation's documentation on blockchain oracles. arrow-up-right

The following is a brief overview of the core components that define the EO protocol, to contextualize the data aggregation process.

hashtag
Ethereum Eigenlayer Integration

A on Ethereum that help connect Ethereum validators to EO via . These contracts manage the network's cryptographic identity, stake records, operator set and enable EO to slash validators.

hashtag
EO-Chain

Ideally, the best infrastructure for blockchain oracle operations would be Ethereum itself, but the high costs and latency of on-chain processes make this infeasible. To address this, the EO-chain is operated with a subset of the Ethereum validator set using the This chain is used to aggregate and produce cryptographically verifiable data. The EO-Chain is at the center of EO operations, offloading computation from the base layer, which reduces costs and latency. The EO-Chain creates immutable records of all EO activity. These records are used to cryptographically prove operator rewards and slashing.

Read more here:

hashtag
Validator Clients

are responsible for observing real-world data, validating it, and reporting it to the EO chain. are responsible for maintaining the consensus of the EO chain. Together, these roles operate the EO protocol.

hashtag
Aggregator Modules

Smart contracts on the EO-chain that enable aggregation and verification of data submitted by validators. These smart contracts produce digitally signed, verifiable data by aggregating the signatures of , accounting for their respective voting power.

hashtag
EO Endpoints

EO provides to use EO data as a pull blockchain oracle. Coupled with the , dapps can automate their data usage with or

hashtag
Target Network Contracts

Smart contracts can be on consumer blockchains to integrate EO data. These contracts can verify the validity of signatures produced by the EO protocol and enable dapps to read and use their desired data.

Aegis - Validator Set Configuration

EO Validator Sets are integrated into the Ethereum PoS Validator Set through the Aegis protocol, enabling Ethereum validators to participate freely in the EO network permissionlessly.

hashtag
Validator Set Membership

EO is an expansion chain that derives its cryptoeconomic security from Ethereum staking and benefits from the stability of ETH. Through innovative infrastructure provided by Eigenlayer, Ethereum Validators are able to participate in the EO blockchain as part of Validator Set. Validators can initiate a withdrawal from the Validator Set, and membership can be revoked for misbehavior, within Ethereum.

Data Validators

Data validators operate EO software to report data to the EO network. They are globally dispersed and are unaffiliated with EO. Data validators receive rewards and are subject to slashing via . Validation behavior is tracked, monitored, and cryptographically provable. This assures the EO network's security, as all validation activity is attributable and immutable , and forms the basis of rewards and slashing mechanisms which are applied to data validators.

Data validators retrieve data through an internet connection and provide cryptographic assurance of what they observe. They accomplish this assurance by submitting a . This signature is part of a highly secure cryptographic scheme optimized for threshold signatures.

OVS

hashtag
OVS

The term OVS (Blockchain Oracle Validated Service) refers to custom blockchain oracle builders who develop their blockchain oracles on top of EO's infrastructure. By providing a platform for diverse participants to create specialized blockchain oracles, EO aims to foster a more competitive market that enhances the quality and reliability of data available to smart contracts. This approach not only democratizes access to data services but also ensures that blockchain applications can benefit from the expertise of a wide range of data and computation providers.

EigenLayer
BLS digital signaturearrow-up-right
set of smart contractsarrow-up-right
EigenLayer
eBFT consensus mechanism
.
link-horizontalEO Chainchevron-right
Data validators
Chain validators
Data Validators
Websocket and REST API
EO Solidity SDK
Python\Typescript
other automation solutions.
permissionlessly deployed

EO Chain

hashtag
Expansion Chain

Expansion chains are blockchains that rely on a primary chain for security. They can be implemented using EigenLayer, Avalanche subnets and Polygon 2.0. Compared to a new blockchain, an expansion chain is easier to bootstrap, as it can rely on the security of the primary chain. Nodes can be required to stake on the primary chain, using its tokens as collateral to ensure their good behavior. Due to the established security of the primary chain, the value of its tokens is more stable, and the nodes are more likely to remain correct.

cubesAegis - Validator Set Configurationchevron-right

hashtag
EO-Chain as an Expansion Chain

In creating the architecture for a fully decentralized blockchain oracle network, EO aims to build a system inherently aware of its operational dynamics, ensuring comprehensive tracking of participant actions and outcomes within a transparent and immutable framework. Ideally, the best blockchain oracle infrastructure would be Ethereum itself, but the high costs and latency of on-chain processes make this infeasible. To address this, we established the "EO-Chain," a dedicated Proof-of-Stake (PoS) blockchain operated by Eigen operatorsβ€”Ethereum validators restaking their ETH to secure the network.

The EO-chain offloads computation from the main blockchain, reducing costs and latency while maintaining decentralized incentives for blockchain oracle operators. This setup allows all calculations to occur on-chain, ensuring transparency and security.

EigenLayer

EigenLayer is a protocol built on Ethereum that introduces restaking, a new primitive in cryptoeconomic security. This primitive enables the reuse of consensus layer ETH. Users that stake ETH natively can opt-in to EigenLayer smart contracts to restake their ETH and extend cryptoeconomic security to additional applications on the network to earn additional rewards.

Reusing ETH to provide security across many services reduces capital costs for a staker to participate and significantly increases the trust guarantees to individual services.

EigenLayer allows services to slash validators based on malicious behavior or coordinated attacks, extending Ethereum's security guarantees to additional protocols.

See Eigenlayer's documentation for more details. arrow-up-right

Naively implementing a new PoS protocol is not possible since the validators' stake is managed on Ethereum rather than directly by the protocol. To address this challenge, we developed Aegisβ€”a novel protocol for creating an expansion chain based on primary-chain stake, in our case, restaked ETH. The EO blockchain is built on Aegis.

Aegis uses references from Aegis blocks to primary-chain blocks to define Validator Set, checkpoints on the primary chain to perpetuate decisions, and resets on the primary chain to establish a new committee if the previous one becomes obsolete. It ensures safety at all times and rapid progress when latency among Aegis nodes is low.

Link to full articlearrow-up-right

Installation

Prepare your system to run the EO operator.

hashtag
Prerequisites

  1. Registered EigenLayer Operator Account: Ensure you have a fully registered EigenLayer operator account. If you don't have one, follow the steps in the EigenLayer Operator Guidearrow-up-right to create and fund your account.

hashtag
Operator System Requirements

  • Operating System: Linux AMD x64

  • vCPUs: 2

  • Memory: 4 GiB

  • Storage: 100 GB

hashtag
​Prepare Local EO data validator

1

hashtag
Clone repo

2

eBFT

hashtag
EO Byzantine Fault Tolerance (eBFT)

eBFT is a secure and novel network employed by EO. It consists of a consensus engine (IBFT) and External Validator Set Configuration Protocol (Aegis). eBFT utilizes the to seal blocks, provide specific network capabilities, and govern the network. EO EigenLayer-integrated smart contracts on Ethereum work in tandem with the consensus engine, fully implementing the Aegis Protocol.

eBFT's External Validator Set Configuration Protocol (Aegis) is implemented through a set of core smart contracts adhering to the Aegis protocol's specification. These contracts integrate restaking functionality, configure the validator set, and record commitments of the EO state.

  • Immediate block finality: At every chain height, only one block is proposed, and so forking and uncle blocks are avoided. This also mitigates transactions being reverted once on-chain later.

  • Reduced time between blocks: The construction, validation, and execution time of block forming is efficiently managed, increasing the chain's blockrate.

  • High data integrity and fault tolerance: IBFT 2.0's Aegis configured Validator Set, part of the Ethereum Validator set, proposes each block. ~66% of these validators must verify the block before addition, making malicious block approval very infeasible. The proposer of the block rotates over time (based on Tendermintarrow-up-right), ensuring a faulty node cannot exert long-term influence over the chain.

hashtag
State transitions

IBFT 2.0 defines a sequence of state transitions that determine chain-wide consensus on the state. A validator proposes a block to be added, which specifies operations updating the blockchain's state.

Validators of the Ethereum Validator Set accept valid proposed blocks. Each validator's voting allocated stake determines their voting weight, and a supermajority of validators must verify a block for it to be accepted.

When a validator proposes a new block, other validators verify it and vote on whether to accept it, and this can be repeated if needed. During each round of repetition, a threshold number of validators must verify and sign the block for it to be added to the blockchain. If the threshold isn't reached, the next round will begin. Another validator will then propose a block and repeat the process.

If the proposed block is verified and signed by the threshold number of validators, it's accepted and reflected in the new state of the blockchain.

The proposer is chosen to construct a block at the block rate. The proposer selection mechanism is based on Tendermintarrow-up-right, through a deterministic selection algorithm. Validators with more voting power get selected more frequently.

hashtag
Consensus Benefits

A validator's voting power is proportional to the amount staked. This means that validators with more stake will have more voting power and, therefore, more influence over the decision-making process on the network. This also provides an economic incentive for validators to behave honestly and act in the network's best interest.

EBFT is using the PolyBFT stackarrow-up-right, leveraging its external staking design and cross-chain features. The Aegis protocol completes and secures the network through integration with Ethereum native validators through EigenLayer.

IBFT consensus enginearrow-up-right
Tendermintarrow-up-right
-basedarrow-up-right

EC2 Equivalent: m5.large

  • Expected Network Utilization:

    • Total download bandwidth usage: 1 Mbps

    • Upload bandwidth usage: 1 Mbps

  • Open Ports:

    • 3000 Grafana dashboards

    • 9090 Prometheus

  • hashtag
    Navigate to correct folder
    3

    hashtag
    Setup .env file for EO Mainnet

    Copy operator-setup/data-validator/.example_env into operator-setup/data-validator/.env.

    4

    hashtag
    Setup .env file EO testnet

    Copy operator-setup/data-validator/.example_env_holesky into operator-setup/data-validator/.env.

    5

    hashtag
    Edit .env file with your specific details

    Edit the operator-setup/data-validator/.env and update the values for your setup

    cp data-validator/.example_env data-validator/.env
    cp data-validator/.example_env_holeksy data-validator/.env
    git clone https://github.com/eodata/operator-setup.git
    cd operator-setup

    Registration

    A guide to registering as an operator.

    1

    hashtag
    Generate a BLS pair

    The registration process requires two sets of private keys: an ECDSA private key and a BLS private key. We recommend creating a new BLS pair for security reasons. Please generate one that will be dedicated to EO operations.

    2

    hashtag
    Encrypt your private keys

    Encrypt your private keys. The encrypted private keys will be stored using the EO_KEYSTORE_PATH field. This is the recommended approach. If you encrypt a pasted private key it will never be saved as is anywhere.

    3

    hashtag
    Register with EO AVS

    Operators need to have a minimum of 32 ETH delegated to them to opt-in to EO. Execute the following command:

    The output should look like:

    4

    hashtag
    Generating an alias ECDSA address

    Operators must declare another ECDSA address to use within the EO client. This isolates the Ethereum EigenLayer operator private key from EO operations, protecting access to Ethereum assets. You can import a private key or generate a new private key. To import, add --ecdsa-private-key <value> to the following command.

    The output should look like:

    5

    hashtag
    Declaring an alias for the EO-chain

    After generating the ECDSA alias address to use in EO-chain, declare it using your Ethereum EigenLayer identity, verifying the link between the two.

    The output should look like:

    hashtag
    Advance Settings and Troubleshooting

    The following sections explain how to review status of the operator, troubleshoot registration issues or how to work with plain text private key (discourage)

    chevron-rightChecking the status of EO operator AVShashtag

    The following command will print the status of the operator:

    The output should look like:

    chevron-rightTroubleshooting the register commandhashtag

    salt already spent - if you get the following error:

    Add EO_SALT=<salt_in_hex> field to your .env file and retry running the register command.

    (*) the EO_SALT should be in the following format EO_SALT=0x04 (even length hex number, and could be any number but must be even length)

    chevron-rightDeregister from EO AVShashtag

    The following command will unregister and opt you out of the EO AVS:

    The output should look like:

    chevron-rightWork with plain text private keys (discouraged)hashtag

    If you don't want to encrypt your private keys, update them in the data-validator/.env file. As this approach is highly discouraged, we recommend encrypting the private keys and never saving them anywhere on any machine.

    chevron-rightTroubleshoot the declare-alias commandhashtag

    Contact our support in discord If you receive

    chevron-rightTroubleshoot the data-validator executionhashtag

    The following error, represent that your alias was not activated. Please contact our support in discord to activate your alias

    ./run.sh generate-bls-key
    docker-entrypoint-oprcli.sh: Starting oprcli print-status 
    {"level":"info","ts":1712824061.311895,"caller":"logging/zap_logger.go:49","msg":"Operator Status","status":"REGISTERED"}
    {"level":"info","ts":1712824061.3466434,"caller":"logging/zap_logger.go:49","msg":"Operator s
    Failed to create RegisterOperator transaction execution reverted: AVSDirectory.registerOperatorToAVS: salt already spent
    Deregistering operator with address <your address> 
    Deregistered Operator with Coordinator at address 0xd8eA2939cE17316b7CA2F86b121EB9c7c94c39c0 with tx hash 0x0c3016d0560c717f730a2b32446af242d66b83937cc015a02f0536fa41da1988
    ./run.sh print-status
    cd operator-setup
    ./run.sh deregister
    EO_BLS_PRIVATE_KEY=<your ecdsa private key>
    EO_ECDSA_PRIVATE_KEY=<your bls private key>
    ./run.sh encrypt <your ecdsa private key> <your bls private key>
    ./run.sh register
    {"level":"info","ts":1712853423.629971,"caller":"logging/zap_logger.go:49","msg":"succesfully registered to EO AVS","address":"<your_address>","tx hash":"<your_tx_hash>"}
    ./run.sh generate-alias
    ls -la .keystore
    -rw-r--r--@ 1 <usr>  staff  554 Apr 11 20:18 blsEncryptedWallet.json
    -rw-r--r--  1 <usr>  staff  491 Apr 12 00:06 ecdsaAliasedEncryptedWallet.json
    -rw-r--r--@ 1 <usr>  staff  491 Apr 11 20:18 ecdsaEncryptedWallet.json
    ./run.sh declare-alias
    succesfully declared an alias in the eochain
    docker-entrypoint-oprcli.sh: Starting oprcli declare-alias 
    {"level":"info","ts":1712824061.311895,"caller":"logging/zap_logger.go:49","msg":"succesfully declared an alias in the eochain","eochain address":"0x...", "eochain address", "0x...", "tx hash", "0x..."}
    Failed to create EOConfig.declareAlias transaction not enough funds to cover gas costs
    server returned an error response: error code -32003: Out of gas: gas required exceeds allowance

    Monitoring

    Monitoring the health of your operator setup.

    hashtag
    Monitoring, Metrics, Grafana dashboards

    hashtag
    Quickstart

    Here you'll find a quick start guide to run the Prometheus, Grafana, and Node exporter stack. Check out the README for more details. If you want to manually set this up, follow the steps below.

    hashtag
    Metrics

    1

    hashtag
    Check the data validator metrics

    Replace the EO_PROMETHEUS_PORT with the value of EO_PROMETHEUS_PORT from the data-validator/.env

    hashtag
    Troubleshooting

    • If you see the following error:

      Use the same command by prepending sudo in front of it.

    hashtag
    Grafana

    We use Grafana to visualize the metrics from the EO AVS.

    You can use for it or any other Dashboard provider.

    You should be able to navigate to http://<ip>:3000 and log in with admin/admin. This container of Grafana has a Prometheus data source setup using port 9090. If you change the Prometheus port, you need to add a new data source or update the existing data source. You can do this by navigating to http://<ip>:3000/datasources

    Useful Dashboards

    The EO Data Validator dashboard can be used to monitor performance, issues and data source statuses. Explaining each panel on below -

    Score

    The score panel shows the gauge metric eigen_performance_scorebetween 0-100 which is calculated based on the performance of the AVS operator and the performance of the backing services.

    RPC Req

    The RPC Req panel shows the counter and histogram of the total number of json-rpc <method> requests from the execution client.

    EO Errors & EO Errors Avg 5 min

    The EO Errors panel shows the counter for the number of errors encountered by the execution client.

    Update Rate Duration (s)

    The Update Rate duration panel helps visualize the frequency of updates in seconds. For example, in the above chart 91% of the submitted transactions were processed within 0.1 seconds.

    EO Chain Performance (s)

    The EO chain panel helps visualize the time between blocks on the EO chain. As per the above dashboard, the majority of the blocks are produced within 0.005 seconds.

    Data Providers All

    The Data providers panel shows the connection status of each data source that the validator pings for price feeds. If one of the sources shows 'FAIL' instead of 'OK', it means the connection to that source is broken.

    You can find the json file to import the above dashboard . Once you have Grafana set up, feel free to import the dashboards.

    hashtag
    Node exporter

    The EO data validator emits EO specific metrics. However, it's also important to keep track of the node's health. For this, we will use which is a Prometheus exporter for hardware and OS metrics exposed by *NIX kernels, written in Go with pluggable metric collectors. By default, it is installed and started when you start the entire monitoring stack. If you want to modify the stack, you can install the binary or use docker to it.

    In Grafana dashboards screen, import the node-exporter to see host metrics.

    hashtag
    VMAgent

    The vmagent is the docker that submits data validator metrics to EO central monitoring. This allow us to help you in troubleshoot your operator.

    If you don't want to share with us the metrics, remove the vmagent from the docker-compose.yml in the data-validator/monitoring folder

    You should see something like:
    2

    hashtag
    Setup the monitoring stack

    We use prometheusarrow-up-right to scrape the metrics from the EO data validator container. Make sure to edit the prometheus.yml file, located at operator-setup/data-validator/monitoring, replacing the placeholders 'EO_PROMETHEUS_PORT', EO_MAIN_ADDRESS, and mainnet|testnet with your specific values

    The relevant lines are:

    3

    hashtag
    Setup sending data validator metrics to EO monitoring

    We allow operators to push the data validator metrics to EO monitoring system for extra monitoring. To do so, make sure to edit the vmagent.yml file, located at operator-setup/data-validator/monitoring, replacing the placeholders EO_PROMETHEUS_PORT, EO_MAIN_ADDRESS, and mainnet|testnet with your specific values

    The relevant lines are:

    4

    hashtag
    Start the monitoring stack

    You can start all the monitoring stack, Prometheus, Grafana, and Node exporter all at once or only specific component

    5

    hashtag
    Connect docker networks

    Since the EO data validator is running in a different docker network, we will need to have the Prometheus container in the same network of blockchain oracle-data-validator. To do that, run the following command.

    herearrow-up-right
    OSS Grafanaarrow-up-right
    herearrow-up-right
    Node Exporterarrow-up-right
    runarrow-up-right
    You can import the data validator dashboard by importing data-validators.json file present in the monitoring directory.

    Running the Client

    Running your data validator and start signing transactions.

    hashtag
    Running an EO AVS data validator

    EO operator activation: Ensure your account has been activated. To check your current status, run the following (1 is activated, 0 is not).

    Follow us on X (formerly known as Twitter)arrow-up-right to see activation windows and more helpful info. For technical issues, please contact the EO team herearrow-up-right on the operators-technical-help channel.

    Note: Access to our client source code is currently restricted; however, interested parties may contact [email protected] to review the client for security reasons.

    hashtag
    Run using docker

    Navigate to the data validator directory.

    Run the docker.

    The command will start the data validator container. If you execute docker ps you should see an output indicating the eo-data-validator container has the " Up " status with ports assigned. You may view the container logs using

    chevron-rightData Validator V1 logshashtag

    The following example log messages confirm that your EO data validator software is up and running. Please ensure that your alias is declared and activated.

    chevron-rightData Validator V2 logshashtag

    The following example log messages confirm that your EO data validator software is up and running. Please ensure that your alias is declared and activated.

    hashtag
    Stop EO data validator

    To bring the containers down, run the following command:

    hashtag
    Upgrade EO data validator

    Upgrade the AVS software for your EO data validator by following the steps below:

    1. Pull the latest repo

    1. Merge .env changes. Go over .example_env or .example_env_holesky and merge new fields that do not appear in your local .env file

      1. The structure of .example_env* have been changed to support data validator V2

    1. Stop the existing services

    1. Start your services again. If any specific instructions need to be followed for any upgrade, those instructions will be given with the specific release notes. Please check the latest on Github and follow the instructions before starting the services again.

    docker compose up -d
    docker network connect eo-data-validator prometheus
    curl http://localhost:<EO_PROMETHEUS_PORT>/metrics
    permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
    # HELP eigen_performance_score The performance metric is a score between 0 and 100 and each developer can define their own way of calculating the score. The score is calculated based on the performance of the Node and the performance of the backing services.
    # TYPE eigen_performance_score gauge
    eigen_performance_score{avs_name="<AVS Name>"} 100
    ...
    cast call 0x4E70004b01987B4fd7DAcab348F0B39E9AE26110 "isValidatorActive(address validator)" <your alias address> -r https://rpc.eo.app | cast 2d
    cd operator-setup/data-validator/monitoring
      - job_name: 'eo-data-validator'
        static_configs:
          - targets: ['eo-data-validator:<EO_PROMETHEUS_PORT>']
    cd operator-setup/data-validator/monitoring
      - job_name: 'eo-data-validator'
        static_configs:
          - targets: ['eo-data-validator:<EO_PROMETHEUS_PORT>']
        metric_relabel_configs:
        - target_label: operator_address
          replacement: <EO_MAIN_ADDRESS>
        - target_label: eochain
          replacement: <mainnet|testnet>
    Pull the latest docker images
    {"lvl":"INF","component":"validator","healthEndpointsPort":9000,"prometheusPort":9100,"dataPort":9200,"t":"2025-03-28T17:43:24.921","msg":"HTTP servers started"}
    {"lvl":"INF","component":"validator","configProvider":"0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9","registryContractAddress":"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512","ovsAddresses":"HashSet\n0x5FC8d32690cc91D4c39d9d3abcBD16989F875707","mainAddress":"0x70997970C51812dc3A010C7d01b50e0d17dc79C8","keyStorePath":"/Users/eodata/Projects/core/go-datavalidator/.keystore","t":"2025-03-28T17:43:25.663","msg":"configProvider started"}
    {"lvl":"INF","component":"validator","t":"2025-03-28T17:43:25.741","msg":"configProvider is running"}
    {"lvl":"INF","component":"validator","t":"2025-03-28T17:43:25.741","msg":"calling onSourcesChange"}
    {"lvl":"INF","component":"validator","t":"2025-03-28T17:43:25.741","msg":"initFeedsReporting started"}
    {"lvl":"INF","component":"validator","time":"2025-03-28T19:43:25.742","t":"2025-03-28T17:43:25.742","msg":"feeds reporting initializing..."}
    {"lvl":"INF","component":"validator","source":"coinbase","sourceID":"4","wsMsg":"{\"type\":\"subscribe\",\"product_ids\":[\"USDT-USD\",\"ARB-USD\",\"AVAX-USD\",\"BTC-USD\",\"SWELL-USD\",\"SOL-USD\",\"FIL-USD\",\"DOGE-USD\",\"MATIC-USD\",\"DAI-USD\",\"ETH-USD\",\"DOT-USD\",\"SHIB-USD\",\"LINK-USD\",\"UNI-USD\",\"XRP-USD\",\"LTC-USD\",\"ADA-USD\",\"OP-USD\"],\"channels\":[\"ticker\",\"heartbeat\"]}","t":"2025-03-28T17:43:26.310","msg":"subscribe message"}
    {"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","symbols":["OPUSDT","LTCUSDT","ZRCUSDT","AVAXUSDT","ARBUSDT","LINKUSDT","DOTUSDT","MANTAUSDT","TRXUSDT","SWELLUSDT"],"t":"2025-03-28T17:43:26.554","msg":"preparing subscription request for chunk"}
    {"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","symbols":["SOLUSDT","TONUSDT","FTMUSDT","DAIUSDT","TRUMPUSDT","XRPUSDT","TAIKOUSDT","ADAUSDT","PLUMEUSDT","DOGEUSDT"],"t":"2025-03-28T17:43:26.554","msg":"preparing subscription request for chunk"}
    {"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","symbols":["ETHUSDT","SUSDT","USDCUSDT","BBUSDT","FILUSDT","BTCUSDT","BNBUSDT"],"t":"2025-03-28T17:43:26.554","msg":"preparing subscription request for chunk"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:ADA_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:XRP_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:TON_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:DOGE_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:BB_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:BNB_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:SOL_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:LTC_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:TRX_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:MODE_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:BTC_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:TAIKO_USDT","t":"2025-03-28T17:43:26.654","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:SHIB_USDT","t":"2025-03-28T17:43:26.655","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:DOT_USDT","t":"2025-03-28T17:43:26.655","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bitmart","sourceID":"18","topic":"spot/ticker:ETH_USDT","t":"2025-03-28T17:43:26.655","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","conn_id":"f87ff096-c6ef-4594-817a-c15c0cc1af4a","t":"2025-03-28T17:43:26.735","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","conn_id":"f87ff096-c6ef-4594-817a-c15c0cc1af4a","t":"2025-03-28T17:43:26.737","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"bybit","sourceID":"17","conn_id":"f87ff096-c6ef-4594-817a-c15c0cc1af4a","t":"2025-03-28T17:43:26.737","msg":"subscription successful"}
    {"lvl":"INF","component":"validator","source":"gateio","sourceID":"19","symbols":["\"USDC_USDT\"","\"MANTA_USDT\"","\"ZRC_USDT\"","\"TRUMP_USDT\"","\"SHIB_USDT\"","\"S_USDT\"","\"ETH_USDT\"","\"LTC_USDT\"","\"LINK_USDT\"","\"TRX_USDT\"","\"SOL_USDT\"","\"DOT_USDT\"","\"ARB_USDT\"","\"BTC_USDT\"","\"TON_USDT\"","\"PLUME_USDT\"","\"BNB_USDT\"","\"ADA_USDT\"","\"DOGE_USDT\"","\"XRP_USDT\"","\"DAI_USDT\"","\"SWELL_USDT\"","\"OP_USDT\"","\"SOV_USDT\"","\"FIL_USDT\""],"t":"2025-03-28T17:43:27.234","msg":"subscribing to symbols"}
    {"lvl":"INF","component":"validator","connection":"localnonce","txHash":"0x91162245ec4d22d206434ea94956467272460afb50b1d6460d2d417fc104f8d2","blockNumber":"6778","blockHash":"0x1f691748aabcb8797928d1a6d4f140d3742ad0fe9b7e057fe35a542bae4080b3","gasUsed":5612449,"effectiveGasPrice":"50000007","accepted":true,"sendingDuration":2.186042,"waitingDuration":3002.025833,"t":"2025-03-28T17:43:30.904","msg":"received receipt for transaction"}
    {"lvl":"INF","reporter":"eochain","blockNumber":"6777","aggregatorAddress":"0x5FC8d32690cc91D4c39d9d3abcBD16989F875707","aggregatorReportsCount":1,"blockAppeared":"2025-03-28T17:43:27.895","txHash":"0x91162245ec4d22d206434ea94956467272460afb50b1d6460d2d417fc104f8d2","t":"2025-03-28T17:43:30.904","msg":"quotes reported"}
    {"lvl":"INF","component":"validator","connection":"localnonce","txHash":"0x146940e6a43805d781ba46ad3323ed037ead7c11486335a6dcbb62550c4e5d0f","blockNumber":"6779","blockHash":"0xbb4b7df9a83f8042d8948842eb6d46309f002087dceba48284d72625cb19c5ed","gasUsed":5698033,"effectiveGasPrice":"50000007","accepted":true,"sendingDuration":2.798292,"waitingDuration":2995.488624,"t":"2025-03-28T17:43:33.904","msg":"received receipt for transaction"}
    {"lvl":"INF","reporter":"eochain","blockNumber":"6778","aggregatorAddress":"0x5FC8d32690cc91D4c39d9d3abcBD16989F875707","aggregatorReportsCount":1,"blockAppeared":"2025-03-28T17:43:30.903","txHash":"0x146940e6a43805d781ba46ad3323ed037ead7c11486335a6dcbb62550c4e5d0f","t":"2025-03-28T17:43:33.905","msg":"quotes reported"}
    {"lvl":"INF","component":"validator","connection":"localnonce","txHash":"0x3540297cd201b02891f9a4faeed59e0b4d3e5e9c91af774ad644f434461d47bb","blockNumber":"6780","blockHash":"0x75b72660a0aae20c2d1afbc01a28e792fbefa3fcaac3a43f11b9a69b123a4d61","gasUsed":5695245,"effectiveGasPrice":"50000007","accepted":true,"sendingDuration":2.5475,"waitingDuration":2995.831167,"t":"2025-03-28T17:43:36.906","msg":"received receipt for transaction"}
    {"lvl":"INF","reporter":"eochain","blockNumber":"6779","aggregatorAddress":"0x5FC8d32690cc91D4c39d9d3abcBD16989F875707","aggregatorReportsCount":1,"blockAppeared":"2025-03-28T17:43:33.904","txHash":"0x3540297cd201b02891f9a4faeed59e0b4d3e5e9c91af774ad644f434461d47bb","t":"2025-03-28T17:43:36.906","msg":"quotes reported"}
    release notesarrow-up-right
    2024-04-11 22:32:04 <1> 2024-04-11T19:32:04.467Z info:  Validator restarts on events: OnConfigChange
    2024-04-11 22:32:04 <1> 2024-04-11T19:32:04.469Z info:  Health endpoints are available through port:
    2024-04-11 22:32:04 <1> 2024-04-11T19:32:04.469Z info:  Prometheus metrics are available through port:
    2024-04-11 22:32:05 <1> 2024-04-11T19:32:05.041Z info:  sent transaction b4f25b20a25c442dd0cb629395ce4b0859b3110f39b617ba5d4a112c5199a2a0 [nonce:0]  to block 256 ---<some_data> ---duration: 0.083 ---block received at 2024-04-11T19:32:04.958Z
    2024-04-11 22:32:06 <1> 2024-04-11T19:32:06.130Z info:  sent transaction 191351c865a81379bace9c94d19fd605fddac04ba738d67bfd42d6618f97a322 [nonce:1]  to block 257 ---<some_data> ---duration: 0.03 ---block received at 2024-04-11T19:32:06.100Z
    2024-04-11 22:32:07 <1> 2024-04-11T19:32:07.257Z info:  sent transaction 118e70a76fa0e65bcc7664b8b1feb6d6e820c0fc38d28968a5175e8b66b088ca [nonce:2]  to block 258 ---<some_data> ---duration: 0.022 ---block received at 2024-04-11T19:32:07.232Z
    2024-04-11 22:32:08 <1> 2024-04-11T19:32:08.334Z info:  sent transaction cd825772a985ba01744712ffffea4376d7ab950e4f1cbf502f5c1189b79374a9 [nonce:3]  to block 259 ---<some_data> ---duration: 0.018 ---block received at 2024-04-11T19:32:08.316Z
    2024-04-11 22:32:09 <1> 2024-04-11T19:32:09.504Z info:  sent transaction ef1b958dad78ca229c9efeff281e7691956634e6aa588fc03a5554b5800865ad [nonce:4]  to block 260 ---<some_data> ---duration: 0.016 ---block received at 2024-04-11T19:32:09.488Z
    2024-04-11 22:32:10 <1> 2024-04-11T19:32:10.671Z info:  sent transaction 322f19fe10759660a8328bd8be6974ef9be5fac861e6069548380d277998091b [nonce:5]  to block 261 ---<some_data> ---duration: 0.021 ---block received at 2024-04-11T19:32:10.650Z
    2024-04-11 22:32:11 <1> 2024-04-11T19:32:11.778Z info:  sent transaction f3e3a27fa1adcd3a89336b14e8342e60b943e9376f11c416128689d1e06d17dd [nonce:6]  to block 262 ---<some_data> ---duration: 0.016 ---block received at 2024-04-11T19:32:11.762Z
    2024-04-11 22:32:12 <1> 2024-04-11T19:32:12.958Z info:  sent transaction f1310e2e16f873a7f121f0359e48a9d0b5de7cb887df6174081e8d2977d231c2 [nonce:7]  to block 263 ---<some_data> ---duration: 0.018 ---block received at 2024-04-11T19:32:12.940Z
    2024-04-11 22:32:14 <1> 2024-04-11T19:32:14.135Z info:  sent transaction c3fed5490435682dfee86b15725ab1514d9f5802e8c7fc5e0f39a43c71bed4fc [nonce:8]  to block 264 ---<some_data> ---duration: 0.014 ---block received at 2024-04-11T19:32:14.121Z
    2024-04-11 22:32:15 <1> 2024-04-11T19:32:15.260Z info:  sent transaction fa0017193eaef5f8b465ccbcb86fb3789d567ed34c688efcc5abc80915ccf0cd [nonce:9]  to block 265 ---<some_data> ---duration: 0.029 ---block received at 2024-04-11T19:32:15.231Z
    2024-04-11 22:32:16 <1> 2024-04-11T19:32:16.399Z info:  sent transaction 5259a10f8dd43acc8e3f66e97b8489299d20caad9f0da0344ed9dea413f3bcf6 [nonce:10]  to block 266 ---<some_data> ---duration: 0.021 ---block received at 2024-04-11T19:32:16.378Z
    2024-04-11 22:32:17 <1> 2024-04-11T19:32:17.505Z info:  sent transaction f0bfeb6223f3bd09ef8f251bb05b3c5c81b1c02ea555c5a2846077e11c145e31 [nonce:11]  to block 267 ---<some_data> ---duration: 0.013 ---block received at 2024-04-11T19:32:17.492Z
    cd data-validator
    docker compose up -d
    docker logs -f <container_id>
    cd operator-setup/data-validator
    docker compose down
    cd operator-setup
    git pull
    cd data-validator
    docker compose pull
    docker compose down
    docker compose up -d
    9000
    9100

    Cryptoeconomic Security

    While traditional blockchain oracles rely on their proprietary tokens to maintain ecosystem health and secure operations, EO introduces a novel security approach with its dual-token design. The model synergizes the specific advantages of a protocol-dedicated token with the enhanced security and economic stability provided by a well-established token like ETH, used for staking purposes.

    This dual-token approach marks a notable shift from the single token model. By incorporating ETH for staking purposes, EO connects to a broader and more resilient economic base. This strategy effectively mitigates risks associated with blockchain protocols that rely on protocol-specific tokens.

    The following sections provide a mathematical analysis, showing the enhanced security and stability of such a system.

    hashtag
    Measuring Cryptoeconomic Security

    Cryptoeconomic security (CES) is a useful measure for analysis, consider the following;

    Given a set of colluding validators that we henceforth term the attacker, we assume that the attacker has the ability to corrupt the majority of the validators. Therefore, the attacker possesses the power to manipulate the consensus process, potentially leading to double-spending, censoring transactions, or altering the integrity of the blockchain's state.

    To assess whether attacking is beneficial, the attacker must take into account two elements: the Cost of Corruption () and the Profit from Corruption ().

    encompasses the total resources the attacker must invest to successfully manipulate the protocol, i.e., slashing of their stake, technical resources required for the attack and other associated expenses. Since we focus on assessing the efficacy of stake slashing as a deterrent and its influence on the CES, we assume that the primarily involves the loss of the attacker's staked assets, while other costs will be disregarded.

    signifies the potential gains the attacker would achieve post-successful manipulation. Our analysis requires a more subtle approach towards , and thus we divide into two sources as follows:

    • Profit from Manipulation () is the internal profit the attacker can gain by manipulating the protocol. For instance, for blockchain Oracle protocols, it is the profit that could be extracted by a malicious price update. The is upper-bounded by the protocol's Total Value Secured (TVS).

    • Profit from Depreciation () addresses the external profit the attacker can gain from betting on price volatility or depreciation through, e.g., derivative markets or short selling.

    Notice that . A rational attacker will only attack if .

    We capture this in the following definition.

    Definition (CES Margin). A protocol has a -crypto-economic security margin, or a -CES margin, if

    In what follows, we explicitly assume that increasing the CES margin implies a more crypto-economically (CE) secure protocol and say that a protocol is CE-secure or CE-vulnerable, referring to a positive or negative CES margin, respectively.

    hashtag
    Profit from Short Selling

    We now discuss the ingredient and suggest a (stylized and simplified) way to quantify it. Crucially, it does not rely on any property of a protocol and refers to any asset, be it cryptocurrency, fiat, or stock.

    Consider a token we call $TOK, and assume that the attacker can short $TOK. Since we assume the attack is relatively quick, we neglect the shorting fees. The amount of short positions is bounded by $TOK's short interest. Namely, the percentage of $TOK's free float market cap that the attacker could short sell, which we denote by . We stress that typically . Further, let denote $TOK's total market cap (in USD). We therefore assume the attacker can open a short position of USD. Next, let denote the percentage of depreciation due to the attack, for . A short seller can thus earn for every $TOK they short. All in all, a successful short trade will grant the attacker a profit of USD.

    hashtag
    CES: A Tale of Two Blockchain Oracles

    To demonstrate how the CES margin is affected by the nature of the protocol's token, we compare the following two scenarios:

    • EnshrinedBlockchainOracle, which relies on the base-layer's token that we denote by $ETH.

    • TraditionalBlockchainOracle, relying on its own token that we denote by $TRD.

    We assume that the only difference between EnshrinedBlockchainOracle and the TraditionalBlockchainOracle is the token used for staking. In both scenarios, the market cap of the stake is equal and worth (measured in USD); however, as we show shortly, the two scenarios imply different CES margins. The reason is that an attack's ramifications are different.

    circle-exclamation

    The value and utility of $ETH are independent of EnshrinedBlockchainOracle's activities, unlike $TRD, whose value is closely tied to the operations of TraditionalBlockchainOracle.

    hashtag
    Resilience to Attacks

    For Traditional Blockchain Oracle ($TRD), a successful attack on the TraditionalBlockchainOracle will affect the $TRD value, as the $TRD's inherent value is tied to the operations of TraditionalBlockchainOracle. The attacker can gain USD by shorting $TRD prior to the attack; hence, in TraditionalBlockchainOracle's case .

    For EnshrinedBlockchainOracle ($ETH), as the value and utility of $ETH are unrelated to the EnshrinedBlockchainOracle protocol the price of $ETH will not be affected. Thus, the equals 0 for EnshrinedBlockchainOracle.

    . If the TraditionalBlockchainOracle, which relies on its own token $TRD, has a -CES margin, then EnshrinedBlockchainOracle, which relies on the base-layer's token $ETH, has a -CES margin.

    Observation 1 is illuminating. To illustrate, assume that the TraditionalBlockchainOracle is a medium-sized decentralized service ( billion USD) with a reasonable short interest ().

    Under a severe attack (), its CES margin is smaller by 70-100 million USD compared to EnshrinedBlockchainOracle.

    circle-exclamation

    Under the same attack, the EnshrinedBlockchainOracle is far more cryptoeconomically secure, as the underlying stake is not derived from the operations of the EnshrinedBlockchainOracle. In contrast, such an attack would devastate the cryptoeconomic security of the TraditionalBlockchainOracle.

    hashtag
    Divergences in the Cost of Corruption

    External, unforeseen events can break the CES of the TraditionalBlockchainOracle. A crucial observation is that the , which is the stake of the validators, is always smaller than $TRD's market cap . Let denote the proportion of $TRD market cap used for staking in the protocol, namely . We use this formulation to analyze the robustness of the protocol and suggest it is susceptible to a death spiral.

    For any real number , the TraditionalBlockchainOracle could be CE-vulnerable even if the cost of corruption is times the profit of manipulation, i.e., .

    The above observation means that attacks might be executed even if the is negligible, provided that the attacker can gain from a $TRD price decrease after the attack. The component should thus reflect not only the TVS (through ) but also the short interest (through ).

    circle-exclamation

    Being able to short $TRD based on the TraditionalBlockchainOracle's operations increases the potential profit from attack, whereas there is no such benefit for attacking EnshrinedBlockchainOracle

    hashtag
    Market Fluctuation Impact

    Next, we analyze the ramifications of a sudden decrease of $TRD market cap. Such a change in valuation could result from the volatile nature of the crypto space or the unintended fault of the protocol.

    Assume the protocol is CE-secure. Any fluctuation in $TRD market cap can make the protocol CE-vulnerable.

    This observation is demonstrated using an example.

    hashtag
    Example 1:

    We analyze the CES of TraditionalBlockchainOracle after a major price drop, which occurs due to, e.g., a major crypto volatility event. We denote by the time of the price drop. We assume that the stake proportion is the attacker's foreseen price drop is , and the short interest is .

    Before the attack at , we assume the market cap of $TRD is (all monetary quantities are given in million USD terms). Consequently, , and Additionally, we assume that before time the potential profit from manipulation is

    The event at , which occurs due to a major crypto volatility event, causes the market cap of all crypto tokens to decrease. Particularly, we assume that $TRD drops by and that the more stable$ETH drops by . Furthermore, such a market cap change also decreases the . TraditionalBlockchainOracle's TVS is comprised of different tokens, for instance in $ETH, wrapped versions of $BTC, stable coins ($USDT/$USDC ), and more. Some of those tokens are more volatile than others, and some do not fluctuate at all. We thus assume that, on average, the drops on the same scale as $ETH, namely by

    The figure below depicts the situation before and after , as we formally analyze next.

    Let us analyze the CES margin. Before , we see that the CES margin is positive, since

    After , which occurs due to a major crypto volatility event, the market cap of $TRD drops by and becomes . As a result, the falls to and the drops to . Furthermore, the market cap of all crypto market drops and, as noted above, the drops by . Overall, the CES margin becomes negative, since

    Thus, the event at that sparked a price drop made the TraditionalBlockchainOracle CE vulnerable.

    Next, we analyze EnshrinedBlockchainOracle, relying on the independent $ETH token. The CES margins of EnshrinedBlockchainOracle before the event is

    The event at affects EnshrinedBlockchainOracle's CES margin as well. First, EnshrinedBlockchainOracle has no as it relies on an independent token; thus, the attacker cannot gain from betting on price drops. Secondly, EnshrinedBlockchainOracle's decreases due to the drop of $ETH, by to become. Thirdly, as in the case of TraditionalBlockchainOracle, the drops by , becoming . Overall, the CES margins of EnshrinedBlockchainOracle after the event is

    The figure below depicts the change in the CES margin of EnshrinedBlockchainOracle due to the same event. Importantly, under precisely the same event, EnshrinedBlockchainOracle remains CE secure.

    circle-exclamation

    The TraditionalBlockchainOracle CE security is far more susceptible to market fluctuations, whereas EnshrinedBlockchainOracle's security is resilient to external market forces.

    hashtag
    Beyond Profit from Depreciation

    Until now, we have focused on , an element that plays a crucial role in the TraditionalBlockchainOracle but not in EnshrinedBlockchainOracle. The analysis assisted in understanding how an independent token ($TRD) decreases the CES margin (Observation 1), making the protocol susceptible to attacks even if the is orders of magnitude greater than the (Observation 2), and could result in vulnerabilities in times of price fluctuations (Observation 3). But relying on a dedicated token $TRD bares other weaknesses. In the next section, we extend our analysis to challenges in the , particularly around issues of scaling and cost of capital.

    hashtag
    Scaling Cost of Corruption with Total Value Secured

    Assume that both protocols gain traffic and usage, resulting in a ten-fold increase in the TVS. The higher the TVS, the higher the ; hence, the CES margin decreases dramatically. For simplicity, we shall assume that the is a constant fraction of the TVS. How can the protocols regain their CE security?

    To keep the CES margin positive, the should scale linearly with the TVS.

    Recall that for TraditionalBlockchainOracle, where is the staked proportion of $TRD and is $TRD market cap. The TraditionalBlockchainOracle can hence increase its in two ways:

    • Passively, due to an increase in $TRD market cap.

    • Actively, by increasing the staked proportion .

    Let us examine these two solutions. For the passive approach of experiencing an increase in $TRD market cap, note that the TraditionalBlockchainOracle cannot (legally) control the price and ensure a positive CES margin. Particularly, if the TVS fluctuation and the price fluctuation are not identical (correlation is not enough in this case), the TraditionalBlockchainOracle could become CES-vulnerable (a scenario similar to that in Observation 3). The active approach is also challenging, as it requires the TraditionalBlockchainOracle to call capital on demand while not being connected to an independent pool of capital.

    circle-exclamation

    EnshrinedBlockchainOracle can mitigate a TVS increase by controlling the stake, allowing the CoC to scale accordingly.

    hashtag
    Cost of Capital

    TraditionalBlockchainOracle's security scheme demands stakers hold $TRD , thus, stakers have to posses a token with relatively small market cap that depends on the protocol's performance. In contrast, EnshrinedBlockchainOracle could accept stake in $ETH, the base-layer's token. $ETH is less volatile, does not suffer from inflation, and is a multi-purpose token. These differences allow EnshrinedBlockchainOracleto demand less of its stakers compared to TraditionalBlockchainOracle's stakers, who may demand a premium for the additional risks they take (possessing $TRD and being exposed to a potential turbulent macroeconomic environment). Additionally, since EnshrinedBlockchainOracle's stakers could be re-stakers through Eigenlayer, their capital efficiency is maximized.

    hashtag
    The Dual Token Model

    An independent token makes EnshrinedBlockchainOracle significantly more CE secure than its counterparts utilizing a staking token. However, blockchain oracle sovereign tokens offer other advantages if decoupled from the CES risks.

    By rewarding validators with a token, an incentive structure can be designed to increase the rate of rewards. Factors such as uptime, accuracy , and longevity of validators may increase their rewards earned. This achieves both incentivization of higher quality validation, and alignment of validators with the interests of the protocol.

    A token vesting mechanism requires validators to be aligned with the network by locking their rewards and ensuring the commitment of the validators during the vesting period. This enhances the stability and security of the network.

    A sovereign token design also allows for creating a punishment structures , where rewards can be revoked on non-malicious misbehavior. To avoid slashing Beacon Chain ETH , all non-malicious behavior will addressed with sovereign token punishments.

    Implementing all of these mechanisms while having stake rooted in $ETH retains the CES benefits of EnshrinedBlockchainOracle while avoiding the CES vunerabilities of TraditionalBlockchainOracle's.

    hashtag
    Proofs

    hashtag
    Proof of Observation 1.

    The TraditionalBlockchainOracle satisfies , with . EnshrinedBlockchainOraclehas the same and , but zero since it relies on the independent $ETH token. Its CES margin is thus .

    hashtag
    Proof of Observation 2.

    Assume that , namely that . Therefore,

    The attack is thus beneficial as long as . Specifically, if the short interest is greater or equal to the stake proportion , the protocol becomes CE-vulnerable if the attacker expects a price drop of . This vulnerability still remains even if , since could potentially reach 1 and for any

    hashtag
    Proof of Observation 3.

    Assume that before the event, the market cap satisfies ; thus, the protocol is CE-secure since

    Assume that the does not depend on the market cap . This is the case for, e.g., lending markets that mostly offer contracts in $ETH, etc. Since , there exists a real number , for , such that . Denote by the market cap of $TRD after the event. Consequently, if , it holds that

    thus, the protocol is CE-vulnerable. In other words, if the is not affected by the event, a market cap decrease can spark an attack.

    hashtag
    Proof of Observation 4.

    For the sake of this proof, we use the subscript to refer to objects in time ; for instance, is the at time . The CES margin at time is given by

    Assume at time the CES margin is positive and equals . Further, assume by contradiction that , where is the . Our assumption about the being a constant fraction of the TVS implies that also holds. By definition, there exists a time for which , and hence

    therefore, the protocol is CE-vulnerable at time .

    hashtag
    End Notes

    In practice, the attacker would buy leveraged contracts and employ trading strategies. We focus on short positions, ensuring our model is simple yet aligned with reality.

    .
    CoC\textit{CoC}CoC
    PfC\textit{PfC}PfC
    CoC\textit{CoC}CoC
    CoCCoCCoC
    PfC\textit{PfC}PfC
    PfC\textit{PfC}PfC
    PfC\textit{PfC}PfC
    PfM\textit{PfM}PfM
    PfM\textit{PfM}PfM
    PfD\textit{PfD}PfD
    PfC=PfM+PfD\textit{PfC}=\textit{PfM}+\textit{PfD}PfC=PfM+PfD
    CoC<PfC\textit{CoC} < \textit{PfC}CoC<PfC
    Ξ²\betaΞ²
    Ξ²\betaΞ²
    CoCβˆ’(PfM+PfD)⏟PfC=Ξ².CoC-\underbrace{(\textit{PfM}+\textit{PfD})}_\textit{PfC} = \beta.CoCβˆ’PfC(PfM+PfD)​​=Ξ².
    PfD\textit{PfD}PfD
    1^11
    kkk
    k∈[0,1]k\in[0,1]k∈[0,1]
    mmm
    kmkmkm
    ddd
    d∈(0,1]d\in(0,1]d∈(0,1]
    ddd
    kdmkdmkdm
    SSS
    kdmkdmkdm
    PfD=kdm\textit{PfD}=kdmPfD=kdm
    PfD\textit{PfD}PfD
    Ξ²\betaΞ²
    (Ξ²+kdm)(\beta+kdm)(Ξ²+kdm)
    mβ‰ˆ1m \approx 1mβ‰ˆ1
    k=0.1k=0.1k=0.1
    0.7≀d≀10.7 \leq d \leq 10.7≀d≀1
    CoCCoCCoC
    SSS
    mmm
    sss
    sβ‰œSms\triangleq \frac{S}{m}sβ‰œmS​
    q∈[1,∞)q \in [1, \infty)q∈[1,∞)
    qqq
    CoC=qβ‹…PfM\textit{CoC} = q \cdot \textit{PfM}CoC=qβ‹…PfM
    PfM\textit{PfM}PfM
    CoC\textit{CoC}CoC
    PfM\textit{PfM}PfM
    kkk
    t0t_0t0​
    s=20%,s=20\%,s=20%,
    d=50%d=50\%d=50%
    k=15%k=15\%k=15%
    t0t_0t0​
    m=1000m=1000m=1000
    CoC=sm=200\textit{CoC} = sm = 200CoC=sm=200
    PfD=kdm=75.\textit{PfD} = kdm = 75.PfD=kdm=75.
    t0t_0t0​
    PfM=90.\textit{PfM}=90.PfM=90.
    t0t_0t0​
    50%50\%50%
    20%20\%20%
    PfM\textit{PfM}PfM
    PfM\textit{PfM}PfM
    20%20\%20%
    t0t_0t0​
    t0t_0t0​
    CoCβˆ’PfMβˆ’PfD=200βˆ’90βˆ’75=35.\textit{CoC} - \textit{PfM} - \textit{PfD} = 200 - 90 - 75 = 35.CoCβˆ’PfMβˆ’PfD=200βˆ’90βˆ’75=35.
    t0t_0t0​
    50%50\%50%
    mβ€²=500m'=500mβ€²=500
    CoC\textit{CoC}CoC
    smβ€²=100sm'=100smβ€²=100
    PfD\textit{PfD}PfD
    kdmβ€²=37.5kdm'=37.5kdmβ€²=37.5
    PfM\textit{PfM}PfM
    20%20\%20%
    CoCβˆ’PfMβˆ’PfD=100βˆ’72βˆ’37.5=βˆ’9.5.\textit{CoC} -\textit{PfM}-\textit{PfD} = 100 - 72 - 37.5 = -9.5.CoCβˆ’PfMβˆ’PfD=100βˆ’72βˆ’37.5=βˆ’9.5.
    t0t_0t0​
    CoCβˆ’PfMβˆ’PfD=200βˆ’90βˆ’0=110.\textit{CoC} -\textit{PfM}-\textit{PfD} = 200-90-0=110.CoCβˆ’PfMβˆ’PfD=200βˆ’90βˆ’0=110.
    t0t_0t0​
    PfD\textit{PfD}PfD
    CoC\textit{CoC}CoC
    20%20\%20%
    CoC=160\textit{CoC}=160CoC=160
    PfM\textit{PfM}PfM
    20%20\%20%
    PfM=72\textit{PfM}=72PfM=72
    CoCβˆ’PfMβˆ’PfD=160βˆ’72βˆ’0=88.\textit{CoC} -\textit{PfM}-\textit{PfD} = 160-72-0=88.CoCβˆ’PfMβˆ’PfD=160βˆ’72βˆ’0=88.
    PfD\textit{PfD}PfD
    PfD\textit{PfD}PfD
    CoC\textit{CoC}CoC
    PfM\textit{PfM}PfM
    CoC\textit{CoC}CoC
    PfM\textit{PfM}PfM
    PfM\textit{PfM}PfM
    CoCCoCCoC
    CoC=S=sm,\textit{CoC} = S = sm,CoC=S=sm,
    sss
    mmm
    CoC\textit{CoC}CoC
    sss
    CoCβˆ’(PfM+PfD)=Ξ²CoC-{(PfM+PfD)} = \betaCoCβˆ’(PfM+PfD)=Ξ²
    PfD=kdmPfD=kdmPfD=kdm
    CoCCoCCoC
    PfMPfMPfM
    PfDPfDPfD
    Ξ²+kdm\beta+kdmΞ²+kdm
    β– \blacksquareβ– 
    CoC=qβ‹…PfMCoC=q\cdot PfMCoC=qβ‹…PfM
    PfM=smqPfM=\frac{sm}{q}PfM=qsm​
    CoCβˆ’PfMβˆ’PfD=smβˆ’smqβˆ’kdm=m(s(1βˆ’1q)βˆ’kd).CoC-PfM-PfD=sm-\frac{sm}{q}-kdm=m\left(s(1-\frac{1}{q})-kd\right).CoCβˆ’PfMβˆ’PfD=smβˆ’qsmβ€‹βˆ’kdm=m(s(1βˆ’q1​)βˆ’kd).
    kd>s(1βˆ’1q)kd>s(1-\frac 1 q)kd>s(1βˆ’q1​)
    kkk
    sss
    dβ‰₯1βˆ’1qd\geq 1-\frac 1 qdβ‰₯1βˆ’q1​
    qβ†’βˆžq\rightarrow\inftyqβ†’βˆž
    ddd
    1βˆ’1q≀11-\frac 1 q \leq 11βˆ’q1​≀1
    q∈[1,∞).q\in [1,\infty).q∈[1,∞).
    β– \blacksquareβ– 
    mmm
    PfM<m(sβˆ’kd)PfM < m(s-kd)PfM<m(sβˆ’kd)
    CoCβˆ’PfDβˆ’PfM=m(sβˆ’kd)βˆ’PfM>m(sβˆ’kd)βˆ’m(sβˆ’kd)=0.CoC-PfD-PfM=m(s-kd)-PfM > m(s-kd) -m(s-kd)=0.CoCβˆ’PfDβˆ’PfM=m(sβˆ’kd)βˆ’PfM>m(sβˆ’kd)βˆ’m(sβˆ’kd)=0.
    PfMPfMPfM
    mmm
    PfM<m(sβˆ’kd)PfM < m(s-kd)PfM<m(sβˆ’kd)
    m0m_0m0​
    m0<mm_0<mm0​<m
    PfM=m0(sβˆ’kd)PfM=m_0(s-kd)PfM=m0​(sβˆ’kd)
    mβ€²m'mβ€²
    mβ€²<m0m'<m_0mβ€²<m0​
    CoCβˆ’PfDβˆ’PfM=mβ€²(sβˆ’kd)βˆ’PfM=(mβ€²βˆ’m0)(sβˆ’kd)<0;CoC-PfD-PfM=m'(s-kd)-PfM = (m'-m_0)(s-kd) < 0;CoCβˆ’PfDβˆ’PfM=mβ€²(sβˆ’kd)βˆ’PfM=(mβ€²βˆ’m0​)(sβˆ’kd)<0;
    PfMPfMPfM
    ttt
    ttt
    CoCtCoC_tCoCt​
    CoCCoCCoC
    ttt
    ttt
    CoCtβˆ’PfMtβˆ’PfDt.CoC_t -PfM_t-PfD_t.CoCtβ€‹βˆ’PfMtβ€‹βˆ’PfDt​.
    t=0t=0t=0
    Ξ²\betaΞ²
    CoCt=o(TVSΒ t)CoC_t =o(\textnormal{TVS }_t)CoCt​=o(TVSΒ t​)
    o(β‹…)o(\cdot)o(β‹…)
    PfMPfMPfM
    CoCt=o(PfMt)CoC_t =o(PfM_t)CoCt​=o(PfMt​)
    tβ€²t'tβ€²
    CoCtβ€²<PfMtβ€²CoC_{t'}<PfM_{t'}CoCt′​<PfMt′​
    CoCtβ€²βˆ’PfMtβ€²βˆ’PfDt′≀CoCtβ€²βˆ’PfMtβ€²<0;CoC_{t'} -PfM_{t'}-PfD_{t'} \leq CoC_{t'} -PfM_{t'}<0;CoCtβ€²β€‹βˆ’PfMtβ€²β€‹βˆ’PfDt′​≀CoCtβ€²β€‹βˆ’PfMt′​<0;
    tβ€²t'tβ€²
    β– \blacksquareβ– 
    1^11
    Observation 1
    Observation 2.
    Observation 3.
    Observation 4.
    little-o notationarrow-up-right
    Figure 1: The TraditionalBlockchainOracle loses its CES security after a price drop in its sovereign token.
    Figure 2: EnshrinedBlockchainOracles CES margin decrease after the same event, but remains highly positive.