Using wallet and accounts¶
The Wallet class provides an abstraction layer to retrieve wallet information, manage accounts and subaddresses, and of course send transfers.
The wallet¶
The following example shows how to create and retrieve wallet’s accounts and addresses via the default JSON RPC backend:
In [1]: from monero.wallet import Wallet
In [2]: w = Wallet(port=28088)
In [3]: w.address()
Out[3]: A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX
Accounts and subaddresses¶
The accounts are stored in wallet’s accounts
attribute, which is a list.
Regardless of the version, the wallet by default operates on its account of index 0, which makes it consistent with the behavior of the CLI wallet client.
In [4]: len(w.accounts)
Out[4]: 1
In [5]: w.accounts[0]
Out[5]: <monero.account.Account at 0x7f78992d6898>
In [6]: w.accounts[0].address()
Out[6]: A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX
In [7]: w.addresses()
Out[7]: [A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX]
Creating accounts and addresses¶
Every wallet can have separate accounts and each account can have numerous
addresses. The Wallet.new_account()
and Account.new_address()
will
create new instances, then return a tuple consisting of the subaddress itself,
and the subaddress index within the account.
In [8]: w.new_address()
Out[8]: (BenuGf8eyVhjZwdcxEJY1MHrUfqHjPvE3d7Pi4XY5vQz53VnVpB38bCBsf8AS5rJuZhuYrqdG9URc2eFoCNPwLXtLENT4R7, 1)
In [9]: w.addresses()
Out[9]:
[A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX,
BenuGf8eyVhjZwdcxEJY1MHrUfqHjPvE3d7Pi4XY5vQz53VnVpB38bCBsf8AS5rJuZhuYrqdG9URc2eFoCNPwLXtLENT4R7]
In [10]: w.new_account()
Out[10]: <monero.account.Account at 0x7f7894dffbe0>
In [11]: len(w.accounts)
Out[11]: 2
In [12]: w.accounts[1].address()
Out[12]: Bhd3PRVCnq5T5jjNey2hDSM8DxUgFpNjLUrKAa2iYVhYX71RuCGTekDKZKXoJPAGL763kEXaDSAsvDYb8bV77YT7Jo19GKY
In [13]: w.accounts[1].new_address()
Out[13]: (Bbz5uCtnn3Gaj1YAizaHw1FPeJ6T7kk7uQoeY48SWjezEAyrWScozLxYbqGxsV5L6VJkvw5VwECAuLVJKQtHpA3GFXJNPYu, 1)
In [14]: w.accounts[1].addresses()
Out[14]:
[Bhd3PRVCnq5T5jjNey2hDSM8DxUgFpNjLUrKAa2iYVhYX71RuCGTekDKZKXoJPAGL763kEXaDSAsvDYb8bV77YT7Jo19GKY,
Bbz5uCtnn3Gaj1YAizaHw1FPeJ6T7kk7uQoeY48SWjezEAyrWScozLxYbqGxsV5L6VJkvw5VwECAuLVJKQtHpA3GFXJNPYu]
As mentioned above, the wallet by default operates on the first account, so
w.new_address()
is equivalent to w.accounts[0].new_address()
.
In the next chapter we will learn about addresses.
API reference¶
-
class
monero.account.
Account
(backend, index, label=None)¶ Monero account.
Provides interface to operate on a wallet’s account.
Accounts belong to a
Wallet
and act like separate sub-wallets. No funds can be moved between accounts off-chain (without a transaction).Parameters: - backend – a wallet backend
- index – the account’s index within the wallet
- label – optional account label as str
-
address
()¶ Return account’s main address.
Return type: SubAddress
-
address_balance
(addresses=None)¶ Returns balances of given addresses, or all addresses if none given.
Parameters: addresses – a sequence of address as Address
or their indexes within the account as `int`sReturn type: list of index, subaddress, balance, num_UTXOs: (int, Address
, Decimal, int)
-
addresses
()¶ Returns all addresses of the account.
Return type: list
-
balance
(unlocked=False)¶ Returns specified balance.
Parameters: unlocked – if True, return the unlocked balance, otherwise return total balance Return type: Decimal
-
balances
()¶ Returns a tuple of balance and unlocked balance.
Return type: (Decimal, Decimal)
-
new_address
(label=None)¶ Creates a new address.
Parameters: label – address label as str Return type: tuple of subaddress, subaddress index (minor): ( SubAddress
, int)
-
sweep_all
(address, priority=2, payment_id=None, subaddr_indices=None, unlock_time=0, relay=True)¶ Sends all unlocked balance to an address. Returns a list of resulting transactions.
Parameters: - address – destination
Address
or subtype - priority – transaction priority, implies fee. The priority can be a number from 1 to 4 (unimportant, normal, elevated, priority) or a constant from monero.const.PRIO_*.
- payment_id – ID for the payment (must be None if
IntegratedAddress
is used as the destination) - subaddr_indices – a sequence of subaddress indices to sweep from. Empty sequence or None means sweep all positive balances.
- unlock_time – the extra unlock delay
- relay – if True, the wallet will relay the transaction(s) to the network immediately; when False, it will only return the transaction(s) so they might be broadcast later
Return type: list of
Transaction
- address – destination
-
transfer
(address, amount, priority=2, payment_id=None, unlock_time=0, relay=True)¶ Sends a transfer. Returns a list of resulting transactions.
Parameters: - address – destination
Address
or subtype - amount – amount to send
- priority – transaction priority, implies fee. The priority can be a number from 1 to 4 (unimportant, normal, elevated, priority) or a constant from monero.const.PRIO_*.
- payment_id – ID for the payment (must be None if
IntegratedAddress
is used as the destination) - unlock_time – the extra unlock delay
- relay – if True, the wallet will relay the transaction(s) to the network immediately; when False, it will only return the transaction(s) so they might be broadcasted later
Return type: list of
Transaction
- address – destination
-
transfer_multiple
(destinations, priority=2, payment_id=None, unlock_time=0, relay=True)¶ Sends a batch of transfers. Returns a list of resulting transactions.
Parameters: - destinations – a list of destination and amount pairs:
[(
Address
, Decimal), …] - priority – transaction priority, implies fee. The priority can be a number from 1 to 4 (unimportant, normal, elevated, priority) or a constant from monero.const.PRIO_*.
- payment_id – ID for the payment (must be None if
IntegratedAddress
is used as the destination) - unlock_time – the extra unlock delay
- relay – if True, the wallet will relay the transaction(s) to the network immediately; when False, it will only return the transaction(s) so they might be broadcast later
Return type: list of transaction and amount pairs: [(
Transaction
, Decimal), …]- destinations – a list of destination and amount pairs:
[(