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.