Nano (RaiBlocks) Python Library¶
This library contains a python wrapper for the Nano (RaiBlocks) RPC server which tries to make it a little easier to work with by converting RPC responses to native python ones and exposing a pythonic api for making RPC calls.
Also included are utilities such as converting rai/xrb and interesting accounts
Nano (RaiBlocks) Python Library¶
This library contains a python wrapper for the Nano (RaiBlocks) RPC server which tries to make it a little easier to work with by converting RPC responses to native python ones and exposing a pythonic api for making RPC calls.
Also included are utilities such as converting rai/xrb and interesting accounts
Installation¶
pip install nano-python
Documentation¶
RPC client¶
You can browse the available RPC methods list or check the RPC Client API documentation for examples of usage.
Warning
The RPC client DOES NOT handle timeouts or retries automatically since this could lead to unwanted retries of requests causing double spends. Keep this in mind when implementing retries.
>>> import nano
>>> rpc = nano.rpc.Client('http://localhost:7076')
>>> rpc.version()
{
'rpc_version': 1,
'store_version': 10,
'node_vendor': 'RaiBlocks 9.0'
}
>>> rpc.peers()
{
'[::ffff:75.171.168.5]:7075': 4,
'[::ffff:108.44.38.183]:1032': 4
}
Conversion¶
>>> from nano import convert
>>> convert(12, from_unit='XRB', to_unit='raw')
Decimal('1.2E+31')
>>> convert(0.4, from_unit='krai', to_unit='XRB')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: float values can lead to unexpected
precision loss, please use a Decimal or string
eg. convert('0.4', 'krai', 'XRB')
>>> convert('0.4', from_unit='krai', to_unit='XRB')
Decimal('0.0004')
Known Accounts / Constants¶
>>> from nano import GENESIS_BLOCK_HASH
>>> GENESIS_BLOCK_HASH
'991CF190094C00F0B68E2E5F75F6BEE95A2E0BD93CEAA4A6734DB9F19B728948'
>>> from nano import KNOWN_ACCOUNT_IDS
>>> KNOWN_ACCOUNT_IDS['xrb_1ipx847tk8o46pwxt5qjdbncjqcbwcc1rrmqnkztrfjy5k7z4imsrata9est']
'Developer Fund'
>>> from nano import KNOWN_ACCOUNT_NAMES
>>> KNOWN_ACCOUNT_NAMES['Burn']
'xrb_1111111111111111111111111111111111111111111111111111hifc8npp'
Development¶
Setup¶
virtualenv venv
source venv/bin/activate
pip install -r requirements.pip -r requirements-dev.pip
python setup.py develop
Running tests¶
# regular
pytest
# coverage
./coverage
Building docs¶
cd docs
# generate once
make html
# live building
make live
Making a release¶
- Update CHANGELOG.rst
- bumpversion [major|minor|patch]
- python setup.py upload
RPC methods¶
This documents the available methods on the nano.rpc.Client
Account¶
account_balance¶
Returns how many RAW is owned and how many have not yet been received by account
nano.rpc.Client.account_balance(account)
account_block_count¶
Get number of blocks for a specific account
nano.rpc.Client.account_block_count(account)
account_create¶
Creates a new account, insert next deterministic key in wallet
nano.rpc.Client.account_create(wallet, work=True)
account_get¶
Get account number for the public key
nano.rpc.Client.account_get(key)
account_history¶
Reports send/receive information for a account
nano.rpc.Client.account_history(account, count)
account_info¶
Returns frontier, open block, change representative block, balance, last modified timestamp from local database & block count for account
nano.rpc.Client.account_info(account, representative=False, weight=False, pending=False)
account_key¶
Get the public key for account
nano.rpc.Client.account_key(account)
account_list¶
Lists all the accounts inside wallet
nano.rpc.Client.account_list(wallet)
account_move¶
Moves accounts from source to wallet
nano.rpc.Client.account_move(source, wallet, accounts)
account_remove¶
Remove account from wallet
nano.rpc.Client.account_remove(wallet, account)
account_representative¶
Returns the representative for account
nano.rpc.Client.account_representative(account)
account_representative_set¶
Sets the representative for account in wallet
nano.rpc.Client.account_representative_set(wallet, account, representative, work=None)
account_weight¶
Returns the voting weight for account
nano.rpc.Client.account_weight(account)
accounts_balances¶
Returns how many RAW is owned and how many have not yet been received by accounts list
nano.rpc.Client.accounts_balances(accounts)
accounts_create¶
Creates new accounts, insert next deterministic keys in wallet up to count
nano.rpc.Client.accounts_create(wallet, count, work=True)
accounts_frontiers¶
Returns a list of pairs of account and block hash representing the head block for accounts list
nano.rpc.Client.accounts_frontiers(accounts)
accounts_pending¶
Returns a list of block hashes which have not yet been received by these accounts
nano.rpc.Client.accounts_pending(accounts, count=None, threshold=None, source=False)
block_account¶
Returns the account containing block
nano.rpc.Client.block_account(hash)
delegators¶
Returns a list of pairs of delegator names given account a representative and its balance
nano.rpc.Client.delegators(account)
delegators_count¶
Get number of delegators for a specific representative account
nano.rpc.Client.delegators_count(account)
frontiers¶
Returns a list of pairs of account and block hash representing the head block starting at account up to count
nano.rpc.Client.frontiers(account, count)
ledger¶
Returns frontier, open block, change representative block, balance, last modified timestamp from local database & block count starting at account up to count
nano.rpc.Client.ledger(account, count=None, representative=False, weight=False, pending=False, sorting=False)
payment_wait¶
Wait for payment of amount to arrive in account or until timeout milliseconds have elapsed.
nano.rpc.Client.payment_wait(account, amount, timeout)
pending¶
Returns a list of pending block hashes with amount more or equal to threshold
nano.rpc.Client.pending(account, count=None, threshold=None, source=False)
receive¶
Receive pending block for account in wallet
nano.rpc.Client.receive(wallet, account, block, work=None)
send¶
Send amount from source in wallet to destination
nano.rpc.Client.send(wallet, source, destination, amount, work=None)
validate_account_number¶
Check whether account is a valid account number
nano.rpc.Client.validate_account_number(account)
Block¶
block¶
Retrieves a json representation of block
nano.rpc.Client.block(hash)
block_account¶
Returns the account containing block
nano.rpc.Client.block_account(hash)
block_count¶
Reports the number of blocks in the ledger and unchecked synchronizing blocks
nano.rpc.Client.block_count()
block_count_type¶
Reports the number of blocks in the ledger by type (send, receive, open, change)
nano.rpc.Client.block_count_type()
block_create¶
Creates a json representations of new block based on input data & signed with private key or account in wallet for offline signing
nano.rpc.Client.block_create(type, account, wallet=None, representative=None, key=None, destination=None, amount=None, balance=None, previous=None, source=None, work=None)
blocks¶
Retrieves a json representations of blocks
nano.rpc.Client.blocks(hashes)
blocks_info¶
Retrieves a json representations of blocks with transaction amount & block account
nano.rpc.Client.blocks_info(hashes, pending=False, source=False)
chain¶
Returns a list of block hashes in the account chain starting at block up to count
nano.rpc.Client.chain(block, count)
history¶
Reports send/receive information for a chain of blocks
nano.rpc.Client.history(hash, count)
pending_exists¶
Check whether block is pending by hash
nano.rpc.Client.pending_exists(hash)
process¶
Publish block to the network
nano.rpc.Client.process(block)
receive¶
Receive pending block for account in wallet
nano.rpc.Client.receive(wallet, account, block, work=None)
republish¶
Rebroadcast blocks starting at hash to the network
nano.rpc.Client.republish(hash, count=None, sources=None, destinations=None)
successors¶
Returns a list of block hashes in the account chain ending at block up to count
nano.rpc.Client.successors(block, count)
unchecked¶
Returns a list of pairs of unchecked synchronizing block hash and its json representation up to count
nano.rpc.Client.unchecked(count=None)
unchecked_clear¶
Clear unchecked synchronizing blocks
nano.rpc.Client.unchecked_clear()
unchecked_get¶
Retrieves a json representation of unchecked synchronizing block by hash
nano.rpc.Client.unchecked_get(hash)
unchecked_keys¶
Retrieves unchecked database keys, blocks hashes & a json representations of unchecked pending blocks starting from key up to count
nano.rpc.Client.unchecked_keys(key=None, count=None)
work_validate¶
Check whether work is valid for block
nano.rpc.Client.work_validate(work, hash)
Global¶
available_supply¶
Returns how many rai are in the public supply
nano.rpc.Client.available_supply()
block_count¶
Reports the number of blocks in the ledger and unchecked synchronizing blocks
nano.rpc.Client.block_count()
block_count_type¶
Reports the number of blocks in the ledger by type (send, receive, open, change)
nano.rpc.Client.block_count_type()
frontier_count¶
Reports the number of accounts in the ledger
nano.rpc.Client.frontier_count()
representatives¶
Returns a list of pairs of representative and its voting weight
nano.rpc.Client.representatives(count=None, sorting=False)
Node¶
bootstrap¶
Initialize bootstrap to specific IP address and port
nano.rpc.Client.bootstrap(address, port)
bootstrap_any¶
Initialize multi-connection bootstrap to random peers
nano.rpc.Client.bootstrap_any()
keepalive¶
Tells the node to send a keepalive packet to address:port
nano.rpc.Client.keepalive(address, port)
peers¶
Returns a list of pairs of peer IPv6:port and its node network version
nano.rpc.Client.peers()
receive_minimum¶
Returns receive minimum for node
nano.rpc.Client.receive_minimum()
receive_minimum_set¶
Set amount as new receive minimum for node until restart
nano.rpc.Client.receive_minimum_set(amount)
search_pending_all¶
Tells the node to look for pending blocks for any account in all available wallets
nano.rpc.Client.search_pending_all()
stop¶
Stop the node
nano.rpc.Client.stop()
unchecked¶
Returns a list of pairs of unchecked synchronizing block hash and its json representation up to count
nano.rpc.Client.unchecked(count=None)
unchecked_clear¶
Clear unchecked synchronizing blocks
nano.rpc.Client.unchecked_clear()
unchecked_get¶
Retrieves a json representation of unchecked synchronizing block by hash
nano.rpc.Client.unchecked_get(hash)
unchecked_keys¶
Retrieves unchecked database keys, blocks hashes & a json representations of unchecked pending blocks starting from key up to count
nano.rpc.Client.unchecked_keys(key=None, count=None)
version¶
Returns the node’s RPC version
nano.rpc.Client.version()
Utility¶
deterministic_key¶
Derive deterministic keypair from seed based on index
nano.rpc.Client.deterministic_key(seed, index)
key_create¶
Generates an adhoc random keypair
nano.rpc.Client.key_create()
key_expand¶
Derive public key and account number from private key
nano.rpc.Client.key_expand(key)
krai_from_raw¶
Divide a raw amount down by the krai ratio.
nano.rpc.Client.krai_from_raw(amount)
krai_to_raw¶
Multiply an krai amount by the krai ratio.
nano.rpc.Client.krai_to_raw(amount)
mrai_from_raw¶
Divide a raw amount down by the Mrai ratio.
nano.rpc.Client.mrai_from_raw(amount)
mrai_to_raw¶
Multiply an Mrai amount by the Mrai ratio.
nano.rpc.Client.mrai_to_raw(amount)
rai_from_raw¶
Divide a raw amount down by the rai ratio.
nano.rpc.Client.rai_from_raw(amount)
rai_to_raw¶
Multiply an rai amount by the rai ratio.
nano.rpc.Client.rai_to_raw(amount)
Wallet¶
account_create¶
Creates a new account, insert next deterministic key in wallet
nano.rpc.Client.account_create(wallet, work=True)
account_list¶
Lists all the accounts inside wallet
nano.rpc.Client.account_list(wallet)
account_move¶
Moves accounts from source to wallet
nano.rpc.Client.account_move(source, wallet, accounts)
account_remove¶
Remove account from wallet
nano.rpc.Client.account_remove(wallet, account)
account_representative_set¶
Sets the representative for account in wallet
nano.rpc.Client.account_representative_set(wallet, account, representative, work=None)
accounts_create¶
Creates new accounts, insert next deterministic keys in wallet up to count
nano.rpc.Client.accounts_create(wallet, count, work=True)
password_change¶
Changes the password for wallet to password
nano.rpc.Client.password_change(wallet, password)
password_enter¶
Enters the password in to wallet
nano.rpc.Client.password_enter(wallet, password)
password_valid¶
Checks whether the password entered for wallet is valid
nano.rpc.Client.password_valid(wallet)
payment_begin¶
Begin a new payment session. Searches wallet for an account that’s marked as available and has a 0 balance. If one is found, the account number is returned and is marked as unavailable. If no account is found, a new account is created, placed in the wallet, and returned.
nano.rpc.Client.payment_begin(wallet)
payment_end¶
End a payment session. Marks the account as available for use in a payment session.
nano.rpc.Client.payment_end(account, wallet)
payment_init¶
Marks all accounts in wallet as available for being used as a payment session.
nano.rpc.Client.payment_init(wallet)
receive¶
Receive pending block for account in wallet
nano.rpc.Client.receive(wallet, account, block, work=None)
search_pending¶
Tells the node to look for pending blocks for any account in wallet
nano.rpc.Client.search_pending(wallet)
send¶
Send amount from source in wallet to destination
nano.rpc.Client.send(wallet, source, destination, amount, work=None)
wallet_add¶
Add an adhoc private key key to wallet
nano.rpc.Client.wallet_add(wallet, key, work=True)
wallet_balance_total¶
Returns the sum of all accounts balances in wallet
nano.rpc.Client.wallet_balance_total(wallet)
wallet_balances¶
Returns how many rai is owned and how many have not yet been received by all accounts in wallet
nano.rpc.Client.wallet_balances(wallet)
wallet_change_seed¶
Changes seed for wallet to seed
nano.rpc.Client.wallet_change_seed(wallet, seed)
wallet_contains¶
Check whether wallet contains account
nano.rpc.Client.wallet_contains(wallet, account)
wallet_create¶
Creates a new random wallet id
nano.rpc.Client.wallet_create()
wallet_destroy¶
Destroys wallet and all contained accounts
nano.rpc.Client.wallet_destroy(wallet)
wallet_export¶
Return a json representation of wallet
nano.rpc.Client.wallet_export(wallet)
wallet_frontiers¶
Returns a list of pairs of account and block hash representing the head block starting for accounts from wallet
nano.rpc.Client.wallet_frontiers(wallet)
wallet_key_valid¶
Returns if a wallet key is valid
nano.rpc.Client.wallet_key_valid(wallet)
wallet_lock¶
Locks a wallet
nano.rpc.Client.wallet_lock(wallet)
wallet_locked¶
Checks whether wallet is locked
nano.rpc.Client.wallet_locked(wallet)
wallet_pending¶
Returns a list of block hashes which have not yet been received by accounts in this wallet
nano.rpc.Client.wallet_pending(wallet, count=None, threshold=None, source=False)
wallet_representative¶
Returns the default representative for wallet
nano.rpc.Client.wallet_representative(wallet)
wallet_representative_set¶
Sets the default representative for wallet
nano.rpc.Client.wallet_representative_set(wallet, representative)
wallet_republish¶
Rebroadcast blocks for accounts from wallet starting at frontier down to count to the network
nano.rpc.Client.wallet_republish(wallet, count)
wallet_unlock¶
Unlocks wallet using password
nano.rpc.Client.wallet_unlock(wallet, password)
Work¶
wallet_work_get¶
Returns a list of pairs of account and work from wallet
nano.rpc.Client.wallet_work_get(wallet)
work_cancel¶
Stop generating work for block
nano.rpc.Client.work_cancel(hash)
work_generate¶
Generates work for block
nano.rpc.Client.work_generate(hash)
work_get¶
Retrieves work for account in wallet
nano.rpc.Client.work_get(wallet, account)
work_peer_add¶
Add specific IP address and port as work peer for node until restart
nano.rpc.Client.work_peer_add(address, port)
work_peers¶
Retrieve work peers
nano.rpc.Client.work_peers()
work_peers_clear¶
Clear work peers node list until restart
nano.rpc.Client.work_peers_clear()
work_set¶
Set work for account in wallet
nano.rpc.Client.work_set(wallet, account, work)
work_validate¶
Check whether work is valid for block
nano.rpc.Client.work_validate(work, hash)
Utilities¶
Conversion tools¶
For converting between rai/xrb amounts.
The nano.conversion.convert()
function takes int
, Decimal
or string
arguments (no float
):
>>> from nano import convert
>>> convert(12, from_unit='XRB', to_unit='raw')
Decimal('1.2E+31')
>>> convert(0.4, from_unit='krai', to_unit='XRB')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: float values can lead to unexpected
precision loss, please use a Decimal or string
eg. convert('0.4', 'krai', 'XRB')
>>> convert('0.4', from_unit='krai', to_unit='XRB')
Decimal('0.0004')
Warning
Careful not to mix up 'XRB'
and 'xrb'
as they are different units
>>> convert(2000000000000000000000000, 'raw', 'XRB')
Decimal('0.000002')
>>> convert(2000000000000000000000000, 'raw', 'xrb')
Decimal('2')
For a dict of all available units and their amount in raw:
>>> from nano import UNITS_TO_RAW
>>> UNITS_TO_RAW
{'Grai': Decimal('1000000000000000000000000000000000'),
'Gxrb': Decimal('1000000000000000000000000000000000'),
'Mrai': Decimal('1000000000000000000000000000000'),
'Mxrb': Decimal('1000000000000000000000000000000'),
'XRB': Decimal('1000000000000000000000000000000'),
'krai': Decimal('1000000000000000000000000000'),
'kxrb': Decimal('1000000000000000000000000000'),
'mrai': Decimal('1000000000000000000000'),
'mxrb': Decimal('1000000000000000000000'),
'rai': Decimal('1000000000000000000000000'),
'raw': 1,
'urai': Decimal('1000000000000000000'),
'uxrb': Decimal('1000000000000000000'),
'xrb': Decimal('1000000000000000000000000')}
Known Accounts / Constants¶
>>> from nano import GENESIS_BLOCK_HASH, KNOWN_ACCOUNT_IDS, KNOWN_ACCOUNT_NAMES
>>> KNOWN_ACCOUNT_IDS['xrb_1ipx847tk8o46pwxt5qjdbncjqcbwcc1rrmqnkztrfjy5k7z4imsrata9est']
'Developer Fund'
>>> KNOWN_ACCOUNT_NAMES['Burn']
'xrb_1111111111111111111111111111111111111111111111111111hifc8npp'
>>> GENESIS_BLOCK_HASH
'991CF190094C00F0B68E2E5F75F6BEE95A2E0BD93CEAA4A6734DB9F19B728948'
nano package¶
Submodules¶
nano.accounts module¶
Accounts module
nano.accounts.KNOWN_ACCOUNT_IDS
: dict of account ids => names eg.
>>> KNOWN_ACCOUNT_IDS['xrb_1ipx847tk8o46pwxt5qjdbncjqcbwcc1rrmqnkztrfjy5k7z4imsrata9est']
'Developer Fund'
nano.accounts.KNOWN_ACCOUNT_NAMES
: dict of names => account ids
>>> KNOWN_ACCOUNT_NAMES['Burn']
'xrb_1111111111111111111111111111111111111111111111111111hifc8npp'
-
nano.accounts.
bytes_to_xrb
(value)[source]¶ Encodes a hex value to xrb format which uses the base32 algorithm with a custom alphabet: ‘13456789abcdefghijkmnopqrstuwxyz’
>>> xrb_encode(b'deadbeef') b'ejkp4s54eokpe'
-
nano.accounts.
hex_to_xrb
(value)[source]¶ Encodes a hex string to xrb format
>>> xrb_encode(b'deadbeef') b'utpuxur'
nano.blocks module¶
-
nano.blocks.
GENESIS_BLOCK_HASH
= '991CF190094C00F0B68E2E5F75F6BEE95A2E0BD93CEAA4A6734DB9F19B728948'¶ Genesis block hash
nano.conversion module¶
Conversion tools for converting xrb
Gxrb = 1000000000000000000000000000000000raw, 10^33
Mxrb = 1000000000000000000000000000000raw, 10^30
kxrb = 1000000000000000000000000000raw, 10^27
xrb = 1000000000000000000000000raw, 10^24
mxrb = 1000000000000000000000raw, 10^21
uxrb = 1000000000000000000raw, 10^18
1 Mxrb used to be also called 1 Mrai 1 xrb is 10^24 raw 1 raw is the smallest possible division
Mrai are XRB 1rai = 1000krai = 1,000,000mrai = 0,000001 XRB
-
nano.conversion.
convert
(value, from_unit, to_unit)[source]¶ Converts a value from from_unit units to to_unit units
Parameters: - value (int or str or decimal.Decimal) – value to convert
- from_unit (str) – unit to convert from
- to_unit (str) – unit to convert to
>>> convert(value='1.5', from_unit='xrb', to_unit='krai') Decimal('0.0015')
nano.rpc module¶
-
class
nano.rpc.
Client
(host='http://localhost:7076', session=None)[source]¶ Bases:
object
Nano (RaiBlocks) node RPC client
Parameters: - host – RPC server host, defaults to ‘http://localhost:7076’
- session – optional
requests.Session
session to use for this client
>>> from nano.rpc import Client >>> rpc = Client('http://localhost:7076') >>> rpc.version() { 'rpc_version': 1, 'store_version': 10, 'node_vendor': 'RaiBlocks 9.0' }
-
account_balance
(account)[source]¶ Returns how many RAW is owned and how many have not yet been received by account
Parameters: account (str) – Account id to return balance of Raises: nano.rpc.RPCException
>>> rpc.account_balance( ... account="xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000" ... ) { "balance": 10000, "pending": 10000 }
-
account_block_count
(account)[source]¶ Get number of blocks for a specific account
Parameters: account (str) – Account to get number of blocks for Raises: nano.rpc.RPCException
>>> rpc.account_block_count(account="xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3") 19
-
account_create
(wallet, work=True)[source]¶ Creates a new account, insert next deterministic key in wallet
Parameters: Raises: >>> rpc.account_create( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000"
-
account_get
(key)[source]¶ Get account number for the public key
Parameters: key (str) – Public key to get account for Raises: nano.rpc.RPCException
>>> rpc.account_get( ... key="3068BB1CA04525BB0E416C485FE6A67FD52540227D267CC8B6E8DA958A7FA039" ... ) "xrb_1e5aqegc1jb7qe964u4adzmcezyo6o146zb8hm6dft8tkp79za3sxwjym5rx"
-
account_history
(account, count)[source]¶ Reports send/receive information for a account
Parameters: Raises: >>> rpc.account_history( ... account="xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", ... count=1 ... ) [ { "hash": "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", "type": "receive", "account": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "amount": 100000000000000000000000000000000 } ]
-
account_info
(account, representative=False, weight=False, pending=False)[source]¶ Returns frontier, open block, change representative block, balance, last modified timestamp from local database & block count for account
Parameters: Raises: >>> rpc.account_info( ... account="xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3" ... ) { "frontier": "FF84533A571D953A596EA401FD41743AC85D04F406E76FDE4408EAED50B473C5", "open_block": "991CF190094C00F0B68E2E5F75F6BEE95A2E0BD93CEAA4A6734DB9F19B728948", "representative_block": "991CF190094C00F0B68E2E5F75F6BEE95A2E0BD93CEAA4A6734DB9F19B728948", "balance": "235580100176034320859259343606608761791", "modified_timestamp": "1501793775", "block_count": "33" }
-
account_key
(account)[source]¶ Get the public key for account
Parameters: account (str) – Account to get public key for Raises: nano.rpc.RPCException
>>> rpc.account_key( ... account="xrb_1e5aqegc1jb7qe964u4adzmcezyo6o146zb8hm6dft8tkp79za3sxwjym5rx" ... ) "3068BB1CA04525BB0E416C485FE6A67FD52540227D267CC8B6E8DA958A7FA039"
-
account_list
(wallet)[source]¶ Lists all the accounts inside wallet
Parameters: wallet (str) – Wallet to get account list for Raises: nano.rpc.RPCException
>>> rpc.account_list( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) [ "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000" ]
-
account_move
(source, wallet, accounts)[source]¶ Moves accounts from source to wallet
Parameters: Raises: >>> rpc.account_move( ... source="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... accounts=[ ... "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000" ... ] ... ) True
-
account_remove
(wallet, account)[source]¶ Remove account from wallet
Parameters: Raises: >>> rpc.account_remove( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... account="xrb_39a73oy5ungrhxy5z5oao1xso4zo7dmgpjd4u74xcrx3r1w6rtazuouw6qfi" ... ) True
-
account_representative
(account)[source]¶ Returns the representative for account
Parameters: account (str) – Account to get representative for Raises: nano.rpc.RPCException
>>> rpc.account_representative( ... account="xrb_39a73oy5ungrhxy5z5oao1xso4zo7dmgpjd4u74xcrx3r1w6rtazuouw6qfi" ) "xrb_16u1uufyoig8777y6r8iqjtrw8sg8maqrm36zzcm95jmbd9i9aj5i8abr8u5"
-
account_representative_set
(wallet, account, representative, work=None)[source]¶ Sets the representative for account in wallet
Parameters: Raises: >>> rpc.account_representative_set( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... account="xrb_39a73oy5ungrhxy5z5oao1xso4zo7dmgpjd4u74xcrx3r1w6rtazuouw6qfi", ... representative="xrb_16u1uufyoig8777y6r8iqjtrw8sg8maqrm36zzcm95jmbd9i9aj5i8abr8u5" ... ) "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F"
-
account_weight
(account)[source]¶ Returns the voting weight for account
Parameters: account (str) – Account to get voting weight for Raises: nano.rpc.RPCException
>>> rpc.account_weight( ... account="xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000" ... ) 10000
-
accounts_balances
(accounts)[source]¶ Returns how many RAW is owned and how many have not yet been received by accounts list
Parameters: accounts (list of str) – list of accounts to return balances for Raises: nano.rpc.RPCException
>>> rpc.accounts_balances( ... accounts=[ ... "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", ... "xrb_3i1aq1cchnmbn9x5rsbap8b15akfh7wj7pwskuzi7ahz8oq6cobd99d4r3b7" ... ] ... ) { "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000": { "balance": 10000, "pending": 10000 }, "xrb_3i1aq1cchnmbn9x5rsbap8b15akfh7wj7pwskuzi7ahz8oq6cobd99d4r3b7": { "balance": 10000000, "pending": 0 } }
-
accounts_create
(wallet, count, work=True)[source]¶ Creates new accounts, insert next deterministic keys in wallet up to count
Parameters: Raises: >>> rpc.accounts_create( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... count=2 ... ) [ "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "xrb_1e5aqegc1jb7qe964u4adzmcezyo6o146zb8hm6dft8tkp79za3s00000000" ]
-
accounts_frontiers
(accounts)[source]¶ Returns a list of pairs of account and block hash representing the head block for accounts list
Parameters: accounts (list of str) – Accounts to return frontier blocks for Raises: nano.rpc.RPCException
>>> rpc.accounts_frontiers( ... accounts=[ ... "xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3", ... "xrb_3i1aq1cchnmbn9x5rsbap8b15akfh7wj7pwskuzi7ahz8oq6cobd99d4r3b7" ... ] ... ) { "xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3": "791AF413173EEE674A6FCF633B5DFC0F3C33F397F0DA08E987D9E0741D40D81A", "xrb_3i1aq1cchnmbn9x5rsbap8b15akfh7wj7pwskuzi7ahz8oq6cobd99d4r3b7": "6A32397F4E95AF025DE29D9BF1ACE864D5404362258E06489FABDBA9DCCC046F" }
-
accounts_pending
(accounts, count=None, threshold=None, source=False)[source]¶ Returns a list of block hashes which have not yet been received by these accounts
Parameters: Raises: >>> rpc.accounts_pending( ... accounts=[ ... "xrb_1111111111111111111111111111111111111111111111111117353trpda", ... "xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3" ... ], ... count=1 ... ) { "xrb_1111111111111111111111111111111111111111111111111117353trpda": [ "142A538F36833D1CC78B94E11C766F75818F8B940771335C6C1B8AB880C5BB1D" ], "xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3": [ "4C1FEEF0BEA7F50BE35489A1233FE002B212DEA554B55B1B470D78BD8F210C74" ] }
-
available_supply
()[source]¶ Returns how many rai are in the public supply
Raises: nano.rpc.RPCException
>>> rpc.available_supply() 10000
-
block
(hash)[source]¶ Retrieves a json representation of block
Parameters: hash (str) – Hash of block to return representation for Raises: nano.rpc.RPCException
>>> rpc.block( ... hash="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) { "account": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "work": "0000000000000000", "source": "FA5B51D063BADDF345EFD7EF0D3C5FB115C85B1EF4CDE89D8B7DF3EAF60A04A4", "representative": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "open" }
-
block_account
(hash)[source]¶ Returns the account containing block
Parameters: hash (str) – Hash of the block to return account for Raises: nano.rpc.RPCException
>>> rpc.block_account( ... hash="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000"
-
block_count
()[source]¶ Reports the number of blocks in the ledger and unchecked synchronizing blocks
Raises: nano.rpc.RPCException
>>> rpc.block_count() { "count": 1000, "unchecked": 10 }
-
block_count_type
()[source]¶ Reports the number of blocks in the ledger by type (send, receive, open, change)
Raises: nano.rpc.RPCException
>>> rpc.block_count_type() { "send": 1000, "receive": 900, "open": 100, "change": 50 }
-
block_create
(type, account, wallet=None, representative=None, key=None, destination=None, amount=None, balance=None, previous=None, source=None, work=None)[source]¶ Creates a json representations of new block based on input data & signed with private key or account in wallet for offline signing
Parameters: - type (str) – Type of block to create one of open, receive, change, send
- account (str) – Account for the signed block
- wallet (str) – Wallet to use
- representative (str) – Representative account for open and change blocks
- key (str) – Private key to use to open account for open blocks
- destination (str) – Destination account for send blocks
- amount (int) – Amount in raw for send blocks
- balance (int) – Balance in raw of account for send blocks
- previous (str) – Previous block hash for receive, send and change blocks
- source (str) – Source block for open and receive blocks
- work (str) – Work value to use for block from external source
Raises: >>> rpc.block_create( ... type="open", ... account="xrb_3kdbxitaj7f6mrir6miiwtw4muhcc58e6tn5st6rfaxsdnb7gr4roudwn951", ... source="19D3D919475DEED4696B5D13018151D1AF88B2BD3BCFF048B45031C1F36D1858", ... representative="xrb_1hza3f7wiiqa7ig3jczyxj5yo86yegcmqk3criaz838j91sxcckpfhbhhra1", ... key="0000000000000000000000000000000000000000000000000000000000000001" ... ) { "block": { "account": "xrb_3kdbxitaj7f6mrir6miiwtw4muhcc58e6tn5st6rfaxsdnb7gr4roudwn951", "representative": "xrb_1hza3f7wiiqa7ig3jczyxj5yo86yegcmqk3criaz838j91sxcckpfhbhhra1", "signature": "5974324F8CC42DA56F62FC212A17886BDCB18DE363D04DA84EEDC99CB4A33919D14A2CF9DE9D534FAA6D0B91D01F0622205D898293525E692586C84F2DCF9208", "source": "19D3D919475DEED4696B5D13018151D1AF88B2BD3BCFF048B45031C1F36D1858", "type": "open", "work": "4ec76c9bda2325ed" }, "hash": "F47B23107E5F34B2CE06F562B5C435DF72A533251CB414C51B2B62A8F63A00E4" }
>>> rpc.block_create( ... type="receive", ... account="xrb_3kdbxitaj7f6mrir6miiwtw4muhcc58e6tn5st6rfaxsdnb7gr4roudwn951", ... previous="F47B23107E5F34B2CE06F562B5C435DF72A533251CB414C51B2B62A8F63A00E4", ... source="19D3D919475DEED4696B5D13018151D1AF88B2BD3BCFF048B45031C1F36D1858", ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... ) { "block": { "previous": "F47B23107E5F34B2CE06F562B5C435DF72A533251CB414C51B2B62A8F63A00E4", "signature": "A13FD22527771667D5DFF33D69787D734836A3561D8A490C1F4917A05D77EA09860461D5FBFC99246A4EAB5627F119AD477598E22EE021C4711FACF4F3C80D0E", "source": "19D3D919475DEED4696B5D13018151D1AF88B2BD3BCFF048B45031C1F36D1858", "type": "receive", "work": "6acb5dd43a38d76a" }, "hash": "314BA8D9057678C1F53371C2DB3026C1FAC01EC8E7802FD9A2E8130FC523429E" }
>>> rpc.block_create( ... type="send", ... account="xrb_3kdbxitaj7f6mrir6miiwtw4muhcc58e6tn5st6rfaxsdnb7gr4roudwn951", ... amount=10000000000000000000000000000000, ... balance=20000000000000000000000000000000, ... destination="xrb_18gmu6engqhgtjnppqam181o5nfhj4sdtgyhy36dan3jr9spt84rzwmktafc", ... previous="314BA8D9057678C1F53371C2DB3026C1FAC01EC8E7802FD9A2E8130FC523429E", ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... work="478563b2d9facfd4", ... ) { "block": { "balance": "0000007E37BE2022C0914B2680000000", "destination": "xrb_18gmu6engqhgtjnppqam181o5nfhj4sdtgyhy36dan3jr9spt84rzwmktafc", "previous": "314BA8D9057678C1F53371C2DB3026C1FAC01EC8E7802FD9A2E8130FC523429E", "signature": "F19CA177EFA8692C8CBF7478CE3213F56E4A85DF760DA7A9E69141849831F8FD79BA9ED89CEC807B690FB4AA42D5008F9DBA7115E63C935401F1F0EFA547BC00", "type": "send", "work": "478563b2d9facfd4" }, "hash": "F958305C0FF0551421D4ABEDCCF302079D020A0A3833E33F185E2B0415D4567A" }
>>> rpc.block_create( ... type="change", ... account="xrb_3kdbxitaj7f6mrir6miiwtw4muhcc58e6tn5st6rfaxsdnb7gr4roudwn951", ... representative="xrb_18gmu6engqhgtjnppqam181o5nfhj4sdtgyhy36dan3jr9spt84rzwmktafc", ... previous="F958305C0FF0551421D4ABEDCCF302079D020A0A3833E33F185E2B0415D4567A", ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... ) { "block": { "previous": "F958305C0FF0551421D4ABEDCCF302079D020A0A3833E33F185E2B0415D4567A", "representative": "xrb_18gmu6engqhgtjnppqam181o5nfhj4sdtgyhy36dan3jr9spt84rzwmktafc", "signature": "98B4D56881D9A88B170A6B2976AE21900C26A27F0E2C338D93FDED56183B73D19AA5BEB48E43FCBB8FF8293FDD368CEF50600FECEFD490A0855ED702ED209E04", "type": "change", "work": "55e5b7a83edc3f4f" }, "hash": "654FA425CEBFC9E7726089E4EDE7A105462D93DBC915FFB70B50909920A7D286" }
-
blocks
(hashes)[source]¶ Retrieves a json representations of blocks
Parameters: hashes (list of str) – List of block hashes to return Raises: nano.rpc.RPCException
>>> rpc.blocks( ... hashes=["000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F"] ... ) { "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F": { "account": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "work": "0000000000000000", "source": "FA5B51D063BADDF345EFD7EF0D3C5FB115C85B1EF4CDE89D8B7DF3EAF60A04A4", "representative": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "open" } }
-
blocks_info
(hashes, pending=False, source=False)[source]¶ Retrieves a json representations of blocks with transaction amount & block account
Parameters: Raises: >>> rpc.blocks_info(hashes=["000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F"]) { "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F": { "block_account": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "amount": "1000000000000000000000000000000", "contents": { "account": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "work": "0000000000000000", "source": "FA5B51D063BADDF345EFD7EF0D3C5FB115C85B1EF4CDE89D8B7DF3EAF60A04A4", "representative": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "open" } } }
-
bootstrap
(address, port)[source]¶ Initialize bootstrap to specific IP address and port
Parameters: Raises: >>> rpc.bootstrap(address="::ffff:138.201.94.249", port="7075") True
-
bootstrap_any
()[source]¶ Initialize multi-connection bootstrap to random peers
Raises: nano.rpc.RPCException
>>> rpc.bootstrap_any() True
-
call
(action, params=None)[source]¶ Makes an RPC call to the server and returns the json response
Parameters: Raises: Raises: requests.exceptions.RequestException
>>> rpc.call( ... action='account_balance', ... params={ ... 'account': xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3' ... }) {'balance': '325586539664609129644855132177', 'pending': '2309370940000000000000000000000000'}
-
chain
(block, count)[source]¶ Returns a list of block hashes in the account chain starting at block up to count
Parameters: Raises: >>> rpc.chain( ... block="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... count=1 ... ) [ "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ]
-
delegators
(account)[source]¶ Returns a list of pairs of delegator names given account a representative and its balance
Parameters: account (str) – Account to return delegators for Raises: nano.rpc.RPCException
>>> rpc.delegators( ... account="xrb_1111111111111111111111111111111111111111111111111117353trpda" ... ) { "xrb_13bqhi1cdqq8yb9szneoc38qk899d58i5rcrgdk5mkdm86hekpoez3zxw5sd": "500000000000000000000000000000000000", "xrb_17k6ug685154an8gri9whhe5kb5z1mf5w6y39gokc1657sh95fegm8ht1zpn": "961647970820730000000000000000000000" }
-
delegators_count
(account)[source]¶ Get number of delegators for a specific representative account
Parameters: account (str) – Account to get number of delegators for Raises: nano.rpc.RPCException
>>> rpc.delegators_count( ... account="xrb_1111111111111111111111111111111111111111111111111117353trpda" ... ) 2
-
deterministic_key
(seed, index)[source]¶ Derive deterministic keypair from seed based on index
Parameters: Raises: >>> rpc.deterministic_key( ... seed="0000000000000000000000000000000000000000000000000000000000000000", ... index=0 ... ) { "private": "9F0E444C69F77A49BD0BE89DB92C38FE713E0963165CCA12FAF5712D7657120F", "public": "C008B814A7D269A1FA3C6528B19201A24D797912DB9996FF02A1FF356E45552B", "account": "xrb_3i1aq1cchnmbn9x5rsbap8b15akfh7wj7pwskuzi7ahz8oq6cobd99d4r3b7" }
-
frontier_count
()[source]¶ Reports the number of accounts in the ledger
Raises: nano.rpc.RPCException
>>> rpc.frontier_count() 1000
-
frontiers
(account, count)[source]¶ Returns a list of pairs of account and block hash representing the head block starting at account up to count
Parameters: Raises: >>> rpc.frontiers( ... account="xrb_1111111111111111111111111111111111111111111111111111hifc8npp", ... count=1 ... ) { "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000": "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" }
-
history
(hash, count)[source]¶ Reports send/receive information for a chain of blocks
Parameters: Raises: >>> rpc.history( ... hash="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... count=1 ... ) [ { "hash": "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", "type": "receive", "account": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "amount": "100000000000000000000000000000000" } ]
-
keepalive
(address, port)[source]¶ Tells the node to send a keepalive packet to address:port
Parameters: Raises: >>> rpc.keepalive(address="::ffff:192.168.1.1", port=1024) True
-
key_create
()[source]¶ Generates an adhoc random keypair
Raises: nano.rpc.RPCException
>>> rpc.key_create() { "private": "781186FB9EF17DB6E3D1056550D9FAE5D5BBADA6A6BC370E4CBB938B1DC71DA3", "public": "3068BB1CA04525BB0E416C485FE6A67FD52540227D267CC8B6E8DA958A7FA039", "account": "xrb_1e5aqegc1jb7qe964u4adzmcezyo6o146zb8hm6dft8tkp79za3sxwjym5rx" }
-
key_expand
(key)[source]¶ Derive public key and account number from private key
Parameters: key (str) – Private key to generate account and public key of Raises: nano.rpc.RPCException
>>> rpc.key_expand( key="781186FB9EF17DB6E3D1056550D9FAE5D5BBADA6A6BC370E4CBB938B1DC71DA3" ) { "private": "781186FB9EF17DB6E3D1056550D9FAE5D5BBADA6A6BC370E4CBB938B1DC71DA3", "public": "3068BB1CA04525BB0E416C485FE6A67FD52540227D267CC8B6E8DA958A7FA039", "account": "xrb_1e5aqegc1jb7qe964u4adzmcezyo6o146zb8hm6dft8tkp79za3sxwjym5rx" }
-
krai_from_raw
(amount)[source]¶ Divide a raw amount down by the krai ratio.
Parameters: amount (int) – Amount in raw to convert to krai Raises: nano.rpc.RPCException
>>> rpc.krai_from_raw(amount=1000000000000000000000000000) 1
-
krai_to_raw
(amount)[source]¶ Multiply an krai amount by the krai ratio.
Parameters: amount (int) – Amount in krai to convert to raw Raises: nano.rpc.RPCException
>>> rpc.krai_to_raw(amount=1) 1000000000000000000000000000
-
ledger
(account, count=None, representative=False, weight=False, pending=False, sorting=False)[source]¶ Returns frontier, open block, change representative block, balance, last modified timestamp from local database & block count starting at account up to count
Parameters: - account (str) – Account to return blocks for
- count (int) – Max number of blocks to return
- representative (bool) – If true, returns the representative as well
- weight (bool) – If true, returns the voting weight as well
- pending (bool) – If true, returns the pending amount as well
- sorting (bool) – If true, sorts the response by balance
Raises: >>> rpc.ledger( ... account="xrb_1111111111111111111111111111111111111111111111111111hifc8npp", ... count=1 ... ) { "xrb_11119gbh8hb4hj1duf7fdtfyf5s75okzxdgupgpgm1bj78ex3kgy7frt3s9n": { "frontier": "E71AF3E9DD86BBD8B4620EFA63E065B34D358CFC091ACB4E103B965F95783321", "open_block": "643B77F1ECEFBDBE1CC909872964C1DBBE23A6149BD3CEF2B50B76044659B60F", "representative_block": "643B77F1ECEFBDBE1CC909872964C1DBBE23A6149BD3CEF2B50B76044659B60F", "balance": 0, "modified_timestamp": 1511476234, "block_count": 2 } }
-
mrai_from_raw
(amount)[source]¶ Divide a raw amount down by the Mrai ratio.
Parameters: amount (int) – Amount in raw to convert to Mrai Raises: nano.rpc.RPCException
>>> rpc.mrai_from_raw(amount=1000000000000000000000000000000) 1
-
mrai_to_raw
(amount)[source]¶ Multiply an Mrai amount by the Mrai ratio.
Parameters: amount (int) – Amount in Mrai to convert to raw Raises: nano.rpc.RPCException
>>> rpc.mrai_to_raw(amount=1) 1000000000000000000000000000000
-
password_change
(wallet, password)[source]¶ Changes the password for wallet to password
Parameters: Raises: >>> rpc.password_change( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... password="test" ... ) True
-
password_enter
(wallet, password)[source]¶ Enters the password in to wallet
Parameters: Raises: >>> rpc.password_enter( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... password="test" ... ) True
-
password_valid
(wallet)[source]¶ Checks whether the password entered for wallet is valid
Parameters: wallet (str) – Wallet to check password for Raises: nano.rpc.RPCException
>>> rpc.password_valid( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) True
-
payment_begin
(wallet)[source]¶ Begin a new payment session. Searches wallet for an account that’s marked as available and has a 0 balance. If one is found, the account number is returned and is marked as unavailable. If no account is found, a new account is created, placed in the wallet, and returned.
Parameters: wallet (str) – Wallet to begin payment in Raises: nano.rpc.RPCException
>>> rpc.payment_begin( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000"
-
payment_end
(account, wallet)[source]¶ End a payment session. Marks the account as available for use in a payment session.
Parameters: Raises: >>> rpc.payment_end( ... account="xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", ... wallet="FFFD1BAEC8EC20814BBB9059B393051AAA8380F9B5A2E6B2489A277D81789EEE" ... ) True
-
payment_init
(wallet)[source]¶ Marks all accounts in wallet as available for being used as a payment session.
Parameters: wallet (str) – Wallet to init payment in Raises: nano.rpc.RPCException
>>> rpc.payment_init( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) True
-
payment_wait
(account, amount, timeout)[source]¶ Wait for payment of amount to arrive in account or until timeout milliseconds have elapsed.
Parameters: Raises: >>> rpc.payment_wait( ... account="xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", ... amount=1, ... timeout=1000 ... ) True
-
peers
()[source]¶ Returns a list of pairs of peer IPv6:port and its node network version
Raises: nano.rpc.RPCException
>>> rpc.peers() { "[::ffff:172.17.0.1]:32841": 3 }
-
pending
(account, count=None, threshold=None, source=False)[source]¶ Returns a list of pending block hashes with amount more or equal to threshold
Parameters: Raises: >>> rpc.pending( ... account="xrb_1111111111111111111111111111111111111111111111111117353trpda" ... ) [ "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ]
>>> rpc.pending( ... account="xrb_1111111111111111111111111111111111111111111111111117353trpda", ... count=1, ... threshold=1000000000000000000000000 ... ) { "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F": "6000000000000000000000000000000" }
-
pending_exists
(hash)[source]¶ Check whether block is pending by hash
Parameters: hash (str) – Hash of block to check if pending Raises: nano.rpc.RPCException
>>> rpc.pending_exists( hash="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ) True
-
process
(block)[source]¶ Publish block to the network
Parameters: block (dict or json) – Block to publish Raises: nano.rpc.RPCException
>>> block = { "account": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "work": "0000000000000000", "source": "FA5B51D063BADDF345EFD7EF0D3C5FB115C85B1EF4CDE89D8B7DF3EAF60A04A4", "representative": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "open" }
>>> rpc.process(block=block) "42A723D2B60462BF7C9A003FE9A70057D3A6355CA5F1D0A57581000000000000"
>>> rpc.process(json.dumps(block)) "42A723D2B60462BF7C9A003FE9A70057D3A6355CA5F1D0A57581000000000000"
-
rai_from_raw
(amount)[source]¶ Divide a raw amount down by the rai ratio.
Parameters: amount (int) – Amount in raw to convert to rai Raises: nano.rpc.RPCException
>>> rpc.rai_from_raw(amount=1000000000000000000000000) 1
-
rai_to_raw
(amount)[source]¶ Multiply an rai amount by the rai ratio.
Parameters: amount (int) – Amount in rai to convert to raw Raises: nano.rpc.RPCException
>>> rpc.rai_to_raw(amount=1) 1000000000000000000000000
-
receive
(wallet, account, block, work=None)[source]¶ Receive pending block for account in wallet
Parameters: Raises: >>> rpc.receive( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... account="xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", ... block="53EAA25CE28FA0E6D55EA9704B32604A736966255948594D55CBB05267CECD48", ... work="12041e830ad10de1" ... ) "EE5286AB32F580AB65FD84A69E107C69FBEB571DEC4D99297E19E3FA5529547B"
-
receive_minimum
()[source]¶ Returns receive minimum for node
Raises: nano.rpc.RPCException
>>> rpc.receive_minimum() 1000000000000000000000000
-
receive_minimum_set
(amount)[source]¶ Set amount as new receive minimum for node until restart
Parameters: amount (int) – Amount in raw to set as minimum to receive Raises: nano.rpc.RPCException
>>> rpc.receive_minimum_set(amount=1000000000000000000000000000000) True
-
representatives
(count=None, sorting=False)[source]¶ Returns a list of pairs of representative and its voting weight
Parameters: Raises: >>> rpc.representatives() { "xrb_1111111111111111111111111111111111111111111111111117353trpda": 3822372327060170000000000000000000000, "xrb_1111111111111111111111111111111111111111111111111awsq94gtecn": 30999999999999999999999999000000, "xrb_114nk4rwjctu6n6tr6g6ps61g1w3hdpjxfas4xj1tq6i8jyomc5d858xr1xi": 0 }
-
republish
(hash, count=None, sources=None, destinations=None)[source]¶ Rebroadcast blocks starting at hash to the network
Parameters: - hash (str) – Hash of block to start rebroadcasting from
- count (int) – Max number of blocks to rebroadcast
- sources (int) – If set, additionally rebroadcasts source chain blocks for receive/open up to sources depth
- destinations (int) – If set, additionally rebroadcasts destination chain blocks for receive/open up to destinations depth
Raises: >>> rpc.republish( ... hash="991CF190094C00F0B68E2E5F75F6BEE95A2E0BD93CEAA4A6734DB9F19B728948" ... ) [ "991CF190094C00F0B68E2E5F75F6BEE95A2E0BD93CEAA4A6734DB9F19B728948", "A170D51B94E00371ACE76E35AC81DC9405D5D04D4CEBC399AEACE07AE05DD293" ]
-
search_pending
(wallet)[source]¶ Tells the node to look for pending blocks for any account in wallet
Parameters: wallet (str) – Wallet to search for pending blocks Raises: nano.rpc.RPCException
>>> rpc.search_pending( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) True
-
search_pending_all
()[source]¶ Tells the node to look for pending blocks for any account in all available wallets
Raises: nano.rpc.RPCException
>>> rpc.search_pending_all() True
-
send
(wallet, source, destination, amount, work=None)[source]¶ Send amount from source in wallet to destination
Parameters: Raises: >>> rpc.send( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... source="xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", ... destination="xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", ... amount=1000000, ... work="2bf29ef00786a6bc" ... ) "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F"
-
stop
()[source]¶ Stop the node
Raises: nano.rpc.RPCException
>>> rpc.stop() True
-
successors
(block, count)[source]¶ Returns a list of block hashes in the account chain ending at block up to count
Parameters: Raises: >>> rpc.successors( ... block="991CF190094C00F0B68E2E5F75F6BEE95A2E0BD93CEAA4A6734DB9F19B728948", ... count=1 ... ) [ "A170D51B94E00371ACE76E35AC81DC9405D5D04D4CEBC399AEACE07AE05DD293" ]
-
unchecked
(count=None)[source]¶ Returns a list of pairs of unchecked synchronizing block hash and its json representation up to count
Parameters: count (int) – Max amount of unchecked blocks to return Raises: nano.rpc.RPCException
>>> rpc.unchecked(count=1) { "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F": { "account": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "work": "0000000000000000", "source": "FA5B51D063BADDF345EFD7EF0D3C5FB115C85B1EF4CDE89D8B7DF3EAF60A04A4", "representative": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "open" } }
-
unchecked_clear
()[source]¶ Clear unchecked synchronizing blocks
Raises: nano.rpc.RPCException
>>> rpc.unchecked_clear() True
-
unchecked_get
(hash)[source]¶ Retrieves a json representation of unchecked synchronizing block by hash
Parameters: hash (str) – Hash of unchecked block to get Raises: nano.rpc.RPCException
>>> rpc.unchecked_get( ... hash="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) { "account": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "work": "0000000000000000", "source": "FA5B51D063BADDF345EFD7EF0D3C5FB115C85B1EF4CDE89D8B7DF3EAF60A04A4", "representative": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "open" }
-
unchecked_keys
(key=None, count=None)[source]¶ Retrieves unchecked database keys, blocks hashes & a json representations of unchecked pending blocks starting from key up to count
Parameters: Raises: >>> rpc.unchecked_keys( ... key="FA5B51D063BADDF345EFD7EF0D3C5FB115C85B1EF4CDE89D8B7DF3EAF60A04A4", ... count=1 ... ) [ { "key": "FA5B51D063BADDF345EFD7EF0D3C5FB115C85B1EF4CDE89D8B7DF3EAF60A04A4", "hash": "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", "contents": { "account": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "work": "0000000000000000", "source": "FA5B51D063BADDF345EFD7EF0D3C5FB115C85B1EF4CDE89D8B7DF3EAF60A04A4", "representative": "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000", "signature": "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "open" } } ]
-
validate_account_number
(account)[source]¶ Check whether account is a valid account number
Parameters: account (str) – Account number to check Raises: nano.rpc.RPCException
>>> rpc.validate_account_number( ... account="xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000" ... ) True
-
version
()[source]¶ Returns the node’s RPC version
Raises: nano.rpc.RPCException
>>> rpc.version() { "rpc_version": 1, "store_version": 10, "node_vendor": "RaiBlocks 9.0" }
-
wallet_add
(wallet, key, work=True)[source]¶ Add an adhoc private key key to wallet
Parameters: Raises: >>> rpc.wallet_add( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... key="34F0A37AAD20F4A260F0A5B3CB3D7FB50673212263E58A380BC10474BB039CE4" ... ) "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000"
-
wallet_balance_total
(wallet)[source]¶ Returns the sum of all accounts balances in wallet
Parameters: wallet (str) – Wallet to return sum of balances for Raises: nano.rpc.RPCException
>>> rpc.wallet_balance_total( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) { "balance": 10000, "pending": 10000 }
-
wallet_balances
(wallet)[source]¶ Returns how many rai is owned and how many have not yet been received by all accounts in wallet
Parameters: wallet (str) – Wallet to return balances for Raises: nano.rpc.RPCException
>>> rpc.wallet_balances( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) { "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000": { "balance": 10000, "pending": 10000 } }
-
wallet_change_seed
(wallet, seed)[source]¶ Changes seed for wallet to seed
Parameters: Raises: >>> rpc.wallet_change_seed( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... seed="74F2B37AAD20F4A260F0A5B3CB3D7FB51673212263E58A380BC10474BB039CEE" ... ) True
-
wallet_contains
(wallet, account)[source]¶ Check whether wallet contains account
Parameters: Raises: >>> rpc.wallet_contains( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... account="xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000" ... ) True
-
wallet_create
()[source]¶ Creates a new random wallet id
Raises: nano.rpc.RPCException
>>> rpc.wallet_create() "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F"
-
wallet_destroy
(wallet)[source]¶ Destroys wallet and all contained accounts
Parameters: wallet (str) – Wallet to destroy Raises: nano.rpc.RPCException
>>> rpc.wallet_destroy( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) True
-
wallet_export
(wallet)[source]¶ Return a json representation of wallet
Parameters: wallet (str) – Wallet to export Raises: nano.rpc.RPCException
>>> rpc.wallet_export(wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F") { "0000000000000000000000000000000000000000000000000000000000000000": "0000000000000000000000000000000000000000000000000000000000000001" }
-
wallet_frontiers
(wallet)[source]¶ Returns a list of pairs of account and block hash representing the head block starting for accounts from wallet
Parameters: wallet (str) – Wallet to return frontiers for Raises: nano.rpc.RPCException
>>> rpc.wallet_frontiers( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) { "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000": "000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" }
-
wallet_key_valid
(wallet)[source]¶ Returns if a wallet key is valid
Parameters: wallet (str) – Wallet to check key is valid >>> rpc.wallet_key_valid( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) True
-
wallet_lock
(wallet)[source]¶ Locks a wallet
Parameters: wallet (str) – Wallet to lock Raises: nano.rpc.RPCException
>>> rpc.wallet_lock( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) True
-
wallet_locked
(wallet)[source]¶ Checks whether wallet is locked
Parameters: wallet (str) – Wallet to check if locked Raises: nano.rpc.RPCException
>>> rpc.wallet_locked( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) False
-
wallet_pending
(wallet, count=None, threshold=None, source=False)[source]¶ Returns a list of block hashes which have not yet been received by accounts in this wallet
Parameters: Raises: >>> rpc.wallet_pending( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... count=1 ... ) { "xrb_1111111111111111111111111111111111111111111111111117353trpda": [ "142A538F36833D1CC78B94E11C766F75818F8B940771335C6C1B8AB880C5BB1D" ], "xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3": [ "4C1FEEF0BEA7F50BE35489A1233FE002B212DEA554B55B1B470D78BD8F210C74" ] }
-
wallet_representative
(wallet)[source]¶ Returns the default representative for wallet
Parameters: wallet (str) – Wallet to get default representative account for Raises: nano.rpc.RPCException
>>> rpc.wallet_representative( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) "xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000"
-
wallet_representative_set
(wallet, representative)[source]¶ Sets the default representative for wallet
Parameters: Raises: >>> rpc.wallet_representative_set( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... representative="xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpi00000000" ... ) True
-
wallet_republish
(wallet, count)[source]¶ Rebroadcast blocks for accounts from wallet starting at frontier down to count to the network
Parameters: Raises: >>> rpc.wallet_republish( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... count=2 ... ) [ "991CF190094C00F0B68E2E5F75F6BEE95A2E0BD93CEAA4A6734DB9F19B728948", "A170D51B94E00371ACE76E35AC81DC9405D5D04D4CEBC399AEACE07AE05DD293", "90D0C16AC92DD35814E84BFBCC739A039615D0A42A76EF44ADAEF1D99E9F8A35" ]
-
wallet_unlock
(wallet, password)[source]¶ Unlocks wallet using password
Parameters: Raises: >>> rpc.wallet_unlock( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... password="test" ... ) True
-
wallet_work_get
(wallet)[source]¶ Returns a list of pairs of account and work from wallet
Parameters: wallet (str) – Wallet to return work for Raises: nano.rpc.RPCException
>>> rpc.wallet_work_get( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F" ... ) { "xrb_1111111111111111111111111111111111111111111111111111hifc8npp": "432e5cf728c90f4f" }
-
work_cancel
(hash)[source]¶ Stop generating work for block
Parameters: hash (str) – Hash to stop generating work for Raises: nano.rpc.RPCException
>>> rpc.work_cancel( ... hash="718CC2121C3E641059BC1C2CFC45666C99E8AE922F7A807B7D07B62C995D79E2" ... ) True
-
work_generate
(hash)[source]¶ Generates work for block
Parameters: hash (str) – Hash to start generating work for Raises: nano.rpc.RPCException
>>> rpc.work_generate( ... hash="718CC2121C3E641059BC1C2CFC45666C99E8AE922F7A807B7D07B62C995D79E2" ... ) "2bf29ef00786a6bc"
-
work_get
(wallet, account)[source]¶ Retrieves work for account in wallet
Parameters: Raises: >>> rpc.work_get( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... account="xrb_1111111111111111111111111111111111111111111111111111hifc8npp" ... ) "432e5cf728c90f4f"
-
work_peer_add
(address, port)[source]¶ Add specific IP address and port as work peer for node until restart
Parameters: Raises: >>> rpc.work_peer_add(address="::ffff:172.17.0.1", port="7076") True
-
work_peers
()[source]¶ Retrieve work peers
Raises: nano.rpc.RPCException
>>> rpc.work_peers() [ "::ffff:172.17.0.1:7076" ]
-
work_peers_clear
()[source]¶ Clear work peers node list until restart
Raises: nano.rpc.RPCException
>>> rpc.work_peers_clear() True
-
work_set
(wallet, account, work)[source]¶ Set work for account in wallet
Parameters: Raises: >>> rpc.work_set( ... wallet="000D1BAEC8EC208142C99059B393051BAC8380F9B5A2E6B2489A277D81789F3F", ... account="xrb_1111111111111111111111111111111111111111111111111111hifc8npp", ... work="0000000000000000" ... ) True
-
nano.rpc.
RPCClient
¶ alias of
nano.rpc.Client