Nanohakase
Nanohakase is a python library for the Nano cryptocurrency. It aims to be the simplest Nano library out there, and is a self fork of Bananopie (Nanopie was taken already).
Installation
pip install nanohakase
Nanohakase is on pypi.
If you have trouble installing nanohakase because of the ed25519-blake2b dependency, try this:
(Linux Debian/Ubuntu example)
sudo apt-get install python3-dev
or it's equivalent for your OS.
Quick Start
First, start with a RPC class, for read only
from nanohakase import *
rpc = RPC("https://proxy.nanos.cc/proxy")
#check current blockcount
print(rpc.get_block_count()["count"])
#get last 10 transactions
print(rpc.get_account_history("nano_3346kkobb11qqpo17imgiybmwrgibr7yi34mwn5j6uywyke8f7fnfp94uyps", count=10)["history"])
#check balance
print(raw_to_whole(int(rpc.get_account_balance("nano_3346kkobb11qqpo17imgiybmwrgibr7yi34mwn5j6uywyke8f7fnfp94uyps")["balance"])))
For sending/receiving transactions, use a Wallet.
from nanohakase import RPC, Wallet
rpc = RPC("https://app.natrium.io/api")
my_account = Wallet(rpc, seed="seed here", index=0)
#or generate a new one
my_new_account = Wallet(rpc, index=0)
print(my_new_account.seed)
#get address of self
print(my_account.get_address())
#get balance of self
print(my_account.get_balance())
#send 1 nano to the faucet development fund
print(my_account.send("nano_3pdripjhteyymwjnaspc5nd96gyxgcdxcskiwwwoqxttnrncrxi974riid94", "1"))
#receive funds
my_account.receive_all()
#change rep
my_account.change_rep("nano_1kd4h9nqaxengni43xy9775gcag8ptw8ddjifnm77qes1efuoqikoqy5sjq3")
#change seed index
my_account.index = 2
Utility functions are also provided.
import nanohakase
#whole to raw nano
print(nanohakase.whole_to_raw("492.2"))
#raw to whole nano
print(nanohakase.raw_to_whole(1900000000000000000000000000))
Documentation
Also see the Nano RPC docs for information on what rpc call wrapper functions return.
RPC (Class)
Parameters:
rpc_url(str): IP or URL of nodeauth(str or bool, Default: False): Optional HTTP Authorization header
Sample:
rpc = RPC("https://proxy.nanos.cc/proxy")
Properties:
rpc_url(str): IP or URL of nodeauth(str or bool): Optional HTTP Authorization header
Methods:
call (Function)
RPC call. Intended for internal use, but useful for RPC calls that aren't directly implemented.
Parameters:
payload(dictionary): Payload to send to node
Sample:
rpc.call({"action": "block_count"})
Returns: Response of RPC call (JSON dictionary)
get_block_count (Function)
Get network block count.
Parameters None
Returns: See Nano RPC Docs
get_block_info (Function)
Get block info for hash.
Parameters
block(st): Block hash
Returns: See Nano RPC Docs
get_blocks (Function)
Get blocks.
Parameters
blocks(str list): List of block hashes to get information on
Returns: See Nano RPC Docs
get_blocks_info (Function)
Get blocks, with more detailed information.
Parameters
blocks(str list): List of block hashes to get information on
Returns: See Nano RPC Docs
get_representatives (Function)
Get list of network representatives and their weight
Parameters None
Returns: See Nano RPC Docs
get_representatives_online (Function)
Get list of network representatives that have recently voted
Parameters None
Returns: See Nano RPC Docs
get_account_history (Function)
Get account history (confirmed and received transaction list)
Parameters
account(str): Address of accountcount(int, Default: -1): Optional parameter to specify amount of transactions to return.-1means all, or at least as much as the node will allow
Returns: See Nano RPC Docs
get_account_info (Function)
Get account information, like height, frontier, balance, etc
Parameters
account(str): Address of account
Returns: See Nano RPC Docs
get_account_balance (Function)
Get account balance
Parameters
account(str): Address of account
Returns: See Nano RPC Docs
get_account_representative (Function)
Get account representative
Parameters
account(str): Address of account
Returns: See Nano RPC Docs
get_accounts_representatives (Function)
Get representatives of accounts
Parameters
account(str list): List of addresses
Returns: See Nano RPC Docs
get_account_weight (Function)
Get delegated weight of representative
Parameters
account(str): Address of representative
Returns: See Nano RPC Docs
get_receivable (Function)
Get receivable transactions for account
Parameters
account(str): Address of representativecount(int, Default: 20): Optional parameter to specify max amount of receivable transactions to returnthereshold(int or bool, Default: False): Optional parameter to filter out any receivable transactions with value less than the thereshold
Returns: See Nano RPC Docs
Wallet (class)
Parameters:
rpc(RPC): A RPC classseed(str or bool, Default: False): 64 character hex seed, ifFalse, will generate a seed by itself. Private keys are derived from the seed.index(int, Default: 0): Optional parameter that is the index of the seed. Any number from 0 to 4294967295. Each index of the seed is a different private key, and so different address.
Sample:
my_wallet = Wallet(RPC("https://proxy.nanos.cc/proxy"), "seed here", 0)
Properties:
rpc_url(str): IP or URL of nodeseed(str): Nano seed (64 character hex string)index(int): Seed index. Change this property to change the wallet seed index.
Methods
send_process (Function)
Internal use function to send a process RPC call
Parameters
block(dictionary): block contentsubtype(str): Send, receive, or change
Returns See Nano RPC Docs
send (Function)
High level function to send Nano
Parameters
to(str): Address to send toamount(str): Amount of Nano to send (in whole, not raw)work(str or bool, Default: False): Leave it as False to ask node to generate work (passesdo_work). Put in a work string if work generated locally
Sample:
my_wallet = Wallet(RPC("https://app.natrium.io/api"), "seed here", 0)
my_account.send("nano_3pdripjhteyymwjnaspc5nd96gyxgcdxcskiwwwoqxttnrncrxi974riid94", "1")
Returns See Nano RPC Docs
receive_specific (Function)
Receive a specific block
Parameters
hash(str): Block hash to receivework(str or bool, Default: False): Leave it as False to ask node to generate work (passesdo_work). Put in a work string if work generated locally
Returns See Nano RPC Docs
receive_all (Function)
Receive all (technically, 20) receivable transactions
Parameters None
Sample:
my_wallet = Wallet(RPC("https://proxy.nanos.cc/proxy"), "seed here", 0)
my_account.receive_all()
Returns Nothing
change_rep (Function)
Change account representative
Parameters
new_representative(str): Representative Nano address to change towork(str or bool, Default: False): Leave it as False to ask node to generate work (passesdo_work). Put in a work string if work generated locally
Sample:
my_wallet = Wallet(RPC("https://proxy.nanos.cc/proxy"), "seed here", 0)
my_account.change_rep("nano_1kd4h9nqaxengni43xy9775gcag8ptw8ddjifnm77qes1efuoqikoqy5sjq3")
Returns See Nano RPC Docs
get_address (Function)
Get address at current index of current seed
Parameters None
Returns str, Nano address
get_balance (Function)
Double wrapped function to get balance of self (see RPC's get_account_balance)
get_receivable (Function)
Double wrapped function to get receivable blocks (see RPC's get_receivable)
get_representative (Function)
Double wrapped function to get representative of self (see RPC's get_account_representative)
get_account_info (Function)
Double wrapped function to get account info of self (see RPC's get_account_info)
generate_seed (static Function)
Generate a random seed using os.urandom
Parameters None
Sample:
print(Wallet.generate_seed())
Returns 64 character hex seed
Util
Properties
NANO_DECIMALS(int): Amount of decimals that Nano has (30)PREAMBLE(str): Hex string to prepend when signing
Methods
encode_base32, decode_base32, bytes_to_hex, hex_to_bytes, random_bytes, get_private_key_from_seed, get_public_key_from_private_key, get_address_from_public_key, get_public_key_from_address, hash_block, sign are internal use Functions that are currently undocumented. Look at /nanohakase/util.py to see what they do.
whole_to_raw (Function)
Converts whole Nano to raw Nano
Parameters
whole(str): Whole amount of Nano
Returns int, that is raw amount of Nano
raw_to_whole (Function)
Converts raw Nano to whole Nano (Cuts off at 2 decimal places)
Parameters
raw(int): Raw amount of Nano
Returns int, that is whole amount of Nano
Metadata
Release files for nanohakase 0.0.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| nanohakase-0.0.5.tar.gz | 10.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nanohakase-0.0.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 19.3 kB
Release files / nanohakase-0.0.5.tar.gz
| Download URL | nanohakase-0.0.5.tar.gz |
|---|---|
| Size | 10.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5dfbeb52db3700098e1437e139bfb1b202bc4ad28e3b69565632cc4a180e9c49
|
|
BLAKE2b-256 checksum How to use checksums |
2f26a15f6b3cc9c588b5380235f556be60d80c2575e3d994702ce2f6fec2ceea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.4
|
Release files / nanohakase-0.0.5-py3-none-any.whl
| Download URL | nanohakase-0.0.5-py3-none-any.whl |
|---|---|
| Size | 8.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
117e9c28b2d57f75e52057c5c172d9197acc703b47181174507dbcdfb562a4df
|
|
BLAKE2b-256 checksum How to use checksums |
d711949f95a8714b7f817da5139d181ead75c09a7b09bf23116c63a9b7f653b2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.4
|
Security for nanohakase 0.0.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.