Updated docs

pull/81/head
Jeffrey Ryan 3 years ago committed by Michał Sałaban
parent e929312e1a
commit 4906933f3c

@ -2,33 +2,32 @@ Interacting with daemon
======================= =======================
The module offers an interface to interact with Monero daemon. For the time being, like with The module offers an interface to interact with Monero daemon. For the time being, like with
wallet, the only available backend is JSON RPC. wallet, the only available method to connnect to a daemon is by JSON RPC commands. The initializer
accepts keywords including, but not limited to, ``host``, ``port``, ``user``, and ``password``.
.. code-block:: python .. code-block:: python
In [1]: from monero.daemon import Daemon In [1]: from monero.daemon import Daemon
In [2]: from monero.backends.jsonrpc import JSONRPCDaemon In [2]: daemon = Daemon(port=28081)
In [3]: daemon = Daemon(JSONRPCDaemon(port=28081)) In [3]: daemon.height()
Out[3]: 1099108
In [4]: daemon.height()
Out[4]: 1099108
Also, the ``info()`` method will return a dictionary with details about the current daemon status. Also, the ``info()`` method will return a dictionary with details about the current daemon status.
Connecting via proxy (or TOR) Connecting via proxy (or TOR)
----------------------------- -----------------------------
The backend also accepts optional ``proxy_url`` keyword. A prime example of use is to route ``Daemon`` also accepts optional ``proxy_url`` keyword. A prime example of use is to route
your traffic via TOR: your traffic via TOR:
.. code-block:: python .. code-block:: python
In [3]: daemon = Daemon(JSONRPCDaemon(host='xmrag4hf5xlabmob.onion', proxy_url='socks5h://127.0.0.1:9050')) In [4]: daemon = Daemon(host='xmrag4hf5xlabmob.onion', proxy_url='socks5h://127.0.0.1:9050')
In [4]: daemon.height() In [5]: daemon.height()
Out[4]: 1999790 Out[5]: 1999790
Please refer to the docs of underlying `requests`_ library for more info on proxies. Please refer to the docs of underlying `requests`_ library for more info on proxies.
@ -46,27 +45,27 @@ The only difference is that now you want to add the ``relay=False`` argument.
.. code-block:: python .. code-block:: python
In [5]: from monero.wallet import Wallet In [6]: from monero.wallet import Wallet
In [6]: from monero.backends.jsonrpc import JSONRPCWallet In [7]: from monero.backends.jsonrpc import JSONRPCWallet
In [7]: wallet = Wallet(JSONRPCWallet(port=28088)) In [8]: wallet = Wallet(JSONRPCWallet(port=28088))
In [8]: wallet.balance() In [9]: wallet.balance()
Out[8]: Decimal('17.642325205670') Out[9]: Decimal('17.642325205670')
In [9]: txs = wallet.transfer('Bg1nUjsEx6UUByxr68o6gXcQRF58BpQyKauoZSo2HwubGErEnz9x6AS9o5ybmk3QmgeUpX3Msgm74QkwZKx2CeVWFrrZZqt', 10, relay=False) In [10]: txs = wallet.transfer('Bg1nUjsEx6UUByxr68o6gXcQRF58BpQyKauoZSo2HwubGErEnz9x6AS9o5ybmk3QmgeUpX3Msgm74QkwZKx2CeVWFrrZZqt', 10, relay=False)
Now the return value is a list of resulting transactions (usually just one) which may be inspected Now the return value is a list of resulting transactions (usually just one) which may be inspected
and validated. and validated.
.. code-block:: python .. code-block:: python
In [10]: txs In [11]: txs
Out[10]: [38964a0c8c3be041051464b413996ad8d696223dc34925d98156848ed76a3ae3] Out[11]: [38964a0c8c3be041051464b413996ad8d696223dc34925d98156848ed76a3ae3]
In [11]: txs[0].fee In [12]: txs[0].fee
Out[11]: Decimal('0.003766080000') Out[12]: Decimal('0.003766080000')
If anything is not OK, just discard the transaction and create a new one. There's no need to clean If anything is not OK, just discard the transaction and create a new one. There's no need to clean
up anything in the wallet. up anything in the wallet.
@ -75,10 +74,10 @@ Once you have the transaction accepted, it's time to post it to the daemon:
.. code-block:: python .. code-block:: python
In [12]: result = daemon.send_transaction(txs[0]) In [13]: result = daemon.send_transaction(txs[0])
In [13]: result In [14]: result
Out[13]: Out[14]:
{'double_spend': False, {'double_spend': False,
'fee_too_low': False, 'fee_too_low': False,
'invalid_input': False, 'invalid_input': False,
@ -102,17 +101,17 @@ The following example shows such behavior:
.. code-block:: python .. code-block:: python
In [14]: txs1 = wallet.transfer('BYSXsmmK44xdjNVMGprUW5Yau9tsc9SAMJrQsANjGgpk2RB83cvVhWjZAgYNwLgmhdPawATh5q1CTEoLGKZSeZqtThefV7D', 1, relay=False) In [15]: txs1 = wallet.transfer('BYSXsmmK44xdjNVMGprUW5Yau9tsc9SAMJrQsANjGgpk2RB83cvVhWjZAgYNwLgmhdPawATh5q1CTEoLGKZSeZqtThefV7D', 1, relay=False)
In [15]: txs2 = wallet.transfer('Bd5m5wTjWdYSaLBKe4i2avJjuFLYMEUKpiiE86F83NFiDXKE7QseSRvS7efTtJu5xHiHm5XmxgB2mfLu7NFrG7e3UTYRzEf', 2, relay=False) In [16]: txs2 = wallet.transfer('Bd5m5wTjWdYSaLBKe4i2avJjuFLYMEUKpiiE86F83NFiDXKE7QseSRvS7efTtJu5xHiHm5XmxgB2mfLu7NFrG7e3UTYRzEf', 2, relay=False)
In [16]: txs1, txs2 In [17]: txs1, txs2
Out[16]: Out[17]:
([315901f250a1018e89e1fc2b3953bd5acfdfa759f843cf5a38306a2255de6d54], ([315901f250a1018e89e1fc2b3953bd5acfdfa759f843cf5a38306a2255de6d54],
[2bd978172226b486badc8a9dcbafb04acb4760c3f2a5794c694fee8575739c6e]) [2bd978172226b486badc8a9dcbafb04acb4760c3f2a5794c694fee8575739c6e])
In [17]: daemon.send_transaction(txs1[0]) In [18]: daemon.send_transaction(txs1[0])
Out[17]: Out[18]:
{'double_spend': False, {'double_spend': False,
'fee_too_low': False, 'fee_too_low': False,
'invalid_input': False, 'invalid_input': False,
@ -125,7 +124,7 @@ The following example shows such behavior:
'status': 'OK', 'status': 'OK',
'too_big': False} 'too_big': False}
In [18]: daemon.send_transaction(txs2[0]) In [19]: daemon.send_transaction(txs2[0])
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
TransactionBroadcastError Traceback (most recent call last) TransactionBroadcastError Traceback (most recent call last)
<ipython-input-22-f24dc5d51c78> in <module>() <ipython-input-22-f24dc5d51c78> in <module>()

@ -14,12 +14,10 @@ addresses:
In [1]: from monero.wallet import Wallet In [1]: from monero.wallet import Wallet
In [2]: from monero.backends.jsonrpc import JSONRPCWallet In [2]: w = Wallet(port=28088)
In [3]: w = Wallet(JSONRPCWallet(port=28088)) In [3]: w.address()
Out[3]: A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX
In [4]: w.address()
Out[4]: A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX
Accounts and subaddresses Accounts and subaddresses
------------------------- -------------------------
@ -32,17 +30,17 @@ client.
.. code-block:: python .. code-block:: python
In [5]: len(w.accounts) In [4]: len(w.accounts)
Out[5]: 1 Out[4]: 1
In [6]: w.accounts[0] In [5]: w.accounts[0]
Out[6]: <monero.account.Account at 0x7f78992d6898> Out[5]: <monero.account.Account at 0x7f78992d6898>
In [7]: w.accounts[0].address() In [6]: w.accounts[0].address()
Out[7]: A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX Out[6]: A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX
In [8]: w.addresses() In [7]: w.addresses()
Out[8]: [A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX] Out[7]: [A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX]
Creating accounts and addresses Creating accounts and addresses
@ -55,28 +53,28 @@ and the subaddress index within the account.
.. code-block:: python .. code-block:: python
In [9]: w.new_address() In [8]: w.new_address()
Out[9]: (BenuGf8eyVhjZwdcxEJY1MHrUfqHjPvE3d7Pi4XY5vQz53VnVpB38bCBsf8AS5rJuZhuYrqdG9URc2eFoCNPwLXtLENT4R7, 1) Out[8]: (BenuGf8eyVhjZwdcxEJY1MHrUfqHjPvE3d7Pi4XY5vQz53VnVpB38bCBsf8AS5rJuZhuYrqdG9URc2eFoCNPwLXtLENT4R7, 1)
In [10]: w.addresses() In [9]: w.addresses()
Out[10]: Out[9]:
[A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX, [A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX,
BenuGf8eyVhjZwdcxEJY1MHrUfqHjPvE3d7Pi4XY5vQz53VnVpB38bCBsf8AS5rJuZhuYrqdG9URc2eFoCNPwLXtLENT4R7] BenuGf8eyVhjZwdcxEJY1MHrUfqHjPvE3d7Pi4XY5vQz53VnVpB38bCBsf8AS5rJuZhuYrqdG9URc2eFoCNPwLXtLENT4R7]
In [11]: w.new_account() In [10]: w.new_account()
Out[11]: <monero.account.Account at 0x7f7894dffbe0> Out[10]: <monero.account.Account at 0x7f7894dffbe0>
In [12]: len(w.accounts) In [11]: len(w.accounts)
Out[12]: 2 Out[11]: 2
In [13]: w.accounts[1].address() In [12]: w.accounts[1].address()
Out[13]: Bhd3PRVCnq5T5jjNey2hDSM8DxUgFpNjLUrKAa2iYVhYX71RuCGTekDKZKXoJPAGL763kEXaDSAsvDYb8bV77YT7Jo19GKY Out[12]: Bhd3PRVCnq5T5jjNey2hDSM8DxUgFpNjLUrKAa2iYVhYX71RuCGTekDKZKXoJPAGL763kEXaDSAsvDYb8bV77YT7Jo19GKY
In [14]: w.accounts[1].new_address() In [13]: w.accounts[1].new_address()
Out[14]: (Bbz5uCtnn3Gaj1YAizaHw1FPeJ6T7kk7uQoeY48SWjezEAyrWScozLxYbqGxsV5L6VJkvw5VwECAuLVJKQtHpA3GFXJNPYu, 1) Out[13]: (Bbz5uCtnn3Gaj1YAizaHw1FPeJ6T7kk7uQoeY48SWjezEAyrWScozLxYbqGxsV5L6VJkvw5VwECAuLVJKQtHpA3GFXJNPYu, 1)
In [15]: w.accounts[1].addresses() In [14]: w.accounts[1].addresses()
Out[15]: Out[14]:
[Bhd3PRVCnq5T5jjNey2hDSM8DxUgFpNjLUrKAa2iYVhYX71RuCGTekDKZKXoJPAGL763kEXaDSAsvDYb8bV77YT7Jo19GKY, [Bhd3PRVCnq5T5jjNey2hDSM8DxUgFpNjLUrKAa2iYVhYX71RuCGTekDKZKXoJPAGL763kEXaDSAsvDYb8bV77YT7Jo19GKY,
Bbz5uCtnn3Gaj1YAizaHw1FPeJ6T7kk7uQoeY48SWjezEAyrWScozLxYbqGxsV5L6VJkvw5VwECAuLVJKQtHpA3GFXJNPYu] Bbz5uCtnn3Gaj1YAizaHw1FPeJ6T7kk7uQoeY48SWjezEAyrWScozLxYbqGxsV5L6VJkvw5VwECAuLVJKQtHpA3GFXJNPYu]

Loading…
Cancel
Save