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
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])
def _make_sc_payload(**kwargs): return SCPayload(timestamp=round(time.time()), **kwargs).SerializeToString()