# Addresses

Collection of base classes that implement the work with Bitcoin addresses and address keys. Supports addresses types PUBKEY, P2PKH, P2SH, P2SH-PWPKH, P2WPKH, P2WSH.

class `pybtc.``PrivateKey`(key=None, compressed=True, testnet=False)

  The class for creating private key object.

  Parameters:

  - key – (optional) private key in HEX, bytes string or WIF format. In case no key specified new random private key will be created.
  - compressed – (optional) if set to True private key corresponding compressed public key, by default set to True. Recommended use only compressed public key.
  - testnet – (optional) if set to True mean that this private key for testnet Bitcoin network.

  `compressed`

    flag for compressed type of corresponding public key (boolean)

  `hex`

    private key in HEX (string)

  `key`

    private key in bytes (bytes)

  `testnet`

    flag for testnet network private key (boolean)

  `wif`

    private key in WIF format (string)

class `pybtc.``PublicKey`(key, compressed=True, testnet=False)

  The class for public key object.

  Parameters:

  - key –

    one of this types allowed:

    - private key is instance of `PrivateKey` class
    - private key HEX encoded string
    - private key 32 bytes string
    - private key in WIF format
    - public key in HEX encoded string
    - public key [33/65] bytes string

    In case no key specified with HEX or bytes string you have to provide flag for testnet and compressed key. WIF format and `PrivateKey` instance already contain this flags. For HEX or bytes public key only testnet flag has the meaning, comressed flag is determined according to the length of key.

  - compressed – (optional) if set to True private key corresponding compressed public key, by default set to True. Recommended use only compressed public key.
  - testnet – (optional) if set to True mean that this private key for testnet Bitcoin network.

  `compressed`

    flag for compressed type of corresponding public key (boolean)

  `hex`

    public key in HEX (string)

  `key`

    public key in bytes (bytes)

  `testnet`

    flag for testnet network private key (boolean)

class `pybtc.``Address`(key=None, address_type='P2WPKH', testnet=False, compressed=True)

  The class for Address object.

  Parameters:

  - key –

    (optional) one of this types allowed:

    - private key WIF format
    - instance of `PrivateKey`
    - private key HEX encoded string
    - instance of `PublicKey`

    In case no key specified new Address will be created with random keys.

  - address_type – (optional) P2PKH, PUBKEY, P2WPKH, P2SH_P2WPKH, by default P2WPKH.
  - compressed – (optional) if set to True private key corresponding compressed public key, by default set to True. Recommended use only compressed public key.
  - testnet – (optional) if set to True mean that this private key for testnet Bitcoin network.

  In case instanse is created from WIF private key, `PrivateKey` or `PublicKey` compressed and testnet flags already contain in initial key parameter and will be ignored.

  `address`

    address in base58 or bech32 encoding (string)

  `hash`

    address hash

  `hash_hex`

    address hash HEX (string)

  `private_key`

    instance of `PrivateKey` class

  `public_key`

    instance of `PublicKey` class

  `redeem_script`

    redeeem script, only for P2SH_P2WPKH (bytes)

  `redeem_script_hex`

    redeeem script HEX, only for P2SH_P2WPKH (string)

  `script_hash`

    flag for script hash address (boolean)

  `testnet`

    flag for testnet network address (boolean)

  `type`

    flag for testnet network address (boolean)

  `witness_version`

    version of witness program for SEGWIT address (string)