(https://github.com/Titan-C/cardano.el),) yet it is still for the technical user and requires setting up your node. I want to open its possibilities to a larger audience by offering this editor as a web application, letting anyone have access to crafting complex transactions, without even needing to set up a node.
Have look at this short example of what a transaction editor does
<https://youtu.be/ocSzYLmYPMQ>
** Impact & target group
I keep seeing people struggling with the CLI tool, through constant posts on the Cardano discord. Whether you are a developer, a creator launching an NFT collection, or a stake-pool operator you need to craft complex transactions, and the cardano-cli is not easy. We all need help on how to do some tasks with the cli.
User interfaces define the usability of a product. It is not enough to provide a tool that does the job, it must enable the user to do the job. The user and the job to be done define the requirements of the user interface. There is never a UX that fits everybody.
This proposal offers an interface for people that craft complex transactions and don't want the hassle of setting up the cardano-node or the extra transaction editor. It is for those who want to test their ideas immediately without any setup effort.
The declarative interface of this tool lets you focus on understanding the transactions you work on. The tool provides you with context & templates. You stop worrying about the cli and its instructions.
Better tools open more possibilities.
This web editor runs as a service connected to a cardano-node to offer access to the UTxO set and do validation and submission of transactions. It will, however, export for you, the cli instructions as scripts for you to learn, the composed transaction for you to sign offline, and the instructions for you to use the cli to sign locally with your keys, even on your air-gapped system. Transaction signature works offline. Then you can upload your signed transaction to the service to submit it to the blockchain.
** Feasibility(Skill required)
This proposal lags behind my transaction editor in features. It will be a transfer of the working design into a web service. It has a different set of challenges, although it can always receive a YAML file and use the same parser from the transaction editor, the web service for usability reasons also needs dynamic structured forms. Fortunately, that is nowadays a solved Problem in Frontend development and can be easily implemented with React and some plugins.
There is a completely new challenge by exposing the Cardano node at such a low level, thus this web editor will not offer any of the control features of the cli, it will only expose the query connections over the cardano-db-sync and the validation over the submit-api. In the same way, the transactions are not built calling the cardano-cli but are directly serialized using Emurgo's serialization-lib. This last step will create a byproduct library that web-wallet developers can use once they want to incorporate standard transactions in their products.
I will implement the entire service in Clojure + Clojurescript. They offer, in my experience, the most useful Fullstack ecosystem. Clojurescript+Reagent+Reframe let me create the dynamic structured forms, and on the backend, Clojure connects with the PostgreSQL database, and the submit-api again over a REST-API internally.
** Auditability
The rate of work is a part-time occupation. Weekly sprints of 3 workdays(Fri, Sat, Sun) (I do work part-time in my main occupation). This spaced work is very beneficial, as it gives time for the community of users to test the tool and deliver feedback. It also helps me as a developer to gather ideas over the week, while thinking about other tasks. This influences thought, rest, and openness.
Every week, the sprint starts on Fridays with community feedback review and planning of tasks. The development follows until the end of Saturday. Sunday is reviews and reports day. Completed features are documented in a newsletter form and posted on the Cardano forum. These features are documented as part of the Handbook of the tool. A demo video is recorded, edited, and posted online(on YouTube). Yes, a full day of work is dedicated to communication. New Features are important, but getting them into the hands of users is what counts. People, even technical ones, read more tutorials and documentation than the actual source code.
All work is available on GitHub licensed GPL3. All communication takes place openly on the Cardano forum.
** KPI
- Users can craft complex transactions without ever needing to install a cardano-node
- Highly dense and example-rich documentation is available.
- Users can create their NFTs, write the metadata, and directly set up their distribution.
- Tutorial on how to craft a Coin-Join is available. That means multiple people can agree on creating a simultaneous transaction where all of them pay at the same time and by that increase anonymity of transactions.
- Tutorial on Key management and signing is available. This way people can craft transactions on the editor and then sign them on their local computer(air-gapped one even better). Then upload them back with this service.
** Success Growth
- 3 Months: Service is running on Mainnet and has been used to mint new assets
- 6 Months: Cardano docs includes this service as a get started tool
- 12 Months: Service has 10K monthly active users. It is a form of a technical wallet. People mint their tokens here. It is a hub for Coin-Joins. People feel empowered to use Cardano to their needs instead of being bounded by just having a wallet that has standard interaction mode.
** Timeline
Everyone has a plan until they get punched in the face – Mike Tyson.
I propose a 10 Week action plan, on dedicated focus for this service.
Most software development is unpredictable and has little to do with the task at hand. It always requires investigating and solving problems related to dependencies. It all takes an unpredictable amount of time. Despite that, this is the best realizable timeline.
- Weekend-01: (Alpha dump) Launch the service. On Testnet, with direct connection to cli. Transaction editor will be for the moment only a text area for YAML. It will use the parser & logic already developed on my transaction editor from cardano.el
- Weekend-02-04: Bug fixing, review over-usage metrics. Analyze & mitigate how much this open exposure of the cli & cardano-node. Collect user feedback.
- Weekend-05-06: By this time based on feedback. Set on design for dynamic Forms or provide the full editor experience using slatejs
- Weekend-07-08: Continuous release & bugfix for web service.
- Weekend-09: Setup new service host for mainnet
- Weekend-10: Wrap up, clean up, deal with outstanding bugs, make a stable release.
** Budget
2000 USD Cloud Infrastructure 12 months. Includes Continuous Integration & build servers. VPS to run cardano-nodes on mainnet, public testnet, and the databases as I will not go over Blockfrost-API.
The rest of the budget is for work compensation at an average rate of 60USD/hr. On the various tasks of Software design and implementation, documentation writing, tutorial video recording & editing, project stewardship, and other communication. Currently I'm a sole developer.
** My experience
- Plutus pioneer first cohort, "Completed/Survived/Graduated". Awarded NFT 117 of class photo, Titan-C
- Second Place on the Plutus Pioneer Capstone Challenge on the Cardano Summit 2021 for this same tool
*** Contributions to cardano
- cardano.el :: <https://github.com/Titan-C/cardano.el>
This is the inspiration for this service
My pull request and issues to IOHK repos.
- <https://github.com/input-output-hk/cardano-node/pull/3082>
- <https://github.com/input-output-hk/Alonzo-testnet/issues/54>
That is part of parallel work done while developing the transaction editor.
*** Most successful Open-Source project
- Sphinx-Gallery :: <https://sphinx-gallery.github.io/stable/index.html>
Grew this project to become the standard documentation tool for Scientific Python projects.
This project is my hallmark of how dense example-based documentation fosters the use of a tool.
*** Other
Currently employed to develop for checkmk. <https://github.com/tribe29/checkmk>
Work ranging from tools to analyze monitoring data, to the user interface. Always with a direct dialog with customers.
I hold a Ph.D. in Theoretical Physics developing simulations for correlated electrons systems.
Everything summarizes into: I'm a tool builder. I build the tools I need to get the job done.