nanopy

class nanopy.Account(addr='', pk='', sk='')
Parameters:
  • addr (str) – address of this account

  • pk (str) – public key of this account (overrides addr)

  • sk (str) – secret key of this account (overrides addr and pk)

property addr: str

Account address

property bal: str

Account balance

change_rep(rep, work='')

Construct a signed change StateBlock with work

Parameters:
  • rep (Account) – representative account

  • work (str) – 16 hex char work for the block

Return type:

StateBlock

Returns:

a signed change StateBlock

property frontier: str

64 hex char account frontier block hash

property pk: str

64 hex char account public key

property raw_bal: int

Account raw balance [0, 2^128)

receive(hash_, raw_amt, rep=None, work='')

Construct a signed receive StateBlock with work

Parameters:
  • hash – 64 hex char receive block hash

  • raw_amt (int) – raw amount to receive

  • rep (Optional[Account]) – representative account

  • work (str) – 16 hex char work for the block

Return type:

StateBlock

Returns:

a signed receive StateBlock

property rep: Account

Account representative

send(to, raw_amt, rep=None, work='')

Construct a signed send StateBlock with work

Parameters:
  • to (Account) – Destination account

  • raw_amt (int) – raw amount to send

  • rep (Optional[Account]) – representative account

  • work (str) – 16 hex char work for the block

Return type:

StateBlock

Returns:

a signed send StateBlock

classmethod set_network(network=None, name='nano')

Set the network for all accounts

Parameters:
  • network (Network | None) – Generic Network

  • name (str) – Network name. One of banano, beta, nano

Return type:

None

property sk: str

64 hex char account secret/private key

property state: tuple[str, int, Account]

State of the account (frontier block hash, raw balance, representative)

class nanopy.Network(name='nano', prefix='nano_', difficulty='ffffffc000000000', send_difficulty='fffffff800000000', receive_difficulty='fffffe0000000000', exp=30, rpc_url='http://localhost:7076', std_unit='Ӿ')
Parameters:
  • name (str) – name of the network

  • prefix (str) – prefix for accounts in the network

  • difficulty (str) – base difficulty

  • send_difficulty (str) – difficulty for send/change blocks

  • receive_difficulty (str) – difficulty for receive/open blocks

  • exp (int) – exponent to convert between raw and base currency unit

  • rpc_url (str) – default RPC url for the network

  • std_unit (str) – symbol or label for the default currency unit

from_multiplier(multiplier)

Get difficulty from multiplier

Parameters:

multiplier (float) – positive number

Return type:

str

Returns:

16 hex char difficulty

from_pk(pk)

Get account address from public key

Parameters:

pk (str) – 64 hex char public key

Return type:

str

from_raw(raw, exp=0)

Divide raw by 10^exp

Parameters:
  • raw (int) – raw amount

  • exp (int) – positive number

Return type:

str

Returns:

raw divided by 10^exp

to_multiplier(difficulty)

Get multiplier from difficulty

Parameters:

difficulty (str) – 16 hex char difficulty

Return type:

float

Returns:

multiplier

to_pk(addr)

Get public key from account address

Parameters:

addr (str) – account address

Return type:

str

to_raw(val, exp=0)

Multiply val by 10^exp

Parameters:
  • val (str) – val

  • exp (int) – positive number

Return type:

int

Returns:

val multiplied by 10^exp

class nanopy.StateBlock(acc, rep, bal, prev, link, sig='', work='')

State block

Parameters:
  • acc (Account) – account of the block

  • rep (Account) – account representative

  • bal (int) – account raw balance

  • prev (str) – 64 hex char previous block hash

  • link (str) – 64 hex char block link

  • sig (str) – 128 hex char block signature

  • work (str) – 16 hex char block work

property dict_: dict[str, str]

block as dict

property hash_: str

64 hex char block hash

verify_signature()

Verify signature for block

Return type:

bool

Returns:

True if valid, False otherwise

work_generate(difficulty)

Compute work

Parameters:

difficulty (str) – 16 hex char difficulty

Return type:

None

work_validate(difficulty)

Check whether block has a valid work.

Parameters:
  • difficulty (str) – 16 hex char difficulty

  • multiplier – positive number, overrides difficulty

Return type:

bool

nanopy.deterministic_key(seed, i=0)

Derive deterministic private key from seed based on index i

Parameters:
  • seed (str) – 64 hex char seed

  • i (int) – index number, [0, 2^32)

Return type:

str

Returns:

64 hex char private key

nanopy.generate_mnemonic(strength=256, language='english')

Generate a BIP39 type mnemonic

Parameters:
  • strength (int) – choose from 128, 160, 192, 224, 256

  • language (str) – one of the installed word list languages

Return type:

str

Returns:

word list

nanopy.mnemonic_key(words, i=0, passphrase='', language='english')
Derive deterministic private key from mnemonic based on index i.

Requires mnemonic

Parameters:
  • words (str) – word list

  • i (int) – account index

  • passphrase (str) – passphrase to generate seed

  • language (str) – word list language

Return type:

str

Returns:

64 hex char private key