Modificando valores na Blockchain

#1

Se a modificação do bloco, não depende da validação dos anteriores e sim dos posteriores, então eu posso inserir qualquer valor, criar uma transação nova inteira sem relação contábil com as anteriores? Ou além do exemplo do site Anders.com, existem mais funcionalidades, como fechar o cálculo do livro-razão?

1 Like
#2

Danilewis,
Vou basear a minha resposta considerando um blockchain descentralizado, tendo como modelo o blockchain do bitcoin. Se a dúvida não é baseada num blockchain descentralizado a resposta muda. Também não entendi o que você quis dizer com fechar o cálculo do livro razão.
Me parece que a sua dúvida está relacionada a questão do gasto duplo que é uma das principais questões solucionadas pelo uso do blockchain descentralizado. Como o próprio nome diz, blockchain é uma corrente de blocos, ou seja, os blocos estão interligados e não precisam ser validados após serem minerados e incluídos na corrente de blocos. Vale lembrar que cada minerador mantém uma cópia do blockchain que é atualizada a cada 10 minutos e poderá detectar qualquer alteração realizada indevidamente em qualquer bloco já minerado. Qualquer lançamento futuro (débito ou crédito) irá alterar o saldo contábil da conta considerando todos os lançamentos já realizados anteriormente, sempre haverá conexão entre saldo atual e os lançamentos realizados no passado (nos blocos anteriores). A imutabilidade é uma das principais características do blockchain descentralizado. Não é possível realizar “estornos” ou “ajustes” nos saldos mediante lançamentos de “correção” realizados em blocos posteriores. Qualquer movimentação ou lançamento é verificada pelos mineradores dentro de um prazo médio de 10 minutos e somente se concretizará se o pedido de débito realmente foi autorizado pelo titular da conta mediante uso de senhas criptografadas. Não é possível um agente externo controlar essa contabilidade do blockchain realizando acertos ou ajustes sem conhecimento do titular da conta, exceto se houver por exemplo um hack ou mesmo desleixo do dono da senha. Se for criado uma nova conta no sistema essa conta nascerá sem vinculação com outras contas já existentes, não é possível trazer o saldo de outras contas para agregar numa conta nova.
O Tiago, criador deste fórum, fez um vídeo sobre funcionamento do blockchain no canal dele no YouTube usando esse modelo de blockchain do site que você citou. É preciso observar que no caso do blockchain do bitcoin existem milhares de computadores espalhados ao redor do mundo competindo (teoria dos jogos) para minerar um novo bloco a cada 10 minutos, não existe uma empresa, um servidor centralizado ou mesmo uma pessoa controlando o blockchain que possa realizar lançamentos ou estornos (por vontade própria). É uma corrida contra o tempo onde se exige trilhões de cálculos por segundo para se minerar um bloco. Além disso, uma vez minerado um bloco por um minerador, este bloco não é automaticamente incluído no blockchain, ele tem que ser validado por outros mineradores para ser aceito. Se estiver tudo certo com o bloco não resta outra alternativa senão considerar aquele bloco como sendo o último bloco válido da cadeia. Somente após essa validação as empresas que usam o bitcoin como meio de pagamento consideram a transação concluída. Vale também observar que cada minerador mantém uma cópia fiel do blockchain, ou seja, existem milhares de cópia exatamente iguais do blockchain espalhadas ao redor do mundo. Por isso se diz que é praticamente impossível acabar com o bitcoin, a não ser desligando a internet. No caso do bitcoin atualmente se considera que havendo no mínimo 6 validações o risco da transação não ser concluída é mínimo. Exemplo: Se uma loja vende um produto e aceita bitcoin como pagamento, o usual é que ela espere 6 validações para considerar concluído o pagamento. Nesse meio tempo, dentro desses 10 minutos, já está ocorrendo uma nova corrida para a mineração de outro bloco. Esse processo se repete a cada 10 minutos em média. Atualmente são realizadas cerca de 300 mil transações por dia no blockchain do bitcoin.
Quanto as funcionalidades de um blockchain elas são praticamente infinitas. Ainda se conhece pouco do potencial que esta tecnologia do blockchain trouxe para o mundo. Talvez a mais conhecida seja o uso chamado de “smart contracts” que é feito no blockchain do ethereum. Tanto Governos como a iniciativa privada estão debruçadas estudando o blockchain e de que forma podem usá-lo para diversas finalidades. Mas a ideia central é eliminar a necessidade de ter um intermediário quando se realiza uma transação. Dois exemplos de intermediários que o blockchain pode substituir são: bancos e cartórios. Mas existem várias outras possibilidades, como um sistema de diplomas e títulos universitários, registro de nascimento, registro imobiliário, etc.

3 Likes
#3

Muito obrigado Cecilio pela resposta bem completa. Na verdade, o que não entendo é como que é feita a mecânica falando em programação mesmo. Por exemplo, eu com o meu endereço (carteira A) digo que quero transferir para carteira B, 1 BTC. O sistema procura os blocos em que contém a mesma carteira para fazer o cálculo do saldo? Quem procura é minerador? Como é calculado o saldo exatamente? Existe em algum campo os saldos de todas as carteiras? Acredito que não, mas enfim, como é o processo? Até porque é preciso ver se existe saldo suficiente para fazer a transação. Outra coisa, no processo de mineração. Quando é modificado algum bloco, os demais sabem qual bloco foi modificado ou não? Ou apenas fazem a conta da criptografia? Não sei se você saberia dizer exatamente como acontece em termos de programação, se é a blockchain que contém essa busca pelo “saldo” ou se é um programa do minerador que faz isso.

#4

Danilewis,
Entendi seu foco. Acredito que a dúvida nasce se compararmos um sistema tradicional de controle de saldos contábeis como conhecemos, com os dados expressos em linguagem comum e registrados de forma contínua, sequencial. No blockchain é diferente. Os dados são criptografados e distribuídos mas os registros permanecem imutáveis e guardam os saldos. Talvez a resposta esteja na análise da árvore de merkle. Sugiro uma olhada neste link abaixo:

https://en.bitcoin.it/wiki/Protocol_documentation

Abraço.

2 Likes
#5

Olá @Danilewis !

O site que você mencionou é somente um exemplo de blockchain conceitual. Para entender exatamente como funciona a contabilização do saldo final é necessário entender as transações e especificamente como funciona o UTXO. Seu saldo é a soma de todos os UTXO atrelados a endereços que você possui as chaves privadas. Já comecei a produzir o material para um vídeo sobre o assunto, mas não tive tempo de gravar ainda.
Mas de forma resumida, você não pode criar uma transação sem referenciar uma transação anterior. Se você tentar fazer isso, ela será descartada pela rede antes de ser incluída em algum bloco. Os mineradores não irão aceitá-la, de outra forma se eles minerassem o bloco contendo sua transação inválida, o bloco nunca seria aceito pelo resto da rede e o minerador perderia seu tempo e dinheiro.
Em breve vou lançar o vídeo sobre o assunto e espero que esclareça melhor esta questão.

@Cecilio obrigado pela excelente contribuição! O wiki do bitcoin.it é provavelmente uma das melhores documentações disponíveis atualmente. Já me salvou diversas vezes hehe

Abraço!

2 Likes
#6

Interessante, verifiquei no Wikipédia. Mas vou olhar com mais calma, ali explica bem mesmo. Obrigado Cecilio.

2 Likes
#7

Oi Tiago, exatamente. Essa é minha dúvida. Porque de outra forma teria que ser verificada cada transação que envolveu um endereço já utilizado. Vem vídeo bom por aí! Aguardo ansiosamente! rs Abraço!

2 Likes