Segurança

Conhecida não somente por descentralizada as redes blockchains também são reconhecidas pela segurança por garantir confidencialidade, integridade e disponibilidade. Tais quesitos são garantidos através de chaves assimétricas, funções hashes e árvores de Merkle, já explicada previamente.

Funções hash

É uma função matemática de mão única -"fácil de calcular para qualquer entrada, mas difícil de invertar dada uma entrada aleatória" - ela aceita dados de tamanho arbitrário e retorna para toda entrada um valor de tamanho fixo na saída. Hash criptográficas em geral são escolhidas de acordo com a facilidade para calcular sua aplicação a um dado mas que é de dificuldade extremamente maior fazer o caminho oposto.

Chaves assimétricas

Trata-se de um algoritmo que cria duas chaves, uma privda que é propriedade do dono e outra pública distribuída na rede. As aplicações são diversas, desde verificar a autoria de uma mensagem ou garantir a integridade criptografando o dado a ser enviado. A primeira aplicação é feita de forma que o dono da chave usa-a para assinar a sua mensagem e qualquer um que possuir a chave pública e a mensagem pode validar a autoria, a segunda por sua vez é dada de forma a criptografar o dado utilizando a chave pública e apenas o possuidor da chave privada poderá ter acesso à mensagem.

Consenso Distribuído

Termo da área de ciência da computação o consenso distruído está intrinsicamente relacionado a disciplina de sistemas distruiídos e área fundamental para o funcionamento de redes P2P blockchain. Consenso não singifica unanimidade, mas sim que quase todos concordam. O consenso ocorre na rede por meio de protocólos e regras bem definidas, sendo um exemplo o consenso bizantino que Trata-se pela necessidade de possuir 3*n+1 nós na rede P2P a favor para tolerar n divergências no consenso. No bitcoin usa-se em geral a prova de trabalho e a prova de participação pela Etherium.

Árvores de Merkle

Uma árvore de Merkle é uma onde as folhas são os dados e os nós são os valores de hash de suas folhas. Desta maneira a raiz é o hash de todos os dados contidos na folha. A árvore é mantida ordenada e cada hash é concatenado em um novo hash (dois a dois ou três a três, variando apenas de acordo com o tipo de árvore desejada). Esta árvore é construída de baixo pra cima. A vantagem da utilização desse tipo de árvore se dá pela Prova de Merkle. Este procedimento garante que a busca pode ser feita de maneira a reduzir para log(n), isso se deve ao fato de para prova que uma folha pertence à árvore apenas precisa enviar os hash do nó adjacente e do nós lateral. Ao exemplo da imagem abaixo para provar que o bloco 000 pertence à árvore é necessário apenas enviar o hash do bloco 001 e o Hash 1.