Does the Coinstake transaction include a transaction fee?

So the Coinstake transaction is the transaction that you send yourself when you mine a PoS block. It essentially converts your coin age into interest. My question is, since this is a transaction (albeit a special type of transaction) does it have a transaction fee attached which then gets destroyed as per a normal transaction?

From what I can tell, the answer is no, because it is applied directly to the wallet.

I’ll have to look at the code, but I wonder that means to the block chain

Here’s the relevant code block from main.cpp

        if (IsCoinStake())
        {
            // ppcoin: coin stake tx earns reward instead of paying fee
            uint64 nCoinAge;
            if (!GetCoinAge(txdb, nCoinAge))
                return error("ConnectInputs() : %s unable to get coin age for coinstake", GetHash().ToString().substr(0,10).c_str());
            int64 nStakeReward = GetValueOut() - nValueIn;
            if (nStakeReward > GetProofOfStakeReward(nCoinAge) - GetMinFee() + MIN_TX_FEE)
                return DoS(100, error("ConnectInputs() : %s stake reward exceeded", GetHash().ToString().substr(0,10).c_str()));
        }
        else
        {
            if (nValueIn < GetValueOut())
                return DoS(100, error("ConnectInputs() : %s value in < value out", GetHash().ToString().substr(0,10).c_str()));

            // Tally transaction fees
            int64 nTxFee = nValueIn - GetValueOut();
            if (nTxFee < 0)
                return DoS(100, error("ConnectInputs() : %s nTxFee < 0", GetHash().ToString().substr(0,10).c_str()));
            // ppcoin: enforce transaction fees for every block
            if (nTxFee < GetMinFee())
                return fBlock? DoS(100, error("ConnectInputs() : %s not paying required fee=%s, paid=%s", GetHash().ToString().substr(0,10).c_str(), FormatMoney(GetMinFee()).c_str(), FormatMoney(nTxFee).c_str())) : false;
            nFees += nTxFee;
            if (!MoneyRange(nFees))
                return DoS(100, error("ConnectInputs() : nFees out of range"));
        }

It appears that the Proof-of-Stake reward is included as an inverse transaction fee. I’m still not clear on what that means to the block chain.

If it’s added to the block, we should be able to look at all transactions that have occurred and calculate a total of all Proof-of-Stake rewards paid to date.

Edit: I went looking for a transaction in the block chain that appeared to show a Proof-of-Stake reward. I found this, but I’d need confirmation that I’m reading it correctly: