morley-1.4.0: Developer tools for the Michelson Language
Safe HaskellNone
LanguageHaskell2010

Tezos.Address

Contents

Description

Address in Tezos.

Synopsis

Documentation

newtype ContractHash Source #

Hash of origination command for some contract.

Constructors

ContractHash ByteString 

Instances

Instances details
Eq ContractHash Source # 
Instance details

Defined in Tezos.Address

Ord ContractHash Source # 
Instance details

Defined in Tezos.Address

Show ContractHash Source # 
Instance details

Defined in Tezos.Address

Generic ContractHash Source # 
Instance details

Defined in Tezos.Address

Associated Types

type Rep ContractHash :: Type -> Type #

NFData ContractHash Source # 
Instance details

Defined in Tezos.Address

Methods

rnf :: ContractHash -> () #

ToJSON ContractHash Source # 
Instance details

Defined in Tezos.Address

ToJSONKey ContractHash Source # 
Instance details

Defined in Tezos.Address

FromJSON ContractHash Source # 
Instance details

Defined in Tezos.Address

FromJSONKey ContractHash Source # 
Instance details

Defined in Tezos.Address

type Rep ContractHash Source # 
Instance details

Defined in Tezos.Address

type Rep ContractHash = D1 ('MetaData "ContractHash" "Tezos.Address" "morley-1.4.0-FPgS4VJ0cLmB07ubDf4i8P" 'True) (C1 ('MetaCons "ContractHash" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

data Address Source #

Data type corresponding to address structure in Tezos.

Constructors

KeyAddress KeyHash

tz address which is a hash of a public key.

ContractAddress ContractHash

KT address which corresponds to a callable contract.

Instances

Instances details
Eq Address Source # 
Instance details

Defined in Tezos.Address

Methods

(==) :: Address -> Address -> Bool #

(/=) :: Address -> Address -> Bool #

Ord Address Source # 
Instance details

Defined in Tezos.Address

Show Address Source # 
Instance details

Defined in Tezos.Address

Generic Address Source # 
Instance details

Defined in Tezos.Address

Associated Types

type Rep Address :: Type -> Type #

Methods

from :: Address -> Rep Address x #

to :: Rep Address x -> Address #

Arbitrary Address Source # 
Instance details

Defined in Tezos.Address

NFData Address Source # 
Instance details

Defined in Tezos.Address

Methods

rnf :: Address -> () #

ToJSON Address Source # 
Instance details

Defined in Tezos.Address

ToJSONKey Address Source # 
Instance details

Defined in Tezos.Address

FromJSON Address Source # 
Instance details

Defined in Tezos.Address

FromJSONKey Address Source # 
Instance details

Defined in Tezos.Address

Buildable Address Source # 
Instance details

Defined in Tezos.Address

Methods

build :: Address -> Builder #

HasCLReader Address Source # 
Instance details

Defined in Tezos.Address

IsoValue Address Source # 
Instance details

Defined in Michelson.Typed.Haskell.Value

Associated Types

type ToT Address :: T Source #

TypeHasDoc Address Source # 
Instance details

Defined in Michelson.Typed.Haskell.Doc

type Rep Address Source # 
Instance details

Defined in Tezos.Address

type Rep Address = D1 ('MetaData "Address" "Tezos.Address" "morley-1.4.0-FPgS4VJ0cLmB07ubDf4i8P" 'False) (C1 ('MetaCons "KeyAddress" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 KeyHash)) :+: C1 ('MetaCons "ContractAddress" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 ContractHash)))
type ToT Address Source # 
Instance details

Defined in Michelson.Typed.Haskell.Value

type TypeDocFieldDescriptions Address Source # 
Instance details

Defined in Michelson.Typed.Haskell.Doc

mkKeyAddress :: PublicKey -> Address Source #

Smart constructor for KeyAddress.

detGenKeyAddress :: ByteString -> Address Source #

Deterministically generate a random KeyAddress and discard its secret key.

newtype OperationHash Source #

Constructors

OperationHash 

Instances

Instances details
Eq OperationHash Source # 
Instance details

Defined in Tezos.Address

Ord OperationHash Source # 
Instance details

Defined in Tezos.Address

Show OperationHash Source # 
Instance details

Defined in Tezos.Address

Generic OperationHash Source # 
Instance details

Defined in Tezos.Address

Associated Types

type Rep OperationHash :: Type -> Type #

NFData OperationHash Source # 
Instance details

Defined in Tezos.Address

Methods

rnf :: OperationHash -> () #

type Rep OperationHash Source # 
Instance details

Defined in Tezos.Address

type Rep OperationHash = D1 ('MetaData "OperationHash" "Tezos.Address" "morley-1.4.0-FPgS4VJ0cLmB07ubDf4i8P" 'True) (C1 ('MetaCons "OperationHash" 'PrefixI 'True) (S1 ('MetaSel ('Just "unOperationHash") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ByteString)))

newtype OriginationIndex Source #

Constructors

OriginationIndex 

Instances

Instances details
Eq OriginationIndex Source # 
Instance details

Defined in Tezos.Address

Ord OriginationIndex Source # 
Instance details

Defined in Tezos.Address

Show OriginationIndex Source # 
Instance details

Defined in Tezos.Address

Generic OriginationIndex Source # 
Instance details

Defined in Tezos.Address

Associated Types

type Rep OriginationIndex :: Type -> Type #

NFData OriginationIndex Source # 
Instance details

Defined in Tezos.Address

Methods

rnf :: OriginationIndex -> () #

type Rep OriginationIndex Source # 
Instance details

Defined in Tezos.Address

type Rep OriginationIndex = D1 ('MetaData "OriginationIndex" "Tezos.Address" "morley-1.4.0-FPgS4VJ0cLmB07ubDf4i8P" 'True) (C1 ('MetaCons "OriginationIndex" 'PrefixI 'True) (S1 ('MetaSel ('Just "unOriginationIndex") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int32)))

mkContractAddress :: OperationHash -> OriginationIndex -> Address Source #

Compute address of a contract from its origination operation and origination index.

However, in real Tezos encoding of the operation is more than just OriginationOperation. There an Operation has several more meta-fields plus a big sum-type of all possible operations.

See here: https://gitlab.com/tezos/tezos/-/blob/master/src/proto_006_PsCARTHA/lib_protocol/operation_repr.ml#L78

What is important is that one (big) Operation may lead to origination of multiple contracts. That is why contract address is constructed from hash of the operation that originated and of index of the contract's origination in the execution of that operation.

In other words, contract hash is calculated as the blake2b160 (20-byte) hash of origination operation hash + int32 origination index.

In Morley we do not yet support full encoding of Tezos Operations, therefore we choose to generate contract addresses in a simplified manner.

Namely, we encode OriginationOperation as we can and concat it with the origination index. Then we take blake2b160 hash of the resulting bytes and consider it to be the contract's address.

mkContractHashHack :: ByteString -> ContractHash Source #

Create a dummy ContractHash value by hashing given ByteString.

Use in tests **only**.

Formatting

data ParseAddressError Source #

Errors that can happen during address parsing.

Constructors

ParseAddressWrongBase58Check

Address is not in Base58Check format.

ParseAddressBothFailed CryptoParseError ParseContractAddressError

Both address parsers failed with some error.

Instances

Instances details
Eq ParseAddressError Source # 
Instance details

Defined in Tezos.Address

Show ParseAddressError Source # 
Instance details

Defined in Tezos.Address

Generic ParseAddressError Source # 
Instance details

Defined in Tezos.Address

Associated Types

type Rep ParseAddressError :: Type -> Type #

NFData ParseAddressError Source # 
Instance details

Defined in Tezos.Address

Methods

rnf :: ParseAddressError -> () #

Buildable ParseAddressError Source # 
Instance details

Defined in Tezos.Address

type Rep ParseAddressError Source # 
Instance details

Defined in Tezos.Address

type Rep ParseAddressError = D1 ('MetaData "ParseAddressError" "Tezos.Address" "morley-1.4.0-FPgS4VJ0cLmB07ubDf4i8P" 'False) (C1 ('MetaCons "ParseAddressWrongBase58Check" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "ParseAddressBothFailed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 CryptoParseError) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 ParseContractAddressError)))

data ParseContractAddressError Source #

Instances

Instances details
Eq ParseContractAddressError Source # 
Instance details

Defined in Tezos.Address

Show ParseContractAddressError Source # 
Instance details

Defined in Tezos.Address

Generic ParseContractAddressError Source # 
Instance details

Defined in Tezos.Address

Associated Types

type Rep ParseContractAddressError :: Type -> Type #

NFData ParseContractAddressError Source # 
Instance details

Defined in Tezos.Address

Buildable ParseContractAddressError Source # 
Instance details

Defined in Tezos.Address

type Rep ParseContractAddressError Source # 
Instance details

Defined in Tezos.Address

type Rep ParseContractAddressError = D1 ('MetaData "ParseContractAddressError" "Tezos.Address" "morley-1.4.0-FPgS4VJ0cLmB07ubDf4i8P" 'False) (C1 ('MetaCons "ParseContractAddressWrongBase58Check" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "ParseContractAddressWrongTag" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 ByteString)) :+: C1 ('MetaCons "ParseContractAddressWrongSize" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Int))))

parseAddress :: Text -> Either ParseAddressError Address Source #

Parse an address from its human-readable textual representation used by Tezos (e. g. "tz1faswCTDciRzE4oJ9jn2Vm2dvjeyA9fUzU"). Or fail if it's invalid.

unsafeParseAddress :: HasCallStack => Text -> Address Source #

Partial version of parseAddress which assumes that the address is correct. Can be used in tests.

unsafeParseContractHash :: HasCallStack => Text -> ContractHash Source #

Parse a TK contract address, fail if address does not match the expected format.