Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
94fef7b
nix: update hackageNix pin and allow unused imports on tests
johnalotoski May 26, 2026
7c80809
upgrade dependencies to cardano-node==11.0.1
Jimbo4350 May 20, 2026
8b1606a
Add cardano-ledger-dijkstra dependency and Dijkstra-era singletons
Jimbo4350 May 20, 2026
ec4a9ba
Add Dijkstra Upgrade instances and cross-era UTxO assembly
Jimbo4350 May 20, 2026
95a97a5
Dispatch Dijkstra-era transactions across the mini-protocol clients
Jimbo4350 May 20, 2026
8f1c11d
Add Ogmios.Data.Json.Dijkstra encoders
Jimbo4350 May 20, 2026
5dda71e
Route PredicateFailure dispatchers to Dijkstra encoders
Jimbo4350 May 20, 2026
70d1b4c
Propagate MonadEvaluate constraint through mini-protocol wrappers
Jimbo4350 May 21, 2026
8498dec
Realise Mary encodeTx via the EraTx lenses
Jimbo4350 May 21, 2026
fdead97
Cover polymorphic-era Timelock pattern-completeness gap in Allegra
Jimbo4350 May 21, 2026
310b629
Realise Alonzo encoder bodies for cardano-ledger-alonzo 1.15
Jimbo4350 May 21, 2026
9ef919b
Migrate Babbage encoders to ledger 1.13 type-tightening
Jimbo4350 May 21, 2026
fe95b7b
Migrate Conway encoders to ledger 1.22 surface
Jimbo4350 May 21, 2026
cc7455e
Expose DijkstraEra from Ogmios.Prelude
Jimbo4350 May 21, 2026
e32b248
Restore readAlonzoGenesis cost-model decoder for AlonzoGenesisWrapper…
Jimbo4350 May 21, 2026
7ee2316
Add Dijkstra UTxO encoder and pin Point/Tip orphan overlap
Jimbo4350 May 21, 2026
d0cf8fe
Wire Dijkstra-era query dispatch in Ogmios.Data.Json.Query
Jimbo4350 May 21, 2026
4749d29
Adapt MultiEraPredicateFailure to upstream API renames
Jimbo4350 May 21, 2026
34f083e
Add Dijkstra to the Ogmios.Data.Health CardanoEra enum
Jimbo4350 May 21, 2026
c58b09b
Realise per-era PredicateFailure encoders against cardano-ledger 1.18+
Jimbo4350 May 22, 2026
6049df6
Rewrite rewardsProvenance / circulation against new SnapShot API
Jimbo4350 May 22, 2026
4de3043
Restore Json.Shelley encodePParamsHKD + encodeTx against new ledger s…
Jimbo4350 May 22, 2026
a0b5937
Migrate Ogmios.Data.Json to per-era ApplyTxError + Tx newtype surface
Jimbo4350 May 22, 2026
ea1454a
Wire Dijkstra-era arms into Ogmios.Data.Json
Jimbo4350 May 22, 2026
3a640a1
Implement remaining Dijkstra-era stubs and unblock unit tests
Jimbo4350 May 25, 2026
3db6b11
Misc fixes
Jimbo4350 May 26, 2026
753183f
Disambiguate QueryNetworkGenesisConfiguration golden vectors per era
Jimbo4350 May 27, 2026
b8da9c3
readAlonzoGenesis: pad to the initial 166 PlutusV1 names and document…
Jimbo4350 May 27, 2026
97534c9
Rewards: document the new SnapShot/ActiveStake shape
Jimbo4350 May 27, 2026
d616251
Strip TopTx/SubTx/DijkstraEra from decoder-error labels
Jimbo4350 May 27, 2026
8e5386b
TS client tests: track cardano-ledger 1.20 label/era changes
Jimbo4350 May 27, 2026
77bcf21
BootstrapVote.voter.verificationKey is an XPub, not Ed25519
Jimbo4350 May 27, 2026
d93c22c
Restore shelley `field fee` lowercase expectation
Jimbo4350 May 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
# 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/intersectmbo/cardano-node:10.1.4
ARG CARDANO_NODE_IMAGE=ghcr.io/intersectmbo/cardano-node:11.0.1

# #
# --------------------------- BUILD (ogmios) --------------------------------- #
# #

FROM --platform=${TARGETPLATFORM:-linux/amd64} busybox:1.35 as ogmios
FROM --platform=${TARGETPLATFORM:-linux/amd64} busybox:1.35 AS ogmios

LABEL name=ogmios
LABEL description="A JSON WebSocket bridge for cardano-node."
Expand All @@ -28,7 +28,7 @@ ENTRYPOINT ["/bin/ogmios"]
# --------------------- RUN (cardano-node & ogmios) -------------------------- #
# #

FROM ${CARDANO_NODE_IMAGE} as cardano-node-ogmios
FROM ${CARDANO_NODE_IMAGE} AS cardano-node-ogmios

ARG NETWORK=mainnet
ENV TINI_VERSION v0.19.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,9 @@ describe('TransactionSubmission', () => {
alonzo: "invalid or incomplete value of type 'Transaction': Size mismatch when decoding Object / Array. Expected 3, but found 4.",
babbage: "invalid or incomplete value of type 'Transaction': Size mismatch when decoding Object / Array. Expected 3, but found 4.",
conway: "invalid or incomplete value of type 'Transaction': Size mismatch when decoding Object / Array. Expected 3, but found 4.",
mary: "invalid or incomplete value of type 'Transaction': An error occured while decoding transaction body. field TxFee with key 2, not decoded.",
mary: "invalid or incomplete value of type 'Transaction': An error occured while decoding transaction body. field Fee with key 2, not decoded.",
allegra: "invalid or incomplete value of type 'Transaction': An error occured while decoding transaction body. " +
'field TxFee with key 2, not decoded.',
'field Fee with key 2, not decoded.',
shelley: "invalid or incomplete value of type 'Transaction': An error occured while decoding transaction body. " +
'field fee with key 2, not decoded.'
})
Expand All @@ -129,98 +129,18 @@ describe('TransactionSubmission', () => {
]

methods.forEach(evaluate => {
it('successfully evaluates execution units of well-formed tx', async () => {
let result
try {
result = await evaluate(
('84A300818258204E9A66B7E310F004893EEF615E11F8AE6C3328CF2BFDB3' +
'2F6E40063636D42D7C00018182581D70C40F9129C2684046EB02325B96CA' +
'2899A6FA6478C1DDE9B5C53206A51A00D59F800200A10581840000D8799F' +
'4D48656C6C6F2C20576F726C6421FF820000F5F6'
)
)
} catch (e) {
console.log('Ho no! Failed to evaluate a well-formed transaction:', e)
}

expect(result).toEqual([{
validator: {
purpose: 'spend',
index: 0
},
budget: {
memory: 15694,
cpu: 3776164
}
}])
})

it('fails to evaluate execution units when tx contains unknown inputs', async () => {
try {
await evaluate(
('84A30081825820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' +
'FFFFFFFFFFFFFFFF7C00018182581D70C40F9129C2684046EB02325B96CA' +
'2899A6FA6478C1DDE9B5C53206A51A00D59F800200A10581840000D8799F' +
'4D48656C6C6F2C20576F726C6421FF820000F5F6'
)
)
} catch (e) {
expect(e).toBeInstanceOf(JSONRPCError)
expect(e.code).toBe(3010)
}
})

it('successfully evaluate execution units when unknown inputs are provided as additional utxo', async () => {
const bytes = (
'84A30081825820FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' +
'FFFFFFFFFFFFFFFFFF00018182581D70C40F9129C2684046EB02325B96CA' +
'2899A6FA6478C1DDE9B5C53206A51A00D59F800200A10581840000D8799F' +
'4D48656C6C6F2C20576F726C6421FF820000F5F6'
)

const additionalUtxoSet = [{
transaction: { id: 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' },
index: 0,
address: 'addr_test1wrzqlyffcf5yq3htqge9h9k29zv6d7ny0rqam6d4c5eqdfgg0h7yw',
value: { ada: { lovelace: BigInt(14000000) } },
datum: 'd87980',
script: {
language: 'plutus:v2',
cbor: '59010601000032323232323232323232322223253330083371e6eb8cc014c01c00520004890d48656c6c6f2c20576f726c642100149858cc020c94ccc020cdc3a400000226464a66601e60220042930a99806249334c6973742f5475706c652f436f6e73747220636f6e7461696e73206d6f7265206974656d73207468616e2065787065637465640016375c601e002600e0062a660149212b436f6e73747220696e64657820646964206e6f74206d6174636820616e7920747970652076617269616e740016300a37540040046600200290001111199980319b8700100300c233330050053370000890011807000801001118031baa0015734ae6d5ce2ab9d5573caae7d5d0aba201'
}
}] as Utxo

try {
await evaluate(bytes)
} catch (e) {
expect(e).toBeInstanceOf(JSONRPCError)
expect(e.code).toBe(3010)
}

const result = await evaluate(bytes, additionalUtxoSet)
expect(result).toEqual([{
validator: {
purpose: 'spend',
index: 0
},
budget: {
memory: 15694,
cpu: 3776164
}
}])
})

it('fails to evaluate execution units when there are script failures', async () => {
it('fails to evaluate execution units of an Alonzo transaction', async () => {
try {
await evaluate(
('84A300818258204E9A66B7E310F004893EEF615E11F8AE6C3328CF2BFDB3' +
'2F6E40063636D42D7C00018182581D70C40F9129C2684046EB02325B96CA' +
'2899A6FA6478C1DDE9B5C53206A51A00D59F800200A10581840000D8799F' +
'43466F6FFF820000F5F6'
'4D48656C6C6F2C20576F726C6421FF820000F5F6'
)
)
} catch (e) {
expect(e).toBeInstanceOf(JSONRPCError)
expect(e.code).toBe(3001)
}
})

Expand Down
2 changes: 1 addition & 1 deletion clients/TypeScript/packages/schema/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1187,7 +1187,7 @@ export interface BootstrapProtocolParameters {
}
export interface BootstrapVote {
voter: {
verificationKey: VerificationKey;
verificationKey: ExtendedVerificationKey;
};
proposal: {
id: DigestBlake2B256;
Expand Down
6 changes: 3 additions & 3 deletions docs/static/cardano.json
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,7 @@
, "additionalProperties": false
, "required": [ "verificationKey" ]
, "properties":
{ "verificationKey": { "$ref": "cardano.json#/definitions/VerificationKey" }
{ "verificationKey": { "$ref": "cardano.json#/definitions/ExtendedVerificationKey" }
}
}
, "proposal":
Expand Down Expand Up @@ -1754,7 +1754,7 @@
, "Language":
{ "title": "Language"
, "type": "string"
, "enum": [ "plutus:v1", "plutus:v2", "plutus:v3" ]
, "enum": [ "plutus:v1", "plutus:v2", "plutus:v3", "plutus:v4" ]
}

, "KesVerificationKey":
Expand Down Expand Up @@ -2421,7 +2421,7 @@
, "properties":
{ "language":
{ "type": "string"
, "enum": [ "plutus:v1", "plutus:v2", "plutus:v3" ]
, "enum": [ "plutus:v1", "plutus:v2", "plutus:v3", "plutus:v4" ]
}
, "cbor":
{ "type": "string"
Expand Down
33 changes: 16 additions & 17 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
};
flake-parts.url = "github:hercules-ci/flake-parts";
hackageNix = {
url = "github:input-output-hk/hackage.nix?ref=dc7cfd9bd2e8d0fc662c4bbec02ad36455758912";
url = "github:input-output-hk/hackage.nix";
flake = false;
};
haskellNix = {
Expand Down
1 change: 1 addition & 0 deletions perSystem/project.nix
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
{
doHaddock = false;
packages.ogmios.ghcOptions = [ "-Werror" ];
packages.ogmios.components.tests.unit.ghcOptions = [ "-Wno-unused-imports" ];
packages.ogmios.components.tests.unit.preCheck = ''
cp ${self}/server/ogmios.json .
cp ${self}/server/cardano.json .
Expand Down
55 changes: 19 additions & 36 deletions server/cabal.project
Original file line number Diff line number Diff line change
Expand Up @@ -10,27 +10,31 @@ repository cardano-haskell-packages
d4a35cd3121aa00d18544bb0ac01c3e1691d618f462c46129271bccf39f7e8ee

index-state:
, hackage.haskell.org 2025-09-11T07:59:00Z
, cardano-haskell-packages 2025-09-11T08:36:14Z
, hackage.haskell.org 2026-05-08T22:40:19Z
, cardano-haskell-packages 2026-05-08T13:26:45Z

constraints:
, any.cardano-node == 10.5.1
, any.cardano-node == 11.0.1

, any.cardano-ledger-core == 1.17.0.0
, any.cardano-ledger-shelley == 1.16.0.0
, any.cardano-ledger-conway == 1.19.0.0
, any.cardano-ledger-conway >= 1.22.1.0

, any.ouroboros-consensus == 0.27.0.0
, any.ouroboros-consensus-cardano == 0.25.1.0
, any.ouroboros-network == 0.21.3.0
, any.ouroboros-consensus ^>= 3.0.1
, any.ouroboros-network ^>= 1.1

, any.io-classes == 1.5.0.0
, any.io-classes-mtl == 0.1.2.0
, any.io-classes ^>= 1.8
, any.formatting == 7.2.0
, any.validation < 1.2
, any.text source

-- ogmios doesn't exercise io_uring code paths, so build `blockio` with the
-- serial backend to drop the `liburing` system dependency.
, any.blockio +serialblockio

allow-newer:
*:formatting
, katip:Win32
, io-sim:time
, io-classes:time

packages:
./
Expand Down Expand Up @@ -87,28 +91,7 @@ package text
package formatting
flags: +no-double-conversion

-- cardano-ledger with queryDRepDelegations backported on top of conway-1.19.0.0 (instead of 1.20.0.0).
source-repository-package
type: git
location: https://github.com/CardanoSolutions/cardano-ledger.git
tag: 5cca15a1f0629c11e8d4d4daeb73428684f9c34f
subdir:
libs/cardano-ledger-core
libs/cardano-ledger-api

-- ouroboros-network patched with NodeToClientV_21 declared for GetDRepsDelegations query.
source-repository-package
type: git
location: https://github.com/CardanoSolutions/ouroboros-network.git
tag: d3477c4e6b3243f89afb974914ea423a75873fa0
subdir:
ouroboros-network-api

-- ouroboros-consensus patched with GetDRepsDelegations query & associated client versions
source-repository-package
type: git
location: https://github.com/CardanoSolutions/ouroboros-consensus.git
tag: 5bbbf9c8b4cd3dc3e3a80d13ef54b3a2ee43a585
subdir:
ouroboros-consensus
ouroboros-consensus-cardano
-- NOTE: GetDRepDelegations query and associated patches are now upstream
-- in cardano-node 11.0.1 (ouroboros-consensus 3.0.1, cardano-ledger-conway >= 1.22.1).
-- The previous source-repository-package patches for cardano-ledger,
-- ouroboros-network, and ouroboros-consensus have been removed.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading