transaction: better errors for signature methods

Closes #868