与账本硬件钱包上的账本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_ACCOUNTS
env 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套件添加假软件狗支持,这样测试就可以在没有真正的账本和人工交互的情况下运行
- 填写测试
- 添加消息签名支持
- 项目
标签: