I am wondering: Is there another way to authenticate a user (wallet) on Cardano instead of sending ADA?
Obviously a beginner question, but I am just starting to wrap my head around all of this :)
Theoretically yes, you can ask wallets like Nami to sign an arbitrary piece of information for you and verify that signature against the addresses pub key hash. Since this transaction would not have been submitted to the blockchain, no fees should be involved. Note, I haven't tried this myself.
For Nami, check out the call to signData
on this page https://github.com/Berry-Pool/nami-wallet.
In fact, CIP-8, explores doing this on a more official basis, https://github.com/cardano-foundation/CIPs/blob/master/CIP-0008/CIP-0008.md
Short Answer: A transaction needs to be singed with the owner's private keys.
Explanation: To be able to authenticate a user to a wallet, you need them to prove they have the private keys to that wallet. In order to do that, you need them to sign a transaction, which could be the sending Ada method you mentioned. There could be an opportunity to prove this identification with other types of signing transactions, but those will still have a transaction fee, thus costing Ada. Update: As pointed out by Matt Ho, you could potentially not submit the TX to the blockchain and therefore not have to pay the transaction fee. However, this could introduce a level of trust in the trustless system. Without testing this, it is hard to know the details of this.
Solution: Atala PRISM is an identity solution worth exploring. Although it is still in development, this will be a way to manage identity.https://atalaprism.io/app