cardano-addresses
Copyright2020 Input Output (Hong Kong) Ltd. 2021-2022 Input Output Global Inc. (IOG) 2023-2025 Intersect
LicenseApache-2.0
Safe HaskellNone
LanguageHaskell2010

Cardano.Address.Script

Description

 
Synopsis

Script

data Script elem #

A Script type represents multi signature script. The script embodies conditions that need to be satisfied to make it valid.

Since: 3.0.0

Instances

Instances details
FromJSON (Script KeyHash) # 
Instance details

Defined in Cardano.Address.Script

FromJSON (Script Cosigner) # 
Instance details

Defined in Cardano.Address.Script

ToJSON elem => ToJSON (Script elem) # 
Instance details

Defined in Cardano.Address.Script

Methods

toJSON :: Script elem -> Value #

toEncoding :: Script elem -> Encoding #

toJSONList :: [Script elem] -> Value #

toEncodingList :: [Script elem] -> Encoding #

omitField :: Script elem -> Bool #

NFData elem => NFData (Script elem) # 
Instance details

Defined in Cardano.Address.Script

Methods

rnf :: Script elem -> () #

Generic (Script elem) # 
Instance details

Defined in Cardano.Address.Script

Associated Types

type Rep (Script elem) 
Instance details

Defined in Cardano.Address.Script

Methods

from :: Script elem -> Rep (Script elem) x #

to :: Rep (Script elem) x -> Script elem #

Show elem => Show (Script elem) # 
Instance details

Defined in Cardano.Address.Script

Methods

showsPrec :: Int -> Script elem -> ShowS #

show :: Script elem -> String #

showList :: [Script elem] -> ShowS #

Eq elem => Eq (Script elem) # 
Instance details

Defined in Cardano.Address.Script

Methods

(==) :: Script elem -> Script elem -> Bool #

(/=) :: Script elem -> Script elem -> Bool #

type Rep (Script elem) # 
Instance details

Defined in Cardano.Address.Script

serializeScript :: Script KeyHash -> ByteString #

This function realizes what cardano-node's `Api.serialiseToCBOR script` realizes This is basically doing the symbolically following: toCBOR [0,multisigScript]

Since: 3.0.0

foldScript :: (a -> b -> b) -> b -> Script a -> b #

Script folding

Since: 3.2.0

Script template

data ScriptTemplate #

Represents the script template that show the structure of the script and determines the expected place of verification keys corresponding to given cosigners.

Since: 3.2.0

Instances

Instances details
FromJSON ScriptTemplate # 
Instance details

Defined in Cardano.Address.Script

ToJSON ScriptTemplate # 
Instance details

Defined in Cardano.Address.Script

NFData ScriptTemplate # 
Instance details

Defined in Cardano.Address.Script

Methods

rnf :: ScriptTemplate -> () #

Generic ScriptTemplate # 
Instance details

Defined in Cardano.Address.Script

Associated Types

type Rep ScriptTemplate 
Instance details

Defined in Cardano.Address.Script

type Rep ScriptTemplate = D1 ('MetaData "ScriptTemplate" "Cardano.Address.Script" "cardano-addresses-4.0.2-inplace" 'False) (C1 ('MetaCons "ScriptTemplate" 'PrefixI 'True) (S1 ('MetaSel ('Just "cosigners") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Cosigner XPub)) :*: S1 ('MetaSel ('Just "template") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Script Cosigner))))
Show ScriptTemplate # 
Instance details

Defined in Cardano.Address.Script

Eq ScriptTemplate # 
Instance details

Defined in Cardano.Address.Script

type Rep ScriptTemplate # 
Instance details

Defined in Cardano.Address.Script

type Rep ScriptTemplate = D1 ('MetaData "ScriptTemplate" "Cardano.Address.Script" "cardano-addresses-4.0.2-inplace" 'False) (C1 ('MetaCons "ScriptTemplate" 'PrefixI 'True) (S1 ('MetaSel ('Just "cosigners") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Map Cosigner XPub)) :*: S1 ('MetaSel ('Just "template") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Script Cosigner))))

newtype Cosigner #

Represents the cosigner of the script, ie., party that co-shares the script.

Since: 3.2.0

Constructors

Cosigner Word8 

Instances

Instances details
FromJSON Cosigner # 
Instance details

Defined in Cardano.Address.Script

ToJSON Cosigner # 
Instance details

Defined in Cardano.Address.Script

NFData Cosigner # 
Instance details

Defined in Cardano.Address.Script

Methods

rnf :: Cosigner -> () #

Generic Cosigner # 
Instance details

Defined in Cardano.Address.Script

Associated Types

type Rep Cosigner 
Instance details

Defined in Cardano.Address.Script

type Rep Cosigner = D1 ('MetaData "Cosigner" "Cardano.Address.Script" "cardano-addresses-4.0.2-inplace" 'True) (C1 ('MetaCons "Cosigner" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)))

Methods

from :: Cosigner -> Rep Cosigner x #

to :: Rep Cosigner x -> Cosigner #

Show Cosigner # 
Instance details

Defined in Cardano.Address.Script

Eq Cosigner # 
Instance details

Defined in Cardano.Address.Script

Ord Cosigner # 
Instance details

Defined in Cardano.Address.Script

Hashable Cosigner # 
Instance details

Defined in Cardano.Address.Script

Methods

hashWithSalt :: Int -> Cosigner -> Int #

hash :: Cosigner -> Int #

FromJSON (Script Cosigner) # 
Instance details

Defined in Cardano.Address.Script

type Rep Cosigner # 
Instance details

Defined in Cardano.Address.Script

type Rep Cosigner = D1 ('MetaData "Cosigner" "Cardano.Address.Script" "cardano-addresses-4.0.2-inplace" 'True) (C1 ('MetaCons "Cosigner" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word8)))

Validation

data ValidationLevel #

Validation level. Required level does basic check that will make sure the script is accepted in ledger. Recommended level collects a number of checks that will warn about dangerous, unwise and redundant things present in the script.

Since: 3.2.0

Instances

Instances details
NFData ValidationLevel # 
Instance details

Defined in Cardano.Address.Script

Methods

rnf :: ValidationLevel -> () #

Generic ValidationLevel # 
Instance details

Defined in Cardano.Address.Script

Associated Types

type Rep ValidationLevel 
Instance details

Defined in Cardano.Address.Script

type Rep ValidationLevel = D1 ('MetaData "ValidationLevel" "Cardano.Address.Script" "cardano-addresses-4.0.2-inplace" 'False) (C1 ('MetaCons "RequiredValidation" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RecommendedValidation" 'PrefixI 'False) (U1 :: Type -> Type))
Show ValidationLevel # 
Instance details

Defined in Cardano.Address.Script

Eq ValidationLevel # 
Instance details

Defined in Cardano.Address.Script

type Rep ValidationLevel # 
Instance details

Defined in Cardano.Address.Script

type Rep ValidationLevel = D1 ('MetaData "ValidationLevel" "Cardano.Address.Script" "cardano-addresses-4.0.2-inplace" 'False) (C1 ('MetaCons "RequiredValidation" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RecommendedValidation" 'PrefixI 'False) (U1 :: Type -> Type))

data ErrValidateScript #

Possible validation errors when validating a script

Since: 3.0.0

validateScript :: ValidationLevel -> Script KeyHash -> Either ErrValidateScript () #

Validate a Script, semantically

Since: 3.0.0

prettyErrValidateScript :: ErrValidateScript -> String #

Pretty-print a script validation error.

Since: 3.0.0

prettyErrValidateScriptTemplate :: ErrValidateScriptTemplate -> String #

Pretty-print a script template validation error.

Since: 3.2.0

Hashing

newtype ScriptHash #

A ScriptHash type represents script hash. The hash is expected to have size of 28-byte.

Since: 3.0.0

Constructors

ScriptHash 

Instances

Instances details
NFData ScriptHash # 
Instance details

Defined in Cardano.Address.Script

Methods

rnf :: ScriptHash -> () #

Generic ScriptHash # 
Instance details

Defined in Cardano.Address.Script

Associated Types

type Rep ScriptHash 
Instance details

Defined in Cardano.Address.Script

type Rep ScriptHash = D1 ('MetaData "ScriptHash" "Cardano.Address.Script" "cardano-addresses-4.0.2-inplace" 'True) (C1 ('MetaCons "ScriptHash" 'PrefixI 'True) (S1 ('MetaSel ('Just "unScriptHash") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))
Show ScriptHash # 
Instance details

Defined in Cardano.Address.Script

Eq ScriptHash # 
Instance details

Defined in Cardano.Address.Script

Ord ScriptHash # 
Instance details

Defined in Cardano.Address.Script

type Rep ScriptHash # 
Instance details

Defined in Cardano.Address.Script

type Rep ScriptHash = D1 ('MetaData "ScriptHash" "Cardano.Address.Script" "cardano-addresses-4.0.2-inplace" 'True) (C1 ('MetaCons "ScriptHash" 'PrefixI 'True) (S1 ('MetaSel ('Just "unScriptHash") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

toScriptHash :: Script KeyHash -> ScriptHash #

Computes the hash of a given script, by first serializing it to CBOR.

Since: 3.0.0

scriptHashFromBytes :: ByteString -> Maybe ScriptHash #

Construct an ScriptHash from raw ByteString (28 bytes).

Since: 3.0.0

scriptHashToText :: ScriptHash -> KeyRole -> Maybe GovernanceType -> Text #

Encode a ScriptHash to bech32 Text or hex if key role is unknown. In the case of governance role, if one wants to include additional byte as specified in CIP-0129 unless the function is called with CIP0105.

One byte is prepended to script hash only in governance context. The rules how to contruct it are summarized below

  drep       0010....
  hot        0000....    key type
  cold       0001....

  scripthash ....0011    credential type

This is on top of X_script, where X={drep, cc_hot, cc_hot}, which lacks the additional byte. In scriptHashFromText we additionally support reading legacy X which also lacks the additional byte, and has the same payload as as the corresponding X_script.

Since: 4.0.0

scriptHashFromText :: Text -> Either ErrScriptHashFromText ScriptHash #

Construct a ScriptHash from Text. It should be

Bech32 encoded text with one of following hrp:

  • script
  • drep
  • cc_cold
  • cc_hot
  • drep_script
  • cc_cold_script
  • cc_hot_script

If if hex is encountered it is converted in rawly fashion

Since: 4.0.0

prettyErrScriptHashFromText :: ErrScriptHashFromText -> String #

Possible errors when deserializing a script hash from text.

Since: 4.0.0