'Restore a proposed trade from the network
:param data: TradePayload
:return: Restored proposed trade
:rtype: ProposedTrade'

@classmethod
def from_network(cls, data):

    assert hasattr(data, 'trader_id'), isinstance(data.trader_id, TraderId)
    assert hasattr(data, 'message_number'), isinstance(data.message_number, MessageNumber)
    assert hasattr(data, 'order_number'), isinstance(data.order_number, OrderNumber)
    assert hasattr(data, 'recipient_trader_id'), isinstance(data.recipient_trader_id, TraderId)
    assert hasattr(data, 'recipient_order_number'), isinstance(data.recipient_order_number, OrderNumber)
    assert hasattr(data, 'proposal_id'), isinstance(data.proposal_id, int)
    assert hasattr(data, 'price'), isinstance(data.price, Price)
    assert hasattr(data, 'quantity'), isinstance(data.quantity, Quantity)
    assert hasattr(data, 'timestamp'), isinstance(data.timestamp, Timestamp)
    return cls(MessageId(data.trader_id, data.message_number), OrderId(data.trader_id, data.order_number), OrderId(data.recipient_trader_id, data.recipient_order_number), data.proposal_id, data.price, data.quantity, data.timestamp)
