[GENERAL] Name and surname of main applicant
Santiago Carmuega
[GENERAL] Are you delivering this project as an individual or as an entity (whether formally incorporated or not)
Entity (Incorporated)
[GENERAL] Please specify how many months you expect your project to last (from 2-12 months)
6
[GENERAL] Please indicate if your proposal has been auto-translated into English from another language
No
[GENERAL] Summarize your solution to the problem (200-character limit including spaces)
A light, self-custodial, open-source wallet that runs on the terminal, enabling new capabilities for power-users around automation and programability which can't be find in other wallets.
[GENERAL] Does your project have any dependencies on other organizations, technical or otherwise?
No
[GENERAL] If YES, please describe what the dependency is and why you believe it is essential for your project’s delivery. If NO, please write “No dependencies.”
No dependencies.
[GENERAL] Will your project’s output/s be fully open source?
Yes
[GENERAL] Please provide here more information on the open source status of your project outputs
All source-code developed for this proposal will be released under Apache 2.0 license.
[METADATA] Horizons
Wallet
[SOLUTION] Please describe your proposed solution
End-user wallet interactions are broadly supported across the wide diversity of existing wallets in the ecosystem, but these wallets are optimized for one-off interactions using touch / click interfaces.
Power-user and developers are interested in automating processes and scripting interactions. Touch / click interfaces make automation very inefficient, insecure or even impossible to accomplish.
The best interface for automation and scripting is a CLI (command-line interface). A CLI-based wallet would allow power-users to leverage the huge ecosystem of existing tools specially designed for these particular use-cases.
This new CLI wallet will provide the following features:
- Common wallet features: our CLI includes the basic features one would expect from any wallet, such as: creating signing keys, restoring an existing wallet, checking balances, submitting transactions, etc.
- Intent-based commands: users can build Cardano transactions by specifying commands that describe "intents", such as transferring ADA amount, sending an NFT, publishing a certificate, etc. These commands are aware of the wallet balance and will automatically build the required transaction primitives.
- Scriptable transaction: transaction commands can be composed into more complex interactions using common scripting languages like bash or python. These scripts can serve as "parametrized transaction templates" that can be reused multiple times.
- Chain explorer: our tool can be used like a CLI-based explorer to query the history of the chain for data such as: specific blocks, transactions, addresses and UTxOs. Data can be provided in different formats: CBOR, Json and CSV.
- Extremely lightweight: the CLI will have a very low resource footprint, requiring only a few mb of memory, low CPU consumption and minimum disk space; making it suitable running on laptops, servers and raspberry pis.
- Open-source, Hackable: source-code for the wallet will be public and released under Apache 2.0 license, allowing anyone to audit and modify it to their needs. The code-base will be well documented and organized, making it friendly for developers to adapt.
- Switchable data providers: our tool is a lightweight wallet, it requires a remote server to interact with the blockchain. To give the users options and avoid vendor lock-in, this wallet will be coded against a generic interface (utxorpc.org) supported by multiple vendors and backend tools.
[IMPACT] Please define the positive impact your project will have on the wider Cardano community
Providing low-code tooling for power-users to automate interactions with Cardano will open up a whole new set of intermediate-complexity applications (trading bots, scripted dApps, notification bots, etc) that have the potential to drive new on-chain activity and foster adoption by technical users without extensive and deep expertise on Cardano development.
[CAPABILITY & FEASIBILITY] What is your capability to deliver your project with high levels of trust and accountability? How do you intend to validate if your approach is feasible?
TxPipe is an active member of the Cardano ecosystem
TxPipe has been developing open-source tools for the Cardano ecosystem for over 2 years and we're not going anywhere. Evidence of our commitment can be found by evaluating the continuous activity of our public code repositories.
Experience developing in the Cardano ecosystem
TxPipe has helped developed several dApps for the Cardano ecosystem. This experience allows us to evaluate the feasibility of the project and its potential benefit from a developer's perspective.
Successful Catalyst proposals
We have successfully completed several Catalyst proposals. This may serve as evidence that our team has the required capabilities to fulfill these type of projects.
Development process will be public and open-source
Both the output and the development process will be public and open-source. This approach provides an easy way for the Catalyst team and the Cardano community to evaluate the progress at each step of the process.
[PROJECT MILESTONES] What are the key milestones you need to achieve in order to complete your project successfully?
Project Scaffolding
Milestone outputs:
- Publicly available source-code containing the project scaffold
- A stub of the CLI binary and install script
- A stub of the CLI main command entry-points
Acceptance criteria:
- A user is able to install the stub CLI binary
- The source-code is suitable for further feature development
Evidence of milestone completion:
- Source-code available in the Github repository
- Link to binary release and install procedures
Local Data & Key Management
Milestone outputs:
- Publicly available source-code containing the milestone features
- New feature for creating new wallet keys
- New feature for restoring wallet from secret phrase
- New feature for storing local wallet data (UTxO state)
Acceptance criteria:
- A user can create new wallet keys using the CLI
- A user can restore a wallet from secret phrase using the CLI
- A user can read the available local data for their wallet using the CLI
Evidence of milestone completion:
- Source-code available in the Github repository
- Binary release containing the new features
- Video showcasing the new features
External Data Provider Integration
Milestone outputs:
- Publicly available source-code containing the milestone features
- New feature for syncing wallet state from remote provider
- New feature for submitting transactions to remote provider
- New feature for querying chain data from remote provider
Acceptance criteria:
- A user can update the balance of their wallet using the CLI
- A user can read the updated balance of their wallet using the CLI
- A user can submit a new generic transaction using the CLI
- A user can query chain data using the CLI
Evidence of milestone completion:
- Source-code available in the Github repository
- Binary release containing the new features
- Video showcasing the new features
Transaction Building
Milestone outputs:
- Publicly available source-code containing the milestone features
- New feature for building transaction using low-level primitives
- New feature for building transactions from intents
- New feature for inspecting pending or existing transactions
Acceptance criteria:
- A user can update the balance of their wallet using the CLI
- A user can read the updated balance of their wallet using the CLI
- A user can submit a new generic transaction using the CLI
- A user can query chain data using the CLI
Evidence of milestone completion:
- Source-code available in the Github repository
- Binary release containing the new features
- Video showcasing the new features
Packaging & Documentation
Milestone outputs:
- Improved install experience for mac, windows & linux
- Documentation website with install and usage instructions
- Automation and scripting examples
Acceptance criteria:
- A user can install the CLI in mac, windows and linux
- A user can learn how to use the CLI from the available documentation
- A user can use the provided examples to build their own automation flows
Evidence of milestone completion:
- Source-code available in the Github repository
- Binary release for all supported platforms
- Link to documentations site and examples
- Video showcasing the install process and comprehensive usage
Closeout Report
Milestone outputs:
- Publicly available source-code with all features
- Final binary release and install scripts
- Final documentation site
- a video showcasing the final output of the project
- a final report describing the project process and outcome
Acceptance criteria:
- the wallet CLI matches the features in the proposal
- the final video complies with Catalyst requirements
- the final report complies with Catalyst requirements
Evidence of milestone completion:
- Source-code available in the Github repository
- Link to documentation site (URL TBD)
- Final video uploaded to Google drive
- Final report uploaded to Google drive
[RESOURCES] Who is in the project team and what are their roles?
[BUDGET & COSTS] Please provide a cost breakdown of the proposed work and resources
FTE = Full-time equivalent
Software development:
- Rust developer: 1 FTE x 6 months = ₳ 154,286
- Technical Writer: 1 FTE x 3.5 months = ₳ 30,000
Project Management:
- Project Manager: 1/4 FTE x 6 months = ₳ 12,857
[VALUE FOR MONEY] How does the cost of the project represent value for money for the Cardano ecosystem?
The bulk of the budget falls under the software development category. TxPipe has extensive experience in the field, allowing it to provide good value for money. The hourly rates are defined using fair market prices. The estimation for the level of effort takes into account all of the optimizations that our team is capable of providing after years of experience developing software solutions in the Cardano ecosystem.