Esse site utiliza cookies
Nós armazenamos dados temporariamente para melhorar a sua experiência de navegação e recomendar conteúdo do seu interesse.
Ao utilizar os nossos serviços, você concorda com as nossas políticas de privacidade.
Esse site utiliza cookies
Nós armazenamos dados temporariamente para melhorar a sua experiência de navegação e recomendar conteúdo do seu interesse.
Ao utilizar os nossos serviços, você concorda com as nossas políticas de privacidade.
Categoria de Tecnologia
Postado em 10 abril 2022
Atualizado em 21 julho 2022
Palavras-chave: cryptocurrency,criptomoeda,dinheiro,virtual,digital,blockchain,pow,proof,work
Visualizações: 994
Este tópico é uma continuação da postagem abaixo. Caso não tenha lido ainda, é recomendável entender a parte 1.
Blockchain está em constante evolução. Já é possível notar algumas diferenças entre a pioneira Bitcoin e as criptomoedas mais recentes.
Para adicionar um bloco na corrente(chain), é necessário passar pela PoW.
Diferente de transações de cartão de crédito e pix, criptomoedas não possuem intemerdiários financeiros. Ou seja, todas as transações no blockchain não são verificadas por humanos, e sim por máquinas
PoW é a sigla para Proof-of-work. Em português pode ser traduzido para algo como, prova de trabalho.
PoW existe para que seja possível realizar transações com criptomoedas. Em criptomoedas como bitcoin, todas as transações terão que passar pelo PoW, que é como se fosse um autorizador de transações.
PoW atua como um intermediário não-humano entre os negociadores de criptomoedas. Em média, uma transação em bitcoin dura 10 minutos. Todo esse tempo é resultado da demora do processo de autorização da PoW.
PoW é um processo muito simples, porém difícil de ser resolvido.
class Bloco{
constructor(...) {
this.hash = this.getHash();
this.nonce = 0;
this.timestamp = ...;
this.data = ...;
...
}
// Gera um hash
calculateHash() {
return SHA256(this.previousHash + this.timestamp + JSON.stringify(this.data) + this.nonce).toString();
}
...
// PoW
function proofOfWork(difficulty) {
// Enquanto o número de zeros no prefixo do hash
// não for igual ao número de
// zeros necessários, esse loop
// continuará infinitamente (em média demora 10 minutos)
while (this.hash.substring(0, difficulty) !== Array(difficulty + 1).join('0') {
this.hash = this.calculateHash();
this.nonce++;
}
}
}
No código acima podemos observar no método “proofOfWork” que um while está sendo utilizado.
Cada vez que o while for repetido, adicionamos 1 à variável nonce. Essa variável será aumentada até o número de zeros no prefixo do hash ficar igual ao número de zeros necessário. Se explicarmos em detalhes:
Explicação gráfico acima
1. O número de zeros consecutivos no prefixo do hash é igual ao número de zeros necessário? (Sim ou não)
2. Aumenta o nonce do bloco atual (this.nonce++)
3. Bloco é gerado e adicionado ao blockchain. Processo é finalizado
Um computador mediano pode repetir o while mais de 100.000 vezes por segundo. Ou seja, se o tempo de demora da PoW é de 10 minutos, logo podemos afirmar o seguinte:
x = Hashs gerados por segundo
y = Tempo para o PoW ser processado em minutos
São em média 60 milhões de hashs gerados até o processo ser concluído. Isso não é pouca coisa.
PoW foi introduzido principalmente para criar um consenso entre os usuários que possuem a criptomoeda. Uma vez que cada transação precisa passar por esse processo fica difícil fazer fraudes.
Porém essa técnica tem algumas grandes desvantagens, como altíssimo consumo de energia.
O alto consumo de energia com blockchains que usam PoW tem sido alvo de várias críticas, segundo algumas reportagens, bitcoin chega a usar mais energia do que alguns países.
Hoje, esse sistema já está sendo substituído pelo PoS (Proof of stake), que não gasta tanta energia.
Bitcoin tem grandes vantagens por não ser administrada de modo centralizado. Isso gera bastante transparência atraindo muitos investidores de todo o mundo.
Porém seu alto índice de consumo de energia é um grande problema, que já está sendo trabalhado.
Projetos práticos
Desenvolvimento de um sistema de monitoramento que exibi todos os eventos que acontecem na garagem automatizada, como abertura de portões ou ocupação de vagas.
Projeto de criação de um sistema de busca usando o framework Symfony e Elasticsearch. A integração com Kibana também é feito de modo remoto com um raspberrypi.
Implementando um programa que encontra a menor distância entre dois pontos dentro de um labirinto usando o algoritmo A* (a-estrela).
Convertendo imagens para ascii art usando o valor da intensidade das cores cinzentas.
Usando JavaFX e arquitetura limpa para criar um aplicativo de caixa eletrônico extremamente simples.
Estudar o comportamento das pessoas pode auxiliar um administrador a criar um sistema de fiscalização mais eficiente, evitando fraudes que prejudicam a imagem da empresa
Esperávamos horas para baixar apenas alguns megabytes. Nessas horas, quando o telefone tocava nós fazíamos de tudo para não atender o telefone. Mas infelizmente nem sempre dava certo....
A virtualização é a criação de um ou mais ambientes virtuais em uma mesma máquina física, com o intuito de cumprir o mesmo papel de um computador físico.
Prática que visa em incluir todas as pessoas digitalmente, incluindo idosos e deficientes, para que possam ter acesso a informação.
Unidades contendo informação de um arquivo que é enviado de um nó para o outro através da internet. Quando juntadas formam um arquivo.
A VPN permite a transferência de dados de modo privado e seguro em uma rede pública sem a utilização de infraestrutura adicional.