def construirBloque(bloque): block = Block() print("hash del bloque", bloque["_id"]) block.set_hash(bloque["_id"]) block.indice = int(bloque["indice"]) block.transacciones = bloque["transacciones"] block.prev_hash = bloque["prev_hash"] block.Nonce = bloque["Nonce"] block.MAX_TRANS = bloque["MAX_TRANS"] block.trabajo = bloque["trabajo"] return block
def crear_genesis_block(self): """ A function to generate genesis block and appends it to the chain. The block has index 0, previous_hash as 0, and a valid hash. """ genesis_block = Block() genesis_block.indice=0 genesis_block.transacciones="genesis" genesis_block.fecha=time.ctime(time.time()) hash=self.prueba_de_trabajo(genesis_block) genesis_block.set_hash(hash) self.__cadena.append(genesis_block) self.controller.add_genesis(genesis_block) self.genesis=genesis_block
def prueba_de_minado(self,bloque): #el bloque me llega en formato json, por lo que para hacer la prueba de minado, primero creare el bloque con los datos del mismo y a ver si #cumple la prueba de trabajo block=Block() bloque=json.loads(bloque) block.indice=int(bloque["indice"]) block.Nonce=int(bloque["Nonce"]) block.prev_hash=bloque["prev_hash"] block.transacciones=bloque["transacciones"] #una vez tengo el bloque hago la prueba de trabajo nuevoHash=block.compute_hash() block.set_hash(nuevoHash) # print("el hash del bloque es:",bloque["_id"],"mientras que el nuevo hash es:",nuevoHash) #para que sea valido, el nonce no se tiene que haber modificado y el hash tampoco if block.Nonce==int(bloque["Nonce"]) and bloque["_id"]==nuevoHash: self.bloque_consenso=block return block else: print("ha habido un fallo") return False