Skip to content

Commit b834784

Browse files
joaosreisqnikst
andauthored
Add gov/proposals/roots/v0 namespace (#293)
* Update CIPs reference * Move gov_action_id rule * Add gov/proposals/roots/v0 namespace and definitions * Apply suggestion from @qnikst * Update scls-cardano/cddl-src/Cardano/SCLS/Namespace/GovProposalsRoots.hs --------- Co-authored-by: Alexander Vershilov <alexander.vershilov@tweag.io>
1 parent 3cd42c1 commit b834784

10 files changed

Lines changed: 61 additions & 11 deletions

File tree

.github/workflows/haskell-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ jobs:
165165
uses: actions/checkout@v6
166166
with:
167167
repository: tweag/CIPs
168-
ref: 5a4f49835b01695583830e01e2dfd11e9e582efc
168+
ref: c92a3b5db78268e7f0db5f24c80ed6f49cf4b149
169169
path: cips
170170
- name: set env for reference CDDL
171171
run: |

flake.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
inputs.nixpkgs.follows = "nixpkgs";
1919
};
2020
inputs.cips = {
21-
url = "github:tweag/CIPs?rev=5a4f49835b01695583830e01e2dfd11e9e582efc";
21+
url = "github:tweag/CIPs?rev=c92a3b5db78268e7f0db5f24c80ed6f49cf4b149";
2222
flake = false;
2323
};
2424
outputs = { self, nixpkgs, flake-utils, haskellNix, git-hooks, treefmt-nix

scls-cardano/cddl-src/Cardano/SCLS/CDDL.hs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import Cardano.SCLS.Namespace.GovCommittee qualified as GovCommittee
1414
import Cardano.SCLS.Namespace.GovConstitution qualified as GovConstitution
1515
import Cardano.SCLS.Namespace.GovPParams qualified as GovPParams
1616
import Cardano.SCLS.Namespace.GovProposals qualified as GovProposals
17+
import Cardano.SCLS.Namespace.GovProposalsRoots qualified as GovProposalsRoots
1718
import Cardano.SCLS.Namespace.Nonces qualified as Nonces
1819
import Cardano.SCLS.Namespace.Snapshots qualified as Snapshots
1920
import Cardano.SCLS.Namespace.UTxO qualified as UTxO
@@ -67,6 +68,9 @@ instance KnownSpec "gov/pparams/v0" where
6768
instance KnownSpec "gov/proposals/v0" where
6869
namespaceSpec _ = mkDefinition GovProposals.record_entry
6970

71+
instance KnownSpec "gov/proposals/roots/v0" where
72+
namespaceSpec _ = mkDefinition GovProposalsRoots.record_entry
73+
7074
mkDefinition :: Rule -> Huddle
7175
mkDefinition r = collectFromInit [HIRule r]
7276

@@ -87,6 +91,7 @@ knownNamespaces =
8791
, mkNamespaceSymbol @"gov/constitution/v0"
8892
, mkNamespaceSymbol @"gov/pparams/v0"
8993
, mkNamespaceSymbol @"gov/proposals/v0"
94+
, mkNamespaceSymbol @"gov/proposals/roots/v0"
9095
]
9196

9297
type instance Spec.NamespaceKeySize "utxo/v0" = 34
@@ -100,3 +105,4 @@ type instance Spec.NamespaceKeySize "gov/committee/v0" = 8
100105
type instance Spec.NamespaceKeySize "gov/constitution/v0" = 8
101106
type instance Spec.NamespaceKeySize "gov/pparams/v0" = 4
102107
type instance Spec.NamespaceKeySize "gov/proposals/v0" = 34 -- 32 bytes txid+tx index + 2 bytes for proposal index
108+
type instance Spec.NamespaceKeySize "gov/proposals/roots/v0" = 1 -- 1 byte for proposal purpose

scls-cardano/cddl-src/Cardano/SCLS/Common.hs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,3 +243,8 @@ protocol_version = "protocol_version" =:= arr [a major_protocol_version, a VUInt
243243

244244
major_protocol_version :: Rule
245245
major_protocol_version = "major_protocol_version" =:= VUInt
246+
247+
gov_action_id :: Rule
248+
gov_action_id =
249+
"gov_action_id"
250+
=:= arr ["transaction_id" ==> hash32, "gov_action_index" ==> VUInt `sized` (2 :: Word64)]

scls-cardano/cddl-src/Cardano/SCLS/Namespace/GovProposals.hs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,6 @@ gov_action =
109109
/ (arr [5, "purpose" ==> (gov_action_id / VNil), "constitution" ==> constitution] //- "New constitution")
110110
/ (arr [6] //- "Info action")
111111

112-
gov_action_id :: Rule
113-
gov_action_id =
114-
"gov_action_id"
115-
=:= arr ["transaction_id" ==> hash32, "gov_action_index" ==> VUInt `sized` (2 :: Word64)]
116-
117112
gov_params_update :: Rule
118113
gov_params_update =
119114
comment
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{-# LANGUAGE ImportQualifiedPost #-}
2+
{-# LANGUAGE OverloadedLists #-}
3+
{-# LANGUAGE OverloadedStrings #-}
4+
{-# LANGUAGE QuasiQuotes #-}
5+
{-# LANGUAGE TypeApplications #-}
6+
{-# LANGUAGE NoImplicitPrelude #-}
7+
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
8+
9+
{-# HLINT ignore "Use camelCase" #-}
10+
module Cardano.SCLS.Namespace.GovProposalsRoots where
11+
12+
import Cardano.SCLS.Common
13+
import Codec.CBOR.Cuddle.Huddle
14+
import Data.Function (($))
15+
import Text.Heredoc (str)
16+
17+
record_entry :: Rule
18+
record_entry =
19+
comment
20+
[str| Size of the key
21+
|
22+
| ```
23+
| meta:
24+
| endian: be
25+
|
26+
| seq:
27+
| - id: key
28+
| type: u1
29+
| enum: gov_proposals_purpose
30+
|
31+
| enums:
32+
| gov_proposals_purpose:
33+
| 0: pparams_update
34+
| 1: hard_fork
35+
| 2: committee
36+
| 3: constitution
37+
| ```
38+
|
39+
|]
40+
$ "record_entry" =:= gov_action_id

scls-cardano/scls-cardano.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ library
3636
Cardano.SCLS.Namespace.GovConstitution
3737
Cardano.SCLS.Namespace.GovPParams
3838
Cardano.SCLS.Namespace.GovProposals
39+
Cardano.SCLS.Namespace.GovProposalsRoots
3940
Cardano.SCLS.Namespace.Nonces
4041
Cardano.SCLS.Namespace.Snapshots
4142
Cardano.SCLS.Namespace.UTxO

scls-cardano/test/Reference.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ allReferenceCDDLs =
7474
, ("gov/constitution/v0", "gov_constitution_v0.cddl")
7575
, ("gov/pparams/v0", "gov_pparams_v0.cddl")
7676
, ("gov/proposals/v0", "gov_proposals_v0.cddl")
77+
, ("gov/proposals/roots/v0", "gov_proposals_roots_v0.cddl")
7778
]
7879

7980
loadAllReferenceCDDLs :: IO (Maybe ([(Text, Either LoadError (CTreeRoot MonoReferenced))]))

scls-cardano/testlib/Cardano/SCLS/Testlib.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ testAllNS ::
6060
, ConstrNS "gov/constitution/v0"
6161
, ConstrNS "gov/pparams/v0"
6262
, ConstrNS "gov/proposals/v0"
63+
, ConstrNS "gov/proposals/roots/v0"
6364
) =>
6465
Spec
6566
testAllNS = describe "scls/conformance" $ do
@@ -73,6 +74,7 @@ testAllNS = describe "scls/conformance" $ do
7374
testNS @"gov/constitution/v0"
7475
testNS @"gov/pparams/v0"
7576
testNS @"gov/proposals/v0"
77+
testNS @"gov/proposals/roots/v0"
7678

7779
-- | Validate concrete type against its definition in CDDL
7880
validateType :: forall ns a. (KnownSymbol ns, ToCanonicalCBOR ns a, Arbitrary a, Show a, Typeable a) => T.Text -> Spec

0 commit comments

Comments
 (0)