cardano-addresses-3.12.0: Library utilities for mnemonic generation and address derivation.
Copyright© 2018-2020 IOHK
LicenseApache-2.0
Safe HaskellNone
LanguageHaskell2010

Cardano.Address.Style.Byron

Description

 
Synopsis

Documentation

This module provides an implementation of:

We call Byron addresses the old address type used by Daedalus in the early days of Cardano. Using this type of addresses and underlying key scheme is now considered deprecated because of some security implications.

The internals of the Byron does not matter for the reader, but basically contains what is necessary to perform key derivation and generate addresses from a Byron type.

Byron uses WholeDomain (meaning Soft+Hardened) for account key and payment key derivation. It should use Hardened for account and Soft for payment as design, but due to the error made prior 2019 in cardano-sl implementation WholeDomain was adopted to handle all the keys. Nevertheless, it was recommended and enforced to use Hardened for account derivation and Soft for payment key derivation from 2019 onwards. To sum up both account index and payment index can assume values from 0 to 4294967295 (ie. 0xFFFFFFFF)

Byron

data Byron (depth :: Depth) key Source #

Deprecated: see Icarus

Material for deriving HD random scheme keys, which can be used for making addresses.

Since: 1.0.0

Instances

Instances details
GenMasterKey Byron Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Associated Types

type SecondFactor Byron Source #

HardDerivation Byron Source # 
Instance details

Defined in Cardano.Address.Style.Byron

HasNetworkDiscriminant Byron Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Associated Types

type NetworkDiscriminant Byron Source #

PaymentAddress Byron Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Functor (Byron depth) Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Methods

fmap :: (a -> b) -> Byron depth a -> Byron depth b #

(<$) :: a -> Byron depth b -> Byron depth a #

(Eq key, Eq (DerivationPath depth)) => Eq (Byron depth key) Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Methods

(==) :: Byron depth key -> Byron depth key -> Bool #

(/=) :: Byron depth key -> Byron depth key -> Bool #

(Show key, Show (DerivationPath depth)) => Show (Byron depth key) Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Methods

showsPrec :: Int -> Byron depth key -> ShowS #

show :: Byron depth key -> String #

showList :: [Byron depth key] -> ShowS #

Generic (Byron depth key) Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Associated Types

type Rep (Byron depth key) :: Type -> Type #

Methods

from :: Byron depth key -> Rep (Byron depth key) x #

to :: Rep (Byron depth key) x -> Byron depth key #

(NFData key, NFData (DerivationPath depth)) => NFData (Byron depth key) Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Methods

rnf :: Byron depth key -> () #

type SecondFactor Byron Source # 
Instance details

Defined in Cardano.Address.Style.Byron

type AccountIndexDerivationType Byron Source # 
Instance details

Defined in Cardano.Address.Style.Byron

type AddressIndexDerivationType Byron Source # 
Instance details

Defined in Cardano.Address.Style.Byron

type WithRole Byron Source # 
Instance details

Defined in Cardano.Address.Style.Byron

type WithRole Byron = ()
type NetworkDiscriminant Byron Source # 
Instance details

Defined in Cardano.Address.Style.Byron

type Rep (Byron depth key) Source # 
Instance details

Defined in Cardano.Address.Style.Byron

type Rep (Byron depth key) = D1 ('MetaData "Byron" "Cardano.Address.Style.Byron" "cardano-addresses-3.12.0-CXdZXYlvM2IBJZenPvTIY5" 'False) (C1 ('MetaCons "Byron" 'PrefixI 'True) (S1 ('MetaSel ('Just "getKey") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 key) :*: (S1 ('MetaSel ('Just "derivationPath") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (DerivationPath depth)) :*: S1 ('MetaSel ('Just "payloadPassphrase") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 ScrubbedBytes))))

type family DerivationPath (depth :: Depth) :: Type where ... Source #

Deprecated: see Icarus

The hierarchical derivation indices for a given level/depth.

Since: 1.0.0

$sel:payloadPassphrase:Byron :: Byron depth key -> ScrubbedBytes Source #

Deprecated: see Icarus

Used for encryption of the derivation path payload within an address.

Since: 1.0.0

$sel:derivationPath:Byron :: Byron depth key -> DerivationPath depth Source #

Deprecated: see Icarus

The address derivation indices for the level of this key.

Since: 1.0.0

$sel:getKey:Byron :: Byron depth key -> key Source #

Deprecated: see Icarus

The raw private or public key.

Since: 1.0.0

Key Derivation

genMasterKeyFromXPrv :: XPrv -> Byron 'RootK XPrv Source #

Deprecated: see Icarus

Generate a root key from a corresponding root XPrv

Since: 1.0.0

genMasterKeyFromMnemonic Source #

Arguments

:: SomeMnemonic

Some valid mnemonic sentence.

-> Byron 'RootK XPrv 

Deprecated: see Icarus

Generate a root key from a corresponding mnemonic.

Since: 1.0.0

deriveAccountPrivateKey :: Byron 'RootK XPrv -> Index 'WholeDomain 'AccountK -> Byron 'AccountK XPrv Source #

Deprecated: see Icarus

Derives an account private key from the given root private key.

Since: 1.0.0

deriveAddressPrivateKey :: Byron 'AccountK XPrv -> Index 'WholeDomain 'PaymentK -> Byron 'PaymentK XPrv Source #

Deprecated: see Icarus

Derives an address private key from the given account private key.

Since: 1.0.0

Addresses

Generating a PaymentAddress

| Possible errors from inspecting a Byron address

Since: 3.0.0

data AddressInfo Source #

The result of eitherInspectAddress for Byron addresses.

Since: 3.4.0

Constructors

AddressInfo 

Instances

Instances details
Eq AddressInfo Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Show AddressInfo Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Generic AddressInfo Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Associated Types

type Rep AddressInfo :: Type -> Type #

ToJSON AddressInfo Source # 
Instance details

Defined in Cardano.Address.Style.Byron

Methods

toJSON :: AddressInfo -> Value

toEncoding :: AddressInfo -> Encoding

toJSONList :: [AddressInfo] -> Value

toEncodingList :: [AddressInfo] -> Encoding

type Rep AddressInfo Source # 
Instance details

Defined in Cardano.Address.Style.Byron

eitherInspectAddress :: Maybe XPub -> Address -> Either ErrInspectAddress AddressInfo Source #

Determines whether an Address is a Byron address.

Returns either details about the Address, or ErrInspectAddress if it's not a valid address.

Since: 3.4.0

inspectAddress :: forall m. MonadThrow m => Maybe XPub -> Address -> m Value Source #

Determines whether an Address is a Byron address.

Returns a JSON object with information about the address, or throws ErrInspectAddress if the address isn't a byron address.

Since: 3.0.0

paymentAddress :: NetworkDiscriminant Byron -> Byron 'PaymentK XPub -> Address Source #

Convert a public key to a payment Address valid for the given network discrimination.

Since: 1.0.0

Network Discrimination

byronMainnet :: NetworkDiscriminant Byron Source #

NetworkDiscriminant for Cardano MainNet & Byron

Since: 2.0.0

byronStaging :: NetworkDiscriminant Byron Source #

NetworkDiscriminant for Cardano Staging & Byron

Since: 2.0.0

byronTestnet :: NetworkDiscriminant Byron Source #

NetworkDiscriminant for Cardano Testnet & Byron

Since: 2.0.0

byronPreprod :: NetworkDiscriminant Byron Source #

NetworkDiscriminant for Cardano Preprod & Byron

Since: 3.13.0

byronPreview :: NetworkDiscriminant Byron Source #

NetworkDiscriminant for Cardano Preview & Byron

Since: 3.13.0

Unsafe

liftXPrv Source #

Arguments

:: XPub

A root public key

-> DerivationPath depth 
-> XPrv 
-> Byron depth XPrv 

Deprecated: see Icarus

Backdoor for generating a new key from a raw XPrv.

Note that the depth is left open so that the caller gets to decide what type of key this is. This is mostly for testing, in practice, seeds are used to represent root keys, and one should genMasterKeyFromXPrv

The first argument is a type-family DerivationPath and its type depends on the depth of the key.

examples:

>>> liftXPrv rootPrv () prv
_ :: Byron RootK XPrv
>>> liftXPrv rootPrv minBound prv
_ :: Byron AccountK XPrv
>>> liftXPrv rootPrv (minBound, minBound) prv
_ :: Byron PaymentK XPrv

Since: 2.0.0

liftXPub Source #

Arguments

:: XPub

A root public key

-> DerivationPath depth 
-> XPub 
-> Byron depth XPub 

Deprecated: see Icarus

Backdoor for generating a new key from a raw XPub.

Note that the depth is left open so that the caller gets to decide what type of key this is. This is mostly for testing, in practice, seeds are used to represent root keys, and one should genMasterKeyFromXPrv

see also liftXPrv

Since: 2.0.0