Why smart-contract simulation in your wallet changes everything (and how rabby gets it right)