Skip to content

IntersectMBO/ogmios

 
 

Repository files navigation


Ogmios: gateway to Cardano

Ogmios is a lightweight bridge interface for cardano-node. It provides an HTTP / WebSocket API that enables applications to interact with a local cardano-node via JSON+RPC-2.0.

Compatibility

Ogmios Cardano-node (mainnet, preview, preprod)
v6.14.0.1 11.0.1
v6.14.0 10.5.1
v6.13.* 10.1.2, 10.1.3, 10.1.4
v6.12.* 10.1.2, 10.1.3, 10.1.4
v6.11.* 10.1.2, 10.1.3, 10.1.4
v6.10.* 10.1.2, 10.1.3, 10.1.4
v6.9.* 10.1.2, 10.1.3
v6.8.* 9.2.0, 9.1.1
v6.7.* 9.2.0, 9.1.1

QuickStart

Using Homebrew:

brew tap CardanoSolutions/formulas
brew install ogmios

See our Ogmios client starter kit or jump right into the user manual.

Features

Fast synchronization of blocks from the Cardano network(s)↗️
Transaction submission with enhanced error messages↗️
Evaluation of Plutus script execution units↗️
Local mempool monitoring↗️
State queries
Network
queryNetwork Information
blockHeight The chain's highest block number.
genesisConfiguration Get the genesis configuration of a specific era.
startTime The chain's start time (UTC).
tip The network's current tip.
Ledger
queryLedgerState Information
constitution The current on-chain constitution.
constitutionalCommittee A complete summary of the constitutional committee.
delegateRepresentatives A summary of registered (and pre-defined) delegate representatives, with their voting power.
epoch The current epoch of the ledger.
eraStart The information regarding the beginning of the current ledger era.
eraSummaries Era bounds and slot parameters details, required for proper slotting arithmetic.
governanceProposals Currently active governance proposals and their ratification state (i.e. votes).
liveStakeDistribution Distribution of the stake across all known stake pools, relative to the total stake in the network.
nonces Consensus nonces information used to power randomness for leader election in every epoch.
operationalCertificates Operational certificate counters of all stake pools
projectedRewards The projected rewards of an account in a context where the top stake pools are fully saturated. This projection gives, in principle, a ranking of stake pools that maximizes delegator rewards.
protocolParameters The current protocol parameters.
rewardAccountSummaries Current delegation settings and rewards of chosen reward accounts.
rewardsProvenance Get details about rewards calculation for the ongoing epoch.
stakePools The list of all pool identifiers currently registered and active, as well as their voting stake.
stakePoolsPerformances Details about pools performances indicators for the ongoing epoch.
tip The current tip the ledger is at. Said differently, the slot number and header hash of the last block that has been processed by the ledger.
treasuryAndReserves The Ada value of the treasury and reserves of the protocol.
utxo Current UTXO, possibly filtered by output reference.
↗️
Dual WebSocket/HTTP support↗️
Structured JSON logging↗️
Health monitoring, with runtime and application statistics↗️

Tip

Test vectors that cover every part of the protocol are available here. Use them without moderation for a smooth integration!

Roadmap

Cutting-edge work

The project keeps a changelog 💾 in which all past changes and recent-but-not-yet-released changes can be seen. Changes in the changelog have been implemented and are available in latest builds from the master branch.

Planned work

The github issues & milestones 🎯 list planned tasks that haven't been implemented but have reached enough maturity to be well-defined and scoped. Milestones have end-dates to give a broad estimate of when it is expected.

Future work

Finally, discussions 💡 contains ongoing discussions regarding the future of Ogmios, with design decisions still under consideration.

Clients / SDKs

Ogmios provides a language-agnostic API which can be implemented using any WebSocket or HTTP client. If you prefer using a SDK in your favorite language, see below the available clients (maintained by the community):

Logo:JavaScript
JavaScript
Logo:TypeScript
TypeScript
Logo:Go
Go
Logo:Kotlin
Kotlin
Logo:Java
Java
Logo:Python
Python
Logo:Python
Elixir
Logo:C++
C++
Logo:CSharp
C#

Development

This project uses a Nix flake for development and CI.

With direnv

If you have direnv installed, simply run:

direnv allow

This will automatically initialize git submodules and enter the development shell.

Without direnv

git submodule update --init --recursive
nix develop "git+file:.?submodules=1" --impure

The git submodule update step is required before nix develop because the flake declares self.submodules = true; Nix's git fetcher reads submodule contents while fetching the flake source itself, so a fresh clone with no submodules initialised will fail to evaluate. The flake's shellHook re-runs the submodule update on each shell entry, but it can't bootstrap a cold clone since the hook only runs after the source fetch succeeds.

Building

# Dynamic glibc build (default)
nix build .#ogmios

# Fully static musl build
nix build .#ogmios-musl

# Library only
nix build .#ogmios-lib

nix build (no target) is equivalent to nix build .#ogmios.

Building from outside the repo

You can build any of the flake outputs directly from a remote reference without cloning. The ?submodules=1 query is required so Nix's git fetcher pulls in server/modules/ and the other submodules that the build depends on:

# Build the default ogmios executable from the latest master
nix build -Lv 'git+https://github.com/IntersectMBO/ogmios.git?submodules=1'

# Specific tag or branch via ?ref=refs/heads/<branch> or ?ref=refs/tags/<tag>
nix build -Lv 'git+https://github.com/IntersectMBO/ogmios.git?submodules=1&ref=refs/tags/v6.14.0.1#ogmios-musl'

Without Nix (cabal via make shell)

git submodule update --init --recursive
cd server
make shell            # enters GHC 9.6.5 devx environment (CardanoSolutions/devx)
cabal update          # inside the shell, once per index-state bump
cabal build all

Sponsors

A big thank to all our sponsors 💖.


📖 User Manual | 📐 Contributing | 💾 Changelog | DiscordDiscord (#ogmios) | Twitter Twitter (@_KtorZ_)

Need more information? Have a look at the Frequently Asked Questions.

license=MPL-2.0

About

❇️ A WebSocket JSON/RPC bridge for Cardano

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Haskell 63.7%
  • HTML 18.6%
  • TypeScript 16.1%
  • Nix 0.6%
  • Shell 0.4%
  • JavaScript 0.3%
  • Other 0.3%