Ledger / Ada lite staking rewards. (missing?!)

According to https://forum.cardano.org/t/welcome-understanding-trust-levels-on-the-cardano-forum/117680#trust-level-0-newcomer-1, you should be able to include one (but only one) image in the post. So, maybe try to just show the details view?

I still do not know which wallet app you are using. Depending on the wallet app and on the number you are looking at it:

  • The number called “Staking balance” in Adalite and “Total funds” in Eternl does not change because the rewards were already included there before the withdrawal. Withdrawing only moves between different “pots” inside this stake. This number goes up automatically every five days when the rewards are distributed.
  • The number called “Available balance” in Adalite and “Balance” in Eternl should go up with every withdrawal. But after it has gone up, the old state is shown nowhere, so it’s not that easy to verify if you maybe just have overlooked the change or compared two different values with each other or …

As @erikd and I have said in every post in this thread: There is no point in just regularly withdrawing rewards in separate transactions. These transactions always cost transaction fees and if you have little stake, they can eat up a significant part of the rewards or even be higher than them.

You only need to withdraw rewards if you want to spend them, if your other ADA are not enough for what you want to send out and you need to also use the reward ADA.

Cardano also allows to withdraw rewards as an additional action in other transactions (but not all wallet apps have implemented that, probably because their developers found it too complicated). That only increases the transaction fees a tiny bit and can be done regularly. Wallet apps that have this feature tend to do it automatically every time rewards are available. Could be discussed if that is the best way or if it could be done even more efficiently, but it is a large improvement over separate transactions.

That does not work with how Cardano is designed. Cardano’s very basic design philosophy is the “UTxO model” where “UTxO” means “unspent transaction output”. Everything that you use in a transaction is the output of a previous transaction. There is no account balance directly in the data of the blockchain. The balance is just the sum of all the unspent transaction outputs that belong to you, that have once been sent to you and not been used since then.

Sending every one of the millions of stakes the rewards every epoch, would be a lot of additional data created every five days. Moreover, in order to not let the blockchain grow too much with tiny, hardly relevant outputs, there is a minimal ADA requirement on them. They cannot be smaller than something like 0.98 ADA (more if there are NFTs or asset tokens on the output). So, rewards smaller than 1 ADA would have to be … discarded?

That’s why the developers of Cardano have decided to not pay out rewards directly, but rather keep a separate table to which the rewards for a stake are automatically added every epoch. And these are only moved over to the UTxO part of the blockchain when you explicitly withdraw them (but are considered for the size of your stake determining your rewards already before that when they only exist in this reward table).