nem-trezor
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.0 • Public • Published

    Nem Trezor

    npm version License: MIT

    nem-trezor is a typescript / node.js npm module that adds trezor functionalities to nem-library.

    For the module to work you will need a trezor device connected to the system and trezor trezor-bridge should be running (or the chrome extension).

    The library only works in a browser environment because of the way trezor is implemented, if executed in a node script environment it will throw an exception.

    1. Installation
    2. Usage

    Installation

    to install the npm module on your typescript or node project run:

    npm install nem-trezor --save

    the module is made to work together with nem-library, so you should install that too:

    npm install nem-library@1.0.5 --save

    it is important that 1.0.5 is installed since it needs to be the same version than the one in nem-trezor

    Usage

    The module exports a class TrezorAccount, that is made to be as similar to the Account class in nem-library as possible. It allows to use trezor accounts to sign transactions. Unencrypting messages is not possible right now but may be in the future. Also the way that encrypted messages are sent is different from the way it is done in nem-library, since trezor encrypts messages at the same time that it signs and serializes the transaction.

    Here are some examples of the basic usage of the module:

    Sending a Transfer Transaction

    import { NEMLibrary, NetworkTypes, Transaction, TransferTransaction,
        TimeWindow, XEM, Address, TransactionHttp, PlainMessage} from 'nem-library';
    import { TrezorAccount } from 'nem-trezor';
     
    // 0. This function will bootstrap both the internal nem-library for nem-trezor and the local one
    // if the local version of nem-library and the one in nem-trezor don't match then this will give problems
    NEMLibrary.bootstrap(NetworkTypes.TEST_NET);
    const transactionHttp = new TransactionHttp();
     
    // 1. Get the first account of the trezor device. Change the number for different accounts. This will prompt a confirmation on the device.
    TrezorAccount.getAccount(0)
      .flatMap((account) => {
        console.log(account);
        // 2. Create Transaction object
        // For more information on Transaction types and their usage check out the nem-library documentation
        const trans: Transaction = TransferTransaction.create(
          TimeWindow.createWithDeadline(),
          new Address("TBEJ3L4MKNRZRY7PR5CO35746QRCR32AHE6UMTQN"),
          new XEM(10),
          PlainMessage.create("hello from trezor"),
        );
        // 3. Sign and serialize the transaction from the trezor device. This will prompt for confirmation on the device.
        return account.signTransaction(trans);
      })
      // Announce the transaction to the network
      .flatMap((signedTransaction) => transactionHttp.announceTransaction(signedTransaction))
      // Print the response
      .subscribe((response) => console.log(response), (err) => console.error(err));

    Sending an encrypted message

    For sending an encrypted message (only valid for transfer transactions), we will pass the public key of the receiver to the signTransaction function:

    // steps 1 and 2 are the same as before
    // 3. Sign, serialize, and encrypt the transaction from the trezor device. This will prompt for confirmation on the device.
    account.signTransaction(trans, "<receiver_public_key>")
       // Announce the transaction to the network
      .flatMap((signedTransaction) => transactionHttp.announceTransaction(signedTransaction))
      // Print the response
      .subscribe((response) => console.log(response), (err) => console.error(err));

    Install

    npm i nem-trezor

    DownloadsWeekly Downloads

    12

    Version

    1.1.0

    License

    MIT

    Unpacked Size

    54.4 kB

    Total Files

    13

    Last publish

    Collaborators

    • shierve