def _unpack_transaction(transaction):
    '''Return the transaction signing key, the SCPayload timestamp, the
    appropriate SCPayload action attribute, and the appropriate
    handler function (with the latter two determined by the constant
    TYPE_TO_ACTION_HANDLER table.
    '''
    header = TransactionHeader()
    header.ParseFromString(transaction.header)

    signer = header.signer_pubkey

    payload = SCPayload()
    payload.ParseFromString(transaction.payload)

    action = payload.action
    timestamp = payload.timestamp

    try:
        attribute, handler = TYPE_TO_ACTION_HANDLER[action]
    except KeyError:
        raise Exception('Specified action is invalid')

    payload = getattr(payload, attribute)

    return signer, timestamp, payload, handler
Exemple #2
0
    def make_empty_payload(self, public_key):
        address = addressing.make_agent_address(public_key)

        return self._create_transaction(
            payload=SCPayload().SerializeToString(),
            inputs=[address],
            outputs=[address])
Exemple #3
0
def _make_sc_payload(**kwargs):
    return SCPayload(timestamp=round(time.time()),
                     **kwargs).SerializeToString()