---
tags: Client library
order: 5
---
# Wallet Module - Pyband
This module provides the functionality to control the account.
# Private Key
Class for wrapping `SigningKey` that is used for signature creation and public key derivation.
## generate(path)
This function generates new private key with random mnemonic phrase.
> If path is not given, default to Band's HD prefix 494 and all other indexes being zeroes.
### Parameter
- **path** `<str>` optional: HD path that follows the BIP32 standard.
### Return
`Tuple[str, <PrivateKey>]`: Tuple of mnemonic phrase and `PrivateKey` instance.
### Example
``` python
from pyband.wallet import PrivateKey
mnemonic, priv = PrivateKey.generate(path="m/44'/494'/0'/0/3")
```
---
## from_mnemonic(word, path)
This function creates a `PrivateKey` instance from a given mnemonic phrase and a HD derivation path.
> If path is not given, default to Band's HD prefix 494 and all other indexes being zeroes.
### Parameter
- **words** `<str>`: Mnemonic phrase for recovers a private key.
- **path** `<str>` (optional): HD path that follows the BIP32 standard.
### Return
- `<PrivateKey>`: `PrivateKey` object.
### Example
``` python
from pyband.wallet import PrivateKey
priv = PrivateKey.from_mnemonic("test mnemonic")
```
---
## from_hex(priv)
This function creates a `PrivateKey` instance from a given hex that represent signing key.
### Parameter
- **priv** `<str>`: Hex representation of signing key.
### Return
- `<PrivateKey>`:`PrivateKey` object.
### Example
``` python
from pyband.wallet import PrivateKey
priv = PrivateKey.from_hex("2442b724db7189468f16accc0fc505f0609817eb129e13702e696d8b84609ea9")
```
---
## to_hex
This function returns a hex representation of signing key.
### Return
- `<str>`: A hex representation of signing key.
### Example
``` python
from pyband.wallet import PrivateKey
priv = PrivateKey.from_mnemonic("test mnemonic")
print(priv.to_hex())
```
### Result
```
2cb2e2d3582cebf0664d9cda0b89c5d478ae12fac19a6f4ed9c10a7406a19615
```
---
## to_public_key
This function returns a `PublicKey` that is associated with this private key.
### Return
- `<PublicKey>`: A `PublicKey` that can be used to verify the signatures made with this `PrivateKey`.
### Example
``` python
from pyband.wallet import PrivateKey
priv = PrivateKey.from_mnemonic("test mnemonic")
print(priv.to_public_key().to_hex())
```
### Result
```
02b2b0d35cb1c6d3923813c64e46a82d29e12d03288f438b9d3cf232d9a22bcb83
```
---
## sign(msg)
This function returns a signature of the associated private key. The message is signed by using the edcsa sign_deterministic function.
### Parameter
- **msg** `<bytes>`: Message that will be hashed and signed.
### Return
- `<bytes>`: A signature of this private key over the given message.
### Example
```
from pyband.wallet import PrivateKey
priv = PrivateKey.from_mnemonic("test mnemonic")
print(priv.sign(b"test message").hex())
```
### Result
```
4bbc9a7ea54b47b11c67a4074e8d9bca068cb64c788f67342c4033b1b6f0553e1bc63cdf9bc2fb6e89c1e965c1e0f0712a51c250627282309cd2fccf1470f4f6
```
---
# Public Key
Class for wrapping `VerifyKey` that is used for signature verification.
## from_acc_bech32(bech)
This function creates a `PublicKey` instance from bech32-encoded with account public key prefix `bandpub`.
### Parameter
- **bech** `<str>`: A bech32-encoded with account public key prefix.
### Return
- `PublicKey`: A `PublicKey` instance
### Exception
| Type | Description |
| -------- | -------- |
| ValueError | Invalid bech32 prefix |
### Example
``` python
from pyband.wallet import PublicKey
public_key = PublicKey.from_acc_bech32("bandpub1addwnpepqdg7nrsmuztj2re07svgcz4vuzn3de56nykdwlualepkk05txs5q6mw8s9v")
```
---
## from_val_bech32(bech)
This function creates a `PublicKey` instance from bech32-encoded with validator public key prefix `bandvaloperpub`.
### Parameter
- **bech** `<str>`: A bech32-encoded with validator public key prefix.
### Return
- `PublicKey`: A `PublicKey` instance
### Exception
| Type | Description |
| -------- | -------- |
| ValueError | Invalid bech32 prefix |
### Example
``` python
from pyband.wallet import PublicKey
public_key = PublicKey.from_val_bech32("bandvaloperpub1addwnpepqdg7nrsmuztj2re07svgcz4vuzn3de56nykdwlualepkk05txs5q69gsm29")
```
---
## from_cons_bech32(bech)
This function creates a `PublicKey` instance from a bech32-encoded with validator consensus public key prefix `bandvalconspub`.
### Parameter
- **bech** `<str>`: A bech32-encoded with validator consensus public key prefix.
### Return
- `PublicKey`: A `PublicKey` instance
### Exception
| Type | Description |
| -------- | -------- |
| ValueError | Invalid bech32 prefix |
### Example
``` python
from pyband.wallet import PublicKey
public_key = PublicKey.from_cons_bech32("bandvalconspub1addwnpepqdg7nrsmuztj2re07svgcz4vuzn3de56nykdwlualepkk05txs5q6r8ytws")
```
---
## to_hex
This function returns a hex representation of the verified key.
### Return
- `<str>`: A hex representationof the verified key.
### Example
``` python
from pyband.wallet import PublicKey
public_key = PublicKey.from_acc_bech32("bandpub1addwnpepqdg7nrsmuztj2re07svgcz4vuzn3de56nykdwlualepkk05txs5q6mw8s9v")
print(public_key.to_hex())
```
### Result
```
0351e98e1be097250f2ff4188c0aace0a716e69a992cd77f9dfe436b3e8b34280d
```
---
## to_public_key_proto()
This function returns a public key in a type protobuf.
### Return
- `<PubKeyProto>`: A public key of type protobuf (SECP256k1).
---
## to_acc_bech32
This function returns bech32-encoded with account public key prefix `bandpub`.
### Return
- `<str>`: A bech32-encoded with account public key prefix.
### Example
``` python
from pyband.wallet import PublicKey
public_key = PublicKey.from_acc_bech32("bandpub1addwnpepqdg7nrsmuztj2re07svgcz4vuzn3de56nykdwlualepkk05txs5q6mw8s9v")
print(public_key.to_acc_bech32())
```
### Result
```
bandpub1addwnpepqdg7nrsmuztj2re07svgcz4vuzn3de56nykdwlualepkk05txs5q6mw8s9v
```
---
## to_val_bech32
This function returns a bech32-encoded with validator public key prefix `bandvaloperpub`.
### Return
- `<str>`: A bech32-encoded with validator public key prefix.
### Example
``` python
from pyband.wallet import PublicKey
public_key = PublicKey.from_acc_bech32("bandpub1addwnpepqdg7nrsmuztj2re07svgcz4vuzn3de56nykdwlualepkk05txs5q6mw8s9v")
print(public_key.to_val_bech32())
```
### Result
```
bandvaloperpub1addwnpepqdg7nrsmuztj2re07svgcz4vuzn3de56nykdwlualepkk05txs5q69gsm29
```
---
## to_cons_bech32
This function returns a bech32-encoded with validator consensus public key prefix `bandvalconspub`.
### Return
- `<str>`: A bech32-encoded with validator consensus public key prefix.
### Example
``` python
from pyband.wallet import PublicKey
public_key = PublicKey.from_acc_bech32("bandpub1addwnpepqdg7nrsmuztj2re07svgcz4vuzn3de56nykdwlualepkk05txs5q6mw8s9v")
print(public_key.to_cons_bech32())
```
### Result
```
bandvalconspub1addwnpepqdg7nrsmuztj2re07svgcz4vuzn3de56nykdwlualepkk05txs5q6r8ytws
```
---
## to_address
This function returns an `Address` instance from this public key.
### Return
- `<Address>`: An `Address` instance
### Example
``` python
from pyband.wallet import PublicKey
public_key = PublicKey.from_acc_bech32("bandpub1addwnpepqdg7nrsmuztj2re07svgcz4vuzn3de56nykdwlualepkk05txs5q6mw8s9v")
print(public_key.to_address().to_hex())
```
### Result
```
8bb66ae5bb7e5ce1035557cf1c77430b987683d2
```
---
## verify(msg, sig)
This function is used to verify a signature made from the given message.
### Parameter
- **msg** `<bytes>`: A data signed by the signature, will be hashed using sha256 function.
- **sig** `<bytes`: An encoded signature
### Return
- `<bool>`: True, if the verification success.
### Exception
| Type | Description |
| -------- | -------- |
| BadSignatureError | If the signature is invalid or malformed |
### Example
``` python
from pyband.wallet import PrivateKey
priv = PrivateKey.from_mnemonic("test mnemonic")
public_key = priv.to_public_key()
msg = b"test message"
sig = priv.sign(msg)
print(public_key.verify(msg, sig))
```
### Result
```
True
```
---
# Address
Class for wrapping `Address`.
### from_acc_bech32(bech)
This function creates an `Address` instance from the given bech32-encoded with account prefix `band`.
### Parameter
- **bech**`<str>`: A bech32-encoded with account prefix.
### Return
- `<Address>`: An `Address` instance
### Exception
| Type | Description |
| -------- | -------- |
| ValueError | Invalid bech32 prefix |
### Example
``` python
from pyband.wallet import Address
address = Address.from_acc_bech32("band13eznuehmqzd3r84fkxu8wklxl22r2qfmtlth8c")
```
---
### from_val_bech32(bech)
This function creates an Address instance from the given bech32-encoded with validator prefix `bandvaloper`.
### Parameter
- **bech** `<str>`: A bech32-encoded with validator prefix.
### Return
- `<Address>`: An `Address` instance
### Exception
| Type | Description |
| -------- | -------- |
| ValueError | Invalid bech32 prefix |
### Example
``` python
from pyband.wallet import Address
address = Address.from_val_bech32("bandvaloper13eznuehmqzd3r84fkxu8wklxl22r2qfm8f05zn")
```
---
### from_cons_bech32(bech)
This function creates an Address instance from the given bech32-encoded with validator consensus prefix `bandvalcons`.
### Parameter
- **bech** `<str>`: A bech32-encoded with validator consensus prefix.
### Return
- `<Address>`: An `Address` instance
### Exception
| Type | Description |
| -------- | -------- |
| ValueError | Invalid bech32 prefix |
### Example
``` python
from pyband.wallet import Address
address = Address.from_cons_bech32("bandvalcons13eznuehmqzd3r84fkxu8wklxl22r2qfmn6ugwj")
```
---
## to_hex
This function returns a hex representation of `Address`.
### Return
- `<str>`: A hex representation of `Address`.
### Example
``` python
from pyband.wallet import Address
address = Address.from_acc_bech32("band13eznuehmqzd3r84fkxu8wklxl22r2qfmtlth8c")
print(address.to_hex())
```
### Result
```
8e453e66fb009b119ea9b1b8775be6fa9435013b
```
---
## to_acc_bech32
This function returns a bech32-encoded with account prefix band `band`.
### Return
- `<str>`: A bech32-encoded with account prefix.
### Example
``` python
from pyband.wallet import Address
address = Address.from_acc_bech32("band13eznuehmqzd3r84fkxu8wklxl22r2qfmtlth8c")
print(Address.to_acc_bech32())
```
### Result
```
band13eznuehmqzd3r84fkxu8wklxl22r2qfmtlth8c
```
---
## to_val_bech32
This function returns a bech32-encoded with validator prefix `bandvaloper`.
### Return
- `<str>`: A bech32-encoded with account prefix.
### Example
``` python
from pyband.wallet import Address
address = Address.from_acc_bech32("band13eznuehmqzd3r84fkxu8wklxl22r2qfmtlth8c")
print(address.to_val_bech32())
```
```
bandvaloper13eznuehmqzd3r84fkxu8wklxl22r2qfm8f05zn
```
---
## to_cons_bech32
This function returns a bech32-encoded with validator consensus prefix `bandvalcons`.
### Return
- `<str>`: A bech32-encoded with account prefix.
### Example
``` python
from pyband.wallet import Address
address = Address.from_acc_bech32("band13eznuehmqzd3r84fkxu8wklxl22r2qfmtlth8c")
print(address.to_cons_bech32())
```
### Result
```
bandvalcons13eznuehmqzd3r84fkxu8wklxl22r2qfmn6ugwj
```