🐍 Client side implementation for TREZOR-compatible Bitcoin hardware wallets.
Go to file
Pavol Rusnak f1868b72cd Merge pull request #49 from keepkey/master
Added code to make trezor-agent work with keepkey.
2016-02-10 15:37:39 +01:00
tests fix whitespace 2016-01-13 00:17:38 +01:00
tools fix whitespace 2016-01-13 00:17:38 +01:00
trezorlib Merge pull request #49 from keepkey/master 2016-02-10 15:37:39 +01:00
.gitignore remove images 2015-05-07 18:29:38 +02:00
.travis.yml fix travis build 2016-01-19 22:59:40 +01:00
build_pb.sh cleanup protobuf mess 2013-12-16 17:40:25 +01:00
cmdtr.py rename cmdtr.py to trezorctl (but keep symlink for now) 2015-02-22 14:23:39 +01:00
COPYING python-trezor is LGPLv3 2015-01-30 23:55:29 +01:00
helloworld.py Update hashbang to use /usr/bin/env python 2015-05-13 02:36:56 +12:00
mnemonic_check.py Update hashbang to use /usr/bin/env python 2015-05-13 10:23:02 +02:00
README.rst add travis.yml 2015-12-21 20:47:01 +01:00
setup.py fix interface number handling 2016-01-17 00:37:39 +01:00
trezorctl implement get_public_node.arguments --ecdsa-curve-name --show-display 2015-11-19 11:47:19 +01:00
trezorctl-emu.sh rename cmdtr.py to trezorctl (but keep symlink for now) 2015-02-22 14:23:39 +01:00

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

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

Client side implementation for Trezor-compatible Bitcoin hardware wallets.

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

Example
-------

also found in ``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**

How to install (Windows)
------------------------
* Install Python 2.7 (http://python.org)
* Install Cython (Windows binaries on http://cython.org/#download)
* Install Microsoft Visual Studio 2008 Express
* Add "C:\\Program Files (x86)\\Microsoft Visual Studio 9.0" to system PATH
* Clone repository (using TortoiseGit) to local directory
* Run C:\\python27\\python.exe setup.py install (or develop)

How to install (Debian-Ubuntu)
------------------------------
* sudo apt-get install python-dev python-setuptools cython libusb-1.0-0-dev libudev-dev git
* git clone https://github.com/trezor/python-trezor.git
* cd python-trezor
* python setup.py install (or develop)