funded
Message signing for Trezor and Ledger (CIP-8, CIP30)
Current Project Status
in_progress
Total
amount
Received
₳231,799
Total
amount
Requested
₳272,705
Total
Percentage
Received
85.00%
₳231,799 Received out of ₳272,705
Solution

We will implement support for message signing in Trezor + Ledger firmware and JS integration layer. We will integrate this functionality also in cardano-hw-cli tool used mainly by SPOs and power-users

Problem

Arbitrary message/data signing is important part of Web3 ecosystem and it is mainly used to verify the ownership of the wallet connected to a dApp. This feature is currently missing on Trezor + Ledger

Impact / Alignment
Feasibility
Value for money

チーム

2 members

This proposal was approved and funded by the Cardano Community via Project F10: Products & Integrations Catalyst funding round.

[IMPACT] Please describe your proposed solution.

More and more dApps require users to sign some messages with their wallet. This is done for different purposes, the most common purpose is to validate that the user owns a secret key to the injected public key (when performing actions such as log in to dApp, prove ownership of address, asset, stake key, governance voting etc). This feature was long missing on HW wallets which blocks HW wallets users from using some popular Cardano dApps and we would like to fix it.

Many dApps developers were shy of implementing message signing functionality to their dApps because this was not supported by HW wallets in the past.

Here are a few examples of Cardano apps currently using message signing:

  • Jpg.store - login
  • summon dao - login
  • Sundaeswap - voting
  • GateKeeper - prove ownership of digital assets

Looking at the Ethereum ecosystem, we may expect widespread use of message signing for different purposes in the future.

We will implement the signData endpoint (as described in https://cips.cardano.org/cips/cip30/#apisigndataaddraddresspayloadbytespromisedatasignature) for Ledger and Trezor devices (we may not be able to do it for Nano S due to memory constraints) and in cardano-hw-cli.

Details: COSE_Sign1 (with the only allowed context “Signature1”), with support for hashed payload and also non-hashed payload with a limit on payload length (to be still determined, depending on Ledger and Trezor capabilities). No COSE encryption.

[IMPACT] How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?

This proposal will enable HW wallet users to use core web3 functionality which is becoming more and more used on Cardano blockchain and we can expect many more dapps will be using message signing in the future.

[IMPACT] How do you intend to measure the success of your project?

HW wallet users will be able to use dApps that are using message signing.

[IMPACT] Please describe your plans to share the outputs and results of your project?

We will inform all popular dApps that use message signing about the possibility to enable message signing for HW users. This should be easy to enable for dApps as most of the work will be done by the integration libraries.

[CAPABILITY/ FEASIBILITY] What is your capability to deliver your project with high levels of trust and accountability?

Vacuumlabs has been developing both Ledger and Trezor Cardano integrations since 2018. Alongside this, we developed numerous other Ledger integrations.

[CAPABILITY/ FEASIBILITY] What are the main goals for the project and how will you validate if your approach is feasible?

Message signing released on Trezor and Ledger.

[CAPABILITY/ FEASIBILITY] Please provide a detailed breakdown of your project’s milestones and each of the main tasks or activities to reach the milestone plus the expected timeline for the delivery.

Milestone 1 - Trezor integration

Milestone 2 - Ledger integration

Milestone 3 - External security audit for Ledger

Milestone 4 - Cardano-hw-cli integration

Milestone 5 - Trezor release

Milestone 6 - Ledger release

[CAPABILITY/ FEASIBILITY] Please describe the deliverables, outputs and intended outcomes of each milestone.

Milestone 1 - Trezor integration

  • Demonstration of integration of message signing (CIP8/30) in Trezor firmware
  • Demonstration of integration of message signing in Trezor Connect (used for communication with the Trezor device)

Milestone 2 - Ledger integration

  • Demonstration of integration of message signing (CIP8/30) in Ledger firmware
  • Demonstration of integration of message signing in cardano-ledger-js library (used for communication with the Ledger device)

Milestone 3 - External security audit for Ledger

  • Passed external audit and fixed findings

Milestone 4 - Cardano-hw-cli integration

  • Demonstration of integration of message signing in cardano-hw-cli (used by 3rd party scripts and by power users)

Milestone 5 - Trezor release

  • Message signing live on Trezor

Milestone 6 - Ledger release

  • Message signing live on Ledger

    [RESOURCES & VALUE FOR MONEY] Please provide a detailed budget breakdown of the proposed work and resources.

Milestone 1 - Trezor integration - 78810.3

Milestone 2 - Ledger integration - 88082.1

Milestone 3 - External security audit for Ledger - 54545

Milestone 4 - Cardano-hw-cli integration - 21816

Milestone 5 - Trezor release - 13907.7

Milestone 6 - Ledger release - 15543.9

[RESOURCES & VALUE FOR MONEY] Who is in the project team and what are their roles?

Martin Simonovic - PM

Jan Mazak - Engineer (Ledger)

Gabriek Kerekes - Engineer (Trezor)

[RESOURCES & VALUE FOR MONEY] How does the cost of the project represent value for money for the Cardano ecosystem?

Costs for HW wallet firmware development were calculated based on $1000 per man-day of work. This is mainly because very specific skills are required by the engineers delivering this work and it is on par with other companies providing HW wallet development services. The cost for external audit is set based on our past experience with these audits, as we already received quotes for several different codebases.

コミュニティ・アドバイザー・レビュー (1)

Comments

Monthly Reports

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3分 24秒
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4分 3秒
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3分 48秒
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2分 16秒
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3分 14秒
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3分 19秒
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4分 59秒
    Darlington Kofa
0:00
/
~0:00