When someone sends Ether, he/she use his private key matching address to sign the transaction. The private key not being part of the ledger, nobody can draw the fund of the account which sent money.
But how does this works for a smart contract since (as far I understand) a smart contract doesn’t have a private key ?
This not for asking how the CALL opcode works, but how internal transactions which sends Ether are handled in the ledger.