beem.wallet

class beem.wallet.Wallet(steem_instance=None, *args, **kwargs)

Bases: object

The wallet is meant to maintain access to private keys for your accounts. It either uses manually provided private keys or uses a SQLite database managed by storage.py.

Parameters:
  • rpc (SteemNodeRPC) – RPC connection to a Steem node
  • keys (array, dict, str) – Predefine the wif keys to shortcut the wallet database

Three wallet operation modes are possible:

  • Wallet Database: Here, beem loads the keys from the locally stored wallet SQLite database (see storage.py). To use this mode, simply call beem.steem.Steem without the keys parameter
  • Providing Keys: Here, you can provide the keys for your accounts manually. All you need to do is add the wif keys for the accounts you want to use as a simple array using the keys parameter to beem.steem.Steem.
  • Force keys: This more is for advanced users and requires that you know what you are doing. Here, the keys parameter is a dictionary that overwrite the active, owner, posting or memo keys for any account. This mode is only used for foreign signatures!

A new wallet can be created by using:

from beem import Steem
steem = Steem()
steem.wallet.wipe(True)
steem.wallet.create("supersecret-passphrase")

This will raise beem.exceptions.WalletExists if you already have a wallet installed.

The wallet can be unlocked for signing using

from beem import Steem
steem = Steem()
steem.wallet.unlock("supersecret-passphrase")

A private key can be added by using the addPrivateKey() method that is available after unlocking the wallet with the correct passphrase:

from beem import Steem
steem = Steem()
steem.wallet.unlock("supersecret-passphrase")
steem.wallet.addPrivateKey("5xxxxxxxxxxxxxxxxxxxx")

Note

The private key has to be either in hexadecimal or in wallet import format (wif) (starting with a 5).

MasterPassword = None
addPrivateKey(wif)

Add a private key to the wallet database

Parameters:wif (str) – Private key
addToken(name, token)
changePassphrase(new_pwd)

Change the passphrase for the wallet database

clear_local_keys()

Clear all manually provided keys

clear_local_token()

Clear all manually provided token

configStorage = None
create(pwd)

Alias for newWallet()

Parameters:pwd (str) – Passphrase for the created wallet
created()

Do we have a wallet database already?

decrypt_token(enctoken)

decrypt a wif key

decrypt_wif(encwif)

decrypt a wif key

deriveChecksum(s)

Derive the checksum

encrypt_token(token)

Encrypt a token key

encrypt_wif(wif)

Encrypt a wif key

getAccount(pub)

Get the account data for a public key (first account found for this public key)

Parameters:pub (str) – Public key
getAccountFromPrivateKey(wif)

Obtain account name from private key

getAccountFromPublicKey(pub)

Obtain the first account name from public key

Parameters:pub (str) – Public key

Note: this returns only the first account with the given key. To get all accounts associated with a given public key, use getAccountsFromPublicKey().

getAccounts()

Return all accounts installed in the wallet database

getAccountsFromPublicKey(pub)

Obtain all account names associated with a public key

Parameters:pub (str) – Public key
getActiveKeyForAccount(name)

Obtain owner Active Key for an account from the wallet database

getActiveKeysForAccount(name)

Obtain list of all owner Active Keys for an account from the wallet database

getAllAccounts(pub)

Get the account data for a public key (all accounts found for this public key)

Parameters:pub (str) – Public key
getKeyForAccount(name, key_type)

Obtain key_type Private Key for an account from the wallet database

Parameters:
  • name (str) – Account name
  • key_type (str) – key type, has to be one of “owner”, “active”, “posting” or “memo”
getKeyType(account, pub)

Get key type

Parameters:
  • account (Account, dict) – Account data
  • pub (str) – Public key
getKeysForAccount(name, key_type)

Obtain a List of key_type Private Keys for an account from the wallet database

Parameters:
  • name (str) – Account name
  • key_type (str) – key type, has to be one of “owner”, “active”, “posting” or “memo”
getMemoKeyForAccount(name)

Obtain owner Memo Key for an account from the wallet database

getOwnerKeyForAccount(name)

Obtain owner Private Key for an account from the wallet database

getOwnerKeysForAccount(name)

Obtain list of all owner Private Keys for an account from the wallet database

getPostingKeyForAccount(name)

Obtain owner Posting Key for an account from the wallet database

getPostingKeysForAccount(name)

Obtain list of all owner Posting Keys for an account from the wallet database

getPrivateKeyForPublicKey(pub)

Obtain the private key for a given public key

Parameters:pub (str) – Public Key
getPublicKeys()

Return all installed public keys

getPublicNames()

Return all installed public token

getTokenForAccountName(name)

Obtain the private token for a given public name

Parameters:name (str) – Public name
keyMap = {}
keyStorage = None
keys = {}
lock()

Lock the wallet database

locked()

Is the wallet database locked?

masterpassword = None
newWallet(pwd)

Create a new wallet database

Parameters:pwd (str) – Passphrase for the created wallet
prefix
removeAccount(account)

Remove all keys associated with a given account

Parameters:account (str) – name of account to be removed
removePrivateKeyFromPublicKey(pub)

Remove a key from the wallet database

Parameters:pub (str) – Public key
removeTokenFromPublicName(name)

Remove a token from the wallet database

Parameters:name (str) – token to be removed
rpc
setKeys(loadkeys)

This method is strictly only for in memory keys that are passed to Wallet/Steem with the keys argument

setToken(loadtoken)

This method is strictly only for in memory token that are passed to Wallet/Steem with the token argument

token = {}
tokenStorage = None
tryUnlockFromEnv()

Try to fetch the unlock password from UNLOCK environment variable and keyring when no password is given.

unlock(pwd=None)

Unlock the wallet database

unlocked()

Is the wallet database unlocked?

wipe(sure=False)

Purge all data in wallet database