Data Model


A Key object is a representation of a single key or address. This can get a tad murky though, as not all attributes of this object may be derived from the data provided.

As an example of a minimal amount of data provided, a Key may be instantiated with only an address specified. In that case, the user may want to check the balance of the address, or bundle it into a wallet. If the user attempted to generate a signed transaction with this object, an exception should be raised, as you cannot sign a transaction without the private key used to generate the address.


A Wallet is a collection of keys. It should expose attributes that are derived from its component keys - for instance, “balance” - but it should also expose attributes specific to the wallet itself - for instance, “generate_key”.

Care should be taken to support hierarchical deterministic wallets now or in the near future, so that a wallet may be instantiated with a seed value and keys generated through a specific algorithm.