Introdução a blockchain
Tags: blockchain, programming, javascript
Published: 2023-06-27 00:33:45



Blockchain é uma tecnologia que permite o registro de dados distribuídos e seguro. A blockchain é uma espécie de banco de dados, mas se diferencia dos outros por ser imutável e descentralizada, enquanto o controle das informações de um banco de dados convencional está nas mãos de uma entidade reguladora específica. 

Em um banco de dados comum, as informações podem ser apagadas ou modificadas, enquanto na blockchain os dados ficam gravados para sempre e não podem ser alterados.

O que significa o termo blockchain ? O termo significa "cadeia de blocos", pois consiste em uma cadeia de blocos de dados encadeados.

O termo foi utilizado pela primeira vez no artigo Bitcoin: um sistema financeiro eletrônico peer-to-peer, publicado por Satoshi Nakamoto, o criador do bitcoin, em 2008. No artigo, Nakamoto define a blockchain como ‘’uma rede que marca o tempo das transações, colocando-as em uma cadeia contínua no ‘hash’, formando um registro que não pode ser alterado sem refazer todo o trabalho’’. 

Para ficar mais claro, o hash é uma função criptográfica que codifica dados em uma cadeia exclusiva, garantindo sua autenticidade. 

Principais características do blockchain

**Blocos:** São estruturas de dados que armazenam um conjunto de transações ou qualquer tipo de dados.O principal conteúdo de uma bloco geralmente são lista de transações. No caso das moedas digitais as transações consistem em transferências de moedas de uma conta para outra, mas existem outros tipos de blockchains em que as transações podem representar outros tipos de dados.Os blocos são ligados uns aos outros em uma sequência cronológica. Cada bloco contém o hash do bloco anterior, o que cria uma cadeia de blocos, ou "blockchain". 

Blocos são formados por cabeçalho,hash e nonce.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u6dzkege9z5zoqawa3jm.png)
_fonte: https://andersbrownworth.com/blockchain/block_

**_Cabeçalho do Bloco:_** O cabeçalho do bloco contém metadados sobre o bloco. Isso geralmente inclui um carimbo de data/hora indicando quando o bloco foi criado, e informações sobre o bloco anterior na cadeia, geralmente na forma de um hash.

**_Hash do Bloco:_** Um dos elementos mais importantes do cabeçalho do bloco é o hash do bloco. Este é um valor criptográfico que serve como uma espécie de impressão digital única para o bloco. Ele é gerado com base no conteúdo do bloco e no hash do bloco anterior. Isso significa que qualquer alteração no conteúdo do bloco ou nos blocos anteriores resultaria em um hash diferente, o que torna extremamente difícil alterar os dados depois que eles são adicionados à blockchain.

**_Nonce:_** Em blockchains que usam um mecanismo de consenso de prova de trabalho (Proof of Work), como o Bitcoin, há também um valor chamado "nonce" no cabeçalho do bloco. O nonce é um número arbitrário que pode ser alterado para que o hash do bloco atenda a certos critérios, como ter um certo número de zeros à esquerda. Encontrar um nonce que satisfaça esses critérios é computacionalmente difícil e requer uma quantidade significativa de poder de processamento. Isso é o que torna o mecanismo de prova de trabalho resistente a spam e abuso.

 
**Cadeias:** É a ligação que ocorre entre os blocos quando um bloco é preenchido, um novo bloco é criado e ligado ao anterior. Isso vai criar a cadeia de blocos, ou seja cada bloco contém uma referência do bloco anterior, formando um histórico imutável de transações.

**Descentralização:** Esse é uma dos grandes benefícios da blockchain não existe a necessidade de uma entidade ou servidor de controle da rede. Ao invés disso é criada uma rede de nós, onde cada nós contém uma cópia do registro da blockchain. Com isso temos uma aumento significativo da segurança e consistências dos dados transitados na rede.

Vou explicar os principais aspectos da descentralização na blockchain:

_**Distribuição de Controle:**_ Em sistemas tradicionais, como bancos ou serviços online, geralmente há uma única entidade ou grupo de entidades que controla toda a informação e tomada de decisões. Na blockchain, o controle é distribuído entre todos os participantes da rede, chamados de nós. Cada nó tem a capacidade de validar e verificar transações ou dados que estão sendo adicionados à blockchain.

_**Redundância de Dados:**_ Em uma blockchain descentralizada, cada nó na rede mantém uma cópia completa da blockchain. Isso significa que a mesma informação é armazenada em muitos lugares diferentes. Isso aumenta a resistência da rede a falhas e ataques, pois mesmo que alguns nós sejam comprometidos ou falhem, os outros ainda mantêm a integridade dos dados.

_**Consenso Distribuído:**_ Para que um novo bloco seja adicionado à blockchain, os nós devem chegar a um consenso sobre a validade das transações que ele contém. Existem vários mecanismos de consenso, como a Prova de Trabalho (Proof of Work) ou a Prova de Participação (Proof of Stake), que são usados para garantir que a maioria dos participantes concorde com o estado da blockchain.

_**Resistência à Censura e Transparência:**_ Devido à sua natureza descentralizada, é difícil para uma única entidade controlar ou censurar transações em uma blockchain. Isso pode ser particularmente importante em aplicações que requerem transparência e imutabilidade, como votações ou sistemas financeiros abertos.

_**Segurança Aumentada:**_ A descentralização também contribui para a segurança da blockchain. Para comprometer ou alterar dados em uma blockchain descentralizada, um atacante precisaria controlar mais de 50% dos nós da rede, o que geralmente é considerado impraticável devido ao grande poder computacional e custo envolvido.

Em suma, a descentralização na blockchain significa que não há um único ponto de falha ou controle, o que contribui para a segurança, transparência, e resistência à censura desta tecnologia.

**Criptografia:**

A blockchain utiliza criptografia para garantir a segurança e a integridade dos dados. Cada bloco contém um hash, que é um valor criptográfico único. Este hash é influenciado pelo conteúdo do bloco e pela hash do bloco anterior, criando uma ligação segura entre eles.

**Mecanismo de consenso:**

Antes que um novo bloco seja adicionado à cadeia, os nós da rede devem concordar que as transações dentro dele são válidas. Isso é feito através de mecanismos de consenso, como a Prova de Trabalho (Proof of Work) ou Prova de Participação (Proof of Stake), que ajudam a prevenir fraudes e garantir que apenas transações legítimas sejam adicionadas à blockchain.

A blockchain ganhou notoriedade inicialmente como a tecnologia subjacente do Bitcoin, uma criptomoeda. No entanto, atualmente é usada em diversos setores e para várias aplicações além das criptomoedas, incluindo sistemas de registro de propriedade, cadeias de suprimentos, contratos inteligentes e muito mais.

Segue alguns links uteis.

[Demo blockchain na prática](https://andersbrownworth.com/blockchain/)
[O que é blockchain](https://www.moneytimes.com.br/conteudo-de-marca/o-que-e-blockchain-e-como-essa-tecnologia-pode-ser-utilizada-alem-do-bitcoin/)
[Canal LuizTools](https://youtu.be/lKBxMk9oYag)