A python library to simplify sending and receiving Nano. Also a RPC wrapper. Self fork of bananopie.
Project description
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.-1
means 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file nanohakase-0.0.5.tar.gz
.
File metadata
- Download URL: nanohakase-0.0.5.tar.gz
- Upload date:
- Size: 10.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5dfbeb52db3700098e1437e139bfb1b202bc4ad28e3b69565632cc4a180e9c49 |
|
MD5 | 88ede0b46689a6afe0435e4a9ec0b375 |
|
BLAKE2b-256 | 2f26a15f6b3cc9c588b5380235f556be60d80c2575e3d994702ce2f6fec2ceea |
File details
Details for the file nanohakase-0.0.5-py3-none-any.whl
.
File metadata
- Download URL: nanohakase-0.0.5-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 117e9c28b2d57f75e52057c5c172d9197acc703b47181174507dbcdfb562a4df |
|
MD5 | c851c7f16db4d332e59cff4b5000222e |
|
BLAKE2b-256 | d711949f95a8714b7f817da5139d181ead75c09a7b09bf23116c63a9b7f653b2 |