Integrating with smart contracts can be tough. In particular, solidity doesn’t really have runtime errors with descriptive messages, so a lot of failed transactions just fail with the generic message invalid opcode. If it is painful to write tests, you are probably going to write fewer. Test coverage is an…