From d2f66b3fa4238f65575a9c89f5946e5744a0e660 Mon Sep 17 00:00:00 2001 From: John Ky Date: Sun, 12 Sep 2021 00:35:15 +1000 Subject: [PATCH] Add new GetChainBlockNo and GetChainPoint queries This patch adds a supported node to client version `NodeToClientV_10` with new queries: - `GetChainBlockNo`: Get the chain block number - `GetChainPoint`: Get the chain point, which includes the slot number and --- .../ApplyTxErr_Allegra | Bin 0 -> 39 bytes .../ApplyTxErr_Alonzo | Bin 0 -> 39 bytes .../ApplyTxErr_Byron | Bin 0 -> 14 bytes .../ApplyTxErr_Mary | Bin 0 -> 39 bytes .../ApplyTxErr_Shelley | Bin 0 -> 39 bytes .../ApplyTxErr_WrongEraByron | Bin 0 -> 19 bytes .../ApplyTxErr_WrongEraShelley | Bin 0 -> 19 bytes .../CardanoNodeToClientVersion7/Block_Allegra | Bin 0 -> 1801 bytes .../CardanoNodeToClientVersion7/Block_Alonzo | Bin 0 -> 1872 bytes .../Block_Byron_EBB | Bin 0 -> 91 bytes .../Block_Byron_regular | Bin 0 -> 867 bytes .../CardanoNodeToClientVersion7/Block_Mary | Bin 0 -> 1894 bytes .../CardanoNodeToClientVersion7/Block_Shelley | Bin 0 -> 1687 bytes .../CardanoNodeToClientVersion7/GenTx_Allegra | Bin 0 -> 801 bytes .../CardanoNodeToClientVersion7/GenTx_Alonzo | Bin 0 -> 872 bytes .../CardanoNodeToClientVersion7/GenTx_Byron | Bin 0 -> 240 bytes .../CardanoNodeToClientVersion7/GenTx_Mary | Bin 0 -> 894 bytes .../CardanoNodeToClientVersion7/GenTx_Shelley | Bin 0 -> 687 bytes .../Query_Allegra_GetCurrentPParams | Bin 0 -> 6 bytes .../Query_Allegra_GetEpochNo | Bin 0 -> 6 bytes .../Query_Allegra_GetGenesisConfig | Bin 0 -> 6 bytes .../Query_Allegra_GetLedgerTip | Bin 0 -> 6 bytes .../Query_Allegra_GetNonMyopicMemberRewards | Bin 0 -> 82 bytes .../Query_Allegra_GetProposedPParamsUpdates | Bin 0 -> 6 bytes .../Query_Allegra_GetStakeDistribution | Bin 0 -> 6 bytes .../Query_Alonzo_GetCurrentPParams | Bin 0 -> 6 bytes .../Query_Alonzo_GetEpochNo | Bin 0 -> 6 bytes .../Query_Alonzo_GetGenesisConfig | Bin 0 -> 6 bytes .../Query_Alonzo_GetLedgerTip | Bin 0 -> 6 bytes .../Query_Alonzo_GetNonMyopicMemberRewards | Bin 0 -> 82 bytes .../Query_Alonzo_GetProposedPParamsUpdates | Bin 0 -> 6 bytes .../Query_Alonzo_GetStakeDistribution | Bin 0 -> 6 bytes .../Query_AnytimeByron | Bin 0 -> 5 bytes .../Query_AnytimeShelley | Bin 0 -> 5 bytes .../CardanoNodeToClientVersion7/Query_Byron | Bin 0 -> 5 bytes .../Query_HardFork | Bin 0 -> 4 bytes .../Query_Mary_GetCurrentPParams | Bin 0 -> 6 bytes .../Query_Mary_GetEpochNo | Bin 0 -> 6 bytes .../Query_Mary_GetGenesisConfig | Bin 0 -> 6 bytes .../Query_Mary_GetLedgerTip | Bin 0 -> 6 bytes .../Query_Mary_GetNonMyopicMemberRewards | Bin 0 -> 82 bytes .../Query_Mary_GetProposedPParamsUpdates | Bin 0 -> 6 bytes .../Query_Mary_GetStakeDistribution | Bin 0 -> 6 bytes .../Query_Shelley_GetCurrentPParams | Bin 0 -> 6 bytes .../Query_Shelley_GetEpochNo | Bin 0 -> 6 bytes .../Query_Shelley_GetGenesisConfig | Bin 0 -> 6 bytes .../Query_Shelley_GetLedgerTip | Bin 0 -> 6 bytes .../Query_Shelley_GetNonMyopicMemberRewards | Bin 0 -> 82 bytes .../Query_Shelley_GetProposedPParamsUpdates | Bin 0 -> 6 bytes .../Query_Shelley_GetStakeDistribution | Bin 0 -> 6 bytes .../Result_Allegra_EmptyPParams | Bin 0 -> 40 bytes .../Result_Allegra_EpochNo | 1 + .../Result_Allegra_GenesisConfig | Bin 0 -> 78 bytes .../Result_Allegra_LedgerTip | 1 + .../Result_Allegra_NonMyopicMemberRewards | Bin 0 -> 139 bytes .../Result_Allegra_ProposedPParamsUpdates | 1 + .../Result_Allegra_StakeDistribution | 1 + .../Result_Alonzo_EmptyPParams | Bin 0 -> 63 bytes .../Result_Alonzo_EpochNo | 1 + .../Result_Alonzo_GenesisConfig | Bin 0 -> 78 bytes .../Result_Alonzo_LedgerTip | 1 + .../Result_Alonzo_NonMyopicMemberRewards | Bin 0 -> 139 bytes .../Result_Alonzo_ProposedPParamsUpdates | 1 + .../Result_Alonzo_StakeDistribution | 1 + .../Result_AnytimeByron | Bin 0 -> 5 bytes .../Result_AnytimeShelley | Bin 0 -> 15 bytes .../CardanoNodeToClientVersion7/Result_Byron | Bin 0 -> 138 bytes .../Result_EraMismatchByron | Bin 0 -> 19 bytes .../Result_EraMismatchShelley | Bin 0 -> 19 bytes .../Result_HardFork | Bin 0 -> 73 bytes .../Result_Mary_EmptyPParams | Bin 0 -> 40 bytes .../Result_Mary_EpochNo | 1 + .../Result_Mary_GenesisConfig | Bin 0 -> 78 bytes .../Result_Mary_LedgerTip | 1 + .../Result_Mary_NonMyopicMemberRewards | Bin 0 -> 139 bytes .../Result_Mary_ProposedPParamsUpdates | 1 + .../Result_Mary_StakeDistribution | 1 + .../Result_Shelley_EmptyPParams | Bin 0 -> 40 bytes .../Result_Shelley_EpochNo | 1 + .../Result_Shelley_GenesisConfig | Bin 0 -> 78 bytes .../Result_Shelley_LedgerTip | 1 + .../Result_Shelley_NonMyopicMemberRewards | Bin 0 -> 139 bytes .../Result_Shelley_ProposedPParamsUpdates | 1 + .../Result_Shelley_StakeDistribution | 1 + .../SerialisedBlock_Allegra | 1 + .../SerialisedBlock_Alonzo | 1 + .../SerialisedBlock_Byron_EBB | 1 + .../SerialisedBlock_Byron_regular | 1 + .../SerialisedBlock_Mary | 1 + .../SerialisedBlock_Shelley | 1 + .../src/Ouroboros/Consensus/Cardano/Node.hs | 21 +-- .../src/Test/Util/Serialisation/Roundtrip.hs | 37 ++++-- .../docs/interface-CHANGELOG.md | 9 ++ .../Ouroboros/Consensus/HeaderValidation.hs | 4 + .../src/Ouroboros/Consensus/Ledger/Query.hs | 124 +++++++++++++++--- .../Consensus/Ledger/Query/Version.hs | 29 ++-- .../MiniProtocol/LocalStateQuery/Server.hs | 3 +- .../Consensus/Network/NodeToClient.hs | 6 + .../src/Ouroboros/Network/Block.hs | 1 - .../Ouroboros/Network/NodeToClient/Version.hs | 22 ++-- .../specs/handshake-node-to-client.cddl | 2 +- 101 files changed, 221 insertions(+), 59 deletions(-) create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Allegra create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Alonzo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Byron create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Mary create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Shelley create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_WrongEraByron create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_WrongEraShelley create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Allegra create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Alonzo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Byron_EBB create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Byron_regular create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Mary create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Shelley create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/GenTx_Allegra create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/GenTx_Alonzo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/GenTx_Byron create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/GenTx_Mary create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/GenTx_Shelley create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Allegra_GetCurrentPParams create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Allegra_GetEpochNo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Allegra_GetGenesisConfig create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Allegra_GetLedgerTip create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Allegra_GetNonMyopicMemberRewards create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Allegra_GetProposedPParamsUpdates create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Allegra_GetStakeDistribution create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Alonzo_GetCurrentPParams create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Alonzo_GetEpochNo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Alonzo_GetGenesisConfig create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Alonzo_GetLedgerTip create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Alonzo_GetNonMyopicMemberRewards create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Alonzo_GetProposedPParamsUpdates create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Alonzo_GetStakeDistribution create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_AnytimeByron create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_AnytimeShelley create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Byron create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_HardFork create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetCurrentPParams create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetEpochNo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetGenesisConfig create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetLedgerTip create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetNonMyopicMemberRewards create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetProposedPParamsUpdates create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetStakeDistribution create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Shelley_GetCurrentPParams create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Shelley_GetEpochNo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Shelley_GetGenesisConfig create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Shelley_GetLedgerTip create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Shelley_GetNonMyopicMemberRewards create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Shelley_GetProposedPParamsUpdates create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Shelley_GetStakeDistribution create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_EmptyPParams create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_EpochNo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_GenesisConfig create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_LedgerTip create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_NonMyopicMemberRewards create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_ProposedPParamsUpdates create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_StakeDistribution create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_EmptyPParams create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_EpochNo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_GenesisConfig create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_LedgerTip create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_NonMyopicMemberRewards create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_ProposedPParamsUpdates create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_StakeDistribution create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_AnytimeByron create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_AnytimeShelley create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Byron create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_EraMismatchByron create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_EraMismatchShelley create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_HardFork create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_EmptyPParams create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_EpochNo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_GenesisConfig create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_LedgerTip create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_NonMyopicMemberRewards create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_ProposedPParamsUpdates create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_StakeDistribution create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_EmptyPParams create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_EpochNo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_GenesisConfig create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_LedgerTip create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_NonMyopicMemberRewards create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_ProposedPParamsUpdates create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_StakeDistribution create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Allegra create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Alonzo create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Byron_EBB create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Byron_regular create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Mary create mode 100644 ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Shelley diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Allegra b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Allegra new file mode 100644 index 0000000000000000000000000000000000000000..018b7bc479fdc07b689fdf01efb60f256b9bd9a6 GIT binary patch literal 39 vcmZo{Vw&H?*u)Sa^I*A%;S8a}--~y#yot@W|8sTKjR3ZWXqIXYRmcATN)8a> literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Alonzo b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Alonzo new file mode 100644 index 0000000000000000000000000000000000000000..d9c76ed7084ce14b9e08833533dac4c38fc81797 GIT binary patch literal 39 vcmZo{VwvB>*u)Sa^I*A%;S8a}--~y#yot@W|8sTKjR3ZWXqIXYRmcATN>~u& literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Byron b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Byron new file mode 100644 index 0000000000000000000000000000000000000000..1728309622124f9d85cb596a6163f5c1c4b8d8f5 GIT binary patch literal 14 ScmZo{VgSKrhQ!1s1_l5iVgt_r literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Mary b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Mary new file mode 100644 index 0000000000000000000000000000000000000000..f0ab5dd88118933571c1f90bf476eaa89bb3b758 GIT binary patch literal 39 vcmZo{VxHf`*u)Sa^I*A%;S8a}--~y#yot@W|8sTKjR3ZWXqIXYRmcATN;44S literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Shelley b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_Shelley new file mode 100644 index 0000000000000000000000000000000000000000..15bf711ff08d74707ca7c28f45f016abdb7d251f GIT binary patch literal 39 vcmZo{Vw~T^*u)Sa^I*A%;S8a}--~y#yot@W|8sTKjR3ZWXqIXYRmcATN$C*b literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_WrongEraByron b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_WrongEraByron new file mode 100644 index 0000000000000000000000000000000000000000..9735c28d23436ca90c123fd781e030a3bf8c2969 GIT binary patch literal 19 acmZo_VoVRtNX^Mft!!dQb*e1N&jSEQF$XjN literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_WrongEraShelley b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/ApplyTxErr_WrongEraShelley new file mode 100644 index 0000000000000000000000000000000000000000..43f2fa8267f5b22ef6dd14c7a562e2fd1bab5ca0 GIT binary patch literal 19 acmZo_Vn}tWEXvPoVoVRtNX^Mftpor@n+G%i literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Allegra b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Allegra new file mode 100644 index 0000000000000000000000000000000000000000..62f50c036cec58b96676f10fa930f7ddd6bd4535 GIT binary patch literal 1801 zcmai!`8(7J9LK+N7&EhsTsk3&$AuD4=rqHA!*UFunjkVf8KtI3V&+~eJKA-pV5z4uVA|XT~l!?HAM4l%1xT4RO z%E1fRpHf{kVx;dnOat?b+p$T16vs=;l!3(5l(CNym__Ec)B6*~jh?i>{4vdh94Yzb zh!j|@M5xF29S}%9v(V8Y7ii?l4-e~UJcxiQp9<_+N{#G+!h42-MVOtTcNpI=YRN=T zE#N~PJpRP`W+r$2ei|8iEcr7|N>>x4tcR^d=1(OPEE>YLe4KgN*OeJND`4J|`BU0K zLed-Kj5PszC2U)5BZmd{TEh7HEWzzRS65WmlGv_ z618+KLX@;1-~f3C(RD;TiWE2y4q}< zg5@KlNb(=!>Hq*F=SZaL86ZFDzsU3lg$z7^1&H_OY@5}!yVe*j%srPELd{t zPJLB6q_$kS#IpdE1)Dq?RPB({$psP0^YpJ22-_R`hsx=C2Snd?+xD!uRdEgym~ z)&V9WRD@tyknm|Q4r6ajJVf;krPBSV^s97ISZHX7MQj{|f&k99{6Ly*qGL8gqfJ~1 z+xg_{a&q*`#-cy8)ZU3^U6Z4VaK3|}742K|ZB~|Q|T>ge|d16S~77fQ>85{uG zz2JABFc~&O(Z`I}%wDq2eNmn}W@D?$fJt8rwoFgV*?JR1Cn{9TjEx&!k;fH_o1nMx z#vxKwQ`?V+i{iW#dxt#QF}o0>pkqxvPq-(1N*?s8g^JVtv}L0Rqn7s!TkJS#ZiA{I zdF-^08eY4UxFaOlyde`{?8$;v$K*_h`k$jqNzN}6FGi;b4}w|o4eo~}F*f18lc2P| zZ)Ey#L(1G+#SUv=cNi}0GChJ8NcD$X`&^6gqaz>~9LYhL`!Es^@B|13K}Y}+!9Z~6 z|2E}}M9@i_Ws_zG=WDG+n;#|&P!6>oU@D1ekAKtm+VeNPqvilg<=o1TY>!IHMUceB QCE}i)wp7~Qu#JEJA9Qy+i~s-t literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Alonzo b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Alonzo new file mode 100644 index 0000000000000000000000000000000000000000..dc3903d3a62a08c9bdacf27ca74ce62e6b71ee66 GIT binary patch literal 1872 zcmai!c{tPw7{`CV8FLnLwKK~wX**^Vw~vfeY*)Fl*1v{SDA*~IFq(PFYDx8QHIQ7>xD|mEivY) z&}wZpUVa(spWsbVAOBvjn{{!psCAt}nQ$^dwJRO3MkeCtyJz#={MB^Vyecp1Yq@Yl zJ)HE*&eH;zbxip+Be&GNkLqsc54jNbPFT)hy=`)z;A@HgVoRODf+Mejrsjqjx7=tn z%9LYZlG1LRt;gkdqvqJL$B-H4!=hAr;#YDpX$V$ zU&OkSRtMKG^=N^v`iq2G0D!Es71NA!la902r(o{%#2L9HZ>9z{G##q1%XfT~;*N*x zdZRxTRJq>^xh!X}`rcU0J*{3EQ^(vx#<_ab&i^1D1$crj_Ey7Mstj(xbnIPOq2*9( zm1%N9T&^{}pmKU_fu0dI*rk~Pf3u==E80)m(S8e@A(c=0^eF6kQOBn<7&`;G!)^ixreV9x#4jeaP?x|6GPn_w=A8SGOusuj_X)_8B!^i{Uvp8{$tOpHUr;X z^a&{uD&BdnzA6Ku&tCIA7$&~3F}?%!b{gkRW=-IoMQ75xhDxilo2^`PgiqaCgeNBs z^5+S9EoDaG=)3~P4jB@L9!L{)2PnZR=oHXS2ea!OtF4W9Er zg6?$mZE2`a&s1jq=V`>qx7PCv)J3Q4v}?P&%M)Bi z1t&2IW5ZoJISpOE2WxOgdd=#kdYfN%+)O$?O0*EbUzH3iimO9D883O-j}xPF6!zYI z`NS{29;W)n>EU;bD44<(0E|G?Nwovrh1N7GUlO{MQP|bPYhTM;QrbCX+%(1(r&(?Q zS$vMdN;vBcoz~Pe6P?Epydb9NC+tfr%7OTldKGfrQwoUozfk0FJ zEcPzj@%IZ`B6TRJZIxfK2+71V-gXzKZnf=VDqAQx)B^s_>TAl1d9No z@BBczW74j(uwJXY7O|u5>ugF)XXC}&`t$)@RxF8)5v>qSI)X)(2mHEBRX<<3b)MHK zH|`Z?wb*;D-vyg^P%a+7!A2xURulqwl)^IRg2p?xqO0ss34G3k9i{Ybq>53Dt7#4X z$@q_tgk_)VF!xX6Sf_V4%&+@wo2p2@71(LGuc+Fi;av zhHXo?w=hNNo-!I_4ZBCy!ZlTN#+tO)f>UiXBg_+ZL8Hv~-$sfYLK{-LRV*cfCE?({ zhl#s`u)|^5Low*}UYB6yCVs-(49PPB8fH3z0HCc6D9OR3W(=GJ0AzF?LRLv#E)g&Q qqKknNFp$URhOmQB_I|Pa03I3vQF0=*jUNajU?K{3u>Wr1oA@tqHCSu_ literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Byron_EBB b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Byron_EBB new file mode 100644 index 0000000000000000000000000000000000000000..d2bc47fdf75c110cca6e88250c73f347b5b70f45 GIT binary patch literal 91 zcmV-h0Hpue7+6<=0E2}Z15cnaSRi>HLRR5SXSoAhJAj~qYTt34Ha5YI?-t36gt#+u xJyBR7ufW=57(4Q2Pd!fTayZo_x?q2<>atJ40PBVwx@ngif&hU4fuNuNfuQ4nDC7VD literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Byron_regular b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Byron_regular new file mode 100644 index 0000000000000000000000000000000000000000..ce89fa545b376130983575f559f429ad109bc7c8 GIT binary patch literal 867 zcmca15y>3a#Ms;_#q7VpFhZeY0{ZzM@#c@%10ROM;5ekoWrh4wNI{n~< z$ENFR)r_TUTc$@ar<~S4c4F_!Rh*?enwTRLE@!DpE-UhMV|ggO#r^d8Aj6lRcBvi` zn^^w#q~qRzwK)+A>kr&Yk+A-h=5OowrpV%|%C3a^b+0!0A7pslCc7(hx^#qsUz!Hb zP2Wg?B9qx~xC|yNwOZ*KruRFS<7!@TsyCm*jFu(_#t4VS-nXrHH=H&1-SYDEiVf_) zCU~CsV7=eLu_k%?+Y?VZUL_@b;CyO+a%QJo*ZjNBKRsTygRklG_WK*O#Pbf!TE?B) z$k@cx)WSfyK@kqG=X1U?T+H9dAaZlonkRwTCTedgY+pW%I zm)>9&XlTWh_(AL2TKyv&7v^_<=QBu;mIr!9XG3z=q|ixnA}$RklO2sFzkZ|WD7NO{ z97Ps6GxwF^7H=E5&A->yad^AcugCcaM{WqQxEb6!uGhzz z^zYpn3H|@`o0@=%6`LbuRs|PvMy<-=mArDwGqZW2Yr!1rhuyqB&8MsH#4TWuGP*OP z52$`YBiQuTrU(b`+{$v39G75M(_oXdU=Op@62JV?%!t$~=StTs?_}c=cay9{gKW1f ze~ZGZ#7rZzDBplkSFbeJN<-893e)Tehm5YZt<}f>8~n*gx+VRn@r%N-pu+808>ct@ zcX%{4>PLs<;l7wk;eHKvt6dL+PBf`@yC^I;c=GS1oEeR3)Bo5p{BL5u$;i|&|9=w@ HH!c7G_QsqY literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Mary b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Mary new file mode 100644 index 0000000000000000000000000000000000000000..14d8281f93368d898501f14636df833891cdfe4a GIT binary patch literal 1894 zcmah}dpy$%AKu-zGUd|8VzW}mt>${1Tw-z?QS!R{6v`x*w9Ph`T*`jDIF{nP`V_5Sz%!{5*Id7kI{{XU^vdG<+k!UDAhKM z*>0OSf7seMYDf%AKd4;2R;sMvQNYJL|AteyG6Q^+%;kiliEP4=2Id;gPnw^)hr7NA z6wW(6W$h(o{brxH?1iWX1RSoDZnKh@WGszc9=(nI^FC=i?QKS2a}env)w zS@(09JCCV22bQ&4HD8>31=ukr*5vZbKjBLV6Un6mp>Af6{Pz5KXB*w~)_-Ep=WoMf zi~y1>LSRR+Q71M9rV`_fR}TLSCvD3p9(U^h8rZZXKF$Y7uLT2#;D7uB_@WCNcigvQ zepO2DY<2TJual5S*7-e641oZY0<~Q0o0*q9^|O&rUng7nWEqko8=8V8^#b>o*#T(4 zr7vNr=uyD)=rV-G_UDsz&-MC@s3!J-1C09@T*6PGVUQqb%jF@AtFr&yU@h&&eI_+H z73SFif3}SmTQT8ZZk^^0U)v?pWOe(WPMUpT&~~G;sm^dr!G7Ppe+)gNjAGJoT`?!c z9d&Bl)VPo(pgK*ZUYoJ~m3ds~i*FEtirKHbVwMBPB2nn-k>&`32OU}?TPN1JX)0dH zB_B)<7};3mTX$gxG(+<8lHcNIiD%lSRpx`!s|)o${`c`=nMIhl z@w6NZlz7~bJh}oJFI0w|IxoHTLrMqik-tYQndyF$xO!JY@r@(Ukx(vjCao19c*0xuOfRb731&c^&Y-P?KU z^U8rZ69VkV>Tf7e`>Y7ieP5wzE>Le(vKtXoA?F>}`YIJZsPt2a6!d;4k!Ls~p2J}~ zGotBu_-7a#jzDC95D)_BZYG=y-y8=>ZKJzuI+kGvxvh^wt*kpQ6O@;4`aX2f*zw{j zji5;Jf+7_}5Q+r|?>F<|Zf=tf(!&{ab_AUr&n7b&jMyV7X&?%Oh`#5C@Z2-K^SP$2 zs(RRt`fm%_NnMS%pO_oJRk?mqn~oH1VXb`@1#Y!G1YS)DQ2|I66Lt^V)@E8=oUi3V zNBKUs4yfp!zg(t^Rul`L-f6g_VVJF?{{IeK5d_?*$Ce+SqWc@(GH>jzcTNMT?Lk9! z2(td7-@TfVTLP0K&b|7F8eJ&58fBHv;1Xno<8_r2ef43 literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Shelley b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Block_Shelley new file mode 100644 index 0000000000000000000000000000000000000000..7d900c96a82bca1ac8cb49d56f3dab29752dc091 GIT binary patch literal 1687 zcmai!`9ISQ0LQ=Em|3ovBF5-)nu{8m%yL9Zc|89>{rq{qUhmKA^?AKMBP#yLTnNsBvJuiCj)$)>&S zpAoxbKY!b9lvDcZDqlCYCIS%PuoTA z`m6x%{+)707N*u1ZWLHC8|3D+93-ro_`5YECenl;-kOK}AyW$UL>;Z~s*`6jVgkN^ z+_O>*DrA{{lbFEv??90hzG_R6!HR@b2BmIKLxB3RUR_3`D zJ!l~&fXz-ERTXRe*~zOmc_~_5%x4u!mdRjl#vel7eye%p&Xd{&RLP_HGkLIiFxo@o zAWc4IXMYE9tF&;y%&6+V{r(pA9UaQ7zTN7CQnm1tz_<13!Lbh0AWuD!01cMAU243W z3F$4~4mx&UK{zvV%>k=EIKYxU_u~nPWfnG2|*V}>yBE_Ea@Gjc5WfAZ*~(~w9Jrr>GnGT*al?VB7cS2EHN8!YVX?6?GZ0z z@-c}d)J_MEgsOZQAO+$~KibqhS)1cKJ7uTCCiA_l?U9jvKb=LzUq=?F-YB^;IRLb= z;BQZuK#2{nv@7Kb?Ht|ss*>=AK(m#1!-Ec==+BI`m8~#aWOOqKd>EM(rYN3TWUSdF zy#JyzGjO=Q{~TInYuZ>bN^Nv6Qe+6jMv5^FCKubEkpe=d2FVVX=~!vDz<2( nilvP&)}iZp%5s1T*hwml5=jb&?+Z?#g;5a@3@*VzI0XL(ewqfX literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/GenTx_Allegra b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/GenTx_Allegra new file mode 100644 index 0000000000000000000000000000000000000000..9470c745cbf1e79b409608e5d062b62231cab6cc GIT binary patch literal 801 zcmZo-x*-wCEY-Y~biM5N z`e{My?1Tjl^(D#PsP1c$Q2>`0G~aL_^oMZ%1h4AD^ATTE-lt8$j{Gls;+Hf zYhqXkaz8`2dyDU+M*YLQ@?0mk{r=ouac0-t9fn#r*(X#=p>%z#gGs^wN6W(Le7FyEylEF+Q3a zU}eXadG4Rf+gU$ue13XQ*qwuklWQSE6EFh1Iv(FG;ruxDZ_sUBn_aO*r_wq1%T5uJ z{#??*xP?DICc=U7b$|uulg)2ZT&EpdJMFQXyJjP!a6-0oPs@})m$Ql$WY)cY{KP6( znr|MjEyrI;n;fAHFaK`3Keskc?!vv8qntoXth3bjoZGfUH)-*T3tIWS#i>T3<+6{Q zmsuU~SlAtTOEbdZv3HV|q|s7^|2Op9E<4CFE_gost8aV1&-UPorFtR9C=l;%)x7X#4yD~H_VN5G7Day=CXL3!dEJ-b9ZenC&S;*{| z)Y#0-)ZE0_)WpKj#LC&k)C5jSQy!KS>-}8y+}<*3i!1y7mCe@zln+WxmFF>f0+PoU k$RPRSo2A$^Lcf?Vh*=+y5TUn(uZ3@)x3m1;AMOpe0gt<8 literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/GenTx_Alonzo b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/GenTx_Alonzo new file mode 100644 index 0000000000000000000000000000000000000000..558dfbcca80c1286824fab921cb0c4d4c6196851 GIT binary patch literal 872 zcmZo-xginBoY=CCp|L4K;hkvIxj7D+3MHqr{`br|d#U(@n8$xX&-Z3~UghoXvQuT? z1*zI?utY~L>BIV4@mzjgVft0Vi+o-&ylb3T-L_+1gRsadM#jeG2up_3lOuxWekqz` zBp?BX3rC-4w^QeK*rA4JYLJI=^}GL#I$%mdSMeZ?-0h zl!Xy8%iP?(`$G)XMA^0-D!$BqJZzTVwv*XTcfB-&xE6XP=a-h06g%f<=1DTYAna}? zN#^IwEG*4U3{4CXGWaa-V#Y5Yp>Xt()W(zFm~!OYS#QWSF>*!7KEP*BBYtZdn(~tK^NLgRic5?23i9)FoT_V^*qRs?g51y0?cU-$ zsZswhuRPbuZNERaSDe{3cZZ?YP4)?u5_zl(30N(W!qx-~;0Mb^3}*-({$9L`p>%z`?`^bmkA4XLV<^iEh&36&JMfd5cqx zM9XC#IWMz1;IXhf@|I?VLt|Ls*2XOxvPs#9_aTB>Lb8Pv*2X@j9faGX2giw#VJ%X{2jpa2>&+?b9S zFaMx{f&kbUScQUEKuc|TcQkB7Q$;mXG-gvsHf3~9Z*^%{WqLz-MQTf9GjvBZYGE*I zMruzuae85CGB#RGP*p`rW<_~1HE(z|Ygj;Nimiov$Nw<=XkywM;(_!a#!_*&YO$As q|3KoETKI?=!;V~e6OSkdI=bOf$buz{L?EES$^Fu7n1Lpj{5}9%*=jNX literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/GenTx_Mary b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/GenTx_Mary new file mode 100644 index 0000000000000000000000000000000000000000..1d7d61fa77a609df5f60bcab1ae139b076910517 GIT binary patch literal 894 zcmZo-z9A9GT;9Bjp|L4K;hkvIxj7D+3MHqr{`br|d#U(@n8$xX&-Z3~UghoXvQuSX z1gf%RI6XNcXzrJyIYw@a78swNp}2bg#oQ+y4XhKq_Birph1X4ST-$du&C+l}p0D$p z7e90gwPl%1*Z*c~l1Nz?A@g9lh~W&O!{3W{vAl`Rw*PZ=)r|nQhG>>*4pqm6Udj2T zB_+kq`I&i=%rBUjnORtxn;4oHB4qFx+{KJvK0@K>BdLuizcJ}H9^MpZVs^S-_Iv%b zpmlb_0*CsNWN%daFtXl|YhvVzkbQv9o<{uEG&JQU=jRot<`tI~>lNhZ=Qvf@HnBA^ zECjiqq1(O1cT%JNVP1KzliPlOZm&4AYwiw1t()uOdVYv zkMEXnew_L@=(euSuGpee>74szrwB=ZF6m(0!k-@#;UIHa(zy58BHxak3P)G(Y>#E# zRvEHl zaD3TT^=`j!MRR_1owVP~x=?x7t*rkAhiab5edK%ob%)UQqbGh9Ejao}Z~N_M`JY*u zmN2FjmlS2@r8BuERhFa{GdD3Zu`FbEOloXqW@>I?Y-(a*Xkz7TVrl}XyD1M#iuHc3 zdTwtSwZ)Zv|H|fT0m=uZrpogeJpsw%OU@wq;EigVkLvi)~i@8ra8dxWI?Q!JI3a^{uxVG0}Vp@|_v2A|?CX8iII3P&GFZ9MsnNw@LvrZ^L` z)Ah37>!$^+vlA9L)R!cCquPg&^@dy%BUgm%1AO*0;wek;l4_fYlNyY)uOz zWF9ORF`OZE_Uey&g!ALnzd^TkZFa>Lol582FFQp@ z`g2JK;}-t>mF1h1)|Jn`YP`A-eCT`~m&ASLLkvJmth3bjoZGfUH)-*T3tIWS#i>T3<+6{Q zmsuU~SlAtTOEbdZdV|Z|EpNB`n(Yua{QQ@xY-C^n00bKW1^@s6 literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_AnytimeShelley b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_AnytimeShelley new file mode 100644 index 0000000000000000000000000000000000000000..d82b9fc7f4db2360746cc261fca05ba77e024882 GIT binary patch literal 5 McmZo>Y-C^r00bNX2LJ#7 literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Byron b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Byron new file mode 100644 index 0000000000000000000000000000000000000000..cfa4236d512052278add088e0bdc0291b8cb4f59 GIT binary patch literal 5 McmZo-XkuUh00b2Q1poj5 literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_HardFork b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_HardFork new file mode 100644 index 0000000000000000000000000000000000000000..64c266fdc583e5b469bd7bd1b6d6747616aa38f0 GIT binary patch literal 4 LcmZo-YGeQa0~7%U literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetCurrentPParams b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetCurrentPParams new file mode 100644 index 0000000000000000000000000000000000000000..7338cd74165e275f099d161987a36d85731ed114 GIT binary patch literal 6 NcmZo-Xku<;1^@;q0gM0u literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetEpochNo b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetEpochNo new file mode 100644 index 0000000000000000000000000000000000000000..58e4767132c03722d57319642bb2b358b258da16 GIT binary patch literal 6 NcmZo-Xku<;1ONsm0g3U1^@;y0h9m$ literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetLedgerTip b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetLedgerTip new file mode 100644 index 0000000000000000000000000000000000000000..c5b7ef04972567e830b9ffdb2b1f869d0391313f GIT binary patch literal 6 NcmZo-Xku<;000Ih0f_(r literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetNonMyopicMemberRewards b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetNonMyopicMemberRewards new file mode 100644 index 0000000000000000000000000000000000000000..72f3ff8f93a4c299c41025f94732a75d7aefac64 GIT binary patch literal 82 zcmZo-Xku<+y2;4Y+{7S}(!|)r7$NguxrpHmp~K&ccd@*Q&9?t@b=8dkwuWeyY7SLL mpbCZvnPqP7-u)qlYNBl04i#T!KOQ#AZ`;Xir@LO7L0kab^B)!f literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetProposedPParamsUpdates b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetProposedPParamsUpdates new file mode 100644 index 0000000000000000000000000000000000000000..b833d91e655614957dcc842965d20ade9d740a7d GIT binary patch literal 6 NcmZo-Xku<;0RRRm0gV6v literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetStakeDistribution b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Mary_GetStakeDistribution new file mode 100644 index 0000000000000000000000000000000000000000..e63d41b76df54ba67176d302d70dfe571b2af40d GIT binary patch literal 6 NcmZo-Xku<;1po#r0geCw literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Shelley_GetCurrentPParams b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Query_Shelley_GetCurrentPParams new file mode 100644 index 0000000000000000000000000000000000000000..cafc5b72906ddd4c9ef0dd49a1b4bc6b8fbf7000 GIT binary patch literal 6 NcmZo-Xku(+1^@;k0g3?(kJ1zhK literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_ProposedPParamsUpdates b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_ProposedPParamsUpdates new file mode 100644 index 00000000000..4918531195d --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_ProposedPParamsUpdates @@ -0,0 +1 @@ +X ts.?9ZEP# 2d \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_StakeDistribution b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_StakeDistribution new file mode 100644 index 00000000000..968f15663df --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Allegra_StakeDistribution @@ -0,0 +1 @@ +X1s]k?ժP[{%AX -ò^46R>Žb{L \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_EmptyPParams b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_EmptyPParams new file mode 100644 index 0000000000000000000000000000000000000000..9fe98648bfc342626b105be5bfa78fbed3fbaac6 GIT binary patch literal 63 rcmZpiA;G}FAjttF7#Ji{Zpbw;FrpESV7UcN2;n9M1|VXPn8peKwUiD2 literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_EpochNo b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_EpochNo new file mode 100644 index 00000000000..b1803703794 --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_EpochNo @@ -0,0 +1 @@ + diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_GenesisConfig b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_GenesisConfig new file mode 100644 index 0000000000000000000000000000000000000000..94d05d956e2eae3f82e1cef8d30eb45f771bcce7 GIT binary patch literal 78 zcmZqdZ?(kJ1zhK literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_ProposedPParamsUpdates b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_ProposedPParamsUpdates new file mode 100644 index 00000000000..4080e95c54e --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_ProposedPParamsUpdates @@ -0,0 +1 @@ +X ts.?9ZEP# 2 \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_StakeDistribution b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_StakeDistribution new file mode 100644 index 00000000000..968f15663df --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Alonzo_StakeDistribution @@ -0,0 +1 @@ +X1s]k?ժP[{%AX -ò^46R>Žb{L \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_AnytimeByron b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_AnytimeByron new file mode 100644 index 0000000000000000000000000000000000000000..070897ad04f6b56bc26e2d24a3de47ce5b565852 GIT binary patch literal 5 McmZo{W?*0d00fo+1poj5 literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_AnytimeShelley b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_AnytimeShelley new file mode 100644 index 0000000000000000000000000000000000000000..61dee1376e428f9f6be1a1df74036a259c3abed8 GIT binary patch literal 15 WcmZo{mS&K+SJs%@z#z%|f(rmDO9co3 literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Byron b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Byron new file mode 100644 index 0000000000000000000000000000000000000000..d66107b64e8efc78189421a6da827d6795795e62 GIT binary patch literal 138 zcmZqdW@u($VCZ9zl#Y;MkZWlG6OsxHl1zJ~85lSv{E8MZ02wSj>Xrc@2E&UhO9eoT zsLujb4h&q)(hST--BWxVfMQIFo09G}fFyM*J8Tsgniy_K1UCV>y@93vL15in)=B#s Sr2j*~{QnC;;3gwe!vX-}Un%DR literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_EraMismatchByron b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_EraMismatchByron new file mode 100644 index 0000000000000000000000000000000000000000..9735c28d23436ca90c123fd781e030a3bf8c2969 GIT binary patch literal 19 acmZo_VoVRtNX^Mft!!dQb*e1N&jSEQF$XjN literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_EraMismatchShelley b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_EraMismatchShelley new file mode 100644 index 0000000000000000000000000000000000000000..43f2fa8267f5b22ef6dd14c7a562e2fd1bab5ca0 GIT binary patch literal 19 acmZo_Vn}tWEXvPoVoVRtNX^Mftpor@n+G%i literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_HardFork b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_HardFork new file mode 100644 index 0000000000000000000000000000000000000000..af17ee258b7f704c767743b9450b8f22007c8c86 GIT binary patch literal 73 zcmbQ=+|0nh&@9a$aj&c~w}C;D`2|=&9DB$OH%{sRCS&J`m7 literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_EmptyPParams b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_EmptyPParams new file mode 100644 index 0000000000000000000000000000000000000000..654d3fbfbe1151036457804b5dc90f1a231cb9d5 GIT binary patch literal 40 dcmZpi#K6EH$pIu77$j0|$TcxAq7jW?IRK}f2o?YU literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_EpochNo b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_EpochNo new file mode 100644 index 00000000000..b1803703794 --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_EpochNo @@ -0,0 +1 @@ + diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_GenesisConfig b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_GenesisConfig new file mode 100644 index 0000000000000000000000000000000000000000..94d05d956e2eae3f82e1cef8d30eb45f771bcce7 GIT binary patch literal 78 zcmZqdZ?(kJ1zhK literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_ProposedPParamsUpdates b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_ProposedPParamsUpdates new file mode 100644 index 00000000000..4918531195d --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_ProposedPParamsUpdates @@ -0,0 +1 @@ +X ts.?9ZEP# 2d \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_StakeDistribution b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_StakeDistribution new file mode 100644 index 00000000000..968f15663df --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Mary_StakeDistribution @@ -0,0 +1 @@ +X1s]k?ժP[{%AX -ò^46R>Žb{L \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_EmptyPParams b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_EmptyPParams new file mode 100644 index 0000000000000000000000000000000000000000..654d3fbfbe1151036457804b5dc90f1a231cb9d5 GIT binary patch literal 40 dcmZpi#K6EH$pIu77$j0|$TcxAq7jW?IRK}f2o?YU literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_EpochNo b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_EpochNo new file mode 100644 index 00000000000..b1803703794 --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_EpochNo @@ -0,0 +1 @@ + diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_GenesisConfig b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_GenesisConfig new file mode 100644 index 0000000000000000000000000000000000000000..94d05d956e2eae3f82e1cef8d30eb45f771bcce7 GIT binary patch literal 78 zcmZqdZ?(kJ1zhK literal 0 HcmV?d00001 diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_ProposedPParamsUpdates b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_ProposedPParamsUpdates new file mode 100644 index 00000000000..4918531195d --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_ProposedPParamsUpdates @@ -0,0 +1 @@ +X ts.?9ZEP# 2d \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_StakeDistribution b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_StakeDistribution new file mode 100644 index 00000000000..968f15663df --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/Result_Shelley_StakeDistribution @@ -0,0 +1 @@ +X1s]k?ժP[{%AX -ò^46R>Žb{L \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Allegra b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Allegra new file mode 100644 index 00000000000..6a5024d0dcf --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Allegra @@ -0,0 +1 @@ +O \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Alonzo b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Alonzo new file mode 100644 index 00000000000..6a5024d0dcf --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Alonzo @@ -0,0 +1 @@ +O \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Byron_EBB b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Byron_EBB new file mode 100644 index 00000000000..6a5024d0dcf --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Byron_EBB @@ -0,0 +1 @@ +O \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Byron_regular b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Byron_regular new file mode 100644 index 00000000000..6a5024d0dcf --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Byron_regular @@ -0,0 +1 @@ +O \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Mary b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Mary new file mode 100644 index 00000000000..6a5024d0dcf --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Mary @@ -0,0 +1 @@ +O \ No newline at end of file diff --git a/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Shelley b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Shelley new file mode 100644 index 00000000000..6a5024d0dcf --- /dev/null +++ b/ouroboros-consensus-cardano-test/test/golden/QueryVersion2/CardanoNodeToClientVersion7/SerialisedBlock_Shelley @@ -0,0 +1 @@ +O \ No newline at end of file diff --git a/ouroboros-consensus-cardano/src/Ouroboros/Consensus/Cardano/Node.hs b/ouroboros-consensus-cardano/src/Ouroboros/Consensus/Cardano/Node.hs index 06ea121ec83..82e408a2d72 100644 --- a/ouroboros-consensus-cardano/src/Ouroboros/Consensus/Cardano/Node.hs +++ b/ouroboros-consensus-cardano/src/Ouroboros/Consensus/Cardano/Node.hs @@ -374,18 +374,19 @@ instance CardanoHardForkConstraints c ] supportedNodeToClientVersions _ = Map.fromList $ - [ (NodeToClientV_1, CardanoNodeToClientVersion1) - , (NodeToClientV_2, CardanoNodeToClientVersion1) - , (NodeToClientV_3, CardanoNodeToClientVersion2) - , (NodeToClientV_4, CardanoNodeToClientVersion3) - , (NodeToClientV_5, CardanoNodeToClientVersion4) - , (NodeToClientV_6, CardanoNodeToClientVersion5) - , (NodeToClientV_7, CardanoNodeToClientVersion6) - , (NodeToClientV_8, CardanoNodeToClientVersion6) - , (NodeToClientV_9, CardanoNodeToClientVersion7) + [ (NodeToClientV_1 , CardanoNodeToClientVersion1) + , (NodeToClientV_2 , CardanoNodeToClientVersion1) + , (NodeToClientV_3 , CardanoNodeToClientVersion2) + , (NodeToClientV_4 , CardanoNodeToClientVersion3) + , (NodeToClientV_5 , CardanoNodeToClientVersion4) + , (NodeToClientV_6 , CardanoNodeToClientVersion5) + , (NodeToClientV_7 , CardanoNodeToClientVersion6) + , (NodeToClientV_8 , CardanoNodeToClientVersion6) + , (NodeToClientV_9 , CardanoNodeToClientVersion7) + , (NodeToClientV_10, CardanoNodeToClientVersion7) ] - latestReleasedNodeVersion _prx = (Just NodeToNodeV_7, Just NodeToClientV_9) + latestReleasedNodeVersion _prx = (Just NodeToNodeV_7, Just NodeToClientV_10) {------------------------------------------------------------------------------- ProtocolInfo diff --git a/ouroboros-consensus-test/src/Test/Util/Serialisation/Roundtrip.hs b/ouroboros-consensus-test/src/Test/Util/Serialisation/Roundtrip.hs index bdf4bdc72c6..7f768aaeb07 100644 --- a/ouroboros-consensus-test/src/Test/Util/Serialisation/Roundtrip.hs +++ b/ouroboros-consensus-test/src/Test/Util/Serialisation/Roundtrip.hs @@ -228,17 +228,34 @@ instance ( blockVersion ~ BlockNodeToClientVersion blk -- This case statement will cause a warning when we add a new top -- level query and hence a new QueryVersion. In that case we should -- support such top level `Query` constructors in this Arbitrary instance. - Query.TopLevelQueryDisabled -> - arbitraryBlockQuery queryVersion - - Query.QueryVersion1 -> - frequency - [ (15, arbitraryBlockQuery queryVersion) - , (1, do blockV <- arbitrary - return (WithVersion (queryVersion, blockV) - (SomeSecond GetSystemStart))) - ] + Query.TopLevelQueryDisabled -> arbitraryBlockQuery queryVersion + Query.QueryVersion1 -> genTopLevelQuery1 + Query.QueryVersion2 -> genTopLevelQuery2 where + mkEntry :: QueryVersion + -> Query blk query + -> Gen + (WithVersion (QueryVersion, blockVersion) (SomeSecond Query blk)) + mkEntry qv q = do + blockV <- arbitrary + return (WithVersion (qv, blockV) (SomeSecond q)) + + genTopLevelQuery1 = + let version = Query.QueryVersion1 + in frequency + [ (15, arbitraryBlockQuery version ) + , (1 , mkEntry version GetSystemStart ) + ] + + genTopLevelQuery2 = + let version = Query.QueryVersion2 + in frequency + [ (15, arbitraryBlockQuery version ) + , (1 , mkEntry version GetSystemStart ) + , (1 , mkEntry version GetChainBlockNo) + , (1 , mkEntry version GetChainPoint ) + ] + arbitraryBlockQuery :: QueryVersion -> Gen (WithVersion (QueryVersion, blockVersion) (SomeSecond Query blk)) diff --git a/ouroboros-consensus/docs/interface-CHANGELOG.md b/ouroboros-consensus/docs/interface-CHANGELOG.md index 4c63b13cb83..babeb5614b1 100644 --- a/ouroboros-consensus/docs/interface-CHANGELOG.md +++ b/ouroboros-consensus/docs/interface-CHANGELOG.md @@ -56,6 +56,15 @@ may appear out of chronological order. The internals of each entry are organized similar to https://keepachangelog.com/en/1.1.0/, adapted to our plan explained above. +## Circa 2021-09-22 + +### Added + +- New supported node to client version `NodeToClientV_10` with new queries: + - `GetChainBlockNo`: Get the chain block number + - `GetChainPoint`: Get the chain point, which includes the slot number and + header hash. + ## Circa 2021-08-31 ### Added diff --git a/ouroboros-consensus/src/Ouroboros/Consensus/HeaderValidation.hs b/ouroboros-consensus/src/Ouroboros/Consensus/HeaderValidation.hs index 68c43f438bf..b9e9449cdb0 100644 --- a/ouroboros-consensus/src/Ouroboros/Consensus/HeaderValidation.hs +++ b/ouroboros-consensus/src/Ouroboros/Consensus/HeaderValidation.hs @@ -31,6 +31,7 @@ module Ouroboros.Consensus.HeaderValidation ( , HeaderState (..) , castHeaderState , genesisHeaderState + , headerStateBlockNo , headerStatePoint , tickHeaderState -- * Validate header envelope @@ -200,6 +201,9 @@ tickHeaderState cfg ledgerView slot HeaderState {..} = TickedHeaderState { genesisHeaderState :: ChainDepState (BlockProtocol blk) -> HeaderState blk genesisHeaderState = HeaderState Origin +headerStateBlockNo :: HeaderState blk -> WithOrigin BlockNo +headerStateBlockNo = fmap annTipBlockNo . headerStateTip + headerStatePoint :: HasAnnTip blk => HeaderState blk -> Point blk headerStatePoint = withOriginRealPointToPoint diff --git a/ouroboros-consensus/src/Ouroboros/Consensus/Ledger/Query.hs b/ouroboros-consensus/src/Ouroboros/Consensus/Ledger/Query.hs index 1d74f462f75..b1ec035967e 100644 --- a/ouroboros-consensus/src/Ouroboros/Consensus/Ledger/Query.hs +++ b/ouroboros-consensus/src/Ouroboros/Consensus/Ledger/Query.hs @@ -28,9 +28,16 @@ import Data.Maybe (isJust) import Data.Typeable (Typeable) import Cardano.Binary (FromCBOR (..), ToCBOR (..)) +import Cardano.Slotting.Block (BlockNo (..)) +import Cardano.Slotting.Slot (WithOrigin (..)) + import Codec.CBOR.Decoding import Codec.CBOR.Encoding +import Codec.Serialise (Serialise) +import Codec.Serialise.Class (decode, encode) +import Ouroboros.Network.Block (HeaderHash, Point (..), StandardHash, + decodePoint, encodePoint) import Ouroboros.Network.Protocol.LocalStateQuery.Type (ShowQuery (..)) @@ -38,6 +45,8 @@ import Ouroboros.Consensus.Block.Abstract (CodecConfig) import Ouroboros.Consensus.BlockchainTime (SystemStart) import Ouroboros.Consensus.Config import Ouroboros.Consensus.Config.SupportsNode +import Ouroboros.Consensus.HeaderValidation (HasAnnTip (..), + headerStateBlockNo, headerStatePoint) import Ouroboros.Consensus.Ledger.Extended import Ouroboros.Consensus.Ledger.Query.Version import Ouroboros.Consensus.Node.NetworkProtocolVersion @@ -51,6 +60,13 @@ import Ouroboros.Consensus.Util.DepPair Queries -------------------------------------------------------------------------------} +queryName :: Query blk result -> String +queryName query = case query of + BlockQuery _ -> "BlockQuery" + GetSystemStart -> "GetSystemStart" + GetChainBlockNo -> "GetChainBlockNo" + GetChainPoint -> "GetChainPoint" + -- | Different queries supported by the ledger for all block types, indexed -- by the result type. -- @@ -65,12 +81,24 @@ data Query blk result where -- Supported by 'QueryVersion' >= 'QueryVersion1'. GetSystemStart :: Query blk SystemStart + -- | Get the 'GetChainBlockNo' time. + -- + -- Supported by 'QueryVersion' >= 'QueryVersion2'. + GetChainBlockNo :: Query blk (WithOrigin BlockNo) + + -- | Get the 'GetChainPoint' time. + -- + -- Supported by 'QueryVersion' >= 'QueryVersion2'. + GetChainPoint :: Query blk (Point blk) + instance (ShowProxy (BlockQuery blk)) => ShowProxy (Query blk) where showProxy (Proxy :: Proxy (Query blk)) = "Query (" ++ showProxy (Proxy @(BlockQuery blk)) ++ ")" -instance (ShowQuery (BlockQuery blk)) => ShowQuery (Query blk) where +instance (ShowQuery (BlockQuery blk), StandardHash blk) => ShowQuery (Query blk) where showResult (BlockQuery blockQuery) = showResult blockQuery showResult GetSystemStart = show + showResult GetChainBlockNo = show + showResult GetChainPoint = show instance Eq (SomeSecond BlockQuery blk) => Eq (SomeSecond Query blk) where SomeSecond (BlockQuery blockQueryA) == SomeSecond (BlockQuery blockQueryB) @@ -80,9 +108,17 @@ instance Eq (SomeSecond BlockQuery blk) => Eq (SomeSecond Query blk) where SomeSecond GetSystemStart == SomeSecond GetSystemStart = True SomeSecond GetSystemStart == _ = False + SomeSecond GetChainBlockNo == SomeSecond GetChainBlockNo = True + SomeSecond GetChainBlockNo == _ = False + + SomeSecond GetChainPoint == SomeSecond GetChainPoint = True + SomeSecond GetChainPoint == _ = False + instance Show (SomeSecond BlockQuery blk) => Show (SomeSecond Query blk) where - show (SomeSecond (BlockQuery blockQueryA)) = "Query " ++ show (SomeSecond blockQueryA) - show (SomeSecond GetSystemStart) = "Query GetSystemStart" + show (SomeSecond (BlockQuery blockQueryA)) = "Query " ++ show (SomeSecond blockQueryA) + show (SomeSecond GetSystemStart) = "Query GetSystemStart" + show (SomeSecond GetChainBlockNo) = "Query GetChainBlockNo" + show (SomeSecond GetChainPoint) = "Query GetChainPoint" -- | Exception thrown in the encoders @@ -118,16 +154,40 @@ queryEncodeNodeToClient codecConfig queryVersion blockVersion (SomeSecond query) throw $ QueryEncoderUnsupportedQuery (SomeSecond query) queryVersion -- From version 1 onwards, we use normal constructor tags - QueryVersion1 -> + _ -> case query of BlockQuery blockQuery -> - encodeListLen 2 - <> encodeWord8 0 - <> encodeBlockQuery blockQuery + requireVersion QueryVersion1 $ mconcat + [ encodeListLen 2 + , encodeWord8 0 + , encodeBlockQuery blockQuery + ] + GetSystemStart -> - encodeListLen 1 - <> encodeWord8 1 + requireVersion QueryVersion1 $ mconcat + [ encodeListLen 1 + , encodeWord8 1 + ] + + GetChainBlockNo -> + requireVersion QueryVersion2 $ mconcat + [ encodeListLen 1 + , encodeWord8 2 + ] + + GetChainPoint -> + requireVersion QueryVersion2 $ mconcat + [ encodeListLen 1 + , encodeWord8 3 + ] + where + requireVersion :: QueryVersion -> a -> a + requireVersion expectedVersion a = + if queryVersion >= expectedVersion + then a + else throw $ QueryEncoderUnsupportedQuery (SomeSecond query) queryVersion + encodeBlockQuery blockQuery = encodeNodeToClient @blk @@ -146,14 +206,28 @@ queryDecodeNodeToClient :: queryDecodeNodeToClient codecConfig queryVersion blockVersion = case queryVersion of TopLevelQueryDisabled -> decodeBlockQuery - QueryVersion1 -> do + QueryVersion1 -> handleTopLevelQuery + QueryVersion2 -> handleTopLevelQuery + where + handleTopLevelQuery :: Decoder s (SomeSecond Query blk) + handleTopLevelQuery = do size <- decodeListLen tag <- decodeWord8 case (size, tag) of - (2, 0) -> decodeBlockQuery - (1, 1) -> return (SomeSecond GetSystemStart) + (2, 0) -> requireVersion QueryVersion1 =<< decodeBlockQuery + (1, 1) -> requireVersion QueryVersion1 $ SomeSecond GetSystemStart + (1, 2) -> requireVersion QueryVersion2 $ SomeSecond GetChainBlockNo + (1, 3) -> requireVersion QueryVersion2 $ SomeSecond GetChainPoint _ -> fail $ "Query: invalid size and tag" <> show (size, tag) - where + + requireVersion :: QueryVersion -> SomeSecond Query blk -> Decoder s (SomeSecond Query blk) + requireVersion expectedVersion someSecondQuery = + if queryVersion >= expectedVersion + then return someSecondQuery + else case someSecondQuery of + SomeSecond query -> fail $ "Query: " <> queryName query <> " requires at least " <> show expectedVersion + + decodeBlockQuery :: Decoder s (SomeSecond Query blk) decodeBlockQuery = do SomeSecond blockQuery <- decodeNodeToClient @blk @@ -162,16 +236,26 @@ queryDecodeNodeToClient codecConfig queryVersion blockVersion blockVersion return (SomeSecond (BlockQuery blockQuery)) -instance SerialiseResult blk (BlockQuery blk) => SerialiseResult blk (Query blk) where +instance ( SerialiseResult blk (BlockQuery blk) + , Serialise (HeaderHash blk) + ) => SerialiseResult blk (Query blk) where encodeResult codecConfig blockVersion (BlockQuery blockQuery) result = encodeResult codecConfig blockVersion blockQuery result encodeResult _ _ GetSystemStart result = toCBOR result + encodeResult _ _ GetChainBlockNo result + = toCBOR result + encodeResult _ _ GetChainPoint result + = encodePoint encode result decodeResult codecConfig blockVersion (BlockQuery query) = decodeResult codecConfig blockVersion query decodeResult _ _ GetSystemStart = fromCBOR + decodeResult _ _ GetChainBlockNo + = fromCBOR + decodeResult _ _ GetChainPoint + = decodePoint decode instance SameDepIndex (BlockQuery blk) => SameDepIndex (Query blk) where sameDepIndex (BlockQuery blockQueryA) (BlockQuery blockQueryB) @@ -182,12 +266,20 @@ instance SameDepIndex (BlockQuery blk) => SameDepIndex (Query blk) where = Just Refl sameDepIndex GetSystemStart _ = Nothing + sameDepIndex GetChainBlockNo GetChainBlockNo + = Just Refl + sameDepIndex GetChainBlockNo _ + = Nothing + sameDepIndex GetChainPoint GetChainPoint + = Just Refl + sameDepIndex GetChainPoint _ + = Nothing deriving instance Show (BlockQuery blk result) => Show (Query blk result) -- | Answer the given query about the extended ledger state. answerQuery :: - (QueryLedger blk, ConfigSupportsNode blk) + (QueryLedger blk, ConfigSupportsNode blk, HasAnnTip blk) => ExtLedgerCfg blk -> Query blk result -> ExtLedgerState blk @@ -195,6 +287,8 @@ answerQuery :: answerQuery cfg query st = case query of BlockQuery blockQuery -> answerBlockQuery cfg blockQuery st GetSystemStart -> getSystemStart (topLevelConfigBlock (getExtLedgerCfg cfg)) + GetChainBlockNo -> headerStateBlockNo (headerState st) + GetChainPoint -> headerStatePoint (headerState st) -- | Different queries supported by the ledger, indexed by the result type. data family BlockQuery blk :: Type -> Type diff --git a/ouroboros-consensus/src/Ouroboros/Consensus/Ledger/Query/Version.hs b/ouroboros-consensus/src/Ouroboros/Consensus/Ledger/Query/Version.hs index 97e5536366e..40339072721 100644 --- a/ouroboros-consensus/src/Ouroboros/Consensus/Ledger/Query/Version.hs +++ b/ouroboros-consensus/src/Ouroboros/Consensus/Ledger/Query/Version.hs @@ -7,27 +7,32 @@ module Ouroboros.Consensus.Ledger.Query.Version ( import Ouroboros.Network.NodeToClient.Version -- | Version of the `Query blk` type. +-- +-- Multiple top level queries are now supported. The encoding now has +-- constructor tags for the different top level queries for QueryVersion1 onwards. data QueryVersion -- | Only the 'BlockQuery' constructor of 'Query' is supported. The binary -- encoding is backwards compatible: it does not introduce any constructor -- tag around the 'BlockQuery'. = TopLevelQueryDisabled - -- | Multiple top level queries are now supported. The encoding now has - -- constructor tags for the different top level queries. Specifically V1 - -- adds support for 'GetSystemStart'. + -- Adds support for 'GetSystemStart'. | QueryVersion1 + + -- Adds support for 'GetChainBlockNo' and 'GetChainPoint'. + | QueryVersion2 deriving (Eq, Ord, Enum, Bounded, Show) -- | Get the @QueryVersion@ supported by this @NodeToClientVersion@. nodeToClientVersionToQueryVersion :: NodeToClientVersion -> QueryVersion nodeToClientVersionToQueryVersion x = case x of - NodeToClientV_1 -> TopLevelQueryDisabled - NodeToClientV_2 -> TopLevelQueryDisabled - NodeToClientV_3 -> TopLevelQueryDisabled - NodeToClientV_4 -> TopLevelQueryDisabled - NodeToClientV_5 -> TopLevelQueryDisabled - NodeToClientV_6 -> TopLevelQueryDisabled - NodeToClientV_7 -> TopLevelQueryDisabled - NodeToClientV_8 -> TopLevelQueryDisabled - NodeToClientV_9 -> QueryVersion1 + NodeToClientV_1 -> TopLevelQueryDisabled + NodeToClientV_2 -> TopLevelQueryDisabled + NodeToClientV_3 -> TopLevelQueryDisabled + NodeToClientV_4 -> TopLevelQueryDisabled + NodeToClientV_5 -> TopLevelQueryDisabled + NodeToClientV_6 -> TopLevelQueryDisabled + NodeToClientV_7 -> TopLevelQueryDisabled + NodeToClientV_8 -> TopLevelQueryDisabled + NodeToClientV_9 -> QueryVersion1 + NodeToClientV_10 -> QueryVersion2 diff --git a/ouroboros-consensus/src/Ouroboros/Consensus/MiniProtocol/LocalStateQuery/Server.hs b/ouroboros-consensus/src/Ouroboros/Consensus/MiniProtocol/LocalStateQuery/Server.hs index dff00c17def..5886d3247d3 100644 --- a/ouroboros-consensus/src/Ouroboros/Consensus/MiniProtocol/LocalStateQuery/Server.hs +++ b/ouroboros-consensus/src/Ouroboros/Consensus/MiniProtocol/LocalStateQuery/Server.hs @@ -8,12 +8,13 @@ import Ouroboros.Network.Protocol.LocalStateQuery.Type (AcquireFailure (..)) import Ouroboros.Consensus.Block +import Ouroboros.Consensus.HeaderValidation (HasAnnTip (..)) import Ouroboros.Consensus.Ledger.Extended import Ouroboros.Consensus.Ledger.Query import Ouroboros.Consensus.Util.IOLike localStateQueryServer :: - forall m blk. (IOLike m, QueryLedger blk, ConfigSupportsNode blk) + forall m blk. (IOLike m, QueryLedger blk, ConfigSupportsNode blk, HasAnnTip blk) => ExtLedgerCfg blk -> STM m (Point blk) -- ^ Get tip point diff --git a/ouroboros-consensus/src/Ouroboros/Consensus/Network/NodeToClient.hs b/ouroboros-consensus/src/Ouroboros/Consensus/Network/NodeToClient.hs index 0773c964eff..d1e713a0f23 100644 --- a/ouroboros-consensus/src/Ouroboros/Consensus/Network/NodeToClient.hs +++ b/ouroboros-consensus/src/Ouroboros/Consensus/Network/NodeToClient.hs @@ -35,6 +35,8 @@ module Ouroboros.Consensus.Network.NodeToClient ( import Codec.CBOR.Decoding (Decoder) import Codec.CBOR.Encoding (Encoding) +import Codec.Serialise (Serialise) + import Control.Tracer import Data.ByteString.Lazy (ByteString) import Data.Void (Void) @@ -164,6 +166,8 @@ defaultCodecs :: forall m blk. ( MonadST m , SerialiseNodeToClientConstraints blk , ShowQuery (BlockQuery blk) + , StandardHash blk + , Serialise (HeaderHash blk) ) => CodecConfig blk -> BlockNodeToClientVersion blk @@ -216,6 +220,8 @@ clientCodecs :: forall m blk. ( MonadST m , SerialiseNodeToClientConstraints blk , ShowQuery (BlockQuery blk) + , StandardHash blk + , Serialise (HeaderHash blk) ) => CodecConfig blk -> BlockNodeToClientVersion blk diff --git a/ouroboros-network/src/Ouroboros/Network/Block.hs b/ouroboros-network/src/Ouroboros/Network/Block.hs index 68e4b8deaab..bb349399750 100644 --- a/ouroboros-network/src/Ouroboros/Network/Block.hs +++ b/ouroboros-network/src/Ouroboros/Network/Block.hs @@ -92,7 +92,6 @@ import GHC.Generics (Generic) import NoThunks.Class (NoThunks) import Cardano.Binary (Case (..), Size, szCases, szGreedy) - import Cardano.Slotting.Block import Cardano.Slotting.Slot (SlotNo (..)) diff --git a/ouroboros-network/src/Ouroboros/Network/NodeToClient/Version.hs b/ouroboros-network/src/Ouroboros/Network/NodeToClient/Version.hs index ecdde9c2ab2..f9f4021167c 100644 --- a/ouroboros-network/src/Ouroboros/Network/NodeToClient/Version.hs +++ b/ouroboros-network/src/Ouroboros/Network/NodeToClient/Version.hs @@ -41,6 +41,8 @@ data NodeToClientVersion -- ^ 'LocalStateQuery' protocol codec change, allows to acquire tip point. | NodeToClientV_9 -- ^ enabled @CardanoNodeToClientVersion7@, i.e., Alonzo + | NodeToClientV_10 + -- ^ added 'GetChainBlockNo' and 'GetChainPoint' queries deriving (Eq, Ord, Enum, Bounded, Show, Typeable) -- | We set 16ths bit to distinguish `NodeToNodeVersion` and @@ -53,15 +55,16 @@ data NodeToClientVersion nodeToClientVersionCodec :: CodecCBORTerm (Text, Maybe Int) NodeToClientVersion nodeToClientVersionCodec = CodecCBORTerm { encodeTerm, decodeTerm } where - encodeTerm NodeToClientV_1 = CBOR.TInt 1 - encodeTerm NodeToClientV_2 = CBOR.TInt (2 `setBit` nodeToClientVersionBit) - encodeTerm NodeToClientV_3 = CBOR.TInt (3 `setBit` nodeToClientVersionBit) - encodeTerm NodeToClientV_4 = CBOR.TInt (4 `setBit` nodeToClientVersionBit) - encodeTerm NodeToClientV_5 = CBOR.TInt (5 `setBit` nodeToClientVersionBit) - encodeTerm NodeToClientV_6 = CBOR.TInt (6 `setBit` nodeToClientVersionBit) - encodeTerm NodeToClientV_7 = CBOR.TInt (7 `setBit` nodeToClientVersionBit) - encodeTerm NodeToClientV_8 = CBOR.TInt (8 `setBit` nodeToClientVersionBit) - encodeTerm NodeToClientV_9 = CBOR.TInt (9 `setBit` nodeToClientVersionBit) + encodeTerm NodeToClientV_1 = CBOR.TInt 1 + encodeTerm NodeToClientV_2 = CBOR.TInt (2 `setBit` nodeToClientVersionBit) + encodeTerm NodeToClientV_3 = CBOR.TInt (3 `setBit` nodeToClientVersionBit) + encodeTerm NodeToClientV_4 = CBOR.TInt (4 `setBit` nodeToClientVersionBit) + encodeTerm NodeToClientV_5 = CBOR.TInt (5 `setBit` nodeToClientVersionBit) + encodeTerm NodeToClientV_6 = CBOR.TInt (6 `setBit` nodeToClientVersionBit) + encodeTerm NodeToClientV_7 = CBOR.TInt (7 `setBit` nodeToClientVersionBit) + encodeTerm NodeToClientV_8 = CBOR.TInt (8 `setBit` nodeToClientVersionBit) + encodeTerm NodeToClientV_9 = CBOR.TInt (9 `setBit` nodeToClientVersionBit) + encodeTerm NodeToClientV_10 = CBOR.TInt (10 `setBit` nodeToClientVersionBit) decodeTerm (CBOR.TInt tag) = case ( tag `clearBit` nodeToClientVersionBit @@ -76,6 +79,7 @@ nodeToClientVersionCodec = CodecCBORTerm { encodeTerm, decodeTerm } (7, True) -> Right NodeToClientV_7 (8, True) -> Right NodeToClientV_8 (9, True) -> Right NodeToClientV_9 + (10, True) -> Right NodeToClientV_10 (n, _) -> Left ( T.pack "decode NodeToClientVersion: unknown tag: " <> T.pack (show tag) , Just n) decodeTerm _ = Left ( T.pack "decode NodeToClientVersion: unexpected term" diff --git a/ouroboros-network/test-cddl/specs/handshake-node-to-client.cddl b/ouroboros-network/test-cddl/specs/handshake-node-to-client.cddl index 15943195291..ccab6dbea61 100644 --- a/ouroboros-network/test-cddl/specs/handshake-node-to-client.cddl +++ b/ouroboros-network/test-cddl/specs/handshake-node-to-client.cddl @@ -14,7 +14,7 @@ msgRefuse = [2, refuseReason] versionTable = { * versionNumber => nodeToClientVersionData } ; from version 2 we set 15th bit to 1 -versionNumber = 1 / 32770 / 32771 / 32772 / 32773 / 32774 / 32775 / 32776 / 32777 +versionNumber = 1 / 32770 / 32771 / 32772 / 32773 / 32774 / 32775 / 32776 / 32777 / 32778 nodeToClientVersionData = networkMagic