예제 #1
0
 def post_transaction(self, json):
     t = Transaction.fromJson(json)
     if t is None:
         debug('JSON error')
         self.no_response(400)  # Bad Request
     elif not t.is_valid(self.server.blockchain):
         debug('invalid blockchain transaction')
         self.no_response(400)  # Bad Request
     else:
         self.server.transactions.append(t)
         self.no_response(200)  # OK
         self.broadcast_transaction(t)
예제 #2
0
 def fromJson(json_data):
     try:
         data = json.loads(json_data)
         b = Block(data["previous_hash"], data["miner_address"])
         ts = []
         for t in data["transactions"]:
             ts.append(Transaction.fromJson(t))
         b.set_transactions(ts)
         b.set_proof(data["proof"])
         return b
     # JSON ValueError for decode
     # KeyError if no accessed key
     except (ValueError, KeyError, TypeError):
         return None
예제 #3
0
 def get_transactions(self):
     """send GET request to relay/transactions/ and parse it
     """
     r = get_request(self.url+'transactions/')
     if r is None:
         return None
     if not r.status_code == 200:
         return None
     try:
         json_ts = r.json()
     except ValueError:
         return None
     ts = []
     for json in json_ts:
         t = Transaction.fromJson(json)
         if not t is None:
             ts.append(t)
     return ts