Bitcoin é um sistema de pagamentos eletrónico ponto-a-ponto (peer-to-peer), no entanto, não é mais do que um programa de computador.
Quando corre o programa, este conecta com outros computadores (nós de rede), que correm este mesmo programa, espalhados pelo mundo criando uma rede massiva de computadores que comunicam e partilham informação entre si. Tudo isto acontece com uma única finalidade, a manutenção e partilha de um ficheiro, a este ficheiro dá-se o nome de blockchain (cadeia de blocos ou índice de blocos).
O blockchain é o ficheiro que contém o registo de todas as transações que ocorrem na rede Bitcoin. Qualquer pessoa pode realizar uma transação a partir de qualquer computador ligado à rede, essa transação irá ser passada de computador em computador até todos na rede terem uma cópia dessa transação. Eventualmente, a transação é inserida no blockchain.
No entanto, existe um problema.
É possível criar um conflito ao submeter duas transações diferentes simultâneas que gastam a mesma bitcoin. Por exemplo, pagar um par de meias e logo em seguida criar outra transação com a mesma bitcoin a pagar uma pizza. Ao inserir estas duas transações ao mesmo tempo em pontos diferentes da rede, alguns computadores irão receber primeiro o pagamento das meias, outros irão receber primeiro o pagamento da pizza.
Quem é que irá receber a bitcoin?
Estas duas transações não podem entrar no blockchain visto que isso seria um "duplo-gasto". No entanto, temos uma rede de computadores com transações em conflito e nenhum dos computadores tem mais poder que os demais. Como resolver este conflito?
Bitcoin resolve este problema através de um sistema chamado "mineração". Em vez de registar todas as novas transações no blockchain (e registar gastos-duplos nesse ficheiro), transações novas aguardam numa área temporária chamada "pool de memória". Cada computador pode escolher transações da sua pool de memória e assim criar um "bloco", tentando em seguida adicionar esse bloco de transações ao blockchain (cadeia de blocos ou índice de blocos). Quem conseguir adicionar o seu bloco primeiro é quem decide quais transações são validadas.
É aqui que a competição começa.
Cada computador passa o seu bloco (todos os blocos são diferentes) por aquilo que é chamado de "função de hash". Esta função de hash pega no bloco e produz um numero aleatório a partir deste. Pode parecer estranho, mas é exactamente isto que as funções hash fazem. Curiosamente, ninguém consegue prever qual numero uma função hash irá criar baseado nos dados que lhe são fornecidos.
A competição consiste em, através da função hash produzir um numero (block hash) que se encontre abaixo de um determinado limite. O primeiro a conseguir encontrar um numero suficientemente baixo a partir do seu bloco, irá adicionar esse bloco ao blockchain.
Por exemplo, digamos que tenho a transação relativa à pizza na minha pool de memoria. Irei, então, formar um bloco, adicionar essa transação ao bloco, em seguida passar esse bloco pela função hash. Se o numero resultante da função não for abaixo do numero limite a minha tentativa falhou. No entanto, posso fazer um ajuste à informação dentro do bloco e passar novamente pela função de hash.
Basicamente, "mineração" consiste em executar a função hash o mais rápido possível e o maior numero de vezes possível até encontrar um resultado abaixo do numero limite. Com um pouco de sorte conseguirei ser o primeiro computador na rede a fazê-lo e quando isto acontece o meu bloco é enviado para todos os outros computadores na rede e adicionado ao blockchain. Como o bloco contém a transação relativa à pizza, a transação em conflito relativa à compra das meias é purgada da memória.
Por pura sorte e aleatoriedade, a transação que acaba confirmada é a transação da pizza.
A transação relativa às meias pode ter entrado na rede aquando da transação da pizza, no entanto, o importante é que o computador com a transação da pizza na sua memoria conseguiu construir um bloco e obter uma hash suficientemente baixa primeiro que todos os outros e propagar este bloco pelos outros nós da rede que o adicionaram ao blockchain. Quaisquer outras transações em conflito são purgadas da memoria.
Assim que este novo bloco é recebido, todos os nós descartam o bloco em que estavam a trabalhar e voltam à pool de memoria em busca de novas transações para criar um novo bloco. Isto significa que o blockchain (índice de blocos) está em constante construção, com um novo bloco de transações a ser adicionado, em media, a cada 10 minutos.
O resultado que obtemos é um sistema onde qualquer um pode submeter transações para uma rede distribuída de computadores e esses computadores irão trabalhar de forma a adicionar essa transação ao registo permanente partilhado, o blockchain.
Graças ao processo de "mineração" de Bitcoin, que previne qualquer tentativa de gasto-duplo, temos um sistema de pagamentos eletrónico a funcionar numa rede de computadores sem um ponto central de controlo.
Enviar um comentário
Enviar um comentário