nanopy

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

network (Network) – network of this account

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

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

Construct a signed receive StateBlock with work

Parameters:
  • digest (str) – 64 hex char hash digest of the receive block

  • 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

property sk: str

64 hex char account secret/private key

property state: Tuple[str, int, Account]

State of the account (frontier block digest, 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 balance

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

  • link (str) – 64 hex char block link

  • sig (str) – 128 hex char block signature

  • work (str) – 16 hex char block work

property digest: str

64 hex char hash digest of block

property json: str

block as JSON string

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 to 2^32 - 1

Return type:

str

Returns:

64 hex char private key

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

Generate a BIP39 type mnemonic. Requires 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