Which testing technique is most effective for discovering re-entrancy vulnerabilities in smart contracts?