Skip to content

Releases: CardanoSolutions/ogmios

v5.5.1

05 Jul 15:00
v5.5.1
c32341e
Compare
Choose a tag to compare

Photo: Faris Mohammed

Added

  • TypeScript New isBabbageProtocolParameters helper function, and extended support of the existing ones to Babbage. See #234 (:hammer: @KubqoA).

Changed

  • Fixed Health endpoint wrongly reporting 'Alonzo' while in the 'Babbage era'. See #233 (:bug: @pgwadapool).

Removed

N/A

Details

v5.5.0...v5.5.1

v5.5.0

29 Jun 14:03
v5.5.0
237b4ea
Compare
Choose a tag to compare

Photo: Xiaolong Wong

Added

  • Added Vasil/Babbage support, including:
    • A new block type babbage with:
      • New (optional) transaction fields references, collateralReturn, totalCollateral;
      • New (optional) transaction output's fields datum and script;
    • A new plutus:v2 script language;
  • New transaction error submission failures in the Babbage era:
    • mirNegativeTransfer: returned when attempting to perform a negative MIR transfer from a reward pot to another;
    • totalCollateralMismatch: returned when totalCollateral is set but does not match what is actually computed by the ledger (i.e. sum of collateral inputs minus collateral return);
    • malformedReferenceScripts: returned when the script specified in an output isn't actually a well-formed Plutus script;
    • malformedScriptWitnesses, occurs when a script witness specified in the transaction does not properly deserialize to a Plutus script.
  • New server evaluation failures:
    • NotEnoughSynced: Happens when attempting to evaluate execution units on a node that isn't enough synchronized. This is, if the node is still in an era prior to Alonzo, evaluation of execution units won't be possible.
    • CannotCreateEvaluationContext: Happens when the ledger fails to create an evaluation context from a given transaction. This is mostly due to the transaction being malformed (e.g. wrong redeemer pointer, missing UTxO).

See the 📘 API reference for more details.

Changed

  • Updated cardano-configurations to include the vasil-dev network and switch to cardano-world as a source instead of Hydra artifacts -- now being deprecated. (:hammer: @rhyslbw)

  • Partially fixed an issue (#230, #208) causing websocket connection to be terminated by the server when p2p is enabled on the underlying node. Ogmios now has a workaround which makes the issue less likely, but the real fix belongs in the upstream networking stack (:bug: @rhyslbw, @bakon11, @james-iohk).

  • The missingRequiredScripts error now contains an extra field resolved that is a map of (pointer → script hash) that have been correctly resolved by said pointers.

  • The introduction of the Babbage era comes with some minor (albeit possibly breaking) changes and deprecations:

    • ⚠️ datums, redeemerData and plutus:v1 scripts are no longer encoded as base64 strings, but are encoded as base16 strings. The data payload remains however identical.
      This change is meant for more compatibility across the API since those data-types can now also be submitted to the server when evaluating execution units for transactions. Using base64 for input data here is a bit awkward since most existing interfaces in the ecosystem favor base16;

    • ⚠️ When passing transaction outputs to the server (e.g. when providing an additional UTxO for script evaluation), datum hashes in output must now be specified as datumHash (instead of datum). However, the server does a best-effort for the sake of backward compatibility and should still work if provided with a valid hash under datum. However, after the Vasil hard-fork, it'll be possible to also pass inline-datums using datum, while datum hash digest are expected to be specified as datumHash. Said differently, existing applications relying on this functionality will keep working without a change on this release, but applications willing to make use of the new inline-datum functionality coming in Vasil must abide by the new notation;

    • ⚠️ Similarly, Alonzo transaction outputs will now contain a datumHash field, carrying the datum hash digest. However, they will also contain a datum field with the exact same value for backward compatibility reason. In Babbage however, transaction outputs will carry either datum or datumHash depending on the case; and datum will only contain inline datums;

    • ⚠️ The outputTooSmall errors from transaction submission will slightly change format for transactions submitted during the Babbage era. Instead of an array of outputs, it is an array of objects with output and minimumRequiredValue fields;

    • ⚠️ A slightly modified block header: leaderValue and nounce fields are gone and replaced by a single inputVrf field;

    • ⚠️ Few protocol parameters changes:

      • A new protocol parameter coinsPerUTxOByte comes to replace coinsPerUtxoWord with a slightly different semantic. coinsPerUTxOByte is meant to compute the minimum Lovelace requirement on transaction outputs, and is simply a coefficient in a linear function of the serialized (CBOR) output:

        minUTxOValue(output) =  |serialise(output)| * coinsPerUTxOByte
        
      • The decentralizationParameter no longer exists. The block production is forever decentralized 🎉!

      • The extraEntropy no longer exists.

See the 📘 API reference for more details.

Removed

N/A

Details

v5.4.0...v5.5.0

Acknowledgements

Thanks to @alessandrokonrad, @coot, @lehins, @JaredCorduan, @angerman, @vhulchenko-iohk & @hamishmack for their prompt help and feedback on various matters.

v5.4.0

22 May 08:37
v5.4.0
7344cdb
Compare
Choose a tag to compare

Photo: Vincentiu Solomon

Added

Changed

  • The server now returns slightly better faults when detecting a misuse of the TxMonitor protocol (e.g. when sending a HasTx before an AwaitAcquire).

  • The server now fails with an explicit error when given a Request containing a reflection field; reflection is only used in responses, while requests use mirror. See #217 (:bulb: @grim-i-am)

Removed

N/A

Details

v5.3.0...v5.4.0

v5.3.0

04 Aug 12:30
v5.3.0
56ffd75
Compare
Choose a tag to compare

Photo: Rodrigo Soares

Added

  • In the Local-Tx-Monitor protocol, NextTx can now take an (optional) extra argument { "fields": "all" } to instrument the server in returning not only a transaction id in NextTxResponse, but a full transaction object. See #190.

  • Transaction JSON objects from all eras now contains an extra field raw, which represents the raw serialized transaction (CBOR) as a base64-encoded text string. This is the case of the chain-sync protocol, but also for the tx-monitor protocol. The field is however absent in the ogmios.v1:compact mode. See #190.

  • Transaction JSON objects from the Alonzo era now contains an extra field inputSource which a string set to either inputs or collaterals. This captures the fact that since the introduction of Plutus scripts in Alonzo, some transactions may be recorded as failed transactions in the ledger. Those transactions do not successfully spend their inputs but instead, consume their collaterals as an input source to compensate block validators for their work.

Changed

  • The complete API reference for the server is available in a new form at: https://ogmios.dev/api/. This should make the various protocol messages easier to explore and provide a less awkward visualization of the server API than the previous TypeScript documentation. The old TypeScript documentation remains however available at: https://ogmios.dev/typescript/api/.

  • Upgrade internal dependencies to [email protected]

  • Fixed the supervisor script for the cardano-node-ogmios Docker image, which would wrongly ignore signals sent from the Docker daemon (e.g. docker container stop ...). See #168 (:bug: @jondoe1337, @yorickdowne)

  • Slightly improved installation instructions in the user-guide. See #196 & #203 (:bulb: @james-iohk, 🐛 @grim-i-am).

  • TypeScript The tx-submission client now only creates a single event listener to interact with the server. This solves the Node.js warning "possible memory leak detected" when firing many submission requests at once (and going beyond the internal default maxNumberOfListeners set by node.js on event emitters). See #197 (:bug: @leobel).

  • TypeScript The options passed to the WebSocket constructors are now ignored on the browser, since they aren't supported and were causing the constructor to "crash". See #194 (:hammer: @siegfried).

  • ⚠️ Some schema type interface renaming:

    • TxTxByron
    • BlockBodyShelleyTxShelley
    • BlockBodyAllegraTxAllegra
    • BlockBodyMaryTxMary
    • BlockBodyAlonzoTxAlonzo

Removed

N/A

Details

v5.2.0...v5.3.0

v5.2.0

15 Feb 17:33
v5.2.0
f771346
Compare
Choose a tag to compare

Photo: Mark Harpur

Added

  • Extended the local-tx-submission protocol with a new EvaluateTx query which evaluates execution units of scripts present in a transaction. This effectively piggybacks on the Alonzo's tools from the cardano-ledger while providing a more user-friendly interface regarding network parameters. The API offers well-detailed errors and an interface similar to the SubmitTx. See discussion on #172 (:bulb: @mmahut)

  • New rewardsProvenance' query coming as a replacement for the now-deprecated rewardsProvenance query. See discussion on #171 (:bulb: @renesecur)

  • TypeScript Support for the new evaluateTx query in the TxSubmissionClient & repl.

  • TypeScript Support for the new rewardsProvenance' query as rewardsProvenanceNew in the StateQueryClient & repl.

Changed

  • Added transaction id as part of the successful response to a SubmitTx. While this is technically a breaking-change, it was introduced in a backward-compatible way. Existing applications using the existing SubmitTx query will see no change and will keep receiving successes as "SubmitSuccessful" text responses. However, queries which pass transactions using the submit field (instead of the currently expected bytes field) will receive, on success, an augmented response which contains a transaction id "SubmitSuccessful": { "txId": "..." }. See discussion on #174 (:bulb: @rumourscape).

  • Improved error reporting for the SubmitTx protocol which should gives a little clearer errors for ill-formed transactions.

  • ⚠️ TypeScript Renamed client's TxSubmission/errors.ts into TxSubmission/submissionErrors.ts. Similarly, the submission are also now nested under a submissionErrors field in the TxSubmission top-level object.

Removed

N/A

Details

v5.1.0...v5.2.0

v5.1.0

24 Jan 17:25
v5.1.0
99ea8ed
Compare
Choose a tag to compare

Photo: Luca Bravo

Added

  • New LocalTxMonitor support in Ogmios. See The user guide for more details. (:bulb: @mmahut)

    ⚠️ This new protocol is NOT enabled in [email protected].*. Until its inclusion in a next release, a custom build of cardano-node is required to include a more recent version of ouroboros-network which adds support for that protocol to the Ouroboros' mini-protocols; namely: 32af9168.

    A version of [email protected] patched with the necessary commits can be found at CardanoSolutions/[email protected]+local-tx-monitor.

  • New fields in the health object:

    • connectionStatus"connected" or "disconnected", to reflect status with the node. #154 (:bulb: @gitmachtl)
    • currentEpoch → which returns the current known epoch of the linked node #164 (:bulb: @ray-robot)
    • slotInEpoch → which returns the relative number of slots elapsed in the current epoch.
  • New ogmios health-check command, useful to perform simple health check on a running server. For example, to monitor a container via Docker health check mechanism:

    HEALTHCHECK --interval=10s --timeout=5s --retries=1 CMD /bin/ogmios health-check
  • Bumped internal dependencies to Cardano's 1.33.* eco-system.

Changed

  • networkSynchronization and currentEra can be null when the server isn't connected to a node. #154

  • The Metrics trace is now correctly tagged with MetricsRuntimeStatsDisabled.

  • Fixed an issue with the Docker monitoring scripts of cardano-node-ogmios, causing issues on restart. #159 (:hammer: @jacquesvcritien)

  • TypeScript Relax upper-bound constraint on required node.js engine. This should make it possible to install the TypeScript packages on more recent versions on node.js than the one specified on the repository.

Removed

N/A

Details

v5.0.0...v5.1.0

v5.0.0

21 Dec 00:59
v5.0.0
efc825c
Compare
Choose a tag to compare

Photo: Bailey Zindel

Added

  • New state-query systemStart to access the blockchain start time (UTC).

  • New state-query chainTip to access the blockchain current tip (may slightly differ from the ledgerTip which may be behind catching up).

  • New state-query blockHeight to access the blockchain current highest block number (or "origin" if the chain is just starting).

  • New state-query eraSummaries to access all era bounds and slotting parameters details, required for proper slot arithmetic.

  • Log-levels can now be configured per-component. For example, one can decrease the min severity for the health component while keeping the state-query logs at another.

  • Logs can now be shutdown completely via the special keyword off.

  • Static binaries for Linux are now produced by the Nix build and uploaded as build artifacts for the corresponding Github workflow (i.e. Nix).

  • TypeScript Add support for systemStart, chainTip, blockHeight & eraSummaries in the client and repl.

Changed

🏢 Server

  • ⚠️ RelativeTime is no-longer serialised as a string (with s as suffix) but, as an integer representing the number of seconds.

  • ⚠️ Serialised Plutus scripts are now labelled either plutus:v1 or plutus:v2 (instead of plutus).

  • ⚠️ Some breaking changes in the SubmitTx errors returned by the server for the sake of consistency. All submission errors are now returned as singleton objects within an array. The key of each object indicates the type of error and the value gives additional details about the errors. This is also true for era-mismatch errors. Some errors used to be returned as plain strings, they are now wrapped as singleton object with null as a value; this is the case for:

    • invalidMetadata
    • mirNegativeTransferNotCurrentlyAllowed
    • mirProducesNegativeUpdate
    • mirTransferNotCurrentlyAllowed
    • missingAtLeastOneInputUtxo
    • missingCollateralInputs
    • triesToForgeAda
    • validationTagMismatch
    • wrongCertificateType
  • Upgraded internal dependencies to Cardano eco-system 1.31.0

  • ⚠️ TypeScript Lovelace is now a native BigInt.

  • ⚠️ TypeScript getServerHealth's connection argument is now wrapped into an object, mapped to the field connection. See #135 (:bulb: @rhyslbw)

  • ⚠️ TypeScript Replaced schema definitions for Hash16 and Hash64 with more precise type definitions. For hashes, definitions now follows a convention Digest[ALGORITHM]::PRE-IMAGE where ALGORITHM and PRE-IMAGE points to the corresponding has algorithm used to hash the PRE-IMAGE. The length of the digest is given by minLength and maxLength JSON-schema constraints. Consequently, TypeScript types / interfaces generated from the JSON-schema definitions have been altered.

Removed

  • ⚠️ Log level severities critical, alert and emergency have been removed. error is now the highest severity.

  • ⚠️ The Nix setup has been highly simplified, resulting in removal of the NixOS services configuration and probably some other stuff.

  • Fixed broken links in documentation (:hammer: @bjing)

Details

v4.2.1...v5.0.0

v4.2.1

16 Nov 20:23
v4.2.1
220e0be
Compare
Choose a tag to compare

Added

N / A

Changed

🏢 Server

  • Fixed configuration parsing which would wrongly use Shelley's slots per epoch instead of Byron's. This had an impact on the reported slot number in the chain-sync protocol, where slot numbers would be wrongly offset by 432000 per epoch after the first epoch.

Removed

N/A

v4.2.0

05 Nov 19:57
v4.2.0
0bfa9ae
Compare
Choose a tag to compare

Added

🏢 Server

  • Enabled Alonzo transaction in the submission protocol (oversight from previous releases). Doing so, explicit compiler warnings have been added to the relevant code to avoid overseeing this in the next upgrade.

  • Added query response and requests to logs trace, large responses are truncated (e.g. querying the entire UTXO or, informations about all stake pools).

  • Gracefully handled shutdown and process cleanup on SIGTERM.

  • Documented Mary last point to the points of interests for the chain-sync protocol.

  • Bumped cardano-node's integration to 1.31.0

🚗 TypeScript Client

  • The State-Query client can now release acquired points to perform queries against the most recent tip (which was also the default when creating a client with no point).

Changed

🚗 TypeScript Client

  • Some internal rework and cleanup; mostly chasing dangling promises by avoiding attaching even handlers when not needed.

v4.1.0

01 Oct 11:27
efabffa
Compare
Choose a tag to compare

Added

Server

  • Integrated with the Cardano ecosystem corresponding to [email protected] & latest testnet(s).

  • Generate and store test vectors for various JSON requests and responses. This should ease integration for many clients who seek good coverage of the server inputs/outputs.

  • Documented example state queries in the user guide.

TypeScript Client

  • The ConnectionConfig has an additional, optional, configuration parameter maxPayload to configure the maximum allowed message size in bytes. The default is chosen quite large as the utxo query can result in large payloads.

  • New helpers isByronEpochBoundaryBlock and isByronStandardBlock.

Changed

TypeScript Client

  • The StateQueryClient now wraps every query in a try/catch to cope with malformed queries leading to client fault results from the server.

  • Type definitions for QueryResponse[poolIds] and QueryResponse[poolParameters] are no longer marked as "optional".

  • Fixed bug #125 where empty results of delegationAndRewards would cause the client to throw an exception.

  • Handled some floating promises.