Пример #1
0
def fitxer_100_blocs_valids_fins_XX_DNI():
    """
	Un fitxer amb una cadena de 100 blocs que només sigui vàlida fins al bloc XX on XX són les dues darreres
	xifres del vostre DNI.
	"""
    XX_DNI = 81  # ara mateix NO INCLÒS EN ELS VÀLIDS
    rsa_0 = blockchain.rsa_key()
    size_message = 256
    m_0 = random.randint(2**(size_message // 2 - 1),
                         2**(size_message // 2) - 1)
    t_0 = blockchain.transaction(m_0, rsa_0)
    cadena_de_blocs = blockchain.block_chain(t_0)
    for i in range(1, XX_DNI):
        print(i)
        rsa = blockchain.rsa_key()
        m = random.randint(2**(size_message // 2 - 1),
                           2**(size_message // 2) - 1)
        t = blockchain.transaction(m, rsa)
        cadena_de_blocs.add_block(t)
    print(cadena_de_blocs.verify())
    for i in range(XX_DNI, 100):
        print(i)
        rsa = blockchain.rsa_key()
        m = random.randint(2**(size_message // 2 - 1),
                           2**(size_message // 2) - 1)
        t = blockchain.transaction(m, rsa)
        t.signature = random.randint(
            0, sys.maxsize
        )  # fem que sigui invàlida la transacció, també podríem alterar el hash etc
        # Nota: en tindríem prou amb alterar-ne un de sol (el 81) perquè els següents també fossin invàlids, es trenca la cadena
        cadena_de_blocs.add_block(t)
    print(cadena_de_blocs.verify())
    fitxer_de_sortida = '81_blocks_valids.block'
    with open(fitxer_de_sortida, 'wb') as file:
        pickle.dump(cadena_de_blocs, file)
Пример #2
0
def create_wrong_blockchain_100():
    DNI = 19
    RSA = rsa_key()
    num_blocks = 100

    now = time()

    transactions = map(
        lambda i: transaction(
            int(hashlib.sha256(f"Transaction #{i}".encode()).hexdigest(), 16),
            RSA), range(100))
    blockChain = block_chain(next(transactions))

    for _ in range(1, DNI):
        blockChain.add_block(next(transactions))
        print(f'New block from transaction #{_ + 1} added!')
    print(f"Pre-verification: {blockChain.verify()}")
    for _ in range(DNI, num_blocks):
        print(f'Wrong block from transaction #{_ + 1} added!')
        blockChain.add_wrong_block(next(transactions))

    with open(f'100_blocks_{DNI}_wrong.pickle', 'wb') as f:
        pickle.dump(blockChain, f)

    print(f"Verification: {blockChain.verify()}\nTime elapsed: {time() - now}")
Пример #3
0
def py_to_cpp(obj_to_covert, obj_to_covert_type):
    if obj_to_covert_type == "chain":
        # Create a vector of blocks
        chain_vector = vectorblock()
        chain = obj_to_covert
        for each_block in chain:
            # Create a c++ block struct
            block_struct = block()
            block_struct.index = each_block['index']
            block_struct.prev_hash = each_block['prev_hash']
            block_struct.proof = each_block['proof']
            block_struct.timestamp = each_block['timestamp']
            block_struct.transactions = py_to_cpp(each_block['transactions'],
                                                  "transactions")
            chain_vector.push_back(block_struct)
        return chain_vector

    if obj_to_covert_type == "transactions":
        # Create a vector of transactions
        transaction_vector = vectortransaction()
        transactions = obj_to_covert
        for each_transaction in transactions:
            # Create a c++ transaction struct
            transaction_struct = transaction()
            transaction_struct.sender = each_transaction['sender']
            transaction_struct.recipient = each_transaction['recipient']
            transaction_struct.amount = each_transaction['amount']
            transaction_vector.push_back(transaction_struct)
        return transaction_vector
Пример #4
0
def fitxer_100_blocs_valids():
	"""Un fitxer amb una cadena vàlida de 100 blocs"""
	rsa_0 = blockchain.rsa_key()
	m_0 = random.randint(0,sys.maxsize)
	t_0 = blockchain.transaction(m_0,rsa_0)
	cadena_de_blocs = blockchain.block_chain(t_0)
	for i in range (1,100):
		print(i)
		rsa = blockchain.rsa_key()
		m = random.randint(0,sys.maxsize)
		t = blockchain.transaction(m,rsa)
		cadena_de_blocs.add_block(t)
	print(cadena_de_blocs.verify())
	fitxer_de_sortida = '100_blocks_valids.block'
	with open(fitxer_de_sortida, 'wb') as file:
		pickle.dump(cadena_de_blocs, file)