🐍 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

README.rst

python-trezor
=============

.. 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.

Install
-------

(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

Example
-------

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')
return

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

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

# Print out TREZOR's features and settings
print(client.features)

# 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)

client.close()

if __name__ == '__main__':
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**