From 980e9d361de2f28406af04ebbd140575258f7500 Mon Sep 17 00:00:00 2001 From: Ron Turetzky Date: Fri, 5 Apr 2024 20:27:11 +0300 Subject: [PATCH 1/2] feat: Introducing the eoracle middleware integration as an example --- docs/eoracle-AVS-Middleware-Example.md | 53 ++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 docs/eoracle-AVS-Middleware-Example.md diff --git a/docs/eoracle-AVS-Middleware-Example.md b/docs/eoracle-AVS-Middleware-Example.md new file mode 100644 index 00000000..f84b5daa --- /dev/null +++ b/docs/eoracle-AVS-Middleware-Example.md @@ -0,0 +1,53 @@ +## eoracle AVS Middleware Example +The following is an example of how eoracle leverages Eigenlayer integration with the middleware package to actively validate oracle operations. + + +Eigenlayer operators are permissioned to register through the eoracle middleware , which forward information to the eoracle chain manager. Through a dedicated bridging contract, their Eigenlayer shares are forwarded to the eoracle chain, where they provide cryptographic trust and validation to oracle operations. + +[Documentation](https://eoracle.gitbook.io/eoracle/) +[eoracle middleware source code](https://github.com/Eoracle/eoracle-middleware/) + +```mermaid +flowchart LR + OP[Eigenlayer Operators] + subgraph Ethereum + Dapp1[Dapp 1 Contract] + subgraph Oracle AVS Contracts + subgraph Registration Contracts + RegistryCoordinator + ServiceManager + end + OracleInterface + end + ETHBridgingContract[Bridge] + subgraph Eigenlayer Contracts + DM[Delegation Manager] + SM[StrategyManager] + AVSD[AVSDirectory] + end + end + subgraph Oracle AVS Chain + AggregatorContract + OracleChainBridgingContract[Bridge] + end + subgraph Oracle AVS Node Cluster + ON1[Oracle Eigenlayer Operator 1] + ON2[Oracle Eigenlayer Operator 2] + ON3[Oracle Eigenlayer Operator 3] + end + ON1 --> |Report Price Feed Data | AggregatorContract + ON2 --> |Report Price Feed Data | AggregatorContract + ON3 --> |Report Price Feed Data | AggregatorContract + OP --> |Register |RegistryCoordinator + RegistryCoordinator --> |Read Operator Data| DM + RegistryCoordinator -->|Read Operator Data| SM + ServiceManager --> |Write Operator Registrations| AVSD + ServiceManager -->|Update Operator Information| ETHBridgingContract + RegistryCoordinator ---> ServiceManager + ETHBridgingContract --> |Send Latest Price Feed Data |OracleInterface + ETHBridgingContract<---> |Relay messages| OracleChainBridgingContract + AggregatorContract --> |Send Latest Price Feed Data| OracleChainBridgingContract + OracleChainBridgingContract --> |Recieve Operator Information|AggregatorContract + Dapp1 --> |Consume Price Feed |OracleInterface + OracleInterface --> |Verify Threshold Signatures| OracleInterface +``` \ No newline at end of file From ebcd00889f82e80e81a6d5549765a529a25fd90a Mon Sep 17 00:00:00 2001 From: Ron Turetzky Date: Fri, 5 Apr 2024 20:29:18 +0300 Subject: [PATCH 2/2] feat: Introducing a sequence diagram and attempting to fix links" --- docs/eoracle-AVS-Middleware-Example.md | 61 ++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/docs/eoracle-AVS-Middleware-Example.md b/docs/eoracle-AVS-Middleware-Example.md index f84b5daa..a8f68a43 100644 --- a/docs/eoracle-AVS-Middleware-Example.md +++ b/docs/eoracle-AVS-Middleware-Example.md @@ -5,6 +5,7 @@ The following is an example of how eoracle leverages Eigenlayer integration with Eigenlayer operators are permissioned to register through the eoracle middleware , which forward information to the eoracle chain manager. Through a dedicated bridging contract, their Eigenlayer shares are forwarded to the eoracle chain, where they provide cryptographic trust and validation to oracle operations. [Documentation](https://eoracle.gitbook.io/eoracle/) + [eoracle middleware source code](https://github.com/Eoracle/eoracle-middleware/) ```mermaid @@ -50,4 +51,64 @@ flowchart LR OracleChainBridgingContract --> |Recieve Operator Information|AggregatorContract Dapp1 --> |Consume Price Feed |OracleInterface OracleInterface --> |Verify Threshold Signatures| OracleInterface +``` + +```mermaid +sequenceDiagram + +box Ethereum AVS Contracts + +participant Operator + +participant RegistryCoordinator + +participant IndexRegistry + +participant StakeRegistry + +participant BLSApkRegistry + +participant ChainManager + +participant StateSender + +end + +box Ethereum Eigenlayer Contracts + +participant DelegationManager + +participant StrategyManager + +participant AVS Directory + +end + +box eoracle Chain Contracts + +participant StateReciever + +participant Aggregator + +end + +Operator->>RegistryCoordinator: registerAsOperator + +RegistryCoordinator ->>StakeRegistry : Register Stake + +StakeRegistry ->> DelegationManager : Fetch Delegated Stake + +DelegationManager ->> StrategyManager: Fetch Total Stake for Operator + +RegistryCoordinator ->>IndexRegistry : Update Operator Set + +RegistryCoordinator ->>BLSApkRegistry : Update Operator Set BLS Aggregate Public Key + +RegistryCoordinator ->>ChainManager : Forward Operator Shares, BLS Public Key and ECDSA Address + +ChainManager ->> StateSender : Send Message to Chain + +StateSender ->> StateReciever : Message is bridged via a message signed by the current operator set + +StateReciever ->> Aggregator : Update operator permissions and stake ``` \ No newline at end of file