I've recently learnt SPL token, and surprisingly found that when transferring tokens, the source account and destination account are private key accounts (instead of PDAs) that are owned by the token program. Why doesn't the token program use PDA?
As a new Solana user from Ethereum ecosystem, I always think PDAs as smart contract's storage in Ethereum. They are similar in that PDAs are used to store program data, just as Ethereum smart contract's storage. In Ethereum, every ERC20 token stores each account's balance in its storage.
I don't understand why SPL use private key accounts. When I want to transfer some tokens to others, I only need to provide the source account's authority account's signature, so source account's private key is useless. In this case, isn't PDA more appropriate?
Could anyone explain? Any help is appreciated. Thanks in advance :)