Dune Network + Trezor = ❤

Trezor model T support on Dune Network using Tezos App. Tested with Trezor firmware 2.1.8. Firmware downgrade instructions are available here if needed.
eg. m/44'/1729'/0'/0'

What's this?

This page offers a secure way to transfer $DUN tokens from an address managed by a Trezor model T hardware wallet to another (eg. fresh) address. This solution uses Tezos support already provided by Trezor. As a consequence, you should use tz versions of the addresses to make your transactions on Dune Network.

The solution has been tested with Trezor firmware version 2.1.8. It may work with more recent (future) versions. We'll test them and update this page accordingly.

How to downgrade to Trezor firmware 2.1.8?

In case you need to downgrade to Trezor firmware 2.1.8, instructions are given on Trezor's wiki.

Is this method/page safe?

Yes/Yes!

The method is safe: It uses Trezor Connect facilities provided by Trezor and your model T hardware wallet to access your public key and to sign operations on demand. You'll never be asked for your mnemonics or your private key.

The page is safe: it's made of this HTML file that includes the following other resources:

  • An external Bootstrap 4.3.1 CSS file: https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css,
  • An external JavaScript file provided by Trezor developers that interfaces with Trezor Connect: https://connect.trezor.io/8/trezor-connect.js,
  • A small library rpc.js that wraps some useful Dune Network RPCs,
  • A JavaScript file data.js that contains the internal state of the App and provides different functions to access and/or modify this state,
  • A JavaScript file updater.js that: (1) forwards users requests to data.js, and (2) refreshes the HTML page when internal state in data.js is updated.

It's important to observe in these files that:

  • The only interactions with Trezor Connect in our code are located in data.js, and these interactions are legit:
    $ grep -i trezor *.js
    data.js:    TrezorConnect: window.TrezorConnect,
    data.js:    trezor_connect_version: 8, // version that works with protocol 005
    data.js:data.init_trezor = function () {
    data.js:    if (data.trezor_connect_version >= 7) {
    data.js:        data.TrezorConnect.manifest({
    data.js:            appUrl: 'https://dune.network/dune-trezor'
    data.js:            console.log("Trezor inited. Version is: " + data.trezor_connect_version);
    data.js:                    data.TrezorConnect.tezosGetAddress({
    data.js:                            data.TrezorConnect.tezosGetPublicKey({
    data.js:        data.TrezorConnect.tezosSignTransaction(operation).then(function (res) {
    updater.js:                    window.location = 'https://dune.network/dune-trezor/';
    updater.js:    data.init_trezor();
  • The destination address your enter is the one forwarded to data.js and used to construct the transaction. This address is also displayed by your Trezor model T hardware wallet when you're asked to sign the transaction.

You have other questions?

Don't hesitate to contact us at: contact@dune.network, or to join our discussion platforms.