grpc包

imtokenapp下载安装 2023-05-04 07:35:02

LND GRPC

版本 0.3.4

要求 Python >= 3.6

一个简单的库,为 lnd 闪电客户端 grpc 提供 Python 3 接口。

这个版本的库是用 github 上 v0.7.1-beta 标签中的 lnd proto 文件编译的。这个版本已经用 Bitcoin Core v0.18.0 作为后端进行了测试

安装要求:

注意:比特币以外的硬币配置需要直接修改源代码。

通过 PIP 安装:

pip 安装 lnd-grpc

克隆源代码并将其安装为可编辑的包:

混帐克隆

cd lnd_grpc

根据需要激活虚拟环境

点安装 -e 。

比特币设置

BitCoID 或 BTCD 必须正在运行并准备好接受来自 LND 的 RPC 连接。

LND设置

lnd 守护程序必须在主机上运行。 这通常可以在屏幕/tmux 会话中完成。

如果 lnd.conf 尚未配置为与比特币客户端通信,则用于比特币连接的示例 lnd 守护进程启动命令可能如下所示:

lnd --bitcoin.active \
--bitcoin.mainnet \
--debuglevel=debug \
--bitcoin.node=bitcoind \
--bitcoind.rpcuser=xxxxx \
--bitcoind.rpcpass=xxxxxxxxxxxxxx \
--externalip=xx.xx.xx.xx \
--bitcoind.zmqpubrawblock=tcp://host:port \
--bitcoind.zmqpubrawtx=tcp://host:port \
--rpclisten=host:port

利用

将模块导入项目:

导入 lnd_grpc

创建客户端类的实例:

lnd_rpc = lnd_grpc。 客户()

注意:除非传递额外的参数,否则此类将使用默认的位编码 rpc 端口和主网上默认安装目录中的 lnd 进行实例化。

类实例化采用以下参数,您可以根据需要更改这些参数:

    (
    lnd_dir: str = None, \
    macaroon_path: str = None, \
    tls_cert_path: str = None \
    network: str = 'mainnet', \
    grpc_host: str = 'localhost', \
    grpc_port: str = '10009'
    )

初始化新的 LND 安装

注意:如果您已经在 LND 设置/安装过程中创建了钱包比特币客户端程序,则可以跳过此部分。

如果这是您第一次运行 LND,则不会创建钱包。 用于与 lnd 安全通信的身份验证技术 macaroons 与钱包(种子)相关联,因此必须先建立到 lnd 的备用连接以创建钱包,然后才能使用钱包的 macaroon 重新创建连接存根。

初始化需要以下步骤:

生成新种子 lnd_rpc.gen_seed() 初始化新钱包 lnd_rpc.init_wallet() 创建电子钱包后连接并重新连接

如果你没有运行上面的初始化序列,你只需要在发出进一步的 rpc 命令之前解锁你的钱包:

lnd_rpc.unlock_wallet(password='wallet_password')

接口约定

然后可以使用以下约定向 lnd grpc 接口发出更多 rpc 命令,其中 lnd grpc 命令通过驼峰式转换为小写字母比特币客户端程序,带有下划线和关键字参数,命名为与 grpc 使用的完全匹配:

lnd_rpc.grpc_command(keyword_arg=value)

可以找到有效的 grpc 命令及其关键字参数

连接存根将根据需要动态生成,以确保频道的新鲜度。

可迭代对象

响应流 rpc 现在返回要操作的 python 迭代器本身,例如使用 .__next__() 或 for resp 作为响应:

线

后端 lnd 服务器 (golang) 是异步的,因此任何限制都在客户端。 python grpc 客户端本身不兼容异步(例如使用 asyncio)。 有将 Python gRPC 客户端方法包装成异步方法的包装器,但使用线程是目前官方支持的技术。

为了使 Python 客户端线程正常工作,每个线程必须使用相同的通道。 如果您在应用程序中使用单个 client() 实例,则使用此库很容易,因为该客户端对象的每个 RPC 使用相同的通道。 这使得线程相对容易,例如:

# get a queue to add responses to
queue = queue.Queue()
# create a function to perform the work you want the thread to target:
def inv_sub_worker(_hash):
    for _response in lnd_rpc.subscribe_single_invoice(_hash):
        queue.put(_response)
# create the thread
# useful to use daemon mode for subscriptions
inv_sub = threading.Thread(target=inv_sub_worker, args=[_hash, ], daemon=True)
# start the thread
inv_sub.start()

循环

必须按照循环自述文件中的循环说明重建和安装 LND。

然后应按照相同的说明安装循环并手动启动。

然后您可以使用以下代码导入和使用 rpc 客户端:

import loop_rpc
loop = loop_rpc.LoopClient()

欢迎加入QQ群-->:979659372

Python中文网_新手群

推荐的 PyPI 第三方库