user4596: When I was exploring haddock of Plutus I have found that Plutus script can have Rewarding ScriptPurpose:
data ScriptPurpose
    = Minting CurrencySymbol
    | Spending TxOutRef
    | Rewarding StakingCredential
    | Certifying DCert
    deriving stock (Generic, Haskell.Show, Haskell.Eq)

This raised me a lot of questions like:

How do Rewarding scripts differ from Spending scripts?
How to use Rewarding script, how are Rewarding scripts interacted with?
Can Rewarding scripts be used with native tokens? Could I for example create smartcontract for staking KUGIS native tokens and getting KUGIS coins as a reward?

I have tried searching for resources but couldn't find a single resource on this except one example of the adafinance cardano staking contract on github.

user4911: To me, rewarding refers to Staking Pools Rewards (anybody can correct me on this), which for that, it is also my understanding that it uses a wallet address (rewarding wallet address) different of the payment wallet address (anybody can correct me on this too).
For more information I'd invite to take a look at the documentation for apps related to staking.
On a tangent from this topic:
Less than a week ago, Charles twitted that Cardano may be able to pay transaction fees in custom currencies (first blockchain to be capable of this):
https://twitter.com/IOHK_Charles/status/1484193096178946048?cxt=HHwWgMCqvbzw9JgpAAAA
Paper title: Babel Fees via Limited Liabilities
https://arxiv.org/pdf/2106.01161.pdf
I have not read the details of the paper but possibly then the rewards (your topic) will also be in those custom currencies.

user5085: The best resources I can recommend are the following in regards to StakeValidators:
Plutus Pioneer Program Lecture #10 Cohort 3
Example Implementation StakeValidator
Plutonomicon StakeValidator Intro
How do Rewarding scripts differ from Spending scripts?
Rewarding scripts can only make assertions in regards to the registration/ deregistration of delegation certificates for some provided payment keys. In addition, they can also implement logic that validates withdrawals of staking rewards from a given address as well as ensure delegations to a new pool.
How to use Rewarding script, how are Rewarding scripts interacted with?
This was part of the PPP lecture 10 (see link above). Whenever someone creates a transaction trying to withdraw from an address that is managed by a StakeValidator then the rewarding purpose is used that provides the corresponding StakingCredentials in the ScriptContext. These StakeValidators are implicitly run whenever someone tries to withdraw rewards from an address that was created with a script StakeValidator.
Can Rewarding scripts be used with native tokens?
Could I for example create smartcontract for staking KUGIS native tokens and getting KUGIS coins as a reward?
The rewarding mechanism through staking is as far as I know only done for Cardano's native currency ADA. If you wanted to create your mechanism you could use a minting policy instead for your custom token. So your smart contract/ minting policy would have to validate under what conditions new KUGIS coins can be minted. You could also airdrop coins for participants acting a certain way - such as delegating to a pool etc.

4596: <p>When I was exploring haddock of Plutus I have found that Plutus script can have Rewarding ScriptPurpose:</p>
<pre><code>data ScriptPurpose
    = Minting CurrencySymbol
    | Spending TxOutRef
    | Rewarding StakingCredential
    | Certifying DCert
    deriving stock (Generic, Haskell.Show, Haskell.Eq)
</code></pre>
<p>This raised me a lot of questions like:</p>
<ul>
<li>How do <strong>Rewarding</strong> scripts differ from <strong>Spending</strong> scripts?</li>
<li>How to use <strong>Rewarding</strong> script, how are <strong>Rewarding</strong> scripts interacted with?</li>
<li>Can <strong>Rewarding</strong> scripts be used with native tokens? Could I for example create smartcontract for staking <em>KUGIS</em> native tokens and getting <em>KUGIS</em> coins as a reward?</li>
</ul>
<p>I have tried searching for resources but couldn't find a single resource on this except one example of the adafinance cardano staking contract on github.</p>
 4911: <p>To me, rewarding refers to Staking Pools Rewards (anybody can correct me on this), which for that, it is also my understanding that it uses a wallet address (rewarding wallet address) different of the payment wallet address (anybody can correct me on this too).
For more information I'd invite to take a look at the documentation for apps related to staking.</p>
<p>On a tangent from this topic:
Less than a week ago, Charles twitted that Cardano may be able to pay transaction fees in custom currencies (first blockchain to be capable of this):
<a href="https://twitter.com/IOHK_Charles/status/1484193096178946048?cxt=HHwWgMCqvbzw9JgpAAAA" rel="nofollow noreferrer">https://twitter.com/IOHK_Charles/status/1484193096178946048?cxt=HHwWgMCqvbzw9JgpAAAA</a></p>
<p>Paper title: Babel Fees via Limited Liabilities
<a href="https://arxiv.org/pdf/2106.01161.pdf" rel="nofollow noreferrer">https://arxiv.org/pdf/2106.01161.pdf</a></p>
<p>I have not read the details of the paper but possibly then the rewards (your topic) will also be in those custom currencies.</p>
 5085: <p>The best resources I can recommend are the following in regards to StakeValidators:</p>
<p><a href="https://www.youtube.com/playlist?list=PLK8ah7DzglhhM57VKQTMIGDZj5OnmfgOX" rel="nofollow noreferrer">Plutus Pioneer Program Lecture #10 Cohort 3</a></p>
<p><a href="https://github.com/input-output-hk/plutus-apps/blob/main/plutus-ledger/src/Ledger/Typed/Scripts/StakeValidators.hs" rel="nofollow noreferrer">Example Implementation StakeValidator</a></p>
<p><a href="https://github.com/Plutonomicon/plutonomicon/blob/main/stake-scripts.md" rel="nofollow noreferrer">Plutonomicon StakeValidator Intro</a></p>
<p><em><strong>How do Rewarding scripts differ from Spending scripts?</strong></em></p>
<p>Rewarding scripts can only make assertions in regards to the registration/ deregistration of delegation certificates for some provided payment keys. In addition, they can also implement logic that validates withdrawals of staking rewards from a given address as well as ensure delegations to a new pool.</p>
<p><em><strong>How to use Rewarding script, how are Rewarding scripts interacted with?</strong></em></p>
<p>This was part of the PPP lecture 10 (see link above). Whenever someone creates a transaction trying to withdraw from an address that is managed by a StakeValidator then the rewarding purpose is used that provides the corresponding StakingCredentials in the ScriptContext. These StakeValidators are implicitly run whenever someone tries to withdraw rewards from an address that was created with a script StakeValidator.</p>
<p><em><strong>Can Rewarding scripts be used with native tokens?</strong></em></p>
<p>Could I for example create smartcontract for staking KUGIS native tokens and getting KUGIS coins as a reward?
The rewarding mechanism through staking is as far as I know only done for Cardano's native currency ADA. If you wanted to create your mechanism you could use a minting policy instead for your custom token. So your smart contract/ minting policy would have to validate under what conditions new KUGIS coins can be minted. You could also airdrop coins for participants acting a certain way - such as delegating to a pool etc.</p>
