IntersectMBO / cardano-cli

This repository contains sources for the command-line interface (CLI) tool for interacting with the Cardano blockchain.
Apache License 2.0
39 stars 14 forks source link

[FR] - Balance existing transaction #867

Open ch1bo opened 3 weeks ago

ch1bo commented 3 weeks ago

Internal (anyone could benefit though)

Area Transaction building

Describe the feature you'd like

I would like to use the cardano-cli to balance a transaction that was drafted by another application. Assuming we have a transaction already built with body and witnesses (redeemers) by a DApp in a transaction envelope tx.json and some signing key wallet.sk which owns ADA to pay fees:

 cardano-cli transaction balance \
   --socket-path ... \ #
   --testnet-magic 2 \
   --unbalanced-tx tx.json \
   --cardano-signing-key wallet.sk \
   --out-file tx.json

Would connect to the cardano-node as usual to fetch various information (utxo owned by user, protocol parameters, system start and era history) and balance the transaction. That is:

Alternative with slightly smaller scope: Take only an input to use for paying fees and change address, very much like transaction build.

Describe alternatives you've considered Obvious alternative is to do all this in the DApp itself, but balancing a transaction is a generic process and not application-specific. Also, this would tie the transaction creating code very much to the "source" of where UTxO, protocol parameters etc. are fetched from. Having it in the cardano-cli, a dedicated client to the cardano-node, would keep it separated from e.g. an alternative workflow that uses blockfrost.

Additional context / screenshots We encountered this while designing a command line tool to create certain smart contract transactions in the Hydra protocol. More details here: https://github.com/cardano-scaling/hydra/issues/1574

ch1bo commented 3 weeks ago

BTW I could contribute this directly and this feature request is also to test waters whether this would be appreciated?

CarlosLopezDeLara commented 1 week ago

@ch1bo This is a very interesting use case and is very much appreciated. If you can submit the PR it would be awesome, if not, just let us know and we will find it a place on the TODO list.

CarlosLopezDeLara commented 1 week ago

This would enable a more standalone operation of some of hydra tools,