quinta-feira, 16 de novembro de 2017

Prova de Autoridade (PdA) - Proof of Authority (PoA)

Prova de Autoridade (PdA) é um algoritmo de consenso que pode ser usado para ledgers permissionários. Ele usa um conjunto de 'autoridades', que são nós que tem a permissão de criar novos blocos e dar segurança ao ledger. Ledgers usando PdA requerem que a maioria das autoridades assinem o bloco para que este seja criado.

Tolerância à Falta Bizantina Simplificada (TFBS) - Simplified Byzantine Fault Tolerance (SBFT)

O algoritmo de consenso da Tolerância à Falta Bizantina Simplificada implementa uma versão adaptada do algoritmo Tolerância À Falta Bizantina Prática (TFBP) - Practical Byzantine Fault Tolerant (PBFT), e busca dar melhoras significativas ao protocolo de consenso Prova de Trabalho do Bitcoin. A ideia básica involve um único validador que empacota as transações propostas e forma um novo bloco. Note que, diferente da blockchain do Bitcoin, o validador é uma parte conhecida, dada a natureza permissionada do registrador (ledger). O Consenso é alcançado como um resultado de um número mínimo de outros nós da rede ratificando o novo bloco. A fim de ser tolerante à falta bizantina, o número de nós que devem alcançar consenso é 2f+1 num sistema contendo 3f+1 nós, onde é o número de faltas no sistema. Por exemplo, se temos 7 nós no sistema, então 5 desses nós devem concordar se 2 nós estiverem agindo de maneira faltosa/maliciosa.
Um exemplo prático que podemos dar é o da ByzCoin, que busca fazer melhorias chaves sobre o protocolo original do Bitcoin. Dando atenção ao desafio ao redor da escalabilidade devido à latência elevada, as transações em ByzCoin são irreversivelmente comprometidas à blockchain em segundos. A vantagem adicional são as árvores de comunicação para "(...) otimizar as transação comprometidas e verificações sob condições normais." (2016 Kudelski Security report).

Dear God (from an atheist)


Dear God, hope you got the letter and...
I pray you can make it better down here

I don't mean a big reduction in the price of beer
But all the people that you made in your image
See them starving on their feet
Cause they don't get enough to eat from

[...]
Did you make mankind after we made you?
And the devil too!

domingo, 12 de novembro de 2017

Prova de Tempo Gasto (PdTG) - Proof of Elapsed Time (PoET)

Desenvolvido pela Intel, o algoritmo de consenso Prova de Tempo Gasto emula a Prova de Trabalho do Bitcoin. A implementação Sawtooth do Hyperledger é um exemplo de PdTG funcionando. Ao invés de competir para solucionar o desafio criptográfico e mineirar o bloco seguinte, como na blockchain do Bitcoin, o algoritmo de consenso PdTG é um híbrido de uma loteria aleatória e de chegou-primeiro-comeu-primeiro. No PdTG, cada validador recebe um tempo de espera aleatório.
"The validator with the shortest wait time for a particular transaction block is elected the leader."
"O validador com o menor tempo de espera para um bloco de transação específico é eleito o líder."
O "líder" cria o novo bloco da cadeia.

sábado, 11 de novembro de 2017

Prova de Risco (PdR) - Proof of Stake (PoS)

O algoritmo Prova de Risco - PdR (Proof of Stake - PoS) é uma generalização do algoritmo Prova de Trabalho. No PdR, os nós são chamados de "validadores" e, mais que mineirar a blockchain, eles validam as transações para ganhar uma taxa por transação. Não há mineração aqui, já que todas as moedas existem desde o primeiro dia. De maneira simples, nós são selecionados aleatoriamente para validar os blocos, e a probabilidade dessa seleção randômica depende da quantidade de risco posta. Então, se o nó X possui 2 moedas e o nó Y possui 1 moeda, o nó X tem o dobro de chance de ser chamado para validar o bloco de transações.
A implementação específica de PoS pode variar, dependendo do uso particular, ou dependendo do software implementado. Instâncias incluindo Prova de Depósito - PdD (Proof of Deposit - PoD) e Prova de Queima - PdQ (Proof of Burn). O algoritmo PoS economiza recursos computacionais que seriam gastos minerando num regime de consenso Prova de Trabalho.

Prova de Trabalho (PdT) - Proof of Work (PoW)

O algoritmo de consenso prova de trabalho envolve a resolução de um desafio computacional enigmático  para criar novos blocos na Blockchain de Bitcoin.
Popularmente, esse processo é conhecido como "mineirar", e os nós engajados na mineiração são os mineiradores. O incentivo para as transações de mineração acontecerem são pagamentos economicos, onde os mineiradores competindo são recompensados com 12.5 bitcoins e uma pequena taxa por transação.
Como descrito no artigo de 2016 do Kudelski Security,
"Proof-of-work (PoW) is the outcome of a successful mining process and, although the proof is hard to create, [it] is easy to verify."
"Prova-de-Trabalho (PdT) é o resultado de um processo bem sucedido de mineração e, ainda que a prova seja difícil de crear, é de fácil verificação."

 Para um melhor entendimento, considere o exemplo dado por Ofir Beigel:
"(...) guessing a combination to a lock is a proof to a challenge. It is very hard to produce this since you will need to guess many different combinations; but once produced, it is easy to validate. Just enter the combination and see if the lock opens".
"(...) adivinhar a combinação de um cadeado é uma prova de  um desafio. É muito difícil encontrar a combinação pois são muitas as combinações possíveis que se tentam até encontrar a correta, mas uma vez encontrada, é fácil validá-la. Basta entrar a combinação e ver se o cadeado abre".
Muita crítica é feita ao algoritmo de consenso PoW (existem outros algoritmos de consenso). PoW requer uma quantidade grande de energia, dado o peso computacional do algoritmo. Além disso, PoW tem alta latência de validação, e a concentração de poder de mineração está localizada em países onde a energia elétrica é barata. Em termos de segurança, PoW é suscetível ao "ataque dos 51%", que é o ataque em que um grupo controlando mais de 50% do poder computacional da rede ataca a blockchain.

sexta-feira, 10 de novembro de 2017

Stamp.io

Neste post, tratarei da certificação de um documento dentro de uma blockchain usando o stamp.io.
Primeiro, faça o seu registro gratuito em https://stamp.io/

Como exemplo, eu farei a certificação de um frame da cena de Signor Roboto.

Após isso, drop ou busque os arquivos que tem por intenção certificar.

Após isso, é só aguardar um minuto para o Ethereum e dez minutos para o Bitcoin (esse post foi feito em novembro de 2017, então essas eram as velocidades de bloco da época).





O certificado final mostra o nome do arquivo, e quando ele foi adicionado ao Stampery, além da pessoa que o assinou.
Então, um hash desse documento foi arquivado em transações que foram colocadas em vários blocos, tanto na blockchain da Ethereum quanto na da Bitcoin.
Então, se abrirmos essa transação particular, vamos observar que dentro dela haverá o hash desse documento e que ela foi gravada nesse bloco da blockchain.Portanto, stamp.io e outras tantas ferramentas que estão por vir, servem para colocar e verificar o hash de um documento numa blockchain.