From 0bb449c8fe2713b34174897191c78005324bfd3d Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Mon, 4 May 2020 09:52:49 +0200 Subject: [PATCH] docs+python: fix headings, make numbered list --- docs/grpc/python.md | 64 ++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/docs/grpc/python.md b/docs/grpc/python.md index 14d87701..4f6bae04 100644 --- a/docs/grpc/python.md +++ b/docs/grpc/python.md @@ -3,46 +3,46 @@ This section enumerates what you need to do to write a client that communicates with `lnd` in Python. -### Setup and Installation +## Setup and Installation Lnd uses the gRPC protocol for communication with clients like lncli. gRPC is based on protocol buffers and as such, you will need to compile the lnd proto file in Python before you can use it to communicate with lnd. -* Create a virtual environment for your project -``` -$ virtualenv lnd -``` -* Activate the virtual environment -``` -$ source lnd/bin/activate -``` -* Install dependencies (googleapis-common-protos is required due to the use of +1. Create a virtual environment for your project + ``` + $ virtualenv lnd + ``` +2. Activate the virtual environment + ``` + $ source lnd/bin/activate + ``` +3. Install dependencies (googleapis-common-protos is required due to the use of google/api/annotations.proto) -``` -(lnd)$ pip install grpcio grpcio-tools googleapis-common-protos -``` -* Clone the google api's repository (required due to the use of + ``` + (lnd)$ pip install grpcio grpcio-tools googleapis-common-protos + ``` +4. Clone the google api's repository (required due to the use of google/api/annotations.proto) -``` -(lnd)$ git clone https://github.com/googleapis/googleapis.git -``` -* Copy the lnd rpc.proto file (you'll find this at + ``` + (lnd)$ git clone https://github.com/googleapis/googleapis.git + ``` +5. Copy the lnd rpc.proto file (you'll find this at [lnrpc/rpc.proto](https://github.com/lightningnetwork/lnd/blob/master/lnrpc/rpc.proto)) or just download it -``` -(lnd)$ curl -o rpc.proto -s https://raw.githubusercontent.com/lightningnetwork/lnd/master/lnrpc/rpc.proto -``` -* Compile the proto file -``` -(lnd)$ python -m grpc_tools.protoc --proto_path=googleapis:. --python_out=. --grpc_python_out=. rpc.proto -``` + ``` + (lnd)$ curl -o rpc.proto -s https://raw.githubusercontent.com/lightningnetwork/lnd/master/lnrpc/rpc.proto + ``` +6. Compile the proto file + ``` + (lnd)$ python -m grpc_tools.protoc --proto_path=googleapis:. --python_out=. --grpc_python_out=. rpc.proto + ``` After following these steps, two files `rpc_pb2.py` and `rpc_pb2_grpc.py` will be generated. These files will be imported in your project anytime you use Python gRPC. -#### Imports and Client +### Imports and Client Every time you use Python gRPC, you will have to import the generated rpc modules and set up a channel and stub to your connect to your `lnd` node: @@ -66,13 +66,13 @@ channel = grpc.secure_channel('localhost:10009', creds) stub = lnrpc.LightningStub(channel) ``` -### Examples +## Examples Let's walk through some examples of Python gRPC clients. These examples assume that you have at least two `lnd` nodes running, the RPC location of one of which is at the default `localhost:10009`, with an open channel between the two nodes. -#### Simple RPC +### Simple RPC ```python # Retrieve and display the wallet balance @@ -80,7 +80,7 @@ response = stub.WalletBalance(ln.WalletBalanceRequest()) print(response.total_balance) ``` -#### Response-streaming RPC +### Response-streaming RPC ```python request = ln.InvoiceSubscription() @@ -102,7 +102,7 @@ $ lncli sendpayment --pay_req= Your Python console should now display the details of the recently satisfied invoice. -#### Bidirectional-streaming RPC +### Bidirectional-streaming RPC ```python from time import sleep @@ -133,7 +133,7 @@ for payment in stub.SendPayment(request_iterable): ``` This example will send a payment of 100 satoshis every 2 seconds. -#### Using Macaroons +### Using Macaroons To authenticate using macaroons you need to include the macaroon in the metadata of the request. @@ -180,7 +180,7 @@ stub.GetInfo(ln.GetInfoRequest()) ``` -### Conclusion +## Conclusion With the above, you should have all the `lnd` related `gRPC` dependencies installed locally into your virtual environment. In order to get up to speed