コード例 #1
0
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
コード例 #2
0
    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
コード例 #3
0
    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