Ethereum’s API has eth_call, which allows to simulate transaction execution without actually submitting transaction to the network. Tendermint’s ABCI has checkTx endpoint where transaction can be executed against current state to check it’s applicability.
Is there anything like that for DAML? Submission API has CreateCommand, ExerciseCommand, ExerciseByKeyCommand, CreateAndExerciseCommand. All of them are writes.
There are scenarios, where you want to know what transaction does before submitting it. Imagine having all of your business logic in DAML and then trying to create a “guard” which will examines if transaction should or should not be submitted. Impossible without replicating business logic outside of DAML.