completed

Transaction Editor Hardware wallet

$10,500.00 Received
$10,500.00 Requested
Ideascale logo View on ideascale
Community Review Results (1 reviewers)
Impact / Alignment
Feasibility
Auditability
ソリューション

Enhance the Cardano transaction editor with an interface to hardware devices for key storage and transaction signing.

Problem:

The transaction editor has no secure key management and key storage, all keys are on the filesystem. Users improvise safety by working on air-gapped machines.

Yes Votes:
₳ 79,453,780
No Votes:
₳ 18,927,949
Votes Cast:
367

チーム

This proposal was approved and funded by the Cardano Community via Project F9: Developer Ecosystem Catalyst funding round.

  • Video cover image

[IMPACT] Please describe your proposed solution.

The transaction editor wraps command line utilities like cardano-cli & cardano-addresses and connects via API to cardano-wallet. It provides a powerful user interface to work with complex transactions for Cardano. It has an internal system for address management, but lacks secure key storage. That leads to a workflow inconvenience. Most of the time you want to edit transactions and sign them right away, currently you can't you must transfer them to a secure system to do the signing. Or you transfer from your wallet to a "work" address from which you use funds to run your complex transaction from the editor, and then transfer remaining funds back to your main wallet. Those are major inconveniences in development and use.

Inconveniences lead to bad security practices. Secure storage might not be critical when working on testnets, but if you build unsafe habits from the testnet, it will be dangerous when you enter mainnet work. A hardware device, for key storage drastically mitigates security problems, and the user can enforce good security practices to become a habit while working on testnets, where stakes are low.

[IMPACT] Please describe how your proposed solution will address the Challenge that you have submitted it in.

The transaction editor opened developers and advanced user a new scalable UX for flexible work. This extension opens them up for good security practices.

The code is always open-source and I always document features and even release video showcase demonstrating workflows. Thus everybody can start with a quick overview, learn usage in depth and even investigate the code to learn about inner workings, and has a reference template.

[IMPACT] What are the main risks that could prevent you from delivering the project successfully and please explain how you will mitigate each risk?

Russia-Ukraine conflict escalates to Europe. I do plan a relocation to south America, that will delay me for 2-3 months but I can still go on.

I get covid again. It does take me a full month to recover, but then I can go on.

Any of the previous do lead to my death. In that case is a complete loss as I'm the sole developer and there is not yet a big contributor community for someone to jump in and steward the project forward. I consider given the scope of the project and funding amount. It is not worth to plan for it. Someone, someday, independently will spontaneously pick up the project.

Aside from those cases. There are no execution risks. I developer the transaction editor, it is no foreign code base and I already tried using hardware devices.

[FEASIBILITY] Please provide a detailed plan, including timeline and key milestones for delivering your proposal.

Vaccumlabs already offers cardano-hw-cli, which is a command line interface to connect with your hardware wallet. That takes the starting execution risk of the project of, as there is already an available solution and I need to just create an interface on top.

The however there is a "delay" on what the cardano-cli can do, its transaction format and which features the hardware wallet has available and then even later on what is implemented on the cardano-hw-cli. It is only recently that token mints and Plutus smart contracts came into the hardware wallets and thus for this project timeline on Fund 9, none of the Babbage Era(Vasil HF) features will be available.

Development has 2 stages:

First: Expected work ~ 1week ~ 40 Hrs

Create a wrapper of the cardano-hw-cli inside the Cardano transaction editor.

Second :: Expected work ~ 2.5 weeks ~ 100 hrs

  • Extend the Editor's address database to recognize and dynamically generate addresses.

This must be done twice. Once when user only wants to interface with cardano-address, and where each address is individually managed. Secondly on the cardano-wallet REST API interface. In that case we use the service to manage the entire wallet for us. However, then It needs a translator out of the transactions produced from cardano-wallet into ones that can be used by the cardano-cli and cardano-hw-cli tools. 2 Weeks ~ 80 Hrs

  • Derivation path matching. 4 Hrs
  • Multi-stage transaction witnessing. 8 Hrs

Because of cardano-hw-cli design, each witness runs as a separate instruction. It is annoying but also a simple solution. It would be better to have direct access to the HID, but that would at least mean the user has a running node.js service it can connect and run code live, which is a way bigger endeavor. I would rather prefer Ledger&Trezor provide a Rust library for that communication instead of the current JavaScript libraries. That would simplify and improve interaction with hardware devices over in a desktop application over command line. That is but a broader industry decision and everybody is focus on using JavaScript for its general use in browser based environments.

  • Witness aggregator.( This gives the bonus to create partially signed transactions, already possible in the editor for multi-sig but there is no nice interface for it. ) 8 Hrs

Included in the working hours is writing the corresponding documentation. Updating the progress feed on the Cardano Forum and releasing showcase videos.

---

Disclaimer on other Proposals and workload.

This is not my only Fund 9 proposal, and is one 2 two projects around the transaction editor. I do keep my projects linked so that my own efforts compound, however it means that although the work hours is a good measure their weekly compounding would take more than 3.5 weeks. I can only plan for target deadlines after voting is done.

For projects funded on previous rounds.

Fund 7 Transaction Editor is now a closed project

Fund 8 Ouroboros-mini query specification is a documentation effort and I will finish it before start of Fund 9. This project additionally includes a simple client implementation used within the Transaction Editor

Fund 7 Web based transaction editor, I miscalculated the design and effort for this project, I will keep working on it well past its funding time and probably well over Fund 9. It has been a great challenge to deal with it and I had to recognize changing its design a few times on the way. It has inspired some features on the Transaction editor desktop application, unveiling the Ouroboros-mini query specification, dealing with cardano-db-sync to process data to deal with Plutus contracts. I don't request further funding for this project, because it is personally not clear to me what it end up looking like. Its closing feature is producing an interactive Coin-Join on Cardano, whether it ends up as the service I intended or an extension for Nami I still don't know. Thus for the opportunity to keep iterating on the design I take it on my personal effort. Every time I do come up with a clearly scoped feature again, it is due to working on this project.

[FEASIBILITY] Please provide a detailed budget breakdown.

This project has only work compensation as I already own hardware devices from Ledger, and the cardano-hw-cli provides Ledger&Trezor connectors.

A total of 140 work hrs as specified in the previous section are budgeted at an hour rate of 75USD/hrs

[FEASIBILITY] Please provide details of the people who will work on the project.

I'm the sole contributor. Project coordinator and developer.

Óscar Nájera

https://oscarnajera.com

https://github.com/Titan-C

[FEASIBILITY] If you are funded, will you return to Catalyst in a later round for further funding? Please explain why / why not.

This project is closed in scope and I'll not return for further funding for it specifically. I can close it successfully. However, I believe Catalyst is a great system to sponsor people to work on community valued tasks. I as developer the more I work on Cardano, the more tools I need for it and the more Ideas I want to work on. Thus I will return to Catalyst to fund new projects or new modules for the Transaction editor. The community vote does help me prioritize what I shall build first and it also lets me meet other people.

[AUDITABILITY] Please describe what you will measure to track your project's progress, and how will you measure these?

My projects progress is clearly auditable by the deliverables stated on the "detailed plan" section above. The software provided in this project is Open Source, GPL-3 licensed and available in the well known code repository GitHub. Although I do tend to develop on private branches, each feature release has a transfer to the public repository. Additionally, release video showcases about this project. You can see a working demo.

I do act with more flexibility on the timeline as I juggle other responsibilities. Yet progress can also be measured on the monthly reports.

[AUDITABILITY] What does success for this project look like?

Free software is not the license, it is not the code openly available. It is people being empowered to use the tools for their own means of computing. The transaction editor builds on this philosophy, on bringing the highest flexibility to the user. Now with this interface to a hardware devices it brings convenience to security practices.

My success is people embrace this. Regardless of all the convenience it represents for the user to use web-wallet as light clients. The transaction editor works with a full cardano-node promoting decentralization and accountability. It's code being open allows developer to have a reference on how use-cases can be solved. The transaction editor is built on top of worlds longest lived editor Emacs, a solid foundation for software you can rely on and I expect people continue the practice of developing with and for this text editor.

[AUDITABILITY] Please provide information on whether this proposal is a continuation of a previously funded project in Catalyst or an entirely new one.

This is an extension of my proposal for a Transaction Editor, although here the focus is to use secure hardware, and the feature is more around the wallet side of it not the transaction crafting. You can read about that project on:

https://cardano.ideascale.com/c/idea/385056

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

Comments

Monthly Reports

I did experience many hurdles with the fact that the cardano-cli works already on Babbage era(Vasil HardFork) however the hardware wallet ecosystem has still to reach that state. At the moment it is still necessary to create Alonzo transactions in CDDL and those can be passed to the hardware wallet.

The cardano-hw-cli, which is the project I'm wrapping for the transaction editor does not provide a convenient text API everything works based on files. Since that application holds no state key management becomes a nightmare as for every key the user must track 2 files and for every address it is 3 files. I have decided to perform the management in the editor because I can control state on top of that I have a running database for it.

I still face the main limitation to constantly create new files to feed them to cardano-hw-cli. I started to develop a more Unix like too where I can pipe data into the process and save the hassle of naming and keeping track of so many key files. The editor will have its own transmission protocol, certainly packets of json objects as the main Hardware wallet HID interfaces are in TypeScript. I'm essentially simplifying cardano-hw-cli to pipe the communication to the hardware wallet.

The address management on the editor side is currently architect ed to use the cardano-address binary from IOG.

Disbursed to Date
$10,500
Status
Still in progress
Completion Target
2. In the next 3 months
Comments 0

Login or Register to leave a comment!

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