Blockchain: bitcoin como um sistema de transição de estados

A blockchain é a principal tecnologia do bitcoin pois é a prova de todas as transações já realizadas, uma vez que ela possui informação completa sobre os proprietários e saldos do bloco gênese (origem) até o bloco mais recentemente concluído.

A blockchain pode ser vista como uma máquina de estados, isto é, uma máquina abstrata que está em um estado atual e pode executar uma transição para um novo estado resultante. No caso específico da blockchain do bitcoin há um "estado" que consiste no status de propriedade de todas as moedas existentes, uma "função de transição" que recebe como parâmetros um estado e uma transação, produzindo como saída um "estado final". Considere, um sistema bancário onde um estado é o balanço e uma transação é o pedido para mover $X da conta A para a conta B. A função de transição subtrai $X da conta A e aumenta $X na conta B. Caso a conta A não possua saldo suficiente um erro é retornado e a transação não é completada.

Pode-se definir formalmente através da função de transição APPLY, que recebe o estado S e uma transação TX e leva para um estado final S' ou retorna ERROR:

APPLY(S,TX) -> S' or ERROR

O estado na blockchain consiste na coleção de todas as moedas emitidas e que não foram gastas ainda, denominadas tecnicamente por UTXO (do inglês, unspent transaction outputs). A transação contém uma ou mais entradas, cada uma com uma referência para um UTXO existente e a assinatura produzida pela chave privada do endereço do proprietário, e uma ou mais saídas, onde cada saída contém um novo UTXO que será adicionado para o estado.

statetransition.png
Figura 1: Transição de estados na blockchain do bitcoin
Fonte: Ethereum: White-paper


Na Figura 1 o estado origem State possui cinco endereços com suas respectivas UTXOs, a transação é representada pelo bloco central que cria uma transição do estado State para o estado State', contendo duas entradas e suas respectivas assinaturas (respectivamente, spend e sig), e as saídas que serão geradas (create). O estado resultante State' contém os endereços antigos com suas UTXOs e os novos endereços originários da transição. As UTXOs gastas são consideradas destruídas e por consequência não aparecem no estado final State'.

Considerando uma forma algorítmica de representação para a função de transição APPLY, pode-se defini-la como:



  1. Para cada entrada em TX:
    • Se a UTXO referenciada não está listada no estado S, retorna ERROR
    • Se a assinatura não é do proprietário da UTXO, retorna ERROR
  2. Se a soma das denominações de todas as UTXO de entrada é menor que a soma das denominações de todas as UTXO da saída, retorna ERROR
  3. Retorna S' com todas as UTXO de entrada removidas e todas as UTXO de saída adicionadas.


Qualquer participante da blockchain pode iniciar uma transação sobre as UTXO em seu controle. A transação deve ser assinada e sua validade pode ser verificada por qualquer outro membro da rede. Essa verificação é o que se dá o nome de mineração, nada mais é que o mecanismo de consenso descentralizado da blockchain ou Proof-of-Work.

Os nós da blockchain tentam continuamente produzir pacotes de transações chamados de blocos que contém um timestamp, nonce, referência para um bloco anterior (hash) e uma lista de todas as transações que aconteceram desde o último bloco.


Esse pequeno artigo abordou a blockchain como uma máquina de estados, explicando como funcionam as transações, como são validadas e o que é a mineração do bitcoin, que nada mais é que a validação de blocos de transações por consenso descentralizado. Não foi o foco entrar em detalhes sobre como é a implementação de como se dá a implementação desse consenso, mas o white-paper do Ethereum dá mais detalhes sobre essa implementação.  Outro artigo interessante é o de Kenji Saito e Hiroyuki Yamada que concluem que a blockchain é na verdade uma máquina de estados probabilística e que a solução não é adequada quando existe a necessidade de uma decisão ou acordo final, pois o número de participantes é grande e desconhecido e a blockchain pode tolerar ataques do eclipse.


Série de posts sobre blockchain:

Parte 1 - Blockchain: a tecnologia por trás das criptomoedas.


Referências:

Ethereum: White-paper. [https://github.com/ethereum/wiki/wiki/White-Paper#bitcoin-as-a-state-transition-system]
Wikipedia. Blockchain. [https://pt.wikipedia.org/wiki/Blockchain]
Jordan Earls. What is a UTXO, and how does it work for a blockchain ledger? Ealrz.net. [http://earlz.net/view/2017/07/27/1820/what-is-a-utxo-and-how-does-it]
Kenji Saito e Hiroyuki Yamada. What's so different about blockchain? - Blockchain is a probabilistic state machine. 2016. IEEE 36th International Conference on Distributed Computing System Workshops. [http://ieeexplore.ieee.org/document/7756226/]
Frank Wang. Eclipse Attacks on Bitcoin's Peer-to-Peer Network. 2015. MIT.
[https://medium.com/mit-security-seminar/eclipse-attacks-on-bitcoin-s-peer-to-peer-network-e0da797302c2]

Comentários

Postagens mais visitadas