sign() should return a transaction object