In custodial NFT staking the holder transfers the NFT to a program-owned account to receive program-defined benefits. I've seen the same staking features implemented in a non-custodial manner and was wondering how this works.
How does a non-custodial NFT staking program work when the NFT remains in the holder's wallet and unlisted on a marketplace? I don't understand how a program can determine/prevent indirect unstaking by listing/selling/trading without being in possession of it.
Can someone explain on a high level what a relatively simple implementation of this would look like?