<p>I would add a fence-sitting &quot;it depends on your use case&quot; and what your time line is.</p>
<p>The cli can be utilized to build Txs without secret information. Given that light wallets following CIP 30 disclose all available UTXOs and other necessary info (not wallet secrets obvs) to build Txs on the users behalf. Light wallets generally allow users to sign a Tx, even though they cannot build them. So if you want to deliver a usable product tomorrow, this is at least feasible.</p>
<p>The wallet, and to some extent the cli, have been designed for personal use in the sense that they need access to sensitive information. The wallet only operates with secret keys.
To use the cardano wallet, either you force users to host their own wallet in their own instance, or you run instances and they use your platform.
The former is a technical barrier, and the latter undermines blockchain.
How well does it scale to have hosted <code>cardano-wallet</code> as a service? No clue. Its trivially parallelized so its probably fine but i'm sure its not optimized for that use case.</p>
<p>(This has now been fixed but) For the cli, it used to require secret keys to build transactions <a href="https://github.com/input-output-hk/cardano-node/issues/3338" rel="nofollow noreferrer">here</a>. Just reflective of this not being the focus of the design.</p>
<p>Other options: cardano-serialization-lib to build Txs in browser. There are a bunch of other nascent projects trying bridge this gap between &quot;Technically feasible&quot; and &quot;Actually usable&quot;</p>

CC BY-SA 4.0
2022-04-15T17:11:23.267Z
I see with `cardano-cli` in order to build a transaction I need a `--signing-key-file` once you sign the transaction as well, when creating wallets you need to store the `--payment-verification-key-file` & `--signing-key-file`. How can I avoid storing these on my `cardano-node` if I want to just use the `cardano-cli` for my service? Can I allow the user to keep these keys on their device & then sing them on the client side? Also would I be able to use `cardano-addresses`  to create recovery keys for these wallets created with `cardano-cli`?
CoderMan
CC BY-SA 4.0
2022-04-16T10:26:12.277Z
My knowledge is now dated, but when I was trying to do this the logic was to build on your machine with cli, and sign on their machine. Nami (and others) have the capability of signing and submitting external Txs. They cannot however build or even verify.
waalge
CC BY-SA 4.0
2022-04-15T09:55:16.723Z
2022-04-15T09:55:16.723Z
waalge
<p>cardano-wallet is a framework built for high level control over cardano-cli, and (or some version of it) is the backend for wallet software like Daedalus, Yoroi, Eternl, etc. High level features include: automatic coin/UTXO selection, quick transaction workflow, easy wallet/key derivation, and most importantly, prepackaged endpoints to a running node.</p>
<p>cardano-cli provides a low level command interface with the node, which affords high modularity and customizability for enterprise applications.</p>
<p>So... which you decide to use depends on the nature and scale of your app. Perhaps a bit of both? :)</p>

CC BY-SA 4.0
2022-04-15T03:23:32.893Z
Thank you for this well detailed comment, I will probably be using both in the future, I didn't know that `cardano-wallet` interfaces with `cardano-cli` fully.
CoderMan
CC BY-SA 4.0
2022-04-15T02:38:37.773Z
2022-04-15T02:38:37.773Z
zhekson
<p>I'm creating an application and was trying to figure out whether to use <code>cardano-wallet</code> or <code>cardano-cli</code> for my product. I like the fact <code>cardano-wallet</code> has endpoints &amp; is very easy to setup, although cardano-cli seems like it'll be great. My product will allow lots of users to create wallets &amp; send &amp; receive but I was hesitant to use <code>cardano-wallet</code> becuase someone once told me <code>cardano-wallet</code> is better for single users that want to manipulate their wallets, not for large enterprise applications.</p>
<p>Can someone with more experience chime in?</p>

<cardano-cli><wallet>
cardano-wallet vs cardano-cli for an application
# cardano-wallet vs cardano-cli for an application

(Asked by: username_0 on 2022-04-15)

I'm creating an application and was trying to figure out whether to use `cardano-wallet` or `cardano-cli` for my product. I like the fact `cardano-wallet` has endpoints & is very easy to setup, although cardano-cli seems like it'll be great. My product will allow lots of users to create wallets & send & receive but I was hesitant to use `cardano-wallet` becuase someone once told me `cardano-wallet` is better for single users that want to manipulate their wallets, not for large enterprise applications.

Can someone with more experience chime in?

**Tags:** cardano-cli, wallet

---

## 2 answers

### Answer by username_2 on 2022-04-15. Score: 2 | Accepted answer

cardano-wallet is a framework built for high level control over cardano-cli, and (or some version of it) is the backend for wallet software like Daedalus, Yoroi, Eternl, etc. High level features include: automatic coin/UTXO selection, quick transaction workflow, easy wallet/key derivation, and most importantly, prepackaged endpoints to a running node.

cardano-cli provides a low level command interface with the node, which affords high modularity and customizability for enterprise applications.

So... which you decide to use depends on the nature and scale of your app. Perhaps a bit of both? :)

> **Comments:**
> **username_0**: Thank you for this well detailed comment, I will probably be using both in the future, I didn't know that `cardano-wallet` interfaces with `cardano-cli` fully.  

---

### Answer by username_1 on 2022-04-15. Score: 1

I would add a fence-sitting "it depends on your use case" and what your time line is.

The cli can be utilized to build Txs without secret information. Given that light wallets following CIP 30 disclose all available UTXOs and other necessary info (not wallet secrets obvs) to build Txs on the users behalf. Light wallets generally allow users to sign a Tx, even though they cannot build them. So if you want to deliver a usable product tomorrow, this is at least feasible.

The wallet, and to some extent the cli, have been designed for personal use in the sense that they need access to sensitive information. The wallet only operates with secret keys.
To use the cardano wallet, either you force users to host their own wallet in their own instance, or you run instances and they use your platform.
The former is a technical barrier, and the latter undermines blockchain.
How well does it scale to have hosted `cardano-wallet` as a service? No clue. Its trivially parallelized so its probably fine but i'm sure its not optimized for that use case.

(This has now been fixed but) For the cli, it used to require secret keys to build transactions [here](https://github.com/input-output-hk/cardano-node/issues/3338). Just reflective of this not being the focus of the design.

Other options: cardano-serialization-lib to build Txs in browser. There are a bunch of other nascent projects trying bridge this gap between "Technically feasible" and "Actually usable"

> **Comments:**
> **username_0**: I see with `cardano-cli` in order to build a transaction I need a `--signing-key-file` once you sign the transaction as well, when creating wallets you need to store the `--payment-verification-key-file` & `--signing-key-file`. How can I avoid storing these on my `cardano-node` if I want to just use the `cardano-cli` for my service? Can I allow the user to keep these keys on their device & then sing them on the client side? Also would I be able to use `cardano-addresses`  to create recovery keys for these wallets created with `cardano-cli`?  
> **username_1**: My knowledge is now dated, but when I was trying to do this the logic was to build on your machine with cli, and sign on their machine. Nami (and others) have the capability of signing and submitting external Txs. They cannot however build or even verify.  

---

