Archive for January, 2013

Amigos de Bolso™ contra o BitCoin

January 6, 2013

Após um Amigo de Bolso™ do Izzy me apontar o link [ Dossiê HBD ] Bitcoins, a moeda do futuro (no presente é só uma piada mesmo), por ser de tantas maneiras impreciso e tendencioso, resolvi publicamente discordar e replicar nos pontos pertinentes.

Sendo um conhecedor do BitCoin, logo na introdução do artigo fiquei sem entender as alusões do tipo “pífia e juvenil tentativa”, “célebre motivo de chacota” e “lorota financeira comparável a Herbalife”. A alusão a lorota financeira se fez claro mais abaixo quando o autor descreveu sua visão sobre o tema, bem como a “chacota”, já “pífia”, “juvenil” ficaram injustificados, principalmente pelo fato de o próprio autor ter admitido a importância do BitCoin para atividades ilícitas. Pode não ser idônea, mas de maneira alguma é “pífia” ou “juvenil”.

O que é BitCoin?

Um erro menor do autor nessa seção foi dizer que BitCoin é uma moeda “criptografada”. Nada no protocolo do BitCoin é criptografado, nem há nenhuma necessidade implícita de criptografia para seu uso e funcionamento. Entretanto é uma prática comum para os possuidores de BitCoin criptografarem sua carteira para impedir acesso indevido, exatamente da mesma maneira que criptografamos arquivos importantes, comunicações de email e transações bancárias, o que portanto não justificaria chamar a moeda de “criptografada”.

Mas o erro principal foi outro: implicar que o criador do BitCoin tivesse objetivos conspiratórios ocultos aos criar a moeda, sem levar em conta o adjetivo correto que deveria ter sido usado em lugar de “criptografada”: “distribuida”. BitCoin é acima de tudo, uma moeda distribuída, sem nenhuma autoridade central, sem nenhum controlador implícito ou explícito. Toda a infraestrutura de software que possibilita seu funcionamento é livre, modificável e aberto para auditoria. O que evita fraudes é o consenso gerado pela rede BitCoin, ninguém ou nenhuma instalação especial de software ou servidores tem autoridade para ditar os rumos da moeda, criá-las espontaneamente ou alterar seu valor. Nem o criador, nem ninguém. O processo de funcionamento das BitCoins é completamente aberto, auditável e consensual; não tem ponto central.

Não importa os objetivos do criador do BitCoin, porque ele não tem mais nenhum controle sobre a moeda. Ela foi criada para ser incontrolável, e só ganhou popularidade por isso: não foi um cara que disse “ela não está sujeita a ninguém, confiem em mim”, foi que cada indivíduo que analisou a fundo seu processo de funcionamento e acreditou, atestou que assim o era (e ainda hoje mais e mais pessoas o fazem e o atestam).

Como as bitcoins (não) funcionam?

Essa foi a sessão mais errada e distorcida de todo o artigo, e de certo modo justifica a visão do autor de “lorota financeira comparável a Herbalife” sobre o BitCoin.

Explicando realmente como as BitCoins funcionam: você tem BitCoins em sua carteira, que pode ser um programa no seu computador ou uma conta em alguns dos sites que oferecem serviço de carteira BitCoin. Lá estão armazenadas suas BitCoins. Quando você quiser pagar por algum bem ou serviço, você coloca o endereço do destinatário, digita o valor a ser enviado, e clica para enviar a transação pela Internet. Dentro de alguns minutos sua transação será validada e confirmada pela rede.

No caso inverso, você tem dinheiro a receber, você clica em um botão na sua carteira para gerar um endereço de pagamento (um código do tipo 13bbGCsjo5RrByDdQovxLwhquzDyTbHG7Q) que você envia ao seu pagador para que ele possa efetuar a transação.

Simples assim.

Agora, realmente existe o processo de mineração de BitCoin como mencionado no artigo do Izzy, mas dizer que “você baixa o software oficial da parada e a roda no seu computador. Dependendo da potência do mesmo […] você vai ganhar algumas frações de bitcoins após rodar o aplicativo por algumas horas” é tão preciso quanto dizer “existe um metal que vale muito dinheiro chamado ouro e tem ele enterrado. Funciona assim, você pega uma picareta e cavuca a terra, e algumas horas depois você acha alguns microgramas de ouro”.

Ainda tem um erro menor nessa afirmação, que diz que o software tem que ser o “oficial”, decorrente da mentalidade de que o BitCoin é um esquema fraudulento controlado por algum grupo restrito de pessoas. O processo de mineração de BitCoin foi criado de modo a ser matematicamente garantido de ser difícil, e portanto dar valor à moeda (lei econômica: quanto mais raro, mais caro). O processo utiliza um algoritmo padrão para este propósito, o SHA-256, projetado pela NSA. Por ser um algoritmo muito comum e conhecido (eu o aprendi pela Wikipédia), é relativamente fácil escrever um minerador, e existem dezenas deles, com zilhões de funcionalidades e propósitos específicos. Se você for se aventurar a minerar, o último que você vai querer é o “oficial” (o primeiro minerador feito; chamá-lo de lento é bondade, ele é completamente inútil na economia atual do BitCoin).

O processo de minerar BitCoin é oneroso por causa do hardware necessário, barulho e calor gerados, energia consumida (e poluição gerada, dependendo da fonte dessa energia). Acreditar que vai ganhar dinheiro fácil com isso é igual acreditar que você vai ficar rico se pegar sua picareta e ir para alguma corrida do ouro na Amazônia junto com mais zilhões de pessoas que tiveram a mesma ideia, e montam aqueles acampamentos de mineiros cheios de miséria e prostituição que as vezes passam na Globo. Minerar BitCoin não funciona assim, exige planejamento, recursos, e as contas na ponta do lápis, e isso é facilmente visível para qualquer um que não acredite em esquemas de pirâmide. Aparentemente a ira do Izzy vem do fato de isso não ser nenhuma fonte mágica de dinheiro, como ele talvez um dia quis acreditar que fosse, e agora sai atacando.

De fato, pela inexorável mão invisível do nosso amigo Adam Smith, mineração de BitCoin nunca poderá ser uma atividade mais que muito pouco rentável, por que quanto mais gente tiver minerando, mais difícil fica, atingindo um ponto de equilíbrio onde só é rentável o suficiente quando gente suficiente desiste por acreditar que não vale a pena o esforço. Certamente para mim não vale o esforço de sair numa corrida do ouro, e para muita gente não vale o de minerar BitCoin.

Como apontado no artigo, é verdade que a moeda é muito instável e tem grandes variações de preço, por isso é considerada um investimento de alto risco para especuladores (se se pode ganhar muito, se pode perder muito), mas isso é devido à sua idade e seu relativamente baixo volume de utilização.

Pera, um ex-site de Magic é o “Banco Central” dessa parada? Isso não me parece muito seguro.

O Mt.Gox não chega nem de perto a ser o “Banco Central” do BitCoin, pois a função do Banco Central é emitir e controlar artificialmente o preço da moeda, e isso não existe no BitCoin. O Mt.Gox está mais para a NASDAQ do BitCoin, pois é a maior bolsa de valores que negocia a moeda.

E sim, é insegura, volta e meia vemos sites que lidam com grandes quantidades de BitCoins são invadidos e roubados, ou então os dados são perdidos. Infelizmente isso é uma limitação do BitCoin como um conceito novo com somente 3 anos e poucos de existência: as instituições que lidam com os valores não estão acostumados com a segurança e procedimentos exigidos na atividade financeira, e não adotam procedimentos de segurança desenvolvido a duras penas ao longo dos anos pelas instituições financeiras convencionais. Essa falha não é inerente da moeda em si. A revista Forbes já apontou estes aspectos da segurança do BitCoin, e também já foi rebatido.

O mais interessante é ver o autor acusar e desconfiar das instituições que lidam com BitCoins, e principalmente explica o aspecto da “chacota” mencionada na introdução. Aparentemente, por não serem grandes e super poderosas corporações como os bancos internacionais (que já quebraram o mundo mais de uma vez) que estão por trás do BitCoin, mas sim sites simples, evoluídos de mercado de trocas de cartas de Magic, e pessoas simples e normais com os quais nos identificamos que estão lucrando com o BitCoin, o autor ataca, faz chacota e acusa de má fé e corrupção essas pessoas, quase como se tivesse inveja, e quisesse ele ter tido a ideia e lucrado com o BitCoin antes/no lugar deles.

A própria acusação de corrupção contra o sujeito Bruce Wagner (que eu nunca tinha ouvido falar, e não tem a menor importância na economia e continuada utilização do BitCoin) referencia um site dedicado a chacotas sobre o BitCoin, o ButtCoin, que a propósito, foi encerrado aparentemente por falta de ibope.

Quanto a afirmação de que o Banco Central Europeu diz que o BitCoin tem semelhanças com esquemas de pirâmide, é simplesmente falso. Segue o único trecho que a palavra “pyramid” é mencionada:

“Therefore, although the current knowledge base does not make it easy to assess whether or not the Bitcoin system actually works like a pyramid or Ponzi scheme, it can justifiably be stated that Bitcoin is a high-risk system for its users from a financial perspective, and that it could collapse if people try to get out of the system and are not able to do so because of its illiquidity.”

Preguiça de traduzir à parte, o trecho justifica o quão arriscado pode ser para uma pessoa se meter com BitCoin sem entender como ele realmente funciona (opinião de um Banco Central; claro que muita gente que já se fudeu por causa de um banco convencional poderia dizer a mesma coisa sobre eles), mas diz explicitamente que eles não tem nenhuma dado para considerar o BitCoin como um esquema de pirâmide; é quase o oposto do que o Izzy falou. Ele só levanta a possibilidade de, caso as pessoas desacreditem do BitCoin e não queiram mais comprá-lo, você não poderá mais vender o que você tem por dinheiro convencional. O mesmo risco que os investidores de ações correm caso todo mundo ache que as ações da Petrobrás não tem mais valor e param de querer comprá-la.

Mas Izzy, um broder meu que manja dessas coisas e é super politizado falou que a vantagem do bitcoin é que, ao contrário de moedas fiat, ele não desvaloriza e não inflaciona, o valor dele só sobe!

Dãã! É claro que o valor flutua, como o de qualquer ativo negociável que não seja uma bomba relógio em viés de explodir! Lembram do Avestruz Master?

O sentido real dessa frase vem do fato da moeda ser por natureza deflacionária, o que significa que, a longo prazo, se a atividade econômica em torno da moeda aumentar, seu preço só pode subir, porque não tem ninguém com poder para emitir mais BitCoins para compensar o crescimento da economia. Isso se dá por que a moeda foi planejada para ter uma taxa de produção decrescente, ou seja, a quantidade de BitCoins produzidas vai diminuir até parar de ser produzida, e só re-circular o que já existe. Isso não tem nada a ver com as flutuações locais dentro de uma bolsa de valores.

Você mencionou que é difícil mineirar bitcoins. Explique isso melhor.

Só corrobora o que eu falei sobre BitCoin não funcionar como a seção Como as bitcoins (não) funcionam? do artigo original alegar: não é pra qualquer um mineirar. Até o os primeiros hardwares dedicados à mineração de BitCoin começarem a ser entregues, que diminuiriam o consumo de energia em ordens de magnitude, o calor gerado é um efeito colateral indesejado que as pessoas tentam aproveitar.

E em quantas situações energia elétrica não é queimada para simplesmente se produzir calor? Ferro de passar, chuveiro elétrico, forno elétrico e aquecedor de ambiente em locais frios, etc. Claro que para o autor essas situações onde o calor da mineração de BitCoin é aproveitado em lugar de se queimar a mesma quantidade de energia e não produzir nada não passa de chacota. Mas considero montar essas engenhocas um hobby muito mais interessante do que, por exemplo, rebaixar carro, por luz de neon em baixo, um som gigante no porta malas e sair perturbando a paz pela cidade (só para citar um hobby geralmente reprovável).

Mas Sr. Izzy A. Nobre, se isso é uma merda, qual a real utilidade das bitcoins?

BitCoin tem sim seu grande atrativo para atividades ilícitas por ser anônimo. “Quase anonimidade” é uma afirmação meio fraca sem prova ou confirmações de casos em que pessoas são rastreadas através do BitCoin. O usuário pode ter quantas carteiras BitCoin quiser, cada uma com quantos endereços, sem relação um com o outro, quiser. E as carteiras e os endereços podem ser criados à vontade, offline no próprio computador, ninguém tem o controle sobre isso. Daí vem a afirmação que BitCoin é anônimo, porque não tem como ligar com certeza endereços — por onde passam as transações — com a identidade do dono daquele endereço. Olhando para a cadeia de blocos da rede BitCoin (tipo o livro de registro de todas as transações realizadas na moeda) você pode ver o dinheiro indo de endereço para endereço… mas não dá para saber por ali quem controla aquele endereço.

Eventualmente alguns dos seus endereços BitCoin se tornam conhecidos por alguém: se você usar seu endereço em negócios com uma pessoa, ela provavelmente terá alguma informação de contato sua que ela poderá relacionar ao seu endereço. Então ele é rastreável? Teoricamente sim, tão rastreável quanto receber uma nota de troco na padaria e tentar fazer o padeiro lembrar quem deu aquela nota para ele. Simplesmente não é uma abordagem realista, ainda mais se a quantia tiver passado por várias transações antes de levantar a suspeita.

E quanto a “essa porra” ser um “oceano de credibilidade”? Do que se duvida do BitCoin? Se for da sua robustez como moeda de troca, tem toda uma economia (ilícita) bem estabelecida e dependente do BitCoin, de modo que demanda por ele não vai faltar, garantindo sua liquidez. Se for da sua anonimidade e conveniência: bandidos usam sem medo de serem pegos. Que garantia maior você poderia querer? Eu não vejo como é possível o fato de o BitCoin ser o instrumento de negociação escolhido por criminosos cautelosos ser de alguma forma indicativo de sua fragilidade.

Quanto a negócios legítimos que aceitam BitCoin, dá uma checada nessa página: https://en.bitcoin.it/wiki/Trade. Em particular, compro jogos com BitCoins aqui: JJGames.com. Fora isso, se você for um especulador ou minerado que ganhou algum dinheiro com BitCoin, você pode simplesmente trocá-lo por outra moeda em algum dos sites de câmbio de BitCoins existentes, o único brasileiro não é lá muito ativo: Mercado Bitcoin. O tal valor “virtual” do BitCoin é tão “virtual” quanto o valor de ações da Bovespa, com a diferença que você não precisa de esperar o horário de pregão para vender — funciona direto, inclusive nos finais de semana.

E baseado na afirmação:

“bitcoins e seus entusiastas residem na mágica intersecção de

  • pessoas que não entendem o mercado financeiro,
  • pessoas que não entendem investimentos, e
  • pessoas que não entendem matemática.”

concluo que se as pessoas que fizeram e ainda fazem o BitCoin entendessem tanto de mercado financeiro, investimentos e matemática quando o Sr. Izzy A. Nobre, ele com absoluta certeza não existiria…

Para que realmente serve o software?

January 4, 2013

Dada a atenção indevida atraída pelo post “Para que serve o software?“, onde leitores casuais desavisados caíam na armadilha de ler uma coisa que não tinha nada a ver com o que procuravam, me senti na obrigação de escrever um post (anos depois) explicando realmente, em nível técnico-didático-objetivo, para que serve o software, e não aquela baboseira que era o post original.

Software é um estrangeirismo vindo do inglês que antagoniza a palavra hardware, que significa: “hard” -duro; “ware” -bem de consumo, mercadoria. O termo originalmente utilizado para designar pequenas peças de metal, adquiriu um novo sentido no século XX: designar a parte dura, material do computador. Daí, já que “hard” é duro e “soft” é mole, não custou nada para alguém cunhar a palavra software, que em contrapartida ao hardware, designa a parte lógica do computador, seus procedimentos de funcionamento, seu “conjunto de instruções” (e coloco “conjunto de intruções” entre aspas porque, apesar de as pessoas normais conseguirem entender muito bem o sentido que dou aqui a esta expressão, já posso prever eventuais leitores programadores reclamando disso e dizendo que “conjunto de instruções” é uma propriedade de arquiteturas de processadores e coisas afins; mas não é este sentido que aplico aqui).

Para entender melhor, é preciso saber que computadores são mais que simples calculadoras gigantes (embora pareça, e muitas pessoas os usem assim); têm uma característica fundamental que os diferencia de calculadoras puras: eles são programáveis (tá, tem calculadoras programáveis, mas isso também as define como computadores). Significa que um computador é uma máquina feita para seguir instruções precisas, um conjunto de passos bem definidos, orientados para algum propósito (bem, assim esperamos, mas nada impede você de programar o seu computador para fazer coisas sem propósito, ou de rodar programas despropositados nele), e essas instruções podem ser alteradas sem ter que se reconstruir a máquina. As tarefas dadas aos primeiros computadores (dado o contexto da Segunda Guerra Mundial) eram cálculos de trajetórias balísticas e decifragem das comunicações inimigas.

Mas o computador não sabia fazer isso sozinho. Como calcular a trajetória das balas de canhão, Isaac Newton já ensinou para todo mundo faz muito tempo, então coube a alguém que aprendeu com ele ensinar ao computador como fazê-lo. Esse alguém (mais provavelmente, vários alguéns) já o sabiam como fazer à mão: existe um conjunto de passos bem definidos e fórmulas já bem conhecidas para o procedimento; não é necessário nenhuma intuição ou criatividade para realizá-lo, só é preciso saber como se faz e repetir o processo. Só que fazer isso à mão é lento e passível de erro, porque pessoas se cansam e se distraem, especialmente se for um trabalho chato como esse. Daí os engenheiros programaram a sequência de passos objetivos que o computador deveria seguir para chegar ao resultado, o procedimento para realizar a tarefa, e é precisamente esse procedimento, codificado na língua do computador, que é o software.

Descifrar códigos secretos é um trabalho mais chato ainda, tem que ficar testando muitas variações e técnicas de decifragem em cima do código, até sair alguma coisa legível. Como um computador é muito mais rápido que uma pessoa, ele é bastante adequado para a tarefa, desde que ele saiba de antemão quais técnicas e em que ordem elas devem ser aplicadas ao texto. Esses técnicas, dadas em ordem bem definida, e codificadas na língua do computador, constituem o software.

Veja que estresso a importância da “ordem” do procedimento. Alguém poderia perguntar: mas e se o computador aplicasse as técnicas em ordem aleatória? Então eu responderia que daí não é um computador. Um computador é incapaz de uma ação aleatória. Nem mesmo consegue escolher uma carta de um baralho fechado. O melhor que ele consegue é chamado de “pseudoaleatório”: ele segue um processo tão esquisito, matematicamente forjado para este propósito, que simula aleatoriedade, porque a distribuição dos valores gerados por esse processo é uniforme e aparentemente imprevisível. Mas se depois de gerar um bilhão de números pseudoaleatórios, você “rebobinar” o computador para o ponto em que ele começou, ele gerará exatamente os mesmos números. É uma disciplina abrangente e complexa o estudo dos processos de geração de valores pseudoaleatórios, que se justifica por essa incapacidade dos computadores.

É claro que alguém pode desenvolver alguma engenhoca que gera eventos aleatórios e ligá-la ao computador (e isso é comummente feito nos computadores, com o hardware de geração de número aleatório), ou guardar parâmetros de eventos externos aleatórios, como as ações dos usuários humanos, e usar isso para sortear suas ações, ou qualquer ideia do tipo que com certeza alguém já pensou, mas do processo puro da computação, decorrente da execução de um software, uma ação aleatória é impossível. E isso é óbvio se considerarmos que um software é uma sequencia bem definida de passos: se é bem definida, não pode ser aleatório.

É uma questão física/filosófica se eventos realmente aleatórios existem no mundo real; se tivermos todos os parâmetros de um dado e a força com que foi lançado, podemos calcular precisamente como ele cairá. A existência, portanto, admitiria algo realmente aleatório? Certamente podemos detectar eventos aleatórios na física quântica, mas não seriam eles parte de um processo mais primordial que ainda não entendemos? Essa incerteza sobre a natureza da realidade leva à especulação mais fascinante da computação teórica: seria a realidade um software, uma simulação? Se sim, ela não é fundamentalmente diferente de nenhum simulador ou jogo de computador que jogamos, somente maior. Claro que essa ideia é refutada por aqueles que acreditam na superioridade do intelecto humano sobre o computador, eles argumentam que um computador nunca poderá ter consciência, criatividade, imaginação, etc, e portanto é fundamentalmente incapaz de reproduzir a realidade, mesmo se fosse grande o suficiente, já que obviamente há vida consciente nesta realidade que ele seria incapaz de reproduzir.

Divagações filosóficas à parte, agora que já expliquei o conceito teórico fundamental sobre o software, vamos à parte prática. Na década de 1950 o software era tão pequeno que não era nada além de um procedimento de cálculo balístico, um mero acessório do computador. Hoje em dia software vem em todos os tamanhos, e pode ser tão grande que o custo do computador é irrelevante perto do seu custo. Antigamente o software tinha que ser projetado para um computador específico, cada computador tinha seu próprio “conjunto de instruções” suporatas (agora sim, no sentido ortodoxo do termo), sua própria linguagem para montar os programas (linguagem de montagem, assembly em inglês), e embora equivalentes, eram incompatíveis (você pode expressar as mesmas idéias em português ou alemão, portanto são línguas “equivalentes” para o propósito de comunicação, mas quem só fala português não entende alemão, portanto são “incompatíveis”). O programa de um não rodava no computador do outro. A lógica era: o fabricante projetava e fazia o computador do melhor jeito que pudesse dentro dos recursos, depois os programadores se viravam para (re)escrever os programas.

Hoje o software é mais valioso que a máquina em si, dezenas de fabricantes diferentes fazem computadores compatíveis entre si, só para poderem funcionar com o software já existente. O software se tornou tão grande que os cálculos e processamentos úteis realizados pelo computador se perdem no meio de firulas gráficas, sons, animações e coisas piscando, mas tudo criado fundamentalmente do mesmo jeito: bilhões de instruções executadas por segundo para decodificar um filme 3D FullHD com som 8.1 surround, todas executadas passo a passo, bem definidas, perfeitamente ordenadas, totalmente previsíveis, e com seus efeitos cuidadosamente planejados pelos programadores e engenheiros. Cada pixel da tela precisamente identificado por suas coordenadas cartesianas X e Y têm cada um dos seus três canais de cores (vermelho, verde e azul) definidos pelo preciso processo de funcionamento do software, que instrução por instrução, diz para o computador exatamente o que fazer com aqueles dados vindo do disco de Blu-Ray para chegar naquela intensidade daquela cor daquele pixel naquela posição da tela que você observa por menos de um vigésimo de segundo enquanto o filme passa.

Nossa, isso foi dramático. Na verdade não é bem assim. Computadores modernos na verdade possuem vários processadores, que podem executar vários programas simultaneamente, ou trechos diferentes do mesmo programa, ou então até o mesmo trecho do programa, mas cada um com um pedaço diferente dos dados que precisam ser processados. As possibilidades são bem flexíveis; afinal, é o software (ou o programa) que determina como vai ser; o hardware só obedece. Na verdade verdadeira, dentro da caixa que chamamos computador, podem ter ainda mais processadores, com propósitos específicos que rodam software diferente dos o processadores principais, que é o caso das placas de vídeo, que têm processadores projetados para simular efeitos gráficos tridimensionais.

Todo esse circo do computador moderno é coordenado pelo software mãe: o sistema operacional. Ele é primeiro software que liga e último que morre (bem, quase). Ele determina como todos os outros programas serão executados, em que ordem eles serão executados, como interagirão entre si e com o usuário e como eles se alternarão entre os recursos do computador rápido o suficiente para que você ache realmente que todos os programas que você tem aberto funcionam simultaneamente (não fosse assim, um Quad-Core não poderia rodar mais que quatro programas ao mesmo tempo). Ele também controla todo o hardware, sabe do que o hardware precisa, quando precisa e sabe se comunicar com ele (os famosos drivers), traduzindo de/para os outros programas o funcionamento do mouse, do teclado, do vídeo, do som, da rede, etc. Tudo isso com seu descrito passo a passo, instrução por instrução, que é pacientemente lida, decodificada e executada pelo processador, bilhões de vezes por segundo…