Transfers
The Public Lock smart contract implements the ERC721 specification, including transfer functions (transferFrom, safeTransferFrom, and the related approve and setApprovalForAll), but their behavior can be customized.
Expired keys can not be transferred.
Key Managers
Each NFT (called a key in the Unlock Protocol) has an owner. Additionally, it may have a key manager. The key manager, if set, is the address that has the transfer rights over this specific key. This should not be confused with the lock manager (see the contract management section for a summary of the role on a lock contract)
The key manager can be set at the time of minting, either on purchases or on airdrops. Lock managers can also change the key manager for any key.
You can read more about the roles in the contract management section.
By setting a custom key manager on a key, the lock manager can disable transfers for this key (or at least make them only possible by the key manager).
When a transfer happens using transferFrom or safeTransferFrom, the lock manager is reset.
Fees on Transfers
Inside Unlock Keys, the contract includes a unique feature to monetize secondary market transactions. The contract includes the ability to "burn" time upon transfers.
Let's take an example. A user, Jane, owns an NFT membership valid for ten more days. The contract includes a 10% fee on each transfer. If Jane transfers her NFT to Claire, Claire will receive the key, but when she receives it, the expiration will have been reduced to 9 days.
This mechanism is fully on-chain, and there is no way to bypass it.