'Decode an incoming half block message.
:param placeholder:
:param offset: Start of the HalfBlock message in the data.
:param data: ByteStream containing the message.
:return: (offset, HalfBlockPayload.impl)'

@staticmethod
def _decode_half_block(placeholder, offset, data):

    if (len(data) < (offset + block_pack_size)):
        raise DropPacket('Unable    to    decode    the    payload')
    try:
        block = TrustChainBlock.unpack(data, offset)
    except IndexError:
        raise DropPacket('Invalid    block    contents')
    return (len(data), placeholder.meta.payload.implement(block))
