libocr

module
v0.0.0-...-babe0ec Latest Latest
Warning

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

Go to latest
Published: Jul 7, 2025 License: MIT

README

libocr

libocr consists of a Go library and a set of Solidity smart contracts that implements various versions of the Chainlink Offchain Reporting Protocol, a Byzantine fault tolerant "consensus" protocol that allows a set of oracles to generate offchain an aggregate report of the oracles' observations of some underlying data source. This report is then transmitted to an onchain contract in a single transaction.

You may also be interested in libocr's integration into the actual Chainlink node. (V1 V2 V3)

Protocol Description

Please see the whitepapers available at https://chainlinklabs.com/research for detailed protocol descriptions.

Protocol Versions

  • OCR1 is deprecated and being phased out.
  • OCR2 & OCR3 are in production.
  • OCR3.1 is in alpha and excluded from any bug bounties at this time. So is the associated Key-Value-Database in offchainreporting2plus/keyvaluedatabase/.

Organization

├── bigbigendian: helper package
├── commontypes: shared type definitions
├── contract: OCR1 Ethereum contracts
├── contract2: OCR2 Ethereum contracts
├── contract3: OCR3 Ethereum contracts
├── gethwrappers: go-ethereum bindings for the OCR1 contracts, generated with abigen
├── gethwrappers2: go-ethereum bindings for the OCR2 contracts, generated with abigen
├── gethwrappers3: go-ethereum bindings for the OCR3 contracts, generated with abigen
├── networking: OCR networking layer
├── offchainreporting: OCR1
├── offchainreporting2: OCR2-specific
├── offchainreporting2plus: OCR2 and beyond (These versions share many interface definitions to make integration of new versions easier)
├── permutation: helper package
├── quorumhelper: helper package
├── ragep2p: p2p networking
└── subprocesses: helper package

Directories

Path Synopsis
Serializes and deserializes big ints using two's complement big endian representation
Serializes and deserializes big ints using two's complement big endian representation
gethwrappers
gethwrappers2
gethwrappers3
internal
confighelper
Package confighelper provides helpers for converting between the gethwrappers/OffchainAggregator.SetConfig event and types.ContractConfig
Package confighelper provides helpers for converting between the gethwrappers/OffchainAggregator.SetConfig event and types.ContractConfig
internal/managed
Package managed provides "managed" versions of Oracle and BootstrapNode that perform garbage collection, track on-chain configuration changes, serializes messages to binary, etc...
Package managed provides "managed" versions of Oracle and BootstrapNode that perform garbage collection, track on-chain configuration changes, serializes messages to binary, etc...
internal/protocol/observation
Package observation contains the data structures and logic for handling observations provided by the client DataSource.
Package observation contains the data structures and logic for handling observations provided by the client DataSource.
internal/shim
Package shim contains implementations of internal types in terms of the external types
Package shim contains implementations of internal types in terms of the external types
types
Package types contains the types and interfaces a consumer of the OCR library needs to be aware of
Package types contains the types and interfaces a consumer of the OCR library needs to be aware of
offchainreporting2
chains/evmutil
alias for offchainreporting2plus/chains/evmutil
alias for offchainreporting2plus/chains/evmutil
confighelper
alias for offchainreporting2plus/confighelper
alias for offchainreporting2plus/confighelper
reportingplugin/titlerequest
titlerequest is a small example reporting plugin that requests website titles and puts them onchain.
titlerequest is a small example reporting plugin that requests website titles and puts them onchain.
types
alias for offchainreporting2plus/types
alias for offchainreporting2plus/types
confighelper
Package confighelper provides helpers for converting between the gethwrappers/OCR2Aggregator.SetConfig event and types.ContractConfig
Package confighelper provides helpers for converting between the gethwrappers/OCR2Aggregator.SetConfig event and types.ContractConfig
internal/managed
Package managed provides "managed" versions of Oracle and Bootstrapper that perform garbage collection, track on-chain configuration changes, serializes messages to binary, etc...
Package managed provides "managed" versions of Oracle and Bootstrapper that perform garbage collection, track on-chain configuration changes, serializes messages to binary, etc...
internal/shim
Package shim contains implementations of internal types in terms of the external types
Package shim contains implementations of internal types in terms of the external types
types
Package types contains the types and interfaces a consumer of the OCR library needs to be aware of
Package types contains the types and interfaces a consumer of the OCR library needs to be aware of
Package permutation generates cryptographically secure pseudorandom permutations
Package permutation generates cryptographically secure pseudorandom permutations
ragep2p is a simple p2p networking library that provides best-effort, self-healing, message-oriented, authenticated, encrypted bidirectional communication streams between peers.
ragep2p is a simple p2p networking library that provides best-effort, self-healing, message-oriented, authenticated, encrypted bidirectional communication streams between peers.
Package subprocesses keeps track of concurrent processes, for coordination of cleanly shutting down systems of goroutines.
Package subprocesses keeps track of concurrent processes, for coordination of cleanly shutting down systems of goroutines.

Jump to

Keyboard shortcuts

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