Thanks for this detailed answer. I believe a true solution for this issue requires significant changes to the way transfers of tokens are validated. You would want to define not just a minting and burning policy, but also a transfer policy. But because I cannot influence the architecture on which my application runs, I will be looking into alternative ways of achieving royalties or transaction fees.
I did some more searching and found another developer with the same issue I brought up: https://www.reddit.com/r/cardano/comments/m5a86z/concern_regarding_cardano_native_token_transfer/ However, no answers were provided.
Regarding your #1 solution. I fear that wallets would not show the NFT to be in your wallet, like MetaMask does do for Ethereum. However, I do have to critisize MetaMask for this, since I have seen examples of smart contracts taking away tokens from wallets without those wallet owners making a transaction. Truly malicious code if you ask me, since the users did pay for the tokens.
But without a standardized way in which wallets and chain explorers show the “fake ownership” of a token, I fear it would cause too much confusion for anyone to be willing to put real money into this. I could write a wallet or website myself that shows they are the owner of the token, according to my own rules based on custom transaction metadata, but as soon as they would use different wallet software or another online explorer, it would be very difficult to see who the owner is.
Regarding your #2 solution. I think this way is probably the best way. It is still a far inferior solution, since nobody is forcing anybody to adhere to the rules. And I am afraid that the “validity” of a token is hard to show to non-tech art collectors. Again, most likely not all wallets or chain explorers would display whether a token is valid or not. And if that is the case, there will always be people that will stop paying royalties, or reflection fees, etc.
Both your #3 and #4 solution I don’t think are direct solutions to the issue, unless I am mistakes. #3 is just using #1.
So far, developers are using IPFS to upload images that are considered the real “value” the NFT is giving you ownership of. I like that this solves the problem of being dependent on a centralized host. However, if there was a way to have a service like IPFS, but one that also verifies if the token is still valid, or else it would not show the image, it would provide another way of truly forcing owners to act in accordance with the contract, or else they would need to try to sell a token that has no corresponding image.
That so far is the only trick I have been able to think about. But it only works in relation to NFTs, not in relation to FTs. FTs with transaction fees would simply never be possible. The value of a fungible token does not come in any way from its metadata. So users would not care whether the transactions that these tokens were part of were valid or not.
The only true way of achieving the same functionality Ethereum tokens provide, but without the weakness of Ethereum tokens depending on a (usually badly written) smart contract as a ledger, is to have a transfer policy. We already have minting and burning policies, why not add a transfer policy? I am not certain whether my assumption in this case is correct. Perhaps a core Cardano developer can tell me whether that would work or not.
Thanks again for your response @bwbush