Programas de loteria usando Blockchain

Prezados companheiros,

Descobri a existência de uma loteria usando blockchain, conforme notícia no link a seguir: https://portaldobitcoin.com/ico-da-firelotto-cripto-loteria-baseada-em-blockchain-vendeu-20-milhoes-de-tokens-flot/

Achei o tema muito interessante porque, salvo engano, se você inserir um programa de sorteio simples de números em um bloco, para que ele gere os resultados de forma randômica, de tempos em tempos, é praticamente impossível adulterar o programa ou os resultados.

Achei genial porque as loterias brasileiras não gozam de muita credibilidade e a adoção dessa tecnologia iria aumentar em muito a segurança e credibilidade da instituição.

Uso o exemplo da loteria apenas para ilustrar dois pontos que considero importantes: salvar um programa na rede e demonstrar de forma fácil para qualquer usuário que a estrutura do programa e seus resultados são “honestos”.

Do exposto indago:

1 - Seria possível inserir um programa de sorteio de números na rede bitcoin? ou somente na Ethereum? (igual aos moldes do sorteios nacionais, por exemplo, com 3 sorteios por semana)

2 - Seria possível averiguar, a qualquer tempo, "as linhas do programa" para se verificar se o mesmo foi adulterado?

3 - Seria possível criar uma interface amigável para o usuário verificar os resultados?

4 - Solicito indicação de bibliografia sobre o tema.

 

Olá Sidnei,

 

Seja bem vindo ao fórum. Me parece que você está avaliando a elaboração de um TCC ou algo parecido. :wink: A idéia de se fazer uma loteria usando o blockchain não é nova. Pesquisando na web é possível encontrar várias idéias baseadas no mix loterias/apostas x blockchain (bitcoin/ethereum). Como vários outros projetos ligados ao mundo das criptomoedas o Firelotto nasceu por meio de uma ICO (Initial Coin Offer) e as notícias como a fonte que você citou (portaldobitcoin) indicam que obteve sucesso na pré-venda e venda dos tokens (vendeu mais de 20 milhões de tokens e arrecadou mais de 3 milhões de dólares). Na data de hoje um token FLOT está valendo R$ 0,171438. O projeto está arquivado no GitHub mas pelo pouco que eu conheço do GitHub não tem recebido muitas colaborações. (um dos fatores que indica/sinaliza bons projetos é a quantidade de colaborações que ele recebe). A idéia de se fazer uma loteria usando o blockchain não é nova, encontrei uma discussão iniciada em junho de 2014 sobre a criação de uma loteria usando o blockchain do bitcoin no fórum bitcointalk. Dei uma olhada rápida no white paper do “Firelotto” que é basicamente a implementação da idéia que você expôs, ou seja, é uma loteria que funciona na plataforma P2P do ethereum por meio de smartcontracts.

Parâmetros como código fonte aberto e uso do sistema blockchain (bitcoin ou do ethereum) não garantem necessáriamente confiança e/ou segurança para qualquer loteria ou projeto. Tem virtudes mas também tem problemas para serem administrados. Eu entendo que o principal deles é a questão custo x benefício. Não vou entrar na questão da honestidade mas sistemas sempre estão sujeitos a “erros” intencionais ou não. Eu já trabalhei numa grande empresa que investe efetivamente bilhões em informática. Lá mudanças significativas de sistemas são programadas para serem executadas em feriados prolongados e começam a ser implementados logo no início do feriado, mantendo-se pessoas (funcionários diretos e terceiros) ligadas ao sistema até usuários finais em regime de plantão. Recursos não faltam, dinheiro para contratar os melhores fornecedores (equipamentos e programas) não faltam. Mesmo assim não se implementam grandes alterações no meio de uma dia normal durante a semana. De todos os blockchains existentes o blockchain do bitcoin é o mais antigo e também o que mais foi testado desde a sua criação. Mesmo contando com a melhor equipe de colaboradores e apoiadores não está salvo de problemas. Conforme video trazido pelo Fernando Ulrich no canal dele do Youtube uma atualização feita neste ano sem uma revisão correta abriu uma brecha que poderia permitir a duplicação de bitcoins (efeito gasto duplo). O problema só foi descoberto e revelado algum tempo depois por alguém que não faz parte do grupo de colaboradores direto do bitcoin. Se fosse alguém mal intencionado poderia ter usado essa descoberta para obter alguma vantagem. O fato de um projeto estar disponível publicamente não implica necessáriamente que seja ele seja seguro, um usuário mal intencionado pode descobrir uma falha e se aproveitar dele ao invés de vir a publico para alertar a comunidade sobre o problema detectado. Um bom projeto pode nascer perfeito mas fatalmente vai requerer alguma atualização ou mesmo melhoria ao longo do tempo e o problema pode nascer neste momento, como foi o caso ocorrido no sistema do blockchain do bitcoin (falha/vulnerabilidade nascendo a partir de uma atualização do sistema possivelmente para ajustar outra falha ou problema).

Existem outras questões a serem consideradas para se usar o blockchain, no caso o sistema do ethereum parece ser mais viável em função dos smartcontracts. Para se manter as apostas rodando continuamente (recebimento das apostas, apuração do resultado, pagamento dos prêmios, etc) é preciso que o sistema seja criado e sofra manutenção. Pessoas precisam ser envolvidas e fatalmente terão que ser pagas. Não basta criar o melhor sistema, colocar no ar e deixar “rodando” eternamente. Em algum momento vai ser necessário fazer atualização, implementar melhorias, etc. Onde estarão estas pessoas no mundo? Você acredita que um grupo de pessoas pode se reunir para criar e manter um sistema de loterias pelo simples objetivo de criar um sistema imune a falhas e problema e que seja totalmente confiável o tempo todo? Não se usa o blockchain de graça. Salvo engano e além disso, os custos não são fixos, em momentos de maior tráfego na rede o custo pode crescer e/ou o tempo para se obter algum resultado pode demorar mais do que o normal. Quem vai administrar problemas com atraso ou a não divulgação de um resultado programado para tal dia e hora? Assim como no caso do Firelotto é preciso estabelecer um local físico e juntar pessoas para “tocar” o projeto, assim como existe no caso do bitcoin e do ethereum e de outros projetos mais consistentes baseados em blockchain. Se por acaso o sistema der certo e o volume de apostas crescer os concorrentes ficarão assistindo? Se alguém propagar alguma “fake News” sobre o sistema quem virá a público para garantir que é falso? Esta pessoa terá credibilidade, será uma pessoa conhecida, será respeitado e conseguirá fazer valer seus argumentos? Quanto mais sucesso tiver maior será a exposição a ataques/golpes/etc. No caso do bitcoin e ethereum existem rostos, nomes, endereços físicos, eventos mundiais, etc. E no caso da sua loteria? Tudo anônimo mas inteiramente confiável alicerçado na idéia de força do sistema (programa e rede)? Onde está a “desconfiança” no sistema de loteria oficial (no sistema ou nas pessoas ou em ambas)? Em algum momento momento você diz “confiança na instituição”. Neste caso você está sugerindo que a CEF adote o blockchain?

A idéia não é inviável, tanto é que a Firelotto executou isso. Todavia hoje o próprio bitcoin ainda é alvo de muita desconfiança e fora da midia especializada ainda é tratada como algo exótico ou sem futuro. Juntando isso a uma loteria praticamente se dobra a dificuldade. É certo que muitos não confiam nas loterias oficiais e muitos ainda não confiam nas criptomoedas. Nestes casos existem pessoas que querem resolver o problema, como é o seu caso expondo ideias para o debate e existem pessoas que preferem não apostar, que também não é má ideia caso não se confie no sistema.

Respondendo suas indagações de forma mais objetiva:

1 - Seria possível inserir um programa de sorteio de números na rede bitcoin? ou somente na Ethereum? (igual aos moldes do sorteios nacionais, por exemplo, com 3 sorteios por semana)

Sim, já foi feito pela própria Firelotto que você mesmo citou.

2 - Seria possível averiguar, a qualquer tempo, "as linhas do programa" para se verificar se o mesmo foi adulterado?

Caso seja implementado numa rede aberta, caso do blockchain do ethereum, sim. Mas a questão é mais abrangente, adulterações no próprio blockchain do ethereum resultariam em blocos rejeitados que não afetariam o resultado final. O maior risco, me parece, está em se implementar os smartcontracts na rede ethereum com algum tipo de erro no script, salvo engano após a implementação não é possível adulterar sem que seja percebido ou detectado pelo fato do sistema usar criptografia (hashes, blocos, validações, etc.).

3 - Seria possível criar uma interface amigável para o usuário verificar os resultados?

Sim, o próprio sistema da Firelotto tem um sistema amigável que pode ser acompanhado por smartphone. O sistema de carteiras para se acompanhar os saldos das criptomoedas é outro exemplo prático.

4 - Solicito indicação de bibliografia sobre o tema.

Não ficou claro qual é o tema (blockchain, bitcoin, ethereum, etc.) e se pode ser em inglês ou somente em portugues. No final do whtie paper do Firelotto tem três indicações que podem ajudar, mas é em inglês.

 

Vídeo sobre o Firelotto:

Firelotto no GitHub:

Whitepaper do Firelotto em português:

Discussão no fórum “bitcointalk” em 2014 sobre a criação de uma loteria baseada no blockchain do bitcoin:

Situação atual do token no coinmarketcap:

 

1 curtida

Sim, pretendo escrever sobre o assunto. Desde já gostaria de agradecer por sua contribuição. A seguir farei algumas considerações sobre o que me disse.

Estava pensando apenas no sorteio, ou seja, no programa de escolha aleatória de números e no apuração do resultado e sua divulgação. (outras questões seriam resolvidas fora do programa.)

Se o blockchain (bitcoin) ou o ethereum fornecer um local onde um programa possa ser “rodado” com: segurança (qualquer alteração é impedida ou facilmente detectada) e transparência (entendida como facilidade de acesso às informações), imagino que a manutenção seja pequena, ou até mesmo inexistente (teoricamente), visto que não haverá qualquer atualização ou manutenção no programa de sorteio.

Da forma como pensei,os gastos da rede blockchain ficariam de fora, sendo meus custos apenas com o programa, no caso, de sorteio.

Esse era o âmago de minha indagação. Pensava que o blockchain poderia garantir essa confiança e segurança.

Ambas. Pensei que o blockchain poderia eliminar esse terceiro validador.

A CEF poderia adotar o blockchain, mas daí ela teria que abrir mão de ser o terceiro “validador”, e deslocar a confiança para o sistema. Creio que ela não abriria a mão desse poder. Penso que seria bom para CEF adotar o blockchain, mas nunca irá fazer isso.

Você compreendeu bem minha intenção. Teoricamente, depositaríamos a confiança no sistema, visto que confiável e “honesto”. Eu por exemplo, confiaria mais em um programa que usa o blockchain e um programa simples de sorteio do que os sorteios da CEF.

Acredito em uma mudança cultural. Vamos entrar na era digital, acredito nessa mudança e pois “Nada é mais poderoso do que uma ideia cujo tempo chegou”. :smile:

Gostaria de receber material acadêmico ou indicação sobre os seguintes temas. ethereum, segurança e confiança dos programas que “rodam” em sua rede.

Quanto mais material melhor, rs. De preferência em português.

Por fim, quero novamente agradecer sua disposição e boa vontade em me responder. Obrigado por tudo.

Um grande abraço Cecílio

Olá Sidnei,
Vamos tentar ajuda-lo da melhor forma possível, esperamos que você compartilhe conosco neste fórum sua experiência neste projeto, será interessante para todos nós acompanharmos o desenvolvimento e o resultado final do seu trabalho.
Não sei qual é seu grau de conhecimento com esse mundo das criptmoedas x blockchain. Não sei se você sabe mas acredito que já sabe como nasceu o Ethereum, a partir do próprio Bitcoin mas com uma proposta de se ter um blockchain mais versátil do que o Bitcoin. E todo projeto nessa área (pelo menos deveria) tem a ideia central definida num documento chamado “White Paper”. O Bitcoin tem o seu “White Paper” e o Ethereum também tem o seu “White Paper”. Então a primeira coisa a se fazer é um “White Paper” do seu projeto. E para começar sugiro que você leia um documento chamado de “White Paper”: do Bitcoin, do Ethereum e do Firelotto (esse último eu coloquei o link da versão em português na minha primeira resposta). O ideal seria ler o original, salvo engano não existe tradução oficial destes documentos para o português:

Você encontra, por exemplo, um tradução do “White Paper” do Bitcoin neste site (mas no google você encontra em PDF):

Aqui você encontra o “White Paper” do Ethereum em português:

Sidnei,
Sobre seus comentários: Avançando no estudo do blockchain você vai perceber que existem milhares de blockchains espalhados por aí, cada criptomoeda, em tese, deve ter o seu próprio blockchain. A melhor definição do que é um blockchain na minha visão é a que compara blockchain com o livro razão da contabilidade tradicional. Um local onde se realiza débitos e créditos e se guarda o saldo de uma conta. A segurança e a confiança nascem de processos realizados para se aceitar cada transação realizada neste sistema como válida/verdadeira. Economia e Teoria Econômica, Teoria dos Jogos, Criptografia e Rede Distribuida (consenso) são os principais conceitos que estão por trás de um blockchain x criptomoeda. O blockchain nasceu para sustentar o funcionamento de uma moeda, a partir daí se idealizaram muitas outras utilidades para o blockchain, mas ele por si não garante a segurança/confiança. Não há nada que garante a existência e/ou continuidade do bitcoin e do seu sistema blockchain para sempre. É o mais antigo, o que conta com a melhor equipe de desenvolvedores, entusiastas, colaboradores, investidores, etc. Mas é uma rede aberta que existe por adesão espontânea. Se um dia qualquer uma das outras 1.730 criptomoedas já criadas se mostrar melhor e mais viável o bitcoin pode ser abandonado. Isso vale também para o Ethereum, Dash, Ripple, Monero, etc. Para ficar em dois exemplos o Google não foi o primeiro mecanismo de busca da internet, mas hoje é a maior. Ninguém se lembra dos primeiros mecanismos de busca da internet. O Facebook não foi pioneiro e nem mesmo o Orkut que foi uma febre no Brasil era pioneiro em termos de rede social.

Caso não conheça sugiro que visite o canal do Fernando Ulrich no YouTube, tem dezenas de vídeos explicando praticamente tudo que se relaciona a bitcoin x blockchain numa linguagem fácil/acessível.

Segue link de um dos vídeos do canal do Fernando Ulrich:

Para um estudo mais técnico o Tiago que é o fundador deste fórum também tem no canal dele do YouTube uma série de vídeos explicando como funciona o blockchain, criptografia, hashes, etc. Segue link de um dos vídeos dele:

Sidnei,
Não sei se estamos na mesma página, mas quanto a questão de custos é importante perceber que processos executados na rede Blockchain do bitcoin ou do ethereum não são gratuitos. Avançando no entendimento do que é o blockchain é possível entender que um dos motivos pelos quais ele chegou onde chegou é o sistema de recompensas (pagamentos em troca de processamento) que o próprio sistema entrega aos que se dispõe a instalar programas que conectam suas máquinas na rede P2P do bitcoin, do ethereum ou de qualquer outro blockchain. Uma vez conectado a rede P2P do bitocin ou do ethereum o usuário precisa definir qual será seu papel (nó da rede, minerador, etc). Alguém terá que processar as entradas das apostas, rodar o script que sorteará os números, comparar com as apostas feitas até determinado horário, divulgar os resultados e guardá-los. Tudo isso requer pagamentos, no sistema do ethereum o custo é pago em GAS. Se não houver pagamentos as apostas não serão processadas. A rede blockchain funciona e adiciona componentes que garantem segurança e confiabilidade justamente pelo fato de ser uma rede distribuída, de adesão livre para qualquer interessado, pelo consenso entre os participantes e pelo fato de “remunerar” aqueles que se dispõe a “executar/rodar” os programas que se utilizam desse blockchain. É assim que nasce um bitcoin, como pagamento/remuneração pelos serviços prestados pelos usuários que se dispõe a pegar uma transferência de bitcoin de uma conta A para uma conta B. Possivelmente será necessário direcionar parte do que for arrecadado para o pagamento do “processamento” das apostas e da manutenção dos resultados disponíveis no sistema.

Sidnei,

No seu projeto será interessante avaliar como será feita a conversão do dinheiro (Real) que o apostador tem na carteira e que hoje usa para pagar a aposta na lotérica para uma criptomoeda. Se você usar qualquer blockchain terá que receber apostas em criptomoeda. Só esta “compra” de criptomoeda já adiciona um custo para o apostador que ele não terá no sistema tradicional. E a volta do prêmio ganho por um apostador, em algum momento ele pode querer converter a criptomoeda em dinheiro corrente (Real se for residente no Brasil). Hoje o sistema da CEF já faz todo o processo de conversão do prêmio para as mãos do apostador que receberá o líquido, já deduzido dos impostos. Seu sistema possivelmente terá que considerar apuração e talvez recolhimento dos tributos incidentes ou vai deixar tudo por conta do apostador que hoje não tem este tipo de preocupação quando aposta no sistema da CEF?

Neste artigo você encontra o básico de um blockchain (blocos, hashes, prova de trabalho, consenso, mineração, nós, etc). Você pode usar a opção de tradução do chrome que a tradução fica boa.

Esse é um sistema de apostas (loteria) baseado no ethereum x blockchain que está em fase final de lançamento, já foi feito a ICO.

O site tem explicações bem básicas e tem a opção para ver em português:
https://kiboplatform.net/en/landing.html

Aqui tem o White paper, em inglês:

Quando vi o tópico a primeira coisa que me veio em mente é que você precisaria gerar um número randômico para poder efetuar os sorteios, e isto é de certa forma um problema em smart contracts.

Um smart contract deve ter o resultado de suas execuções de forma determinística, para que todos os mineradores cheguem sempre no mesmo resultado ao executar uma determinada transação, e fica difícil gerar um número realmente randômico e que seja igual para todos os mineradores.

Procurando no google por “smart contract” + random, o primeiro artigo que encontrei era exatamente o mesmo caso de uso que está procurando: Loteria.

Acredito que este seja o maior desafio que você irá encontrar.
Espero ter ajudado.

1 curtida