Tags: angerman/ogmios
Tags
v5.5.5 #### Added - ![TypeScript][] Support for the _TxMonitor_ mini-protocol in the REPL. - Link to a new Java client for Ogmios. #### Changed - ![TypeScript][] Fixed parsing of `ScriptFailures` coming out of the `evaluateTx` command. Before this patch, the client would simply throw `undefined` when such an error was encountered. They are now properly transcribed as `EvaluateTxError`. #### Removed - `testnet` has been removed from the target networks by the Docker workflow; which means that until further notice, there will be no more Docker images pushed for testnet. However, support for `preprod` and `preview` environment has been added.
v5.5.4 #### Added - Missing JSON specification (and therefore, documentation) for `collectErrors`. See [CardanoSolutions#244](CardanoSolutions#244). #### Changed - Slot lengths are now encoded as floating numbers (double precision) instead of integers (still representing a number of seconds). However, to maintain backward-compatibility, integers value are encoded without decimal, as they used to. [CardanoSolutions#245](CardanoSolutions#245) - ![TypeScript][] Blocks' properties (`header`, `headerHash`, `body`) are no longer marked as _optional_ in the JSON specification (and consequently, in the TypeScript SDK). [CardanoSolutions#238](CardanoSolutions#238) #### Removed N/A
v5.5.3 #### Added N/A -⚠️ Fixed Plutus' data / datum serialization function. See [3f614c3](CardanoSolutions@3f614c3) for details. As a consequence, some datums (either inline or in the witness set) that have been reported in the past (since `v5.5.0`) may have been wrong. Note that the datum hashes were however correct, so it is possible to identify the _"corrupted"_ ones by trying to re-hash (blake2b-256) them and see whether they match their associated hash digest. - Changed the Docker image tagging's scheme of `cardano-node-ogmios` to now include the cardano-node's version. This allows to more easily bundle more recent version of cardano-node with old versions of Ogmios without the need to make a whole new release. This is in effect from `v5.5.2` and onwards. | image | repository | tags | | --- | --- | --- | | cardano-node-ogmios | [cardanosolutions/cardano-node-ogmios](https://hub.docker.com/repository/docker/cardanosolutions/cardano-node-ogmios) | `latest`<br/>`latest-{NETWORK}`<br/>`v*.*.*_{CARDANO_NODE_VERSION}`<br/>`v*.*.*_{CARDANO_NODE_VERSION}-{NETWORK}` | | ogmios | [cardanosolutions/ogmios](https://hub.docker.com/repository/docker/cardanosolutions/ogmios) | `latest`<br/>`latest-{NETWORK}`<br/>`v*.*.*`<br/>`v*.*.*-{NETWORK}` | - [CardanoSolutions#242](CardanoSolutions#242) Fixed incongruous error message from the command-line when failing to parse protocol parameters from genesis files. The error reporting has been slightly improved to give a more fine-grained error per invalid parameter. #### Removed N/A
v5.5.2 #### Added N/A #### Changed ##### 🏢 Server - Bumped cardano-node's version (continuous integration & docker image) to 1.35.1. ##### 🚗 TypeScript Client - [CardanoSolutions#236](CardanoSolutions#236) Remove superfluous string concatenation in `UnknownResultError`'s message. #### Removed N/A
v5.5.1 #### Added ##### 🚗 TypeScript Client - [CardanoSolutions#234](CardanoSolutions#234) New `isBabbageProtocolParameters` helper function, and extended support of the existing ones to Babbage. #### Changed ##### 🏢 Server - [CardanoSolutions#233](CardanoSolutions#233) Fixed Health endpoint wrongly reporting 'Alonzo' while in the 'Babbage era'. #### Removed N/A
v5.5.0
#### Added
##### 🏢 Server
- 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`: return 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 script evaluation failures in the Babbage era:
- `corruptCostModelForLanguage`: An artifact from a distant past. This is unused but somehow still present in the ledger internal definitions. Should be removed eventually.
- 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).
<p align="right">See the <a href="https://ogmios.dev/api">📘 API reference</a> for more details.</p>
##### 🚗 TypeScript Client
- Same as Server.
#### Changed
##### 🏢 Server
- Updated [cardano-configurations](https://github.com/input-output-hk/cardano-configurations) to include the `vasil-dev` network and switch to [cardano-world](https://github.com/input-output-hk/cardano-world) as a source instead of Hydra artifacts -- now being deprecated.
- _Partially fixed_ an issue ([CardanoSolutions#230](CardanoSolutions#230), [CardanoSolutions#208](CardanoSolutions#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
- 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.<br/>
The block production is forever decentralized 🎉!
- The `extraEntropy` no longer exists.
<p align="right">See the <a href="https://ogmios.dev/api">📘 API reference</a> for more details.</p>
##### 🚗 TypeScript Client
- Same as Server.
#### Removed
##### 🏢 Server
- `UnknownInputs` and `UncomputableSlotArithmetic` errors have been removed from the top-level possible cases of `EvaluationFailure`. Instead, those errors are now comprised in the `CannotCreateEvaluationContext` case.
- The `corruptCostModelForLanguage` error has been removed from the top-level possible cases of `ScriptFailure`. This one was effectively dead-code that couldn't be reached and was there for completeness. The code has now been removed upstream.
##### 🚗 TypeScript Client
- Same as Server.
v5.5.0-rc3
#### Added
##### 🏢 Server
- 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.
- New possible transaction submission error (only for Babbage transactions):
- `malformedScriptWitnesses`, occurs when a script witness specified in the transaction does not properly deserialize to a Plutus sccript.
##### 🚗 TypeScript Client
- Same as Server.
#### Changed
##### 🏢 Server
- The fields of the `totalCollateralMismatch` error introduced in `-rc1` have been renamed as follows:
- `needed` → `computedFromDelta`
- `specified` → `declaredInField`
- The submission error `malformedOutputScripts` introduced in `-rc1` has been renamed as `malformedReferenceScripts`.
##### 🚗 TypeScript Client
- Same as Server.
#### Removed
##### 🏢 Server
- `UnknownInputs` and `UncomputableSlotArithmetic` errors have been removed from the top-level possible cases of `EvaluationFailure`. Instead, those errors are now comprised in the `CannotCreateEvaluationContext` case.
- The `corruptCostModelForLanguage` error has been removed from the top-level possible cases of `ScriptFailure`. This one was effectively dead-code that couldn't be reached and was there for completeness. The code has now been removed upstream.
##### 🚗 TypeScript Client
- Same as Server.
v5.5.0-rc1
#### Added
##### 🏢 Server
- 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`: return 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);
- `malformedOutputScripts`: returned when the `script` specified in an output isn't actually a well-formed Plutus script;
- New script evaluation failures in the Babbage era:
- `corruptCostModelForLanguage`: An artifact from a distant past. This is unused but somehow still present in the ledger internal definitions. Should be removed eventually.
- 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).
<p align="right">See the <a href="https://ogmios.dev/api">📘 API reference</a> for more details.</p>
##### 🚗 TypeScript Client
- Incorporated changes coming from the server's update.
#### Changed
##### 🏢 Server
- 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.<br/>
The block production is forever decentralized 🎉!
- The `extraEntropy` no longer exists.
<p align="right">See the <a href="https://ogmios.dev/api">📘 API reference</a> for more details.</p>
##### 🚗 TypeScript Client
- Incorporated changes coming from the server's update.
#### Removed
N/A
v5.4.0 #### Added ##### 🚗 TypeScript Client - TypeScript client for the 'TxMonitor' mini-protocol. Documentation available at https://ogmios.dev/typescript-client/tx-monitor/. #### Changed ##### 🏢 Server - 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` are only used in responses, while requests use `mirror`. See [CardanoSolutions#217](CardanoSolutions#217).
v5.3.0
#### Added
##### 🏢 Server
- 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 [CardanoSolutions#190](CardanoSolutions#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 [CardanoSolutions#190](CardanoSolutions#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
##### 🏢 Server
- 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 [CardanoSolutions#168](CardanoSolutions#168)
##### 🚗 TypeScript Client
- 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 [CardanoSolutions#197](CardanoSolutions#197).
- 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 [CardanoSolutions#194](CardanoSolutions#194).
- ⚠️ Some schema type interface renaming:
- `Tx` → `TxByron`
- `BlockBodyShelley` → `TxShelley`
- `BlockBodyAllegra` → `TxAllegra`
- `BlockBodyMary` → `TxMary`
- `BlockBodyAlonzo` → `TxAlonzo`
#### Removed
N/A