Skip to main content

An rpc client for IMP (lightning network L3)

Project description

lndgrpc

A python grpc client for Impervious Network ⚡⚡⚡

This is a wrapper around the default grpc interface that handles setting up credentials (including macaroons). An async client is also available to do fun async stuff like listening for invoices in the background.

Dependencies

  • Python 3.6+
  • Working LND lightning node, take note of its ip address.
  • Copy your admin.macaroon and tls.cert files from your node to a directoy on your machine.

Installation

pip install imp-grpc-client

Environment Variables

These environment variables are only used when testing node connectivity and/or correct module installation from the command line. This library is primarily used through Python scripting.

export CRED_PATH=/path/to/macaroon/and/tls/cert
export LND_NODE_IP=192.168.1.xx

python3 -m lndgrpc

# You should expect to see:
#
# .....
# .....
# .....
# lndgrpc package is installed... Wow it works!

Basic Usage

The api mirrors the underlying lnd grpc api (http://api.lightning.community/) but methods will be in pep8 style. ie. .GetInfo() becomes .get_info().

</code></pre>
<h3>Specifying Macaroon/Cert files</h3>
<p>By default the client will attempt to lookup the <code>readonly.macaron</code> and <code>tls.cert</code> files in the mainnet directory.
However if you want to specify a different macaroon or different path you can pass in the filepath explicitly.</p>
<pre lang="python"><code>lnd = LNDClient(
    macaroon_filepath='~/.lnd/invoice.macaroon', 
    cert_filepath='path/to/tls.cert'
)

Generating LND Proto Files

virtualenv lnd
source lnd/bin/activate
pip install grpcio grpcio-tools googleapis-common-protos sh
git clone https://github.com/lightningnetwork/lnd.git
mkdir genprotos
git clone https://github.com/googleapis/googleapis.git
from pathlib import Path
import shutil
import sh

for proto in list(Path("../imp-releases/proto").rglob("*.proto")):
    shutil.copy(proto, Path.cwd().joinpath("impgrpc/compiled"))

protos = list(Path(".").joinpath("impgrpc/compiled").glob("**/*.proto"))

args = [
    "-m",
    "grpc_tools.protoc",
    # "--proto_path=../imp-releases/proto/:.",
    # "--proto_path=../imp-releases/proto/google/api:.",
    # "--proto_path=../imp-releases/proto/protoc-gen-openapiv2/options:.",
    # "--proto_path=impgrpc/compiled/:.",
    # "--proto_path=impgrpc/compiled/protoc-gen-openapiv2/:.",
    "--proto_path=impgrpc/compiled/",
    # "--proto_path=.:.",
    "--python_out=impgrpc/compiled",
    "--grpc_python_out=impgrpc/compiled",
]

for protofile in protos:
        args.append(str(protofile) )

# Generate the compiled protofiles
sh.python(args)

Last Step: In File: verrpc_pb2_grpc.py Change: import verrpc_pb2 as verrpc__pb2 To: from lndgrpc import verrpc_pb2 as verrpc__pb2

Deploy to Test-PyPi

poetry build
twine check dist/*
twine upload --repository-url https://test.pypi.org/legacy/ dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

imp_grpc_client-0.0.1-py3-none-any.whl (64.9 kB view details)

Uploaded Python 3

File details

Details for the file imp_grpc_client-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: imp_grpc_client-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 64.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.3.0 pkginfo/1.7.0 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.8.10

File hashes

Hashes for imp_grpc_client-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 87f380d33cbe5a6f4f9ada048138a9d814625a9d1e7782672a6889f8cb10e00a
MD5 c5f6c814233c8fc92ad384d5fb45fc7d
BLAKE2b-256 857b81c01235f0dc25c18bd20a0e093720706c229fd83d95b52477672bb52b91

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page