与账本硬件钱包上的账本Rappeth接口的库

ledgereth的Python项目详细描述


分类帐eth库

这是一个WIP。把它当作alpha

这是一个与ledger-app-eth交互的库 Ledger hardware wallets的以太坊应用程序。它的目标是 与Ledger的接口非常简单,使用著名的以太坊+Python工具。在

NOTE:经过测试可以在Ledger Nano S和Nano X上工作。可能会与Ledger Blue一起工作吗

WARNING:随着Ledger的发布,账本应用程序改变了账户的派生方式 活着。如果您使用旧版Chrome应用程序创建了分类帐帐户并希望使用这些帐户 使用此库的帐户,您将需要设置LEDGER_LEGACY_ACCOUNTSenv var。您可以 一次只能使用其中一种。见the notes in source for more information。在

环境配置

有几个环境变量可以影响ledger eth lib的行为, 记录如下:

  • MAX_ACCOUNTS_FETCH[默认:5]:查找时将获取的最大帐户数 地址。如果在分类帐设备上创建了5个以上的帐户,则可能需要对此进行调整。在
  • LEDGER_LEGACY_ACCOUNTS:如果设置为任何值,ledger eth lib将使用旧ledger bip32 在Ledger Live之前用于创建帐户的派生。在

CLI使用

python -m ledgereth [command]

获取帐户

要从您的分类帐中获取可用帐户,请执行以下操作:

^{pr2}$

Web3.py集成

ledger eth lib提供了一个Web3.py中间件。它将自动拦截相关的JSON-RPC 打电话并用账本设备的数据进行响应。在

from web3.auto import w3
from ledgereth.web3 import LedgerSignerMiddleware
w3.middleware_onion.add(LedgerSignerMiddleware)

截获的JSON-RPC方法:

  • eth_sendTransaction
  • eth_accounts

快速启动

获取帐户

获取可用帐户。在

from ledgereth import get_accounts
accounts = get_accounts()
my_account = accounts[0].address

创建并签署交易

创建一个事务对象并用默认帐户对其进行签名。在

from ledgereth import create_transaction
tx = create_transaction(
    '0xb78f53524ae9d465279e7c3495f71d5db2419e13',  # to
    '0x4dae53ee778a324bd317bd270d6227406b6bd4ec',  # from
    int(1e18),  # value
    int(1e5),  # gas limit
    int(1e9),  # gas price
    1,  # nonce
)
signature = '0x{}{}{}'.format(
    hex(tx.v)[2:],
    hex(tx.r)[2:],
    hex(tx.s)[2:],
)

签署现有事务对象

从pyethereum(或类似的RLP serializable)为Transaction对象签名:

from ledgereth import sign_transaction
tx = sign_transaction(tx)
signature = '0x{}{}{}'.format(
    hex(tx.v)[2:],
    hex(tx.r)[2:],
    hex(tx.s)[2:],
)

托多

  • 向pytest套件添加假软件狗支持,这样测试就可以在没有真正的账本和人工交互的情况下运行
  • 填写测试
  • 添加消息签名支持

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JFrame中的Java多线程   java Servlet异常映射   java无法从输出流读取   swing Java带来的小程序GUI问题   java什么原因导致错误“'void'类型此处不允许”以及如何修复它?   Java选择器select(长)与selectNow的区别   java自定义arraylist<mygames>获得不同   java Icepdf注释让页面消失   java反向整数数组   java I在生成同步“无法解析配置的所有依赖项”时遇到此错误:app:debugRuntimeClasspath   多个虚拟机上的java线程访问单个DB实例上的表,有时会导致性能低下和异常   swing更改Java中的默认按钮,使其看起来“更好”   java慢速MQ主题订阅。并行化不能提高性能   java运行Boggle Solver需要一个多小时。我的代码怎么了?   数据库中的java循环与应用程序中的java循环   正则表达式匹配${123…456}并在Java中提取2个数字?   java如何制作我们软件的试用版   Java内存参数计算   从另一个类调用方法时出现java问题