Categories
Uncategorized

Os sacis da nossa infância

Quando eu era criança, na casa da minha avó, tinha um quadro que era assombrado. Era uma ancestral distante, ou parenta antiga, que tocava harpa durante a noite. Na verdade, o quadro escondia um encanamento ou tubo de ventilação, não sei bem, que estralava com a dilatação durante a noite. Os estralos abafados se confundiam com um toque de harpa desengonçado. Não é que nós não soubéssemos. Todo mundo sabia o que causava os ruídos, mas isso não impedia o folclore da família de perpetuar a ideia da trisavó, ou seja, lá o que era, saindo do quadro e tocando a harpa que ficava na sala de visitas. Aliás, a harpa que morava na sala nunca tinha sido dela, e ela provavelmente nem sabia tocar. Mas nada disso impedia o folclore de proliferar. E os quadros assombrados não eram exclusividade da minha família. Cada casa tinha o seu. Nem sempre era um cano velho, mas eles sempre estavam lá, seja seguindo com os olhos quem passava, ou projetando sombras durante a noite.

Também quando nós, pequenos, coçávamos os olhos de sono, sempre tinha uma avó ou tia para afirmar: é o João Pestana que jogou um grãozinho de areia nos seus olhos para dizer que é hora de dormir. E claro sabíamos que não havia nenhum João Pestana, mas ainda assim procurávamos avidamente por ele.

Mas meus preferidos eram os sacis. Tinha vários. Quintal grande, com muita terra, dava pra ver redemoinhos sempre. Mesmo fora da casa, na cidade, tínhamos muitos sacis. Eles batiam as janelas, derrubavam as roupas do varal, atrapalhavam nossas brincadeiras. Eram mesmo uns malandros. Nunca tentamos pegar os sacis. Não eram sacis de monteiro lobato que nos obedeciam se roubássemos o gorro ou que pudéssemos prender em uma garrafa com uma cruz feita de carvão na rolha. Eu até fiz isso uma vez, mas todo mundo riu de mim: os nossos sacis não eram sacis de livro. Eles só brincavam no quintal, e faziam as travessuras deles, dentro de seus rodamoinhos.

Até hoje os rodamoinhos me impressionam. Quando teve um tornado aqui em Brasília, uns anos atrás, que destruiu vários carros no estacionamento do aeroporto, eu via de longe e imaginava o tamanho do saci que pilotava aquilo ali.

Algumas lendas mais antigas não tinham lugar na cidade grande, é verdade. A falta de um rio ou mar não deixava lugar pras sereias e botos. E a falta dos fogos fátuos nos cemitérios modernos nos tirava as mulas sem cabeça. Mas o folclore não se dá por rogado e cria suas novas lendas. Nosso cemitério do Bonfim ganhou uma loira, que fazia o papel sedutor da sereia e assombrava nosso cemitério. Já o nosso boto veio bem mais tarde, quando já era adolescente, na forma de um capeta que seduzia as mulheres nas quadras de forró ou funk da avenida Vilarinho. Não podia tirar o chapéu, não por causa do furo na cabeça, mas dos chifres, que apareceriam.

Esse mundo misto de fantasia e realidade ajudava a gente a entender o mundo. Sabíamos bem o que era lenda e o que era realidade, mas as lendas nos traziam um conforto extra praquilo que ainda não conhecíamos por completo. Era bom ter um saci pra “culpar” pela bagunça no quintal. Arrumávamos aquilo com mais gosto e vontade. Como dizem os hispanofônicos:

Yo no credo en brujas, pero que las hay, hay!

Mas o mundo cresceu muito rápido. As lendas que antes cabiam não cabem mais, e as loiras do Bonfim e capetas da Vilarinho não conseguem suplantar a velocidade da internet. Eu ainda vejo bruxas e sacis por aí, mas acho que sou dos poucos. A maioria nem repara na existência deles, e somente ri quando reparo. Mesmo as crianças, não tem um saci na internet ou um João Pestana que saia da TV. (Talvez uma Samara, dizendo que temos 7 dias? só se for por WhatsApp, porque “áudio? deus me livre!”). Não sei se essa falta de bruxas e sacis é que abre o caminho para acreditarmos em outras lendas, que ao invés de nos acalmar dentro de um mundo inexplicável, nos aterrorizam e nos fazem temer a verdade. Cada um tem a sua: de cloroquina a 5g, de GMO a vacinas, sempre temos uma bruxa à solta no nosso WhatsApp. Precisamos de novos sacis pra arrumarem (ou bagunçarem?) a casa e tomar o lugar dessas outras bruxas, mais assustadoras e daninhas, do mundo moderno!

Categories
Blockchain girinadas

Descentralizando tudo

Esse artigo é baseado na palestra de mesmo título criada por mim e pelo Gabriel Rhama para a Campus Party de Brasília1. Como o conteúdo é bem legal, achei que colocar ele por escrito seria também interessante. Pra facilitar, devo escrever em várias partes, uma pra cada um dos temas que abordamos na palestra.

Introdução

A primeira coisa que vem à mente quando falamos de criptomoedas2 é descentralização3. Criptomoedas são descentralizadas, Blockchain é consenso descentralizado. Mas o que isso quer dizer? Pra que serve isso? Porque isso é tão importante?

TCP/IP4

Vamos voltar um pouco no passado e falar sobre a internet. Na década de 1960 o governo americano financiou um projeto de pesquisa para a criação de uma rede de computadores. Não é a primeira rede, já existiam outras, abrangendo universidades, empresas, etc. Essa nova rede tinha um objetivo específico: resistir a ataques nucleares que tirassem do ar um ou mais dos computadores envolvidos. Até então, as redes eram estruturadas de forma centralizada (um computador central que se comunica com vários terminais) ou hierárquica (sem apenas um computador central, mas computadores ligados de forma em que alguns são concentradores das informações vindas dos outros). Redes com esses formatos são extremamente frágeis em caso de ataque. Atacando um único computador você interrompe toda a rede.

A Darpa5, agência de pesquisa do departamento de defesa dos EUA, junto com algumas universidades norte-americanas, desenvolveu então a ARPANET, e seu protocolo de comunicação, o TCP/IP. A ARPANET, que depois evoluiu e veio a se chamar Internet6, usava de um protocolo descentralizado, onde nenhum computador é mais importante que o outro e onde os caminhos entre um computador e outro se adaptavam de acordo com a disponibilidade dos mesmos. Com isso, se um computador saísse do ar por qualquer motivo, os outros continuavam se comunicando normalmente. Não havia um ponto central de falha. Tínhamos aí o primeiro uso da descentralização: Resistência a falhas e ataques.

O TCP/IP foi o primeiro passo em direção a descentralização, a descentralização dos canais de comunicação.

Bitcoin78

Em 2008, Satoshi Nakamoto9 deu mais um passo em direção a descentralização: O Bitcoin10. Bitcoin é uma moeda digital descentralizada que funciona sobre um protocolo criptográfico. Era logo depois da crise de 200811, onde os bancos haviam criado uma bolha econômica e depois recorreram aos governos dos seus países para evitarem a falência, enriquecendo com dinheiro público ao mesmo tempo em que transformavam em pó as economias da população. A ideia do Satoshi era dar ao cidadão comum uma alternativa ao dinheiro digital que não fosse controlada pelos bancos.

Não tenho certeza se o Satoshi tinha noção de quão revolucionário era o sistema que ele criou. Acredito que, pra ele, era só mais uma evolução dos sistemas de moedas criptográficas que tinham vindo antes, como o bit-gold12 ou o hashcash13. Inclusive, muitas das ideias que ele usou foram tiradas dessas precursoras.

Com o Bitcoin, o Satoshi se aproveita de mais uma vantagem da descentralização: Resistência à censura. Os bancos não podem mais fechar sua conta e recusar seu crédito, eles não tem mais controle sobre seu dinheiro.

O Bitcoin trouxe a descentralização do dinheiro!

Blockchain14

Esse é um caso bem especial. Para o Satoshi Nakamoto, só existia o Bitcoin15. Só depois de lançado o Bitcoin é que outros desenvolvedores e cientistas perceberam que dentro do Bitcoin existia mais uma inovação, que poderia ter vida própria: A Blockchain! A Blockchain, ou cadeia de blocos, é a estrutura de dados que dá suporte ao Bitcoin. É o banco de dados por trás do Bitcoin, e de todas as criptomoedas.

Não vou entrar aqui no debate filosófico se Blockchain existe sem o Bitcoin ou não. Alguns acham que sim, outros que não. Enfim, não é o meu debate e daria para uma nova série de artigos. Afirmo apenas que ela tem uso que não é simplesmente dar suporte ao Bitcoin, precisando do Bitcoin para existir ou não.1617

A Blockchain trouxe mais uma inovação: ela permite o registro de dados, não somente de dados financeiros, mas quaisquer dados, de forma descentralizada. Enquanto o Bitcoin usa a Blockchain apenas para o fim específico de realizar transações financeiras, outros sistemas podem se aproveitar dessa mesma infraestrutura para registrar todo tipo de dados.

É bom tomar cuidado com isso. Descentralização não é algo barato. Uma Blockchain vai ser replicada em TODOS os computadores que formam a rede descentralizada onde ela opera. Isso tem um custo. Esse custo é refletido nas famosas “taxas de transação” do Bitcoin, ou no “gas” da rede Ethereum. Então enquanto Blockchain é uma ferramenta fantástica, ela não é bala de prata. Ela é uma solução cara para problemas específicos.

A Blockchain é então outro degrau no nosso caminho rumo a descentralização: descentralização do armazenamento de informações.

Smart-Contracts1819

Apesar de já existirem no Bitcoin os smart-contracts “simples”, foi com a Ethereum e o Vitalik que surgiram os smart-contracts como entendemos hoje. Uma coisa importante que é preciso entender sobre smart-contracts é que, apesar do nome, eles não são contratos como nós entendemos. São trechos de código capazes de serem executados de forma descentralizada. Você escreve um trecho de código, registra ele na Blockchain, e depois ele pode ser executado por você ou por terceiros para processar as informações e registrá-las também na Blockchain. Um smart-contract vai ser executado simultaneamente em todos os nós participantes da sua rede de forma a validar se os dados gerados por ele podem ou não ser gravados na Blockchain. De novo, como toda descentralização, esse processo é caro. Por isso existem restrições quanto ao tamanho e funcionalidade do código a ser executado. E essa execução tem um preço a ser pago: o “gas”20, a ser pago aos mineradores em troca desse serviço.

Smart-contracts então não são contratos, são uma forma de estender as regras de consenso de uma Blockchain. Com um smart-contract o usuário cria novas validações, novas regras de consenso, novas funcionalidades em cima de uma Blockchain existente, sem precisar criar uma nova Blockchain. Isso permitiu coisas com os tokens ERC2021, e consequentemente as ICOs22. E permite que você estenda sua Blockchain para armazenar e processar virtualmente qualquer tipo de dado.

Smart-contracts são a descentralização do processamento de dados.

Decred23

Em 2013, Tacotime, criador da Monero24, propôs uma moeda chamada Memcoin2 (MC2), usando um sistema híbrido de Proof-of-Work (PoW) e Proof-of-Stake (PoS)2526. Logo em seguida, e de forma independente, o Charlie Lee27, da Litecoin propôs um sistema similar que ele chamou de Proof-of-Activity (PoA)2829. As ideias por trás da MC2 acabaram indo parar nos ouvidos da Company 0, empresa responsável pelo btcsuite, e a equipe então usou essas ideias em uma nova moeda, a Decred30. O foco principal da Decred seria prover governança descentralizada para evitar os problemas de governança constantes na Criptoesfera que geram tantos forks, novas moedas e brigas políticas.

A Decred dispõe de um sistema de votação onchain, um sistema de registro de documentos (Dcrtime) e de apresentação de propostas para a moeda (Politeia).

Decred é a descentralização da governança.

Resumo da primeira parte e conclusão

Nesse primeiro artigo vimos a evolução das tecnologias e criptomoedas em direção à descentralização:

  • TCP/IP é a descentralização dos canais de comunicação.
  • Bitcoin é a descentralização do dinheiro
  • A Blockchain é a descentralização do armazenamento de informações.
  • Smart-contracts são a descentralização do processamento de dados.
  • Decred é a descentralização da governança.

Em especial vimos a importância da descentralização em:

  • Resistência a falhas
  • Resistência a ataques
  • Resistência a censura.

Descentralização é uma ferramenta de resiliência para sistemas de informação. Com a descentralização, busca-se garantir que nenhum tipo de falha, ataque, ou entidade em posição de autoridade interrompa, censure ou interfira na operação dos sistemas.

 

Categories
Uncategorized

Bitcoin XT, Forks e tudo mais (parte 2)

No post anterior eu expliquei o que eram os forks, e o que isso tinha a ver com o Bitcoin XT. Nesse post vou tentar esmiuçar um pouco o que é o Bitcoin XT.

Histórico

Desde os primórdios do bitcoin, o tamanho do bloco é o principal fator limitador da capacidade da rede de processar transações. No modelo atual, um bloco pode ter no máximo um megabyte de tamanho, o que limita o numero de transações a cerca de 7 por segundo (( Bloco de 1Mb, 250 bytes por transação, um bloco a cada 10 minutos, ou 600 segundos, em média $$ \Rightarrow \frac{1000000}{250 \times 600} \approx 6.66$$ ))((A conta de 250 bytes por transação foi feita pelo próprio Gavin Andresen e postada aqui)). Hoje isso parece ser o suficiente, e a não ser em casos onde tentam fazer um “flood” na rede ((referencia par ao flood de transações na rede)). Mike Hearn, o principal desenvolvedor do bitcoin XT fez estimativas usando o valor corrigido de 3,2 transações por segundo((3,2 transações por segundo é o limite atualmente aceito pois o tamanho médio de transações cresceu desde a previsão do Adresen, veja aqui)) seria atingido ainda no primeiro semestre de 2016((ver “Bitcoin’s seasonal affective disorder“, por Mike Hearn))((Opinião pessoal do autor aqui, olhando o gráfico de tamanho médio dos blocos (e não de numero de transações, como o Hearn fez) vejo que o crescimento dele é sublinear – pode ter a ver com a variação sazonal que ele explica no artigo – e, a não ser durante os ataques de flood que podem ser mitigados de outras maneiras, não está nem perto de chegar no limite dentro de um ano. Veja nesse gráfico)).

Dos piezas - on Flickr

Surgiram então ao menos 3 propostas de aumento dos blocos, defendidas por diferentes membros do “core developers”((Core developers é o nome dado ao time principal de desenvolvimento do bitcoin core)). O Jeff Garzik criou o BIP 100((BIP 100, por Jeff Garzik)), que propunha um sistema de votação para aumento dos blocos e o BIP 102 ((BIP 102, por Jeff Garzik)) que aumenta o bloco para 2Mb uma única vez. O Gavin Adresen propôs o BIP 101((BIP 101, por Gavin Andersen)), que propunha um aumento fixo inicial para 8Mb, dobrando esse tamanho a cada 2 anos até o limite de 20Mb. Por ultimo, o Pieter “sipa” Wuille fez uma proposta conciliatória((como traduzir “compromise”, meu deus?)) que ficou conhecida como BIP “sipa” e não chegou a ganha numeração definitiva((BIP “sipa”, por Pieter Wuille)). Essa proposta aumenta o blockchain gradualmente a cada 97 dias, numa média de 17.7% ao ano a partir de 2017. Os outros dois desenvolvedores do grupo((Posição do Gregory Maxwell))((Posição do Wladimir J. van der Laan)) se posicionaram contra o aumento do tamanho do bloco, por entre outros motivos((Veja um resumo dos argumentos aqui)) acharem que forçar um hard fork sem consenso da comunidade seria arriscado.

Nesse contexto, a comunidade e os desenvolvedores não conseguiram entrar em consenso. O Gavin Adresen como lider nominal do grupo se sentia pressionado para que uma decisão fosse tomada rapidamente((citação: “A lot of people are pushing me to be more of a dictator (like Mike) … that may be what has to happen with the block size. I may just have to throw my weight around and say this is what it’s going to be. If you don’t like it, find another project.”)). Aqui entra  em cena o Mike Hearn que já estava descontente com a forma como time de core developers tomava as decisões sobre o desenvolvimento do bitcoin e já vinha se desentendendo com alguns deles((sobre a discussão com o Wladmir J. van der Laan)). Ele então convenceu o Gavin Andresen a ajudá-lo em um novo projeto, construído em cima do Bitcoin Core, onde o processo de tomada de decisão fosse mais ágil e mais focado em atender as necessidades do usuário. O carro chefe desse novo projeto seria a BIP 101 do Gavin, mas ele comportaria outra mudanças. Em meados de agosto o projeto gerou seu primeiro fruto, que é o Bitcoin XT.((Why is Bitcoin forking?, por Mike Hearn))

O que vem no pacote?

O Bitcoin XT, como o próprio projeto diz, nada mais é que uma série de patches aplicados ao Bitcoin Core para conduzi-lo na direção que os novos desenvolvedores, em especial o Mike Hear, acham correta((citação: “Bitcoin XT is an implementation of a Bitcoin full node, based upon the source code of Bitcoin Core. It is built by taking the latest stable Core release, applying a series of patches, and then doing deterministic builds so anyone can check the downloads correspond to the source code.”)). O pacote completo de patches inclui, além do BIP 101, as seguintes funcionalidades:((Veja a lista detalhada dos patches))

  • Retransmissão de double spending pelos clientes (para facilitar a identificação de golpistas, a rede não mais filtrará as tentativas de gastar duas vezes a mesma moeda);
  • BIP 64 – “getutxos”, que permite que informações sobre transações sejam requisitadas na rede, auxiliando na implementação de carteiras descentralizadas e permitindo melhorias na interface;
  • Melhorias na lista de DNS seeds, permitindo maior diversidade e robustez nas conexões da rede;
  • Funcionalidades anti DoS – Duas propostas de proteção contra DoS, uma do Mike Hearn, outra do Tom Harding foram implementadas;

Votação e entrada em operação

O aumento de blocos não é uma mudança trivial, e não pode ser feito com uma mera atualização do software. É preciso forçar um hard fork na rede. Não existe uma forma de fazer a transição suave (usando soft forks), porque os blocos de tamanho maior seriam fatalmente rejeitados pelos clientes antigos, e não há uma maneira alternativa de encaixá-los no protocolo já que foi implementado como uma regra fixa em todos os clientes.((ver 1 e 2 para mais detalhes)). Um hard fork é uma medida arriscada, que pode gerar prejuízos se feito apenas por uma parcela da rede. Normalmente ele é conduzido com o consenso da comunidade que atualiza os principais nós e clientes da rede antes de um prazo pré estabelecido. Entretanto a implementação do aumento de blocos ainda é um assunto polêmico, e o consenso nunca foi atingido. Então o Bitcoin XT se utiliza de um mecanismo de “votação” para mensurar o consenso da rede, e só após esse consenso ser atingido é que ele irá ativar as novas funcionalidades. Nesse meio tempo, ele opera exatamente igual a um cliente bitcoin core.

LuMaxArt Free Election 01

A votação tem uma regra bem simples: Após 11 de janeiro de 2016, se em algum momento 750 dos últimos 1000 blocos minerados (75%) forem marcados com o numero de versão do Bitcoin XT, o sistema considera que o consenso foi atingido.((O andamento da votação pode ser acompanhado aqui)) Uma mensagem pedindo a atualização da carteira para o XT é então enviada e exibida em todas as carteiras que ainda não foram trocadas pela versão XT, e após 2 semanas, as regras do XT passam a valer. Essa regra muda a dinâmica de obtenção de consenso de forma prévia para o que os autores do XT chama de “Economic majority voting”((ver “economic majority voting“, no bitcointalk)), e é um dos principais pontos de crítica a forma como o projeto é conduzido ((o outro é a estrutura hierárquica de tomada de decisão))

Não existe Bitcoin XT, apenas Bitcoin

Em todas as discussões que acompanhei na internet o que mais tenho visto é a dificuldade de entender o que exatamente é o Bitcoin XT. Apesar da discussão ser complexa e cheia de nuances, termos tecnicos especificos do bitcoin como “fork”, “blockchain” e “broadcast de transações”, um ponto é bastante claro:

O Bitcoin XT e o Bitcoin são uma coisa só.

O bitcoin XT é uma carteira que implementa um conjunto de regras mais abrangente (blocos maiores), e por isso necessita de um hard fork para entrar em operação, mas ele não cria uma moeda paralela nem “mata” o bitcoin. Mudanças de regras no bitcoin sempre foram implementadas e nem por isso ele deixou de ser “bitcoin”. O bitcoin não deixa de existir, nem é substituído pelo XT. O XT apenas atualiza as regras de validação de blocos que o bitcoin usa, estabelecendo um novo consenso na rede, agora com blocos maiores((estou deliberadamente ignorando as outras mudanças introduzidas pelo XT pois elas não envolvem a blockchain nem o fork, apenas afetam a apresentação ou a conectividade dos clientes, e mesmo que não forem implementadas em carteiras alternativas, não impediriam o funcionamento correto delas)). A moeda continua sendo o bitcoin, a blockchain continua sendo a blockchain do bitcoin e a rede continua sendo a rede bitcoin. A expectativa dos desenvolvedores do XT é que o consenso seja atingido ainda durante  o período de duas semanas da atualização do XT e que no momento em que o primeiro bloco maior do que 1Mb for gerado, já não existam clientes desatualizados rodando na rede.((ver uma discussão sobre isso aqui))

Existe uma controvérsia quanto ao que acontecerá se o defensores radicais do bitcoin core continuarem minerando e mantendo o bitcoin core vivo e conectado à rede. O próximo artigo irá focar nesse problema e em outros possíveis problemas do XT.

Categories
Uncategorized

Bitcoin XT, Forks e tudo mais (parte 1)

Se você está querendo saber o que é Bitcoin @ wikipedia.org (en), esse artigo não é pra você. Se procura um posicionamento politico, também veio ao lugar errado. Esse artigo é sobre como funciona o mecanismo de consenso, e a bifurcação (Fork) que ocorrerá em consequência da adoção do Bitcoin XT.

O mecanismo de consenso e os forks

O Bitcoin se propõe a resolver um problema clássico da computação, conhecido como “Problema dos generais bizantinos Iterado”((ver Byzantine Generals @ wikipedia.org (en))). Esse problema pode ser resumido como sendo “buscar o consenso através de mensagens transmitidas por um meio inseguro”. Não vou entrar em detalhes aqui sobre como o consenso é atingido ou buscado, pois sairia do escopo desse artigo, mas basta saber que o objetivo do bitcoin é conseguir o consenso entre os participantes da rede. Quando esse consenso não é atingido, acontece  oque chamamos de “Fork“, ou bifurcação.

Nesse ponto quero deixar claro: um Fork na Block chain (database)|blockchain @ wikipedia.org (en) não tem nada a ver com um fork do código fonte. um Fork na blockchain pode acontecer sem haver fork no código fonte (e ja aconteceu algumas vezes antes por bugs no software do bitcoin core((ver os seguintes artigos: 1, 2 e 3 )) ). Forks no código fonte do bitcoin acontecem todo o tempo. São desenvolvedores criando novas criptomoedas concorrentes ou complementares ao bitcoin((Atualmente são tantos que a ferramenta de visualização do github nem permite ver o gráfico)). Note que esses forks sempre criam novas blockchains, começadas do zero. Ou seja, são forks do código fonte, mas não da blockchain.

Soft Fork

Voltando ao assunto. O consenso no contexto do bitcoin é definido pela blockchain. Ela nada mais é do que uma sequencia de blocos, estes compostos por transações, encadeados um ao outro através de assinaturas criptográficas((Pra quem quer saber em melhores detalhes, um bloco precisa conter o hash do bloco anterior e ser validado por um processo conhecido como mineração, veja esse artigo (não técnico) ou esse (mais técnico))). Sempre que há uma divergencia entre mineradores, ou seja, quando conjuntos diferentes de transações são validados ao mesmo tempo formando blocos diferentes para a mesma posição da blockchain, acontece um fork. Esse tipo de fork é chamado de “soft fork“, e faz parte do mecanismo de obtenção de consenso.

Como a rede decide qual desses dois blocos vai ser mantido e qual será descartado? Simples. Quando o proximo bloco for minerado, apenas um dos dois terá sido “assinado” pelo minerador. Aquele que ficar de fora, se torna “órfão”. E se dois mineradores criarem dois novos blocos simultâneos, cada um assinando um dos antecessores concorrentes criados na rodada anterior? Apesar de pouco provável, será formado um fork de dois blocos, ou três, quatro, etc, blocos até o momento em que algum minerador conseguir minerar sozinho o próximo bloco, sem conflitos, e criar uma sequencia mais longa que a concorrente. Quando essa sequencia é criada, a rede atinge novamente o consenso, e essa nova blockchain, mais longa que a concorrente, é mantida e a sequencia concorrente de blocos é tornada órfã.

Blockchain com soft forks
Soft Forks. Os blocos roxos se tornaram órfãos.

O mecanismo de consenso então é sempre decidir pela sequencia mais longa de blocos. Soft forks são mecanismos temporários que permitem que duas versões concorrentes da blockchain disputem qual delas atingirá o consenso. Soft forks com mais de um bloco são raras, muito raras.

E órfãos são ruins! Ninguém gosta de órfãos((No contexto de bitcoins, não tenho nada contra crianças que precisam de adoção)). Órfãos dão um prejuízo danado a quem os minera, pois gasta poder de processamento para encontrar um bloco que vai ser descartado pela rede e não vai gerar dividendos. A menos que se esteja tentando um ataque à rede, ninguém vai querer forçar a criação de soft forks na rede, pois o risco de tomar prejuízo é grande.

correção:

Estudando mais sobre o XT para o próximo artigo percebi que tem uma incorreção nessa seção, então volto pra corrigi-la. Quando eu falei de soft forks, eu cito apenas os forks involuntários da rede, mas o termo é usado de forma bem mais ampla que isso. Quando mudanças no protocolo são retro-compatíveis, isto é, não vão quebrar as regras das carteiras já existentes (por exemplo, se eu reduzo o tamanho dos blocos ao invés de aumentá-lo), isso é também chamado de soft fork. Os blocos gerados nas carteiras antigas podem ser rejeitados pelas carteiras novas, mas os blocos novos não serão rejeitados pela carteira antiga e a rede manterá sua consistência, com uma quantidade pequena de “orfãos”.

Hard Forks

Então chegamos no grande vilão do consenso: Os hard forks. Hard forks são quando alguma coisa impede que um consenso seja atingido.  Pode ser um bug no sistema, que cria blocos reconhecidos por algumas versões da carteira, mas não por outras. Esse tipo de bug já aconteceu mais de uma vez((ver os seguintes artigos: 1, 2 e 3 )). Pode também ser decisão do time de desenvolvedores, para acrescentar funcionalidades à moeda. Para evitar que um hard fork proposital tenha impacto na moeda, um consenso prévio entre desenvolvedores e usuários costuma ser buscado, e quando o hard fork acontece, estão todos (ou quase todos) com a versão correta da carteira e a cadeia “errada” é rapidamente descartada ou ignorada.

Exemplo de Hard Fork. A cadeia superior usa a versão antiga da carteira enquanto a cadeia inferior usa a versão nova. Como não houve consenso, duas cadeias paralelas se formam a partir do terceiro bloco.

Se órfãos já eram ruins, imagina um hard fork? é todo um ramo da blockchain que nunca vai virar o consenso. É a pior coisa que pode acontecer, e é motivo de morte para várias altcoins((veja nessa lista de altcoins mortas quantas morreram por hard forks)).

A rede e a propagação das transações

Além da blockchain, outro componente primordial do bitcoin é a rede. O bitcoin forma uma rede P2P conectando cada carteira com uma quantidade razoável de outras carteiras, de forma que as mensagens entre uma e outra consigam percorrer toda a rede. De uma forma simplificada, as transações criadas por uma carteira são enviadas a todas as outras conectadas a ela. Cada uma dessas carteiras, por sua vez, retransmite as transações recebidas de uma carteira conectada para todas as outras, e assim sucessivamente, até que toda a rede tenha recebido uma copia daquela transação. OS blocos minerados passam pelo mesmo processo. A diferença é que as transações ficam armazenadas em uma memória temporária, e os blocos são armazenados na blockchain, de forma permanente.

Exemplo de redes com clientes de versões diferentes. A primeira totalmente conectada. Na segunda, as linhas vermelhas indicam que clientes de versões diferentes irão se desconectar. Na terceira e quarta vemos as redes isoladamente.
Exemplo de redes com clientes de versões diferentes. Na primeira uma rede totalmente conectada. Na segunda, as linhas vermelhas indicam os pontos onde clientes de versões diferentes irão se desconectar. Na terceira e quarta vemos as redes isoladamente.

Quando acontece um fork, seja ele soft ou hard, a transmissão das transações e blocos continua ocorrendo normalmente. Ou seja, forks não afetam a propagação de transações pela rede. No caso de um hard fork, entretanto, alguns blocos gerados por carteiras de versão diferente ou com bug vão ser descartados como inválidos, e não serão gravados. Em casos graves, as carteiras que insistirem em enviar blocos “inválidos” podem ser desconectadas. Em alguns casos, essa desconexão pode separar a rede em duas redes que não se comunicam. Chamamos isso de split. Mas na maioria dos casos, as redes continuam se comunicando, mas ignorando os blocos gerados pela outra rede. Quando há um split, criam-se efetivamente duas redes separadas, com duas blockchains separadas, praticamente como se existissem duas moedas separadas.

O bitcoin XT

Também não vou entrar em detalhes sobre quais são as melhorias propostas pelo Bitcoin XT ou se elas são boas ou ruins. Apenas pretendo descrever o que deve acontecer com a blockchain e com a rede bitcoin devido a sua introdução.

O bitcoin XT é um fork do código do bitcoin que pretende gerar um hard fork da blockchain do bitcoin caso sua aceitação passe do limite de 75%((O valor exato é de 750 blocos minerados pelo XT entre os últimos 1000 blocos minerados, ver BIP-0101)). Após atingido esse limite ele emitirá uma mensagem para todos os clientes da rede informando que haverá um hard fork e dando o prazo de 2 semanas para que quem quiser possa adequar seus sistemas. Passadas duas semanas, o XT começará a minerar blocos seguindo as novas regras, gerando assim um hard fork.

Isso não seria um problema normalmente, já que o processo de consenso seria conduzido fora da rede e quando fosse finalmente colocado em prática o fork, todos os usuários já estariam com seus sistemas e carteiras atualizados. Só que isso não aconteceu. O XT optou por não passar pelo processo de obtenção de consenso fora da rede e usou esse novo  processo para decidir sobre a criação ou não do hard fork. Em termos práticos, o processo deixou de ser uma tentativa de consenso e passou a ser uma votação por maioria de 3/4 dos mineradores((na verdade 3/4 do poder de processamento, já que mineradores mais “poderosos” terão mais influencia no voto)).

A intenção dos criadores do XT é que, caso eles atinjam os 75%, todo mundo migre para o XT e o consenso seja atingido sem hard fork. Mas isso não necessariamente é verdade. Vou tentar descrever abaixo alguns dos cenários que podem acontecer.

1) Caminho Feliz sem XT

Esse é o cenário mais fácil de prever. O XT não obtém 75% dos mineradores, e tudo continua como está.

2) Caminho Feliz com XT

Esse cenário se dá com um consenso sendo atingido antes do término das duas semanas de adaptação. Nesse caso, todos migram par ao XT e quando o hard fork ocorrer, não haverá ninguém no lado “antigo” do fork, que morrerá rapidamente. O XT substitui o bitcoin totalmente. Esse cenário parece improvável dada a quantidade de pessoas defendendo o XT.

3) Hard Fork, mas o bitcoin “antigo” continua existindo.

Suponhamos que 20% dos mineradores optem por não migrar par ao XT. No momento do hard fork teremos a criação de duas moedas com um passado comum. Uma que chamarei de “core” e é minerada pelos que não migraram para o XT e outra que chamarei “XT”, minerada por quem optou pela mudança. Nesse cenário, existem diversas situações de risco e que podem causar problemas tanto para a rede como para os usuários.

Na próxima parte desse artigo eu vou tratar em mais detalhes desse cenário, que é o mais interessante tecnicamente.

 

Categories
feminismo girinadas

Nós não somos ocidentais.

A primeira vez que eu me deparei com esse problema foi em 83, na França, quando minha mãe, durante o doutorado, precisou preencher um formulário da universidade que perguntava “origem cultural”, ou algo assim. Ela marcou “ocidental”. O orientador dela reclamou:
– Você não é ocidental!
– Não? ela perguntou espantada. Mas então o que eu marco?
E as opções eram africano, árabe, próximo-asiático ou oriental. Não conseguiram descobrir o que ela era, deixaram em branco. Descobrimos o que nós éramos 10 anos mais tarde, no canadá, onde os formulários sempre tinham a opção: latino! (Alguns bem explícitos, “latino, mesmo que branco”). Não, definitivamente não éramos ocidentais, mas agora pelo menos éramos alguma coisa.

The-Good-the-Bad-and-the-Ugly[amazonify]B0052REUW0:right[/amazonify]Daí em diante, sempre me deparo com esse problema. Outro dia foi um blog cético qualquer que falava sobre o oriente médio citando um [amazonify]B0052REUW0::text::::livro do Pinker[/amazonify] sobre a violencia: “o pinker mostra como nós passamos por um processo civilizatório que resultou em maiores direitos humanos”, e pombas, o pinker não fala de nós. Ele falava explicitamente: EUA e Europa Ocidental. E aí eu percebo que o blogueiro cometeu o mesmo erro da minha mãe e preencheu no seu formulário mental: “etnia: ocidental”. Não, o pinker não falou da gente, nós não passamos pelo processo civilizatório que ele cita, nós não somos ocidentais.

Tem horas que eu mesmo me confundo. Por mais que eu saiba que não sou ocidental, essa idéia nos permeia tanto que, se não prestarmos atenção, a gente se agarra nela. Quando estava grávido do Tomás, fui ler o [amazonify]B000FC1KBG::text::::livro da encantadora de bebês[/amazonify]. E pombas, que mulher “caga regras”. Me revoltava a forma como ela tratava os bebês e os pais. E aí num belo momento ela me fala que numa casa onde ela trabalhou estava tudo errado: o bebê só acalmava no colo. E era tudo por causa de uma babá guatemalteca que sempre mantinha o bebê no colo, já que, no país dela, os bebês ficam sempre no colo e não no berço como deveria ser.

Nossa! Larguei o livro xingando: QUE MULHER XENÓFOBA RACISTA DO CARALHO! Que diabos, ela quer impor a cultura dela, desprezando a cultura da coitada da babá guatemalteca, que, se bobear, nunca tinha visto um berço antes de ir pros EUA. Bufei por uns bons minutos até parar pra pensar de novo: Pombas, porque eu tou puto? Ela nem desprezou a cultura da outra, só constatou como era! Mas então porque me pareceu que ela estava “cagando regras”? E aí cai a ficha de novo: Porque o livro dela não é pra mim! EU NÃO SOU OCIDENTAL! Ela não está cagando regras, ela está ensinando os pais a tratarem os bebês como se faz na cultura dela, na cultura ocidental! Ela não “caga a regra” de que criança não pode ir no colo, essa É a regra na cultura dela. Assim como criança ficar no colo é a regra na NOSSA cultura, mais parecida com a da babá guatemalteca do que da dela!

Aí chego no ponto atual, no meu ultimo conflito com a cultura ocidental: o texto que circulou no facebook traduzido como “A derrota do feminismo no Facebook“. Quando li, fiquei revoltado. POMBAS, que mulher “caga regras”, maldita preconceituosa! Culpando as coitadas das mães, que já não sofrem pouca pressão da sociedade, só porque cederam um pouquinho da sua personalidade em nome de serem mães, no maior estilo “blame the victim”. Me deu ódio, me meti em discussões acirradas sobre feminismo ser sobre dar poder pra essas mães se encontrarem fora dos estereótipos, e não culpá-las e estereotipá-las desse jeito.

Aí, discutindo com o Bruno ainda sobre o assunto, uma frase dele me deixou com a pulga trás da orelha: “Mas a minha avó, por exemplo, DEPENDE dos filhos pra tudo.” Pombas, se a avó dele, e as mulheres da geração das nossas mães em geral, é que se encaixam nesse estereótipo, porque diabos a Katie Roiphe me diz no texto que “Não posso deixar de pensar que nossos pais jamais teriam suportado tênis que apitam ou conversas que giram inteiramente em torno de crianças.” Não encaixava, como assim nossos pais jamais teriam suportado, se são exatamente nossas mães que mais se comportam assim?

Mas é claro! É porque NÓS NÃO SOMOS OCIDENTAIS! Esse texto não era pra mim, não era pra nós. A Katie Roiphe não está cagando regras, nem mesmo culpando as vítimas. Ela está constatando uma mudança cultural que, na opinião dela é negativa, e está apontando os agentes da mudança: as mães que trocam suas fotos no facebook pela dos filhos! Enquanto pra nós, latinos, postar essa foto é um reflexo da opressão do passado, pra ela, ocidental, é uma novidade, uma escolha de caminho futuro, um retrocesso! Não era pra eu ter raiva do texto porque o texto não foi escrito pra mim. Eu não sou ocidental!

Categories
Uncategorized

Fuçando a transparencia paulista

Acabei de colocar no meu programinha de navegar pelos dados da transparencia os dados do estado de São Paulo. O principal problema com SP é que eles divulgam os valores, mas não dizem de quando eles são. Procurei por todo canto, mas nada… Acabei “chutando” que eram dados de julho, mas tenho certeza que errei no chute.

A sim, e preciso agradecer aos “hackers” que extraíram os dados do site, pois ele não é machine readable. Se alguém souber quem são, e eles quiserem ser identificados, me falem que eu coloco os créditos pra eles aqui.

Enfim, estão aí. Divirtam-se!

Categories
Uncategorized

Nova versão

Screenshot da nova versão
.
Pra quem achou a versão anterior da aplicaçãozinha de consulta às estatísticas, aqui vai uma nova versão.

http://rails.girino.org/

O código fonte, como sempre, no google code.

Categories
Uncategorized

Fuçando a transparência no senado

Só pra constar aqui, os dados das tabelas agora incluem o Senado Federal (exceto nas tabelas que agrupam por “nome”, já que o senado não divulga o nome dos servidores). E a tabela cargos senado agrupa por cargos do senado federal. Divirtam-se com mais esta.

Categories
esquisitices girinadas nerdices Uncategorized

As mulheres, os militares e as mulheres militares.

Female flag officers honor first woman four-star
No meu ultimo post decente deixei no ar a pseudo-conclusão de que mulheres ganhariam menos que homens no serviço público federal. (“pseudo”, porque não tenho dados concretos pra embasar, e sim uma intuição a partir de dados preliminares). Depois fui cuidar de fazer tabelinhas bonitinhas com os dados pra postar no blog de novo, como quem não quer nada, achando que tudo continuaria como está. Baixei os dados no novo formato, fiz um novo programinha para calcular as estatísticas (dessa vez offline, postando os resultados já consolidados, vou tentar falar sobre ele depois).

Agora tinha dados pra maio e junho! ótimo! dá pra comparar os meses e ver o que mudou. Calculei os valores pra junho, tudo como esperado. Só pra conferir então, calculei os valores pra maio e… hein? caixa escrito frágil? Não tinha NADA a ver! Os Ricardos tinham sido desbancados pelas REGINAS! (pensado pelo lado bom, continuou na letra R). Recalculei, afinal no primeiro post usei os 100 mais comuns, agora eram os 200. Necas! Reginas batiam um bolão! Mas que diabos? Minhas contas antigas estariam erradas? Mas ai os valores de junho tinham de ser diferentes. Não, alguma coisa nos dados tinha mudado, e eu precisava saber o que!

NOME QUANTIDADE MEDIA
REGINA 1769 R$ 7.290,96
LUCIA 1634 R$ 7.253,19
DENISE 1397 R$ 7.095,79
SILVIA 1309 R$ 7.015,82
ELIZABETH 905 R$ 7.013,96
CRISTINA 959 R$ 6.979,49
CELIA 874 R$ 6.935,12
SERGIO 5330 R$ 6.900,84
ROSA 901 R$ 6.892,27
CELSO 1310 R$ 6.869,84
Maiores médias salariais por nome

A dica veio quando ao testar os javascripts de reordenar as tabelas, ordenei por “quantidade de servidores” a tabela dos órgãos. E os vencedores de sempre, ministério da saúde e INSS tinham pulado, em maio, pra 3º e 4º lugar. E na frente de tudo vinham os calouros Comandos do Exército, da Marinha e da Aeronáutica. Fiquei pasmo! Será? Será que os MILITARES, aqueles geralmente considerados retrógrados, conservadores, apegados a rigidez hierárquica e sobretudo MACHISTAS eram os responsáveis por colocar as mulheres no TOPO da lista? Será que nas forças armadas as mulheres ganhavam TÃO mais assim? Não é possível… Rápido, um select aqui, um order by ali e… PASMÉN!

SIM! As mulheres ganham, em média, mais que os homens entre os militares!

(só pra constar que essa é uma pseudo conclusão também, já que não tenho informação de sexo, só de nome, e não fiz uma pesquisa exaustiva, mas apenas entre os nomes mais comuns). Essa foi a segunda coisa mais contra intuitiva que eu ja tinha visto em toda minha vida, perdendo só pra Rua do Amendoim!

NOME QUANTIDADE MEDIA
MARIA 438 R$ 6.141,24
LUCIANA 300 R$ 5.716,87
ANA 830 R$ 5.390,72
ADRIANA 254 R$ 5.300,57
RENATA 386 R$ 5.275,04
PATRICIA 347 R$ 5.249,83
FERNANDA 358 R$ 5.010,69
JULIANA 375 R$ 4.748,59
MARCO 1335 R$ 4.664,48
SERGIO 1838 R$ 4.572,13
Maiores salários médios entre os militares

Minha cabeça já estava de ponta cabeça. Mas peraí! Os maiores salários das militares não são das Reginas, muito menos das Lúcias, Denises e Sílvias. Tudo bem as Militares ganharem mais, mas não são elas que colocaram as Reginas na frente! Tem mais alguma coisa acontecendo! E eu acho que sei o que é: eu nunca vi uma soldada!

Sério, conheço mulheres tenentes, capitãs, majores e até coroneis (coronelas?), mas nunca vi uma soldada! E menos ainda uma recruta: não existe serviço militar obrigatório para mulheres! Agora sim a coisa começa a fazer sentido. Fui conferir e.. os Ricardos que ganhavam altos R$ 8.329,88 na primeira leva dos dados, agora ganham “míseros” R$ 6.463,87. Já as Camilas pouco mudaram, de R$ 4.270,70 pra R$ 4.303,93. A ficha caiu. As forças armadas não puxam pra cima o salário feminino. Puxam pra baixo o masculino.

Tudo bem, o exército puxa pra baixo o salário dos homens por causa de recrutas e soldados. Vá lá, mas as mulheres continuam ganhando mais que os homens! Os números não mentem. É verdade, não mentem. Mas metade dos números só diz meia verdade. E a verdade verdadeira só vai aparecer quando se compara entre iguais. Mais selects, mais order bys e voilà. Meu senso comum restaurado, firme e forte: Entre os oficiais militares, quem ganha mais são os Walters. As Ritas, melhores colocadas entre as oficialas, só aparecem bem longe, na 94ª posição. E quando falamos de número de pessoas a coisa também não fica bem pras Marias (ou pras Anas, que é o nome mais comum entre as mulheres militares). Pra 1053 josés, o nome mais comum, temos apenas 411 anas (ou 264 marias).

ORDEM NOME QUANTIDADE MEDIA
1 WALTER 45 R$ 10.612,44
2 GERSON 47 R$ 10.133,28
3 ALVARO 82 R$ 10.036,26
4 ORLANDO 31 R$ 9.970,77
5 MARCO 282 R$ 9.931,24
6 SERGIO 373 R$ 9.898,51
7 CLAUDIO 304 R$ 9.895,78
8 WILSON 60 R$ 9.891,97
9 MAURO 122 R$ 9.860,34
10 NILSON 37 R$ 9.848,68
. . .
95 RITA 30 R$ 8.395,57
Maiores médias salariais entre oficiais

É, caiu por terra toda a esperança de feminismo militar. Na pratica, são poucas mulheres e apenas em em áreas de nicho. E elas só ganham mais, na média, do que os homens, porque não tem acesso aos cargos mais baixos. Quando a comparação é entre iguais, elas continuam no prejuízo.

O jeito é correr pras universidades, onde ainda impera um espirito progressista. Por lá, as Veras ganham dos Sebastiões, e as Reginas, Lúcias e Sônias disputam uma vaga nas quartas de finais.

NOME QUANTIDADE MEDIA
VERA 162 R$ 11.058,40
SEBASTIAO 85 R$ 10.679,09
NELSON 118 R$ 10.518,53
VICENTE 56 R$ 10.410,07
REGINA 186 R$ 10.302,47
ARMANDO 63 R$ 10.272,78
LUCIA 203 R$ 10.096,62
SONIA 222 R$ 10.046,67
WILSON 103 R$ 10.022,98
ALFREDO 66 R$ 9.954,97
Maiores médias salariais entre Prof. Universitários
Categories
girinadas nerdices política

Transparencia navegável

Coloquei no ar uma página em javascript que permite navegar pelos dados pré-processados do portal da transparência. A primeira tentativa tinha siso um sistema que calculasse as estatisticas em tempo real, mas não deu certo. Dado demais, o sistema não dava conta. Então o que eu fiz foi pré-processar os dados e publica-los em formato json. As paginas usam javascript para carregar esses dados e exibir de forma bonitinha. Links:

Essa separação entre militares e não militares tem dois motivos: os salários dos militares só estão disponíveis par ao mes de maio, e os dados divulgados no post anterior foram colhidos antes dos salários dos militares serem incluidos no portal da transparência. Os dados dos militares tem algumas peculiaridades que eu gostaria de discutir em outro post, como por exemplo o fato de as mulheres ganharem mais do que os homens, contrastando com o que ocorre entre os servidores civis.

Quem quiser os fontes dos programas usados para gerar as páginas, está no mesmo projeto do google code, em outro branch. (Versão atualizada)

Update:

Editei os links para  a versão nova do programinha.

%d bloggers like this: