{-# LANGUAGE AllowAmbiguousTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE OverloadedLists #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# OPTIONS_GHC -Wno-orphans #-} module Cardano.Ledger.Alonzo.HuddleSpec ( module Cardano.Ledger.Mary.HuddleSpec, alonzoCDDL, constr, exUnitsRule, networkIdRule, positiveIntervalRule, bigUintRule, bigNintRule, bigIntRule, scriptDataHashRule, boundedBytesRule, distinctBytesRule, plutusV1ScriptRule, plutusDataRule, ) where import Cardano.Ledger.Alonzo (AlonzoEra) import Cardano.Ledger.Mary.HuddleSpec import Codec.CBOR.Cuddle.Comments ((//-)) import Codec.CBOR.Cuddle.Huddle import Data.Proxy (Proxy (..)) import Data.Word (Word64) import Text.Heredoc import Prelude hiding ((/)) alonzoCDDL :: Huddle alonzoCDDL :: Huddle alonzoCDDL = [HuddleItem] -> Huddle collectFrom [ Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"block" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @AlonzoEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @AlonzoEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"kes_signature" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @AlonzoEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"language" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @AlonzoEra) , Rule -> HuddleItem HIRule (Rule -> HuddleItem) -> Rule -> HuddleItem forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"signkey_kes" (forall t. Proxy t forall {k} (t :: k). Proxy t Proxy @AlonzoEra) ] exUnitsRule :: Rule exUnitsRule :: Rule exUnitsRule = Text "ex_units" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [Key "mem" Key -> Value Int -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt, Key "steps" Key -> Value Int -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt] networkIdRule :: Rule networkIdRule :: Rule networkIdRule = Text "network_id" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Integer -> Literal int Integer 0 Literal -> Literal -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Integer -> Literal int Integer 1 positiveIntervalRule :: forall era. Era era => Proxy era -> Rule positiveIntervalRule :: forall era. Era era => Proxy era -> Rule positiveIntervalRule Proxy era p = Text "positive_interval" Text -> Tagged ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Word64 -> ArrayChoice -> Tagged ArrayChoice forall a. Word64 -> a -> Tagged a tag Word64 30 (ArrayChoice -> ArrayChoice arr [Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"positive_int" Proxy era p), Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"positive_int" Proxy era p)]) bigUintRule :: forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigUintRule :: forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigUintRule Proxy era p = Text "big_uint" Text -> Tagged Rule -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Word64 -> Rule -> Tagged Rule forall a. Word64 -> a -> Tagged a tag Word64 2 (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"bounded_bytes" Proxy era p) bigNintRule :: forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigNintRule :: forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigNintRule Proxy era p = Text "big_nint" Text -> Tagged Rule -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Word64 -> Rule -> Tagged Rule forall a. Word64 -> a -> Tagged a tag Word64 3 (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"bounded_bytes" Proxy era p) bigIntRule :: forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigIntRule :: forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigIntRule Proxy era p = Text "big_int" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Value Int VInt Value Int -> Rule -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Proxy era -> Rule forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigUintRule Proxy era p Choice Type2 -> Rule -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Proxy era -> Rule forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigNintRule Proxy era p scriptDataHashRule :: forall era. Era era => Proxy era -> Rule scriptDataHashRule :: forall era. Era era => Proxy era -> Rule scriptDataHashRule Proxy era p = Text "script_data_hash" Text -> Rule -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"hash32" Proxy era p boundedBytesRule :: Rule boundedBytesRule :: Rule boundedBytesRule = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|The real bounded_bytes does not have this limit. it instead has |a different limit which cannot be expressed in CDDL. | |The limit is as follows: | - bytes with a definite-length encoding are limited to size 0..64 | - for bytes with an indefinite-length CBOR encoding, each chunk is | limited to size 0..64 | ( reminder: in CBOR, the indefinite-length encoding of | bytestrings consists of a token #2.31 followed by a sequence | of definite-length encoded bytestrings and a stop code ) |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "bounded_bytes" Text -> Constrained -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Value ByteString VBytes Value ByteString -> (Word64, Word64) -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 0 :: Word64, Word64 64 :: Word64) distinctBytesRule :: Rule distinctBytesRule :: Rule distinctBytesRule = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|A type for distinct values. |The type parameter must support .size, for example: bytes or uint |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "distinct_bytes" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= (Value ByteString VBytes Value ByteString -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 8 :: Word64)) Constrained -> Constrained -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / (Value ByteString VBytes Value ByteString -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 16 :: Word64)) Choice Type2 -> Constrained -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / (Value ByteString VBytes Value ByteString -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 20 :: Word64)) Choice Type2 -> Constrained -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / (Value ByteString VBytes Value ByteString -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 24 :: Word64)) Choice Type2 -> Constrained -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / (Value ByteString VBytes Value ByteString -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 30 :: Word64)) Choice Type2 -> Constrained -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / (Value ByteString VBytes Value ByteString -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 32 :: Word64)) plutusV1ScriptRule :: forall era. HuddleRule "distinct_bytes" era => Proxy era -> Rule plutusV1ScriptRule :: forall era. HuddleRule "distinct_bytes" era => Proxy era -> Rule plutusV1ScriptRule Proxy era p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|Alonzo introduces Plutus smart contracts. |Plutus V1 scripts are opaque bytestrings. |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "plutus_v1_script" Text -> Rule -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"distinct_bytes" Proxy era p plutusDataRule :: forall era. (HuddleRule "plutus_data" era, HuddleRule "bounded_bytes" era, HuddleRule "big_int" era) => Proxy era -> Rule plutusDataRule :: forall era. (HuddleRule "plutus_data" era, HuddleRule "bounded_bytes" era, HuddleRule "big_int" era) => Proxy era -> Rule plutusDataRule Proxy era p = Text "plutus_data" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall constr (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_data" Proxy era p) GRuleCall -> Seal Map -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / MapChoice -> Seal Map smp [Word64 0 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_data" Proxy era p) Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_data" Proxy era p] Choice Type2 -> Seal Array -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> Seal Array sarr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_data" Proxy era p)] Choice Type2 -> Rule -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"big_int" Proxy era p Choice Type2 -> Rule -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"bounded_bytes" Proxy era p instance HuddleGroup "operational_cert" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group shelleyOperationalCertGroup @AlonzoEra instance HuddleRule "transaction_id" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule transactionIdRule @AlonzoEra instance HuddleRule "transaction_input" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. HuddleRule "transaction_id" era => Proxy era -> Rule transactionInputRule @AlonzoEra instance HuddleRule "certificate" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. (HuddleGroup "account_registration_cert" era, HuddleGroup "account_unregistration_cert" era, HuddleGroup "delegation_to_stake_pool_cert" era, HuddleGroup "pool_registration_cert" era, HuddleGroup "pool_retirement_cert" era, HuddleGroup "genesis_delegation_cert" era, HuddleGroup "move_instantaneous_rewards_cert" era) => Proxy era -> Rule certificateRule @AlonzoEra instance HuddleGroup "account_registration_cert" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group accountRegistrationCertGroup @AlonzoEra instance HuddleGroup "account_unregistration_cert" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group accountUnregistrationCertGroup @AlonzoEra instance HuddleGroup "delegation_to_stake_pool_cert" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group delegationToStakePoolCertGroup @AlonzoEra instance HuddleGroup "pool_registration_cert" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. HuddleGroup "pool_params" era => Proxy era -> Named Group poolRegistrationCertGroup @AlonzoEra instance HuddleGroup "pool_retirement_cert" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group poolRetirementCertGroup @AlonzoEra instance HuddleGroup "genesis_delegation_cert" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. (HuddleRule "genesis_hash" era, HuddleRule "genesis_delegate_hash" era) => Proxy era -> Named Group genesisDelegationCertGroup @AlonzoEra instance HuddleGroup "move_instantaneous_rewards_cert" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. HuddleRule "move_instantaneous_reward" era => Proxy era -> Named Group moveInstantaneousRewardsCertGroup @AlonzoEra instance HuddleRule "withdrawals" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule withdrawalsRule @AlonzoEra instance HuddleRule "genesis_hash" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule genesisHashRule @AlonzoEra instance HuddleRule "genesis_delegate_hash" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule genesisDelegateHashRule @AlonzoEra instance HuddleGroup "pool_params" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. (HuddleRule "relay" era, HuddleRule "pool_metadata" era) => Proxy era -> Named Group poolParamsGroup @AlonzoEra instance HuddleRule "pool_metadata" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. HuddleRule "url" era => Proxy era -> Rule poolMetadataRule @AlonzoEra instance HuddleRule "dns_name" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Rule dnsNameRule instance HuddleRule "url" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Rule urlRule instance HuddleGroup "single_host_addr" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group singleHostAddrGroup @AlonzoEra instance HuddleGroup "single_host_name" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. HuddleRule "dns_name" era => Proxy era -> Named Group singleHostNameGroup @AlonzoEra instance HuddleGroup "multi_host_name" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. HuddleRule "dns_name" era => Proxy era -> Named Group multiHostNameGroup @AlonzoEra instance HuddleRule "relay" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. (HuddleGroup "single_host_addr" era, HuddleGroup "single_host_name" era, HuddleGroup "multi_host_name" era) => Proxy era -> Rule relayRule @AlonzoEra instance HuddleRule "move_instantaneous_reward" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. HuddleRule "delta_coin" era => Proxy era -> Rule moveInstantaneousRewardRule @AlonzoEra instance HuddleRule "delta_coin" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Rule deltaCoinRule instance HuddleRule "vkeywitness" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule vkeywitnessRule @AlonzoEra instance HuddleRule "bootstrap_witness" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule bootstrapWitnessRule @AlonzoEra instance HuddleRule "auxiliary_scripts" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. HuddleRule "native_script" era => Proxy era -> Rule auxiliaryScriptsRule @AlonzoEra instance HuddleRule "auxiliary_data_array" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. HuddleRule "auxiliary_scripts" era => Proxy era -> Rule auxiliaryDataArrayRule @AlonzoEra instance HuddleRule "int64" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. (HuddleRule "min_int64" era, HuddleRule "max_int64" era) => Proxy era -> Rule int64Rule @AlonzoEra instance HuddleRule "min_int64" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Rule minInt64Rule instance HuddleRule "max_int64" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Rule maxInt64Rule instance HuddleGroup "script_pubkey" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group scriptPubkeyGroup @AlonzoEra instance HuddleGroup "script_all" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. HuddleRule "native_script" era => Proxy era -> Named Group scriptAllGroup @AlonzoEra instance HuddleGroup "script_any" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. HuddleRule "native_script" era => Proxy era -> Named Group scriptAnyGroup @AlonzoEra instance HuddleGroup "script_n_of_k" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. (HuddleRule "int64" era, HuddleRule "native_script" era) => Proxy era -> Named Group scriptNOfKGroup @AlonzoEra instance HuddleGroup "script_invalid_before" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group scriptInvalidBeforeGroup @AlonzoEra instance HuddleGroup "script_invalid_hereafter" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. Era era => Proxy era -> Named Group scriptInvalidHereafterGroup @AlonzoEra instance HuddleRule "policy_id" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "policy_id" Text -> Rule -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"script_hash" Proxy AlonzoEra p instance HuddleRule "asset_name" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Text "asset_name" Text -> Constrained -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Value ByteString VBytes Value ByteString -> (Word64, Word64) -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 0 :: Word64, Word64 32 :: Word64) instance HuddleRule "native_script" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. (HuddleGroup "script_pubkey" era, HuddleGroup "script_all" era, HuddleGroup "script_any" era, HuddleGroup "script_n_of_k" era, HuddleGroup "script_invalid_before" era, HuddleGroup "script_invalid_hereafter" era) => Proxy era -> Rule nativeScriptRule @AlonzoEra instance HuddleRule "value" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "value" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy AlonzoEra p Rule -> Seal Array -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / ArrayChoice -> Seal Array sarr [Rule -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item ArrayChoice) -> Rule -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy AlonzoEra p, GRuleCall -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (GRuleCall -> Item ArrayChoice) -> GRuleCall -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ Proxy AlonzoEra -> Value Int -> GRuleCall forall era a. (HuddleRule "policy_id" era, HuddleRule "asset_name" era, IsType0 a) => Proxy era -> a -> GRuleCall multiasset Proxy AlonzoEra p Value Int VUInt] instance HuddleRule "mint" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "mint" Text -> GRuleCall -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Proxy AlonzoEra -> Rule -> GRuleCall forall era a. (HuddleRule "policy_id" era, HuddleRule "asset_name" era, IsType0 a) => Proxy era -> a -> GRuleCall multiasset Proxy AlonzoEra p (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"int64" Proxy AlonzoEra p) instance HuddleRule "block" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|Valid blocks must also satisfy the following two constraints: | 1) the length of transaction_bodies and transaction_witness_sets must be | the same | 2) every transaction_index must be strictly smaller than the length of | transaction_bodies |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "block" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Rule -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item ArrayChoice) -> Rule -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"header" Proxy AlonzoEra p , Key "transaction_bodies" Key -> ArrayChoice -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_body" Proxy AlonzoEra p)] , Key "transaction_witness_sets" Key -> ArrayChoice -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_witness_set" Proxy AlonzoEra p)] , Key "auxiliary_data_set" Key -> MapChoice -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> MapChoice -> MapChoice mp [ Word64 0 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_index" Proxy AlonzoEra p) Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"auxiliary_data" Proxy AlonzoEra p ] , Key "invalid_transactions" Key -> ArrayChoice -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_index" Proxy AlonzoEra p)] ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "new" ] instance HuddleRule "header" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "header" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Rule -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item ArrayChoice) -> Rule -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"header_body" Proxy AlonzoEra p , Key "body_signature" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"kes_signature" Proxy AlonzoEra p ] instance HuddleRule "header_body" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "header_body" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Key "block_number" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"block_number" Proxy AlonzoEra p , Key "slot" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"slot" Proxy AlonzoEra p , Key "prev_hash" Key -> Choice Type2 -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"hash32" Proxy AlonzoEra p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil) , Key "issuer_vkey" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"vkey" Proxy AlonzoEra p , Key "vrf_vkey" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"vrf_vkey" Proxy AlonzoEra p , Key "nonce_vrf" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"vrf_cert" Proxy AlonzoEra p , Key "leader_vrf" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"vrf_cert" Proxy AlonzoEra p , Key "block_body_size" Key -> Value Int -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt , Key "block_body_hash" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"hash32" Proxy AlonzoEra p ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "merkle triple root" , Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"operational_cert" Proxy AlonzoEra p , Named Group -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Named Group -> Item ArrayChoice) -> Named Group -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"protocol_version" Proxy AlonzoEra p ] instance HuddleGroup "protocol_version" AlonzoEra where huddleGroup :: Proxy AlonzoEra -> Named Group huddleGroup = forall era. HuddleRule "major_protocol_version" era => Proxy era -> Named Group shelleyProtocolVersionGroup @AlonzoEra instance HuddleRule "major_protocol_version" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = forall era. Era era => Proxy era -> Rule majorProtocolVersionRule @AlonzoEra instance HuddleRule "transaction" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "transaction" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Rule -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item ArrayChoice) -> Rule -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_body" Proxy AlonzoEra p , Rule -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (Rule -> Item ArrayChoice) -> Rule -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_witness_set" Proxy AlonzoEra p , Value Bool -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a Value Bool VBool , Choice Type2 -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"auxiliary_data" Proxy AlonzoEra p Rule -> Value Void -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Value Void VNil) ] instance HuddleRule "transaction_body" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "transaction_body" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ Word64 -> Key idx Word64 0 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall untaggedSet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_input" Proxy AlonzoEra p) , Word64 -> Key idx Word64 1 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_output" Proxy AlonzoEra p)] , Word64 -> Key idx Word64 2 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy AlonzoEra p MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "fee" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 3 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"slot" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "time to live" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 4 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"certificate" Proxy AlonzoEra p)]) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 5 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"withdrawals" Proxy AlonzoEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 6 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"update" Proxy AlonzoEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 7 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"auxiliary_data_hash" Proxy AlonzoEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 8 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"slot" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "validity interval start" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 9 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"mint" Proxy AlonzoEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 11 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"script_data_hash" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "new" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 13 Key -> GRuleCall -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall untaggedSet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"transaction_input" Proxy AlonzoEra p)) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "collateral" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 14 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"required_signers" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "new" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 15 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"network_id" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "new" ] instance HuddleRule "transaction_output" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "transaction_output" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"address" Proxy AlonzoEra p) , Key "amount" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"value" Proxy AlonzoEra p , ArrayEntry -> ArrayEntry forall a. CanQuantify a => a -> a opt (Key "datum_hash" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"hash32" Proxy AlonzoEra p) ArrayEntry -> Comment -> ArrayEntry forall a. HasComment a => a -> Comment -> a //- Comment "new" ] instance HuddleRule "update" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "update" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"proposed_protocol_parameter_updates" Proxy AlonzoEra p) , Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"epoch" Proxy AlonzoEra p) ] instance HuddleRule "proposed_protocol_parameter_updates" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "proposed_protocol_parameter_updates" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ Word64 0 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"genesis_hash" Proxy AlonzoEra p) Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"protocol_param_update" Proxy AlonzoEra p ] instance HuddleRule "protocol_param_update" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "protocol_param_update" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 0 Key -> Value Int -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "minfee A" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 1 Key -> Value Int -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "minfee B" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 2 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 4 :: Word64)) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max block body size" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 3 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 4 :: Word64)) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max transaction size" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 4 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 2 :: Word64)) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max block header size" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 5 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "key deposit" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 6 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "pool deposit" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 7 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"epoch_interval" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "maximum epoch" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 8 Key -> Constrained -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt Value Int -> Word64 -> Constrained forall c a s. (IsSizeable a, IsSize s, IsConstrainable c a) => c -> s -> Constrained `sized` (Word64 2 :: Word64)) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "n_opt: desired number of stake pools" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 9 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"nonnegative_interval" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "pool pledge influence" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 10 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "expansion rate" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 11 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "treasury growth rate" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 12 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"unit_interval" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "decentralization constant" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 13 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"nonce" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "extra entropy" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 14 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Named Group -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleGroup name era => Proxy era -> Named Group huddleGroup @"protocol_version" Proxy AlonzoEra p)]) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "protocol version" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 16 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "min pool cost" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 17 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"coin" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "ada per utxo byte" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 18 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"cost_models" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "cost models for script languages" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 19 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"ex_unit_prices" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "execution costs" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 20 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"ex_units" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max tx ex units" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 21 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"ex_units" Proxy AlonzoEra p) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max block ex units" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 22 Key -> Value Int -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max value size" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 23 Key -> Value Int -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "collateral percentage" , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 24 Key -> Value Int -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt) MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "max collateral inputs" ] instance HuddleRule "transaction_witness_set" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "transaction_witness_set" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [ Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 0 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"vkeywitness" Proxy AlonzoEra p)] , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 1 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"native_script" Proxy AlonzoEra p)] , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 2 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"bootstrap_witness" Proxy AlonzoEra p)] , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 3 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_v1_script" Proxy AlonzoEra p)] MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "new" , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 4 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_data" Proxy AlonzoEra p)] MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "new" , Item MapChoice -> Item MapChoice forall a. CanQuantify a => a -> a opt (Item MapChoice -> Item MapChoice) -> Item MapChoice -> Item MapChoice forall a b. (a -> b) -> a -> b $ Word64 -> Key idx Word64 5 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"redeemers" Proxy AlonzoEra p MapEntry -> Comment -> MapEntry forall a. HasComment a => a -> Comment -> a //- Comment "new" ] instance HuddleRule "auxiliary_data" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|auxiliary_data supports three serialization formats: | 1. metadata (raw) - Supported since Shelley | 2. auxiliary_data_array - Array format, introduced in Allegra | 3. auxiliary_data_map - Tagged map format, introduced in Alonzo |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "auxiliary_data" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"metadata" Proxy AlonzoEra p Rule -> Rule -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"auxiliary_data_array" Proxy AlonzoEra p Choice Type2 -> Rule -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"auxiliary_data_map" Proxy AlonzoEra p instance HuddleRule "auxiliary_data_map" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "auxiliary_data_map" Text -> Tagged MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Word64 -> MapChoice -> Tagged MapChoice forall a. Word64 -> a -> Tagged a tag Word64 259 ( MapChoice -> MapChoice mp [ MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 0 Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"metadata" Proxy AlonzoEra p) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 1 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"native_script" Proxy AlonzoEra p)]) , MapEntry -> MapEntry forall a. CanQuantify a => a -> a opt (Word64 -> Key idx Word64 2 Key -> ArrayChoice -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_v1_script" Proxy AlonzoEra p)]) ] ) instance HuddleRule "script_data_hash" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|This is a hash of data which may affect evaluation of a script. | |This data consists of: | - The redeemers from the transaction_witness_set (the value of field 5). | - The datums from the transaction_witness_set (the value of field 4). | - The value in the cost_models map corresponding to the script's language | (in field 18 of protocol_param_update.) |(In the future it may contain additional protocol parameters.) | |Since this data does not exist in contiguous form inside a |transaction, it needs to be independently constructed by each |recipient. | |The bytestring which is hashed is the concatenation of three things: | redeemers || datums || language views | |The redeemers are exactly the data present in the transaction |witness set. Similarly for the datums, if present. If no datums |are provided, the middle field is omitted (i.e. it is the |empty/null bytestring). | |language views CDDL: |{ * language => script_integrity_data } | |This must be encoded canonically, using the same scheme as in |RFC7049 section 3.9: | - Maps, strings, and bytestrings must use a definite-length encoding | - Integers must be as small as possible. | - The expressions for map length, string length, and bytestring length | must be as short as possible. | - The keys in the map must be sorted as follows: | - If two keys have different lengths, the shorter one sorts earlier. | - If two keys have the same length, the one with the lower value | in (byte-wise) lexical order sorts earlier. | |For PlutusV1 (language id 0), the language view is the following: | - the value of cost_models map at key 0 is encoded as an indefinite length | list and the result is encoded as a bytestring. (our apologies) | - the language ID tag is also encoded twice. first as a uint then as | a bytestring. (our apologies) | |Note that each Plutus language represented inside a transaction |must have a cost model in the cost_models protocol parameter in |order to execute, regardless of what the script integrity data |is. In the Alonzo era, this means cost_models must have a key 0 |for Plutus V1. | |Finally, note that in the case that a transaction includes |datums but does not include any redeemers, the script data |format becomes (in hex): | [ 80 | datums | A0 ] | |corresponding to a CBOR empty list and an empty map (our |apologies). |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Proxy AlonzoEra -> Rule forall era. Era era => Proxy era -> Rule scriptDataHashRule Proxy AlonzoEra p instance HuddleRule "required_signers" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "required_signers" Text -> GRuleCall -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Rule -> GRuleCall forall a. IsType0 a => a -> GRuleCall untaggedSet (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"addr_keyhash" Proxy AlonzoEra p) instance HuddleRule "network_id" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Rule networkIdRule instance HuddleRule "plutus_v1_script" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = Proxy AlonzoEra -> Rule forall era. HuddleRule "distinct_bytes" era => Proxy era -> Rule plutusV1ScriptRule instance HuddleRule "distinct_bytes" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Rule distinctBytesRule instance HuddleRule "bounded_bytes" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Rule boundedBytesRule instance HuddleRule "big_uint" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = Proxy AlonzoEra -> Rule forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigUintRule instance HuddleRule "big_nint" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = Proxy AlonzoEra -> Rule forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigNintRule instance HuddleRule "big_int" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = Proxy AlonzoEra -> Rule forall era. HuddleRule "bounded_bytes" era => Proxy era -> Rule bigIntRule instance HuddleRule "plutus_data" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = Proxy AlonzoEra -> Rule forall era. (HuddleRule "plutus_data" era, HuddleRule "bounded_bytes" era, HuddleRule "big_int" era) => Proxy era -> Rule plutusDataRule constr :: IsType0 a => a -> GRuleCall constr :: forall a. IsType0 a => a -> GRuleCall constr = (GRef -> Rule) -> a -> GRuleCall forall t0. IsType0 t0 => (GRef -> Rule) -> t0 -> GRuleCall binding ((GRef -> Rule) -> a -> GRuleCall) -> (GRef -> Rule) -> a -> GRuleCall forall a b. (a -> b) -> a -> b $ \GRef x -> Text "constr" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Word64 -> ArrayChoice -> Tagged ArrayChoice forall a. Word64 -> a -> Tagged a tag Word64 121 (ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ GRef -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a GRef x]) Tagged ArrayChoice -> Tagged ArrayChoice -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Word64 -> ArrayChoice -> Tagged ArrayChoice forall a. Word64 -> a -> Tagged a tag Word64 122 (ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ GRef -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a GRef x]) Choice Type2 -> Tagged ArrayChoice -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Word64 -> ArrayChoice -> Tagged ArrayChoice forall a. Word64 -> a -> Tagged a tag Word64 123 (ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ GRef -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a GRef x]) Choice Type2 -> Tagged ArrayChoice -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Word64 -> ArrayChoice -> Tagged ArrayChoice forall a. Word64 -> a -> Tagged a tag Word64 124 (ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ GRef -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a GRef x]) Choice Type2 -> Tagged ArrayChoice -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Word64 -> ArrayChoice -> Tagged ArrayChoice forall a. Word64 -> a -> Tagged a tag Word64 125 (ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ GRef -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a GRef x]) Choice Type2 -> Tagged ArrayChoice -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Word64 -> ArrayChoice -> Tagged ArrayChoice forall a. Word64 -> a -> Tagged a tag Word64 126 (ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ GRef -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a GRef x]) Choice Type2 -> Tagged ArrayChoice -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Word64 -> ArrayChoice -> Tagged ArrayChoice forall a. Word64 -> a -> Tagged a tag Word64 127 (ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ GRef -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a GRef x]) Choice Type2 -> Tagged ArrayChoice -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Word64 -> ArrayChoice -> Tagged ArrayChoice forall a. Word64 -> a -> Tagged a tag Word64 102 (ArrayChoice -> ArrayChoice arr [Value Int -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a Value Int VUInt, ArrayChoice -> Item ArrayChoice forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (ArrayChoice -> Item ArrayChoice) -> ArrayChoice -> Item ArrayChoice forall a b. (a -> b) -> a -> b $ ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ GRef -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a GRef x]]) instance HuddleRule "redeemers" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "redeemers" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [Word64 0 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"redeemer" Proxy AlonzoEra p)] instance HuddleRule "redeemer" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "redeemer" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Key "tag" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"redeemer_tag" Proxy AlonzoEra p , Key "index" Key -> Value Int -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> Value Int VUInt , Key "data" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"plutus_data" Proxy AlonzoEra p , Key "ex_units" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"ex_units" Proxy AlonzoEra p ] instance HuddleRule "redeemer_tag" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|0: spend |1: mint |2: cert |3: reward |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "redeemer_tag" Text -> Choice Type2 -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Integer -> Literal int Integer 0 Literal -> Literal -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Integer -> Literal int Integer 1 Choice Type2 -> Literal -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Integer -> Literal int Integer 2 Choice Type2 -> Literal -> Choice Type2 forall a c b. (IsChoosable a c, IsChoosable b c) => a -> b -> Choice c / Integer -> Literal int Integer 3 instance HuddleRule "ex_units" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Rule exUnitsRule instance HuddleRule "ex_unit_prices" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "ex_unit_prices" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [ Key "mem_price" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"positive_interval" Proxy AlonzoEra p , Key "step_price" Key -> Rule -> ArrayEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"positive_interval" Proxy AlonzoEra p ] instance HuddleRule "positive_interval" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule = Proxy AlonzoEra -> Rule forall era. Era era => Proxy era -> Rule positiveIntervalRule instance HuddleRule "language" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra _ = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|NOTE: NEW | This is an enumeration. for now there's only one value. Plutus V1 |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "language" Text -> Literal -> Rule forall a. IsType0 a => Text -> a -> Rule =:= Integer -> Literal int Integer 0 instance HuddleRule "cost_models" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text "cost_models" Text -> MapChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= MapChoice -> MapChoice mp [Word64 0 Word64 -> MapEntry -> MapEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> Key forall r. IsType0 r => r -> Key asKey (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"language" Proxy AlonzoEra p) Key -> Rule -> MapEntry forall a me. (IsType0 a, IsEntryLike me) => Key -> a -> me ==> forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"cost_model" Proxy AlonzoEra p] instance HuddleRule "cost_model" AlonzoEra where huddleRule :: Proxy AlonzoEra -> Rule huddleRule Proxy AlonzoEra p = Text -> Rule -> Rule forall a. HasField' "description" a (Maybe Text) => Text -> a -> a comment Text [str|NOTE: NEW | The keys to the cost model map are not present in the serialization. | The values in the serialization are assumed to be ordered | lexicographically by their correpsonding key value. | See Plutus' `ParamName` for parameter ordering |] (Rule -> Rule) -> Rule -> Rule forall a b. (a -> b) -> a -> b $ Text "cost_model" Text -> ArrayChoice -> Rule forall a. IsType0 a => Text -> a -> Rule =:= ArrayChoice -> ArrayChoice arr [Word64 166 Word64 -> ArrayEntry -> ArrayEntry forall a. CanQuantify a => Word64 -> a -> a <+ Rule -> ArrayEntry forall a e. (IsType0 a, IsGroupOrArrayEntry e) => a -> e a (forall (name :: Symbol) era. HuddleRule name era => Proxy era -> Rule huddleRule @"int64" Proxy AlonzoEra p) ArrayEntry -> Word64 -> ArrayEntry forall a. CanQuantify a => a -> Word64 -> a +> Word64 166]