Refactored BlockCoder so that it does not deal with encoding/decoding transactions. That is pushed to another type