docs: def _get_addresses(tx):
          """
          Checks for the from, to, and piece address of a SPOOL transaction.
  
          Args:
              tx (dict): Transaction payload, as returned by
                  :meth:`transactions.Transactions.get()`.
  
          .. note:: Formats as returned by JSON-RPC API
              ``decoderawtransaction`` have yet to be supported.
  
          Returns:
              Tuple([str]): Sender, receiver, and piece addresses.
  
          """
          from_address = set([vin['address'] for vin in tx['vins']])
          if len(from_address) != 1:
              raise InvalidTransactionError("Transaction should have inputs " \
                                            "from only one address {}".format(from_address))
  
          # order vouts. discard the last vout since it's the op_return
          vouts = sorted(tx['vouts'], key=lambda d: d['n'])[:-1]
          piece_address = vouts[0]['address']
          to_address = vouts[-1]['address']
          from_address = from_address.pop()
  
          return from_address, to_address, piece_address