🐍 Client side implementation for TREZOR-compatible Bitcoin hardware wallets.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Chakib Benziane 74424168b2 Merge pull request #1 from sp4ke/sp4ke-patch-1 4 years ago
bash_completion.d add initial bash_completion script 4 years ago
tests Unit Test: PIN protection timeout 4 years ago
tools unclutter root dir by moving scripts into tools subdirectory 4 years ago
trezorlib add session request to TransportV2, add @session helper 4 years ago
.gitignore remove images 5 years ago
.travis.yml drop python 2.6 and older, 3.3 and older 4 years ago
COPYING python-trezor is LGPLv3 5 years ago
MANIFEST.in Include tests in release source tarball 4 years ago
README.rst update readme 4 years ago
build_pb.sh cleanup protobuf mess 6 years ago
cmdtr.py rename cmdtr.py to trezorctl (but keep symlink for now) 5 years ago
setup.py Avoid repeating keyword argument 4 years ago
trezorctl Allow leading 0x in data. Handle new contracts. 4 years ago



.. image:: https://travis-ci.org/trezor/python-trezor.svg?branch=master
:target: https://travis-ci.org/trezor/python-trezor

.. image:: https://badges.gitter.im/trezor/community.svg
:target: https://gitter.im/trezor/community

Client side implementation for TREZOR-compatible Bitcoin hardware wallets.

See http://bitcointrezor.com for more information.


(Run with sudo if not running in superuser mode under Linux)

.. code::

pip install trezor

On Linux you might need to run these commands first:

.. code::
sudo apt-get install python-dev cython libusb-1.0-0-dev libudev-dev git
sudo pip install setuptools


also found in ``tools/helloworld.py``

.. code:: python

#!/usr/bin/env python

from trezorlib.client import TrezorClient
from trezorlib.transport_hid import HidTransport

def main():
# List all connected TREZORs on USB
devices = HidTransport.enumerate()

# Check whether we found any
if len(devices) == 0:
print('No TREZOR found')

# Use first connected device
transport = HidTransport(devices[0])

# Creates object for manipulating TREZOR
client = TrezorClient(transport)

# Print out TREZOR's features and settings

# Get the first address of first BIP44 account
# (should be the same address as shown in mytrezor.com)
bip32_path = client.expand_path("44'/0'/0'/0/0")
address = client.get_address('Bitcoin', bip32_path)
print('Bitcoin address:', address)


if __name__ == '__main__':

PIN Entering

When you are asked for PIN, you have to enter scrambled PIN. Follow the numbers shown on TREZOR display and enter the their positions using the numeric keyboard mapping:

=== === ===
7 8 9
4 5 6
1 2 3
=== === ===

Example: your PIN is **1234** and TREZOR is displaying the following:

=== === ===
2 8 3
5 4 6
7 9 1
=== === ===

You have to enter: **3795**