Skip to content

Commit

Permalink
Merge branch 'master' into v6.0
Browse files Browse the repository at this point in the history
  • Loading branch information
KtorZ committed Jan 10, 2024
2 parents 052fff8 + 3851f1a commit 8530d48
Show file tree
Hide file tree
Showing 273 changed files with 2,364 additions and 1,744 deletions.
3 changes: 3 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,6 @@ insert_final_newline = true
[*.hs]
indent_size = 4
max_line_length = 80

[Makefile]
indent_style = tab
Binary file added .github/clients/python.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
228 changes: 185 additions & 43 deletions .github/workflows/continuous-integration.yaml

Large diffs are not rendered by default.

9 changes: 0 additions & 9 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,3 @@
[submodule "server/config"]
path = server/config
url = https://github.com/input-output-hk/cardano-configurations.git
[submodule "clients/Go"]
path = clients/Go
url = https://github.com/savaki/ogmigo.git
[submodule "clients/Kotlin"]
path = clients/Kotlin
url = https://github.com/projectNEWM/kogmios.git
[submodule "clients/Java"]
path = clients/Java
url = https://github.com/adabox-aio/ogmios-java-client.git
145 changes: 17 additions & 128 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,154 +6,43 @@ layout: changelog
pre: "<b>5. </b>"
---

### [6.0.0-rc6] - 2023-11-10
### [6.0.0] - 2024-01-10

#### Added

- Add missing `sanchonet` network to the list of well-known networks. It'll now be properly displayed instead of showing `unknown (4)`.
- Integration with `cardano-node==8.7.2` and `cardano-ledger-conway==1.11.0.0`. It adds (preliminary) support for the Conway era. This support only covers what is currently available in the Cardano node / ledger. However, since the implementation of this era isn't finalized yet it will likely break in the future. New updates will be issued until Conway stabilizes.

#### Changed

- ![TypeScript][] Add an extra promise handler to cope with unexpected websocket disconnections when submitting messages to the server. See [#346](https://github.com/CardanoSolutions/ogmios/issues/346).

#### Removed

- N/A

### [6.0.0-rc6] - 2023-11-04

#### Added

- Integration with `cardano-ledger-conway==1.10.1.0`. It adds new elements to the Conway era:
- A new transaction submission error:
- `InvalidOrMissingPreviousProposal`
- A new (optional) field `anchor` to `ConstitutionalCommitteeRetirement` certificates.

#### Changed

- The server now return an `internalError` when an unexpected error occurs in the communication between Ogmios and the node. Before, Ogmios would simply log an exception and no response would be sent back to client applications. Now, clients correctly receive an unsuccessful response with the same `id` as present in the request. See [#346](https://github.com/CardanoSolutions/ogmios/issues/346).

#### Removed

- N/A

### [6.0.0-rc4] - 2023-10-19

#### Added

- Integration with `cardano-ledger-conway==1.9.0.0`. The previous release did (mistakenly) include an older version of the ledger. This caused synchronization of the **Conway** era to fail unexpectedly. This release now includes the latest version of the ledger currently available. It adds new elements to the Conway era:
- A new certificate `DelegateRepresentativeUpdate`.
- New transaction submission errors:
- `GovernanceProposalDepositMismatch`
- `ConflictingCommitteeUpdate`
- `InvalidCommitteeUpdate`
- `TreasuryWithdrawalMismatch`.
- New protocol parameters, only present in Conway onwards:
- `stakePoolVotingThresholds`
- `constitutionalCommitteeMinSize`
- `constitutionalCommitteeMaxTermLength`
- `governanceActionLifetime`
- `governanceActionDeposit`
- `delegateRepresentativeVotingThresholds`
- `delegateRepresentativeDeposit`
- `delegateRepresentativeMaxIdleTime`

#### Changed

- The integration with `cardano-ledger-conway==1.9.0.0` also causes a few (breaking) changes to the existing interface. Mostly located in the **Conway** era:
- `UnknownGovernanceProposal` transaction submission failure is now `UnknownGovernanceProposals` and its data field now contains a list of invalid proposals instead of a single proposal.
- `ConstitutionalCommitteeMember` may now contain an optional `mandate` field.
- The `ConstitutionalCommitte` governance action `members`' field no longer holds a member id. Instead, it contains two fields `added` and `removed` pointing to a list of `ConstitutionalCommitteeMember`.
- The certificate `DelegateRepresentativeRegistration` may now contain an optional `anchor` field.
- The governance action `Constitution` now has a mandatory `anchor` field and an optional `hash` field.
- The `returnAccount` for all governance proposal is now a (bech32-encoded) stake address instead of a key or script hash digest.
- The Conway's genesis has been completely redefined and now contains fields `constitution`, `constitutionalCommittee` and `updatableParameters`.
- The `CredentialDepositMismatch` transaction submission failure now has extra `data`.

- **⚠️ BREAKING-CHANGE ⚠️** The Alonzo's genesis `initialParameters` field has been renamed to `updatableParameters`.

#### Removed

N/A

---
---

### [6.0.0-rc3] - 2023-10-12

#### Added

- Integration with `cardano-node==8.5.0`. This adds new elements to the Conway era.
- New transaction certificates: `DelegateRepresentativeRegistration`, `DelegateRepresentativeRetirement`, `ConstitutionalCommitteeHotKeyRegistration` and `ConstitutionalCommitteeRetirement`.
- A new governance action `Information`, empty.
- New transaction submission errors: `ForbiddenWithdrawal`, `CredentialDepositMismatch`, `DRepAlreadyRegistered`, `DRepNotRegistered` and `UnknownConstitutionalCommitteeMember`

#### Changed

- Integration with `cardano-node==8.5.0`. This introduces a few breaking-change in the Conway era:
- The `DelegateRepresentative` schema has changed to now be a JSON `object` in all cases, with at least a field `type` to discriminate over it. Abstain and NoConfidence delegate representatives have no other fields.
- The stake pool operator id is now always included in the `GovernanceVoter` schema.
- The `ScriptExecutionFailure<MissingScripts>` schema now includes a `data.missingScripts` field for debugging.
- The `SubmitTransactionFailure<UnauthorizedVote>` has been changed to `SubmitTransactionFailure<UnauthorizedVotes>` and now contains a list of unauthorized voters.
- Ogmios now accept queries via HTTP (POST). Request bodies are the same as those passed to the websocket and so are responses. In fact, most Ogmios queries follow a simple request/response pattern and are therefore well-suited to be run over HTTP. While there's an obvious performance trade-off (especially for the local-chain-sync protocol), it is a reasonable approach for many queries (e.g. the local-state-query protocol).

- Fixed `inputSource` being set on Byron transactions instead of `spends`.
- Now conditionally include Byron's cbor bytes like for other eras (`--include-transaction-cbor`).
- Fixed transaction metadata's objects being encoded as lists of singletons in the JSON encoding. Now properly encoded as objects.
> [!NOTE]
> The HTTP server and the WebSocket server are both mounted on the same port. So, it suffices to route HTTP requests through `/`. The JSON payload is the same.
#### Removed
- Ability to retrieve any genesis configuration (Byron, Shelley, Alonzo or Conway) via the state-query protocol.

N/A
- A new flag `--metadata-detailed-schema` (disabled by default) to control how the server returns JSON metadata. When set, the server will return a JSON description of the encoded data; when omitted, it'll attempt to convert CBOR metadata as plain JSON object, and default to hex-encoded cbor otherwise. See also notes in [ADR-017](https://github.com/CardanoSolutions/ogmios/blob/master/architectural-decisions/accepted/017-api-version-6-major-rewrite.md).

---
---
- A new command `inspect transaction` to help with debugging the deserialization of transaction.

### [6.0.0-rc2] - 2023-09-08
- The health now contains an extra `network` and `version`. Also, beware that era names are now returned in lowercase (first letter used to be capitalised!).

#### Added
- `sanchonet` network to the list of well-known networks.

N/A
- `arm64` static executables for Linux are now available in the continuous delivery pipeline, and as release artifacts.

#### Changed

- Fixed protocol version negotiation during handshake to actually negotiate for the latest protocol (with Conway enabled)
- Slot length in era summaries and genesis is now given in milliseconds wrapped in a singleton object: `{ "milliseconds": 1234 }`. Before, it used to be given as a floating number of seconds.
- Byron's genesis JSON-schema was wrongly pointing at `protocolParameters` instead of `updatableParameters`.
- Fixed Plutus' cost models examples in the JSON-schema to match the new format.
- Fixed version not showing software revision

#### Removed

N/A

---
---

### [6.0.0-rc1] - 2023-08-10

> **Note**
>
> Tested-with: `cardano-node@8.1.1`, `cardano-node@8.1.2`
#### Added

- (Premilinary) support for the Conway era. This support only covers what is currently available in the Cardano node / ledger. However, since the implementation of this era isn't finalized yet it will likely break in the future. New updates will be issued until Conway stabilizes.

- Ogmios now accept queries via HTTP (POST). Request bodies are the same as those passed to the websocket and so are responses. In fact, most Ogmios queries follow a simple request/response pattern and are therefore well-suited to be run over HTTP. While there's an obvious performance trade-off (especially for the local-chain-sync protocol), it is a reasonable approach for many queries (e.g. the local-state-query protocol).

> **Note**
> The HTTP server and the WebSocket server are both mounted on the same port. So, it suffices to route HTTP requests through `/`. The JSON payload is the same.
- Ability to retrieve any genesis configuration (Byron, Shelley, Alonzo or Conway) via the state-query protocol.
- The server now return an `internalError` when an unexpected error occurs in the communication between Ogmios and the node. Before, Ogmios would simply log an exception and no response would be sent back to client applications. Now, clients correctly receive an unsuccessful response with the same `id` as present in the request. See [#346](https://github.com/CardanoSolutions/ogmios/issues/346).

- A new command `inspect transaction` to help with debugging the deserialization of transaction.
- ![TypeScript][]
- Add an extra promise handler to cope with unexpected websocket disconnections when submitting messages to the server. See [#346](https://github.com/CardanoSolutions/ogmios/issues/346).

- The health now contains an extra `network` and `version`. Also, beware that era names are now returned in lowercase (first letter used to be capitalised!).
- Escape the word 'constructor' to `constr` when present as key in metadata, and when not using `--metadata-detailed-schema`. JavaScript (and thus TypeScript) forbids using that word as an object key.

#### Changed

- **⚠️ BREAKING-CHANGE ⚠️** Many major changes in the interface. A complete migration guide is available in [ADR-017](https://github.com/CardanoSolutions/ogmios/blob/master/architectural-decisions/accepted/017-api-version-6-major-rewrite.md), yet please refer to the [API reference](https://ogmios.dev/api/) for details and exhaustiveness. Many representations have been made easier to parse and field names have been improved (more consistent across the entire API and better self-documented).

> **Note**
> [!NOTE]
> There are still many [test vectors](https://github.com/CardanoSolutions/ogmios/tree/master/server/test/vectors) available for every element of the Ogmios API. Use them!
- Ogmios will no longer retry connecting to a node that is configured for another network but exit with an non-zero code and a clear error message indicating the network mismatch.
Expand Down Expand Up @@ -263,7 +152,7 @@ N/A

- ![TypeScript][] Fixed a couple of data-types with fields parsed as `number` instead of `bigint`. See [#274](https://github.com/CardanoSolutions/ogmios/issues/274)

> **Warning** This is technically an internal breaking-change, however it actually comes as a bug fix since this does not change the announced _interface_ in the TypeScript schema (which was correctly indicated 'bigint'). Still, this may cause issues with those using `number` where there will now be `bigint`.
> [!WARNING] This is technically an internal breaking-change, however it actually comes as a bug fix since this does not change the announced _interface_ in the TypeScript schema (which was correctly indicated 'bigint'). Still, this may cause issues with those using `number` where there will now be `bigint`.
- ![TypeScript][] Fixed browser detection for the `IsomorphicWebSocket` abstraction. See [#273](https://github.com/CardanoSolutions/ogmios/issues/274)

Expand Down
5 changes: 3 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ Open a [Bug Issue](https://github.com/cardanosolutions/ogmios/issues/new?templat

Feel free to bring it as a [discussion [category: idea]](https://github.com/CardanoSolutions/kupo/discussions/new?category=ideas). Make sure to highlight your use case so we can understand the design space and agree on a solution.

> **Note** Ideally, follow this simple template:
> [!INFO]
> Ideally, follow this simple template:
>
> - What is your idea? Describe it in simple words. Provide a use case.
> - Why is it a good idea?
Expand All @@ -42,7 +43,7 @@ Feel free to bring it as a [discussion [category: idea]](https://github.com/Card

Open a [Q&A Discussion](https://github.com/CardanoSolutions/ogmios/discussions/new?category=q-a).

> **Warning**
> [!IMPORTANT]
> Make sure to mark your question as _Answered_ once resolved!
## Need Help Getting Started?
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.

ARG CARDANO_NODE_IMAGE=ghcr.io/input-output-hk/cardano-node:8.6.0-pre
ARG CARDANO_NODE_IMAGE=ghcr.io/intersectmbo/cardano-node:8.7.2

# #
# --------------------------- BUILD (ogmios) --------------------------------- #
Expand Down
16 changes: 8 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,12 @@

## Compatibility

| Ogmios | Cardano-node |
| --- | --- |
| `v5.6.0` | `1.35.4`, `1.35.7` |
| `v6.0.0-rc1` | `8.1.2`, `8.1.1`, `8.1.0` |
| `v6.0.0-rc2` | `8.1.2`, `8.1.1`, `8.1.0` |
| `v6.0.0-rc3` | `8.5.0-pre` (no Conway) |
| `v6.0.0-rc4` | `8.5.0-pre` (with Conway) |
| Ogmios | Cardano-node |
| --- | --- |
| `v5.6.0` | `1.35.4`, `1.35.7` |
| `v6.0.0` | `8.7.2` |

[SanchoNet]: https://sancho.network/

## QuickStart

Expand Down Expand Up @@ -71,7 +70,7 @@ See our [Ogmios client starter kit](https://github.com/CardanoSolutions/ogmios-t
<tr><td>Health monitoring, with runtime and application statistics</td><td><a href="https://ogmios.dev/getting-started/monitoring/" target="_blank">↗️</a></td></tr>
</table>

> **Note**
> [!TIP]
>
> Test vectors that cover every part of the protocol are [available here](https://github.com/CardanoSolutions/ogmios/tree/master/server/test/vectors). Use them without moderation for a smooth integration!
Expand All @@ -98,6 +97,7 @@ Ogmios provides a language-agnostic API which can be implemented using any WebSo
<td align="center"><img height=72 width=72 src=".github/clients/go.png" alt="Logo:Go"><br/><a href="https://github.com/savaki/ogmigo/#readme"><strong>Go</strong></a></td>
<td align="center"><img height=72 width=72 src=".github/clients/kotlin.png" alt="Logo:Kotlin"><br/><a href="https://github.com/projectNEWM/kogmios#readme"><strong>Kotlin</strong></a></td>
<td align="center"><img height=72 width=72 src=".github/clients/java.png" alt="Logo:Java"><br/><a href="https://github.com/adabox-aio/ogmios-java-client.git#readme"><strong>Java</strong></a></td>
<td align="center"><img height=72 width=72 src=".github/clients/python.png" alt="Logo:Python"><br/><a href="https://ogmios-python.readthedocs.io/en/latest/examples/index.html"><strong>Python</Strong></a></td>
</tr><thead></table>

## Sponsors
Expand Down
Loading

0 comments on commit 8530d48

Please sign in to comment.