it looks good to me. One suggestion I’d make is to...
# arrow
p
it looks good to me. One suggestion I’d make is to stick with a single datatype through the whole API. I see that you’re using Either, and Try, and then abstract some parts with Async<F>. You could write all the code with MonadError<BlockchainError, F> if it’s all synchronous instead (as the example is at the moment), or with an Async<F> and a single
Throwable -> BlockchainError
helper function to recover from the asyncs 😄