Skip to content

Commit 4ac087c

Browse files
authored
Add NodeToClientV_18 (#4960)
* Add `NodeToClientV_18` * Adapt `cardano-ping` to the addition of `NodeToClientV_18` * Add changelog entries * Add new version number to the `.cddl` spec
1 parent fce8e60 commit 4ac087c

File tree

6 files changed

+26
-5
lines changed

6 files changed

+26
-5
lines changed

cardano-ping/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## next version
44

5+
### Breaking changes
6+
7+
* Added `NodeToClientVersionV18`
8+
59
## 0.4.0.1 -- 2024-08-27
610

711
### Breaking changes

cardano-ping/src/Cardano/Network/Ping.hs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ supportedNodeToClientVersions magic =
146146
, NodeToClientVersionV15 magic
147147
, NodeToClientVersionV16 magic
148148
, NodeToClientVersionV17 magic
149+
, NodeToClientVersionV18 magic
149150
]
150151

151152
data InitiatorOnly = InitiatorOnly | InitiatorAndResponder
@@ -180,6 +181,7 @@ data NodeVersion
180181
| NodeToClientVersionV15 Word32
181182
| NodeToClientVersionV16 Word32
182183
| NodeToClientVersionV17 Word32
184+
| NodeToClientVersionV18 Word32
183185
| NodeToNodeVersionV1 Word32
184186
| NodeToNodeVersionV2 Word32
185187
| NodeToNodeVersionV3 Word32
@@ -207,6 +209,7 @@ instance ToJSON NodeVersion where
207209
NodeToClientVersionV15 m -> go2 "NodeToClientVersionV15" m
208210
NodeToClientVersionV16 m -> go2 "NodeToClientVersionV16" m
209211
NodeToClientVersionV17 m -> go2 "NodeToClientVersionV17" m
212+
NodeToClientVersionV18 m -> go2 "NodeToClientVersionV18" m
210213
NodeToNodeVersionV1 m -> go2 "NodeToNodeVersionV1" m
211214
NodeToNodeVersionV2 m -> go2 "NodeToNodeVersionV2" m
212215
NodeToNodeVersionV3 m -> go2 "NodeToNodeVersionV3" m
@@ -342,6 +345,9 @@ handshakeReqEnc versions query =
342345
encodeVersion (NodeToClientVersionV17 magic) =
343346
CBOR.encodeWord (17 `setBit` nodeToClientVersionBit)
344347
<> nodeToClientDataWithQuery magic
348+
encodeVersion (NodeToClientVersionV18 magic) =
349+
CBOR.encodeWord (18 `setBit` nodeToClientVersionBit)
350+
<> nodeToClientDataWithQuery magic
345351

346352
-- node-to-node
347353
encodeVersion (NodeToNodeVersionV1 magic) =
@@ -486,6 +492,7 @@ handshakeDec = do
486492
(15, True) -> Right . NodeToClientVersionV15 <$> (CBOR.decodeListLen *> CBOR.decodeWord32 <* (modeFromBool <$> CBOR.decodeBool))
487493
(16, True) -> Right . NodeToClientVersionV16 <$> (CBOR.decodeListLen *> CBOR.decodeWord32 <* (modeFromBool <$> CBOR.decodeBool))
488494
(17, True) -> Right . NodeToClientVersionV17 <$> (CBOR.decodeListLen *> CBOR.decodeWord32 <* (modeFromBool <$> CBOR.decodeBool))
495+
(18, True) -> Right . NodeToClientVersionV18 <$> (CBOR.decodeListLen *> CBOR.decodeWord32 <* (modeFromBool <$> CBOR.decodeBool))
489496
_ -> return $ Left $ UnknownVersionInRsp version
490497

491498
decodeWithMode :: (Word32 -> InitiatorOnly -> NodeVersion) -> CBOR.Decoder s (Either HandshakeFailure NodeVersion)
@@ -806,6 +813,7 @@ isSameVersionAndMagic v1 v2 = extract v1 == extract v2
806813
extract (NodeToClientVersionV15 m) = (-15, m)
807814
extract (NodeToClientVersionV16 m) = (-16, m)
808815
extract (NodeToClientVersionV17 m) = (-17, m)
816+
extract (NodeToClientVersionV18 m) = (-18, m)
809817
extract (NodeToNodeVersionV1 m) = (1, m)
810818
extract (NodeToNodeVersionV2 m) = (2, m)
811819
extract (NodeToNodeVersionV3 m) = (3, m)

ouroboros-network-api/CHANGELOG.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@
77
* Renamed:
88
* `accBigPoolStake` -> `accumulateBigLedgerStake`
99
and `reRelativeStake` -> `recomputeRelativeStake`
10+
- Added `NodeToClientVersionV18`
1011

1112
### Non-breaking changes
1213

1314
* Added `ConsensusMode` which must be passed to start diffusion in the
14-
appropriate mode
15+
appropriate mode
1516
* added `compareLedgerPeerSnapshotApproximate` function which compares
1617
two snapshots for approximate equality wrt stake distribution and
17-
fully qualified domain names.
18+
fully qualified domain names.
1819
* Added `MinBigLedgerPeersForTrustedState` type of values indicating
1920
the minimum number of active big ledger peers needed to signal
2021
trusted state when finishing syncing in Genesis mode.

ouroboros-network-api/src/Ouroboros/Network/NodeToClient/Version.hs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,13 @@ data NodeToClientVersion
4040
| NodeToClientV_15
4141
-- ^ added `query` to NodeToClientVersionData
4242
| NodeToClientV_16
43-
-- ^ add @ImmutableTip@ to @LocalStateQuery@, enabled
43+
-- ^ added @ImmutableTip@ to @LocalStateQuery@, enabled
4444
-- @CardanoNodeToClientVersion11@, i.e., Conway and
4545
-- @GetStakeDelegDeposits@.
4646
| NodeToClientV_17
47-
-- ^ add @GetProposals@ and @GetRatifyState@ queries
47+
-- ^ added @GetProposals@ and @GetRatifyState@ queries
48+
| NodeToClientV_18
49+
-- ^ added @GetFuturePParams@ query
4850
deriving (Eq, Ord, Enum, Bounded, Show, Typeable, Generic, NFData)
4951

5052
-- | We set 16ths bit to distinguish `NodeToNodeVersion` and
@@ -66,6 +68,7 @@ nodeToClientVersionCodec = CodecCBORTerm { encodeTerm, decodeTerm }
6668
encodeTerm NodeToClientV_15 = CBOR.TInt (15 `setBit` nodeToClientVersionBit)
6769
encodeTerm NodeToClientV_16 = CBOR.TInt (16 `setBit` nodeToClientVersionBit)
6870
encodeTerm NodeToClientV_17 = CBOR.TInt (17 `setBit` nodeToClientVersionBit)
71+
encodeTerm NodeToClientV_18 = CBOR.TInt (18 `setBit` nodeToClientVersionBit)
6972

7073
decodeTerm (CBOR.TInt tag) =
7174
case ( tag `clearBit` nodeToClientVersionBit
@@ -80,6 +83,7 @@ nodeToClientVersionCodec = CodecCBORTerm { encodeTerm, decodeTerm }
8083
(15, True) -> Right NodeToClientV_15
8184
(16, True) -> Right NodeToClientV_16
8285
(17, True) -> Right NodeToClientV_17
86+
(18, True) -> Right NodeToClientV_18
8387
(n, _) -> Left ( T.pack "decode NodeToClientVersion: unknown tag: " <> T.pack (show tag)
8488
, Just n)
8589
decodeTerm _ = Left ( T.pack "decode NodeToClientVersion: unexpected term"

ouroboros-network-protocols/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## next release
44

5+
### Breaking changes
6+
7+
* Adapt the `versionNumber` cddl definition to account for `NodeToClientVersionV18`.
8+
59
## 0.10.0.2 -- 2024-08-27
610

711
### Breaking changes

ouroboros-network-protocols/test-cddl/specs/handshake-node-to-client.cddl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ versionTable = { * oldVersionNumber => oldNodeToClientVersionData
2323
; Version 15 introduces the version query flag
2424
; as of version 2 (which is no longer supported) we set 15th bit to 1
2525
; 15 / 16 / 17
26-
versionNumber = 32783 / 32784 / 32785
26+
versionNumber = 32783 / 32784 / 32785 / 32786
2727

2828
; as of version 2 (which is no longer supported) we set 15th bit to 1
2929
; 9 / 10 / 11 / 12 / 13 / 14

0 commit comments

Comments
 (0)