Is there a way to prevent a function to be called from smart contracts / only allow calls from EOAs ?