From 4906933f3cf1e02e2141aca138e2759ebef20844 Mon Sep 17 00:00:00 2001 From: Jeffrey Ryan Date: Mon, 18 Jan 2021 00:19:23 -0600 Subject: [PATCH] Updated docs --- docs/source/daemon.rst | 59 +++++++++++++++++++++--------------------- docs/source/wallet.rst | 52 ++++++++++++++++++------------------- 2 files changed, 54 insertions(+), 57 deletions(-) diff --git a/docs/source/daemon.rst b/docs/source/daemon.rst index 1cf3df9..f762853 100644 --- a/docs/source/daemon.rst +++ b/docs/source/daemon.rst @@ -2,33 +2,32 @@ Interacting with daemon ======================= 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 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 [4]: daemon.height() - Out[4]: 1099108 + In [3]: daemon.height() + Out[3]: 1099108 Also, the ``info()`` method will return a dictionary with details about the current daemon status. 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: .. 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() - Out[4]: 1999790 + In [5]: daemon.height() + Out[5]: 1999790 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 - 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() - Out[8]: Decimal('17.642325205670') + In [9]: wallet.balance() + 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 and validated. .. code-block:: python - In [10]: txs - Out[10]: [38964a0c8c3be041051464b413996ad8d696223dc34925d98156848ed76a3ae3] + In [11]: txs + Out[11]: [38964a0c8c3be041051464b413996ad8d696223dc34925d98156848ed76a3ae3] - In [11]: txs[0].fee - Out[11]: Decimal('0.003766080000') + In [12]: txs[0].fee + 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 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 - In [12]: result = daemon.send_transaction(txs[0]) + In [13]: result = daemon.send_transaction(txs[0]) - In [13]: result - Out[13]: + In [14]: result + Out[14]: {'double_spend': False, 'fee_too_low': False, 'invalid_input': False, @@ -102,17 +101,17 @@ The following example shows such behavior: .. 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 - Out[16]: + In [17]: txs1, txs2 + Out[17]: ([315901f250a1018e89e1fc2b3953bd5acfdfa759f843cf5a38306a2255de6d54], [2bd978172226b486badc8a9dcbafb04acb4760c3f2a5794c694fee8575739c6e]) - In [17]: daemon.send_transaction(txs1[0]) - Out[17]: + In [18]: daemon.send_transaction(txs1[0]) + Out[18]: {'double_spend': False, 'fee_too_low': False, 'invalid_input': False, @@ -125,7 +124,7 @@ The following example shows such behavior: 'status': 'OK', 'too_big': False} - In [18]: daemon.send_transaction(txs2[0]) + In [19]: daemon.send_transaction(txs2[0]) --------------------------------------------------------------------------- TransactionBroadcastError Traceback (most recent call last) in () diff --git a/docs/source/wallet.rst b/docs/source/wallet.rst index 618cdc3..1ca501a 100644 --- a/docs/source/wallet.rst +++ b/docs/source/wallet.rst @@ -14,12 +14,10 @@ addresses: 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 [4]: w.address() - Out[4]: A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX + In [3]: w.address() + Out[3]: A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX Accounts and subaddresses ------------------------- @@ -32,17 +30,17 @@ client. .. code-block:: python - In [5]: len(w.accounts) - Out[5]: 1 + In [4]: len(w.accounts) + Out[4]: 1 - In [6]: w.accounts[0] - Out[6]: + In [5]: w.accounts[0] + Out[5]: - In [7]: w.accounts[0].address() - Out[7]: A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX + In [6]: w.accounts[0].address() + Out[6]: A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX - In [8]: w.addresses() - Out[8]: [A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX] + In [7]: w.addresses() + Out[7]: [A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX] Creating accounts and addresses @@ -55,28 +53,28 @@ and the subaddress index within the account. .. code-block:: python - In [9]: w.new_address() - Out[9]: (BenuGf8eyVhjZwdcxEJY1MHrUfqHjPvE3d7Pi4XY5vQz53VnVpB38bCBsf8AS5rJuZhuYrqdG9URc2eFoCNPwLXtLENT4R7, 1) + In [8]: w.new_address() + Out[8]: (BenuGf8eyVhjZwdcxEJY1MHrUfqHjPvE3d7Pi4XY5vQz53VnVpB38bCBsf8AS5rJuZhuYrqdG9URc2eFoCNPwLXtLENT4R7, 1) - In [10]: w.addresses() - Out[10]: + In [9]: w.addresses() + Out[9]: [A2GmyHHJ9jtUhPiwoAbR2tXU9LJu2U6fJjcsv3rxgkVRWU6tEYcn6C1NBc7wqCv5V7NW3zeYuzKf6RGGgZTFTpVC4QxAiAX, BenuGf8eyVhjZwdcxEJY1MHrUfqHjPvE3d7Pi4XY5vQz53VnVpB38bCBsf8AS5rJuZhuYrqdG9URc2eFoCNPwLXtLENT4R7] - In [11]: w.new_account() - Out[11]: + In [10]: w.new_account() + Out[10]: - In [12]: len(w.accounts) - Out[12]: 2 + In [11]: len(w.accounts) + Out[11]: 2 - In [13]: w.accounts[1].address() - Out[13]: Bhd3PRVCnq5T5jjNey2hDSM8DxUgFpNjLUrKAa2iYVhYX71RuCGTekDKZKXoJPAGL763kEXaDSAsvDYb8bV77YT7Jo19GKY + In [12]: w.accounts[1].address() + Out[12]: Bhd3PRVCnq5T5jjNey2hDSM8DxUgFpNjLUrKAa2iYVhYX71RuCGTekDKZKXoJPAGL763kEXaDSAsvDYb8bV77YT7Jo19GKY - In [14]: w.accounts[1].new_address() - Out[14]: (Bbz5uCtnn3Gaj1YAizaHw1FPeJ6T7kk7uQoeY48SWjezEAyrWScozLxYbqGxsV5L6VJkvw5VwECAuLVJKQtHpA3GFXJNPYu, 1) + In [13]: w.accounts[1].new_address() + Out[13]: (Bbz5uCtnn3Gaj1YAizaHw1FPeJ6T7kk7uQoeY48SWjezEAyrWScozLxYbqGxsV5L6VJkvw5VwECAuLVJKQtHpA3GFXJNPYu, 1) - In [15]: w.accounts[1].addresses() - Out[15]: + In [14]: w.accounts[1].addresses() + Out[14]: [Bhd3PRVCnq5T5jjNey2hDSM8DxUgFpNjLUrKAa2iYVhYX71RuCGTekDKZKXoJPAGL763kEXaDSAsvDYb8bV77YT7Jo19GKY, Bbz5uCtnn3Gaj1YAizaHw1FPeJ6T7kk7uQoeY48SWjezEAyrWScozLxYbqGxsV5L6VJkvw5VwECAuLVJKQtHpA3GFXJNPYu]