-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathExperimentoTres.py
75 lines (59 loc) · 2.26 KB
/
ExperimentoTres.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import os
import time
from os import error
from Mundo import Mundo
from Persistencia import Persiste
'''
* Nome: limpar_tela
* Parâmetros: vazio
* Objetivo: limpar o console durante a execução
*
'''
def limpar_tela():
return os.system('cls' if os.name == 'nt' else 'clear')
'''
* Nome: experimento
* Parâmetros: vazio
* Objetivo: Demonstrar o ataque de 51% com um único minerador dominando a rede pra si.
*
'''
def experimento(quantidade_blocos):
try:
mundo = Mundo()
for execucoes in range(1, 31):
persistencia = Persiste('Experimento_3/'+str(execucoes)+'/')
mundo.iniciar_processamento(30, quantidade_blocos, None, None, None, True, 0.51, 1)
for minerador in mundo.mineradores.keys():
if (len(minerador.blockchain.livro_razao) >= quantidade_blocos):
blockchain = minerador.blockchain
mundo.ordenar_poder()
persistencia.persistir_mineradores(mundo.mineradores, blockchain)
persistencia.persistir_blockchain(blockchain)
persistencia.persistir_historico(blockchain)
persistencia.persistir_bifurcacoes(mundo)
except Exception as error:
print('Ocorreu o erro: {}'.format(error))
'''
* Execução da aplicação
* Objetivo: chamar as classes responsáveis por realizar o processo de simulação de uma blockchain
*
'''
if __name__ == '__main__':
try:
limpar_tela()
print('O início do experimento zero começou, aguarde...')
print('_______________________________________________________________')
print('\nO experimento possui a seguinte característica: \n')
print('Demonstrar o ataque de 51% tendo um minerador dominando a rede para si.\n')
tempo_inicio = time.time()
experimento(10000)
tempo_decorrido = (time.time() - tempo_inicio)
if (tempo_decorrido >= 60):
tempo_decorrido = tempo_decorrido/60
print('As minerações acabaram, tempo decorrido: {:.2f} minutos'.format(
tempo_decorrido))
else:
print('As minerações acabaram, tempo decorrido: {:.2f} segundos'.format(
tempo_decorrido))
except Exception as error:
print('Ocorreu o erro: {}'.format(error))