Pages:
Author

Topic: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin. (Read 6746 times)

legendary
Activity: 2352
Merit: 1121
☢️ alegotardo™️
Prezados,

E essa loteria? Saiu do papel?

Sras. e Srs. temos um novo merecedor da....

Pá de Ouro

Desenterrar um tópico de 4 anos não é pra qualquer um Wink
Parabéns!

PS.:
Já foi reportado, se você postar daqui pra baixo saiba que seu post pode ser removido.
brand new
Activity: 0
Merit: 0
Prezados,

E essa loteria? Saiu do papel?

hero member
Activity: 770
Merit: 515
Guto Schiavon / FOXBIT
[...]
Certo, os políticos responsáveis pela política monetária serão afetados negativamente, mas outros podem se beneficiar do anonimato do dinheiro de papel e melhor logística de transporte que as moedas virtuais oferecem.

Com certeza eles vão se adaptar, disso não tenho dúvida.

As vezes eu me pergunto se as cryptomoedas realmente são o oposto desse sistema todo, e prefiro pensar que sim, mas não tenho essa convicção o tempo todo.
A mensagem no bloco genesis nos dá uma pista, mas há tanta falcatrua acontecendo no ecossistema que duvidar as vezes parece salutar.

A vezes eu sinto que a verdadeira natureza do homem é o egoismo, e que ceder de si em prol do coletivo é um ato antinatural.

"Homo homini lupus."
hero member
Activity: 882
Merit: 1000
It's got electrolytes
[...]
Certo, os políticos responsáveis pela política monetária serão afetados negativamente, mas outros podem se beneficiar do anonimato do dinheiro de papel e melhor logística de transporte que as moedas virtuais oferecem.

Com certeza eles vão se adaptar, disso não tenho dúvida.

As vezes eu me pergunto se as cryptomoedas realmente são o oposto desse sistema todo, e prefiro pensar que sim, mas não tenho essa convicção o tempo todo.
A mensagem no bloco genesis nos dá uma pista, mas há tanta falcatrua acontecendo no ecossistema que duvidar as vezes parece salutar.

A vezes eu sinto que a verdadeira natureza do homem é o egoismo, e que ceder de si em prol do coletivo é um ato antinatural.

full member
Activity: 234
Merit: 100
O sentido do verso está mais relacionado a capacidade dos políticos de "imprimirem" quantidades infinitas de dinheiro, para então converterem na riqueza que nós produzimos com nossos esforços, e quando eles perderem essa capacidade eles terão que trabalhar para conquistar as riquezas, assim como nós.

O "poder" em questão é o de produzir riqueza a partir do nada e por meio da corrupção.

Os políticos nunca tiveram dificuldade em lavar o dinheiro sujo, a dificuldade deles sempre foi a logística, pois as vezes falta espaço pra tanto papel e vai até um pouco na cueca.



Certo, os políticos responsáveis pela política monetária serão afetados negativamente, mas outros podem se beneficiar do anonimato do dinheiro de papel e melhor logística de transporte que as moedas virtuais oferecem.
hero member
Activity: 882
Merit: 1000
It's got electrolytes
"hacktivism rulez" => quantos anos vc tem?
Eu já era velho quando essas gírias eram novas Grin



Em uma linda manhã de primavera o político criminal despertará, e perceberá que seu poder se esvaiu dentro do buraco negro do blockchain.
...ou que pode lavar dinheiro da corrupção sem sem ser rastreado.

O sentido do verso está mais relacionado a capacidade dos políticos de "imprimirem" quantidades infinitas de dinheiro, para então converterem na riqueza que nós produzimos com nossos esforços, e quando eles perderem essa capacidade eles terão que trabalhar para conquistar as riquezas, assim como nós.

O "poder" em questão é o de produzir riqueza a partir do nada e por meio da corrupção.

Os políticos nunca tiveram dificuldade em lavar o dinheiro sujo, a dificuldade deles sempre foi a logística, pois as vezes falta espaço pra tanto papel e vai até um pouco na cueca.

full member
Activity: 234
Merit: 100
Em uma linda manhã de primavera o político criminal despertará, e perceberá que seu poder se esvaiu dentro do buraco negro do blockchain.

...ou que pode lavar dinheiro da corrupção sem sem ser rastreado.
full member
Activity: 151
Merit: 100
"hacktivism rulez" => quantos anos vc tem?
hero member
Activity: 882
Merit: 1000
It's got electrolytes
Fiquei entusiasmado com a ideia! Tomei a liberdade de criar o repositório inicial para codificação (github.com/digovc/BitLoteria).
Pretendo começar a codificar logo. Qual seria a melhor frente para começar? O client em si, ou pelo site?
Eu sugiro começarmos pelo client. Pretendo utilizar o VS Express para codificar em C/C++. O que acham?

Legal que esteja interessado  Cheesy

A primeira coisa a fazer é dominar o procedimento de construção de address, dê uma olhada no fonte em http://algorista.org/luke/teste012.html e em https://github.com/bitcoinjs/bitcoinjs-lib e também as libs de Tom Wu http://www-cs-students.stanford.edu/~tjw/jsbn/

Existem várias tarefas necessárias:

- cliente desktop multiplataforma (ms, linux e apple).
- cliente mobile (android e apple)
- cliente web.
- servidor de registros e replicador.
- processo validador de apostas (verifica os pagamentos no blockchain, dentre outras checagens mais básicas).

Atualmente a implementação mais simples consistiria em um servidor que publica a loteria em um arquivo json, o cliente baixa o arquivo e nesse tem os dados dos servidores de registros, replicadores e validadores. Para fazer uma aposta o cliente baixa parte dos registros e inicia a construção distribuída de um address de deposito, efetua o deposito e registra nos servidores.
Os validadores verificam tudo e emitem um registro de confirmação.
Os replicadores se comunicam garantindo que todos os registros estão presentes em todos os servidores, e se algum servidor morrer haveria redundância.
No momento que o bloco de sorteio já tiver as confirmações necessárias, os validadores calculam o vencedor e publicam um novo registro, os clientes conferem (ou não) o resultado e publicam suas chaves privadas parciais criptografando com a chave publica do vencedor, que baixa todos os registros e tem acesso a todos os depósitos recompondo as privkeys.

É bastante trabalho, mas sempre podemos adicionar umas garotas de biquíni pra tornar tudo mais divertido  Grin
newbie
Activity: 1
Merit: 0
Fiquei entusiasmado com a ideia! Tomei a liberdade de criar o repositório inicial para codificação (github.com/digovc/BitLoteria).
Pretendo começar a codificar logo. Qual seria a melhor frente para começar? O client em si, ou pelo site?
Eu sugiro começarmos pelo client. Pretendo utilizar o VS Express para codificar em C/C++. O que acham?
hero member
Activity: 882
Merit: 1000
It's got electrolytes
Dia!!

Algorista, vc pretende levar adiante a ideia do soft?

No final das contas, vai ter um servidor para o funcionamento da rede ou vai ser o proprio blockchain, organizado em transações???

Boa sorte!!

Paraná a ideia surgiu inesperadamente a partir de um comentário de um outro usuário em um outro thread, então o Adriano me sugeriu detalhar a ideia para tentar atrair a atenção de outros devs para montar o software, mas não apareceu nenhum dev voluntário, e eu infelizmente não tenho muito tempo disponível no momento.

Tenho um outro projeto Bitcoin de enorme impacto pra ser lançado ainda esse ano e estou correndo contra o relógio.

Mas vou escrever o software para a loteria sim, só não agora.

A partir de setembro pretendo me dedicar exclusivamente ao Bitcoin, então terei mais tempo.

Respondendo rapidamente suas outras duas perguntas:
1. sim vai ter servidor, mas sem poderes de movimentação dos depósitos.
2. o blockchain é usado para randomizar o sorteio, só isso.

Fiz testes isolados em todas as tecnologias envolvidas no processo, fiz ajustes em algumas partes, mas tudo funciona como esperado, agora é preciso juntar tudo, fazer telinhas, testar, fazer logotipo, site, passar um café novo, essas coisas praticas de desenvolvimento, e o software sai da cabeça e vira realidade.



sr. member
Activity: 378
Merit: 250
Step into a world!! A P2P world!
Dia!!

Algorista, vc pretende levar adiante a ideia do soft?

No final das contas, vai ter um servidor para o funcionamento da rede ou vai ser o proprio blockchain, organizado em transações???

Boa sorte!!
hero member
Activity: 882
Merit: 1000
It's got electrolytes
Escrevi um teste rápido e consegui atestar a viabilidade do projeto, já que a unica dúvida era sobre a construção distribuída do address de pagamento da aposta, e que agora tenho certeza de que será possível de realizar.

http://algorista.org/luke/teste012.html

Todos os detalhes técnicos estão disponíveis no código fonte da pagina.



hero member
Activity: 882
Merit: 1000
It's got electrolytes
Algorista,

Tentando entender aqui a sequencia...

3. Os apostadores criam "chaves privadas distribuidas"* (Bitcoin address) e fazem os envios do valor das apostas para essas chaves.

Você está se referindo ao conceito de VanityGen distribuido ou Multi-sig?
O procedimento do VanityGen distribuido permite alcançar um address resultante sem saber a private key completa, mas o único que consegue fazer isso é quem tem o seed original.
Exemplo:
Se (A + B + C) = (a + b + c) * G
E eu gerei a, você gerou b e o Zé gerou c nós 3 só vamos saber pra qual endereço enviar a aposta depois que eu receber B e C e mandar A pra você e para o Zé.

O problema disso é que quando o endereço final depende de todos avisarem primeiro qual a chave pública, para da combinação das chaves gerar o endereço de aposta, um mal-intencionado pode ficar sempre mandando uma chave pública e nunca fazer a aposta ou divulgar a chave privada, travando as coins que todo mundo mandar pra lá.

O mais próximo que vi de resolver esse problema está aqui: http://eprint.iacr.org/2013/784
E exige que todos os participantes façam um "deposito de segurança" de N(N-1) bitcoins da aposta, onde N é o número total de jogadores esperados, então para 10 jogadores seria um deposito igual a 90x o valor da aposta... esse valor de deposito volta pro jogador no final do jogo, mas eu acho impraticável com o crescimento exponencial. Jogo com 100 jogadores e quer apostar 1BTC? Deposito custa 9.900BTCs... Sad

Você entendeu bem a ideia, que é emprestar o conceito da Vanitypool e expandí-lo para a geração distribuída dos address de pagamentos, assim evitando que qualquer dos participantes possuam uma private key capaz de sacar o valor das apostas, exceto o vencedor.

https://bitcointalksearch.org/topic/vanity-pool-vanity-address-generator-pool-84569
https://vanitypool.appspot.com/

Toda a arquitetura da loteria depende que a construção da address de pagamento da aposta possa ser realizada somando as Public Keys de três apostas anteriores, e fazendo força bruta de uma quarta Key até que o somatório produza um address valido.
Esse procedimento de força bruta na quarta parte teoricamente é bastante rápido custando sempre menos de 1 segundo, e não depende de conhecer as outras três Private Keys, só é preciso conhecimento das Public Keys.

O gerador da aposta não precisa conhecer as private keys para gerar um address, e cada aposta tem um address exclusivo.
Code:
  Public Key       Private Key
(A + B + C + D) = (? + ? + ? + d) * G

A Private Key (quarta parte) da aposta só é revelada ao vencedor, no final, portanto o apostador não consegue reverter o valor que ele pagou pela aposta, já que ele tem apenas um address e uma quarta parte da private key.
Já o vencedor receberá os pedaços de private key de todas as apostas e juntando tudo conseguirá resgatar os valores das apostas.

Eventualmente alguma aposta se perderá, pois alguns participantes terão abandonado o concurso, ou alterado o software para intencionalmente se recusar a entregar a PrivateKey.
A arquitetura inclui uma redundância dessa entrega, mas ainda é um ponto fraco que precisará ser melhorado no futuro.
Será possível construir relatórios bem precisos quanto a esses valores destruídos no processo, mas sua recuperação* não será possível.

*Existe uma possibilidade teórica de utilização de números primos como seed do gerador randômico do procedimento de força bruta, com isso permitindo que numa década futura essa keys pudessem ser recuperadas com um investimento justificável, considerando uma valorização extrema do Bitcoin

As private keys jamais são informadas aos databases, que mesmo sendo os criadores da loteria ainda não terão meios para "roubar" o valor das apostas.
Uma vez apostado, o valor do pagamento vai para um limbo e só volta a existir no momento do sorteio, e apenas para o sorteado.
Caso o sorteado não recolha o premio em um prazo estipulado então o premio poderá ser entregue a um segundo colocado, assim evitando a destruição de grande quantidade de moedas.

Quanto ao seu questionamento sobre um potencial ataque:

Os participantes não tem como sugerir uma chave publica sem juntamente fazer uma aposta, pois isso é um dos campos da aposta em si mesma, dessa forma não é possível executar o potencial ataque que você identificou na sua analise. Mas para a defesa funcionar corretamente os databases precisam validar as apostas e rejeitar registros inválidos ou pagamentos não confirmados.

Quanto ao pré conhecimento das Public Keys:
Eu reservei um tipo de registro especial que chamei de "bootstrap" que serve para apresentar as primeiras chaves publicas que serão usadas nas primeiras apostas, pois a primeira aposta já necessitaria referenciar outras três anteriores.
Esse registro "bootstrap" é criado pelo database publicador da loteria, que de certa forma ganha poder de resgate sobre a primeira aposta real, mas isso é uma coisa que não consegui evitar, por enquanto.

A escolha das três keys dentro do total de apostas deverá ser randômica e regida por um algorítimo.
O modelo de escolha das três keys ainda é um algorítimo pendente, e a solução encontrada poderá alterar esse procedimento quanto aos registros bootstrap.


Obrigado pelo link, vou estudá-lo.

 

sr. member
Activity: 315
Merit: 250
Algorista,

Tentando entender aqui a sequencia...

3. Os apostadores criam "chaves privadas distribuidas"* (Bitcoin address) e fazem os envios do valor das apostas para essas chaves.

Você está se referindo ao conceito de VanityGen distribuido ou Multi-sig?
O procedimento do VanityGen distribuido permite alcançar um address resultante sem saber a private key completa, mas o único que consegue fazer isso é quem tem o seed original.
Exemplo:
Se (A + B + C) = (a + b + c) * G
E eu gerei a, você gerou b e o Zé gerou c nós 3 só vamos saber pra qual endereço enviar a aposta depois que eu receber B e C e mandar A pra você e para o Zé.

O problema disso é que quando o endereço final depende de todos avisarem primeiro qual a chave pública, para da combinação das chaves gerar o endereço de aposta, um mal-intencionado pode ficar sempre mandando uma chave pública e nunca fazer a aposta ou divulgar a chave privada, travando as coins que todo mundo mandar pra lá.

O mais próximo que vi de resolver esse problema está aqui: http://eprint.iacr.org/2013/784
E exige que todos os participantes façam um "deposito de segurança" de N(N-1) bitcoins da aposta, onde N é o número total de jogadores esperados, então para 10 jogadores seria um deposito igual a 90x o valor da aposta... esse valor de deposito volta pro jogador no final do jogo, mas eu acho impraticável com o crescimento exponencial. Jogo com 100 jogadores e quer apostar 1BTC? Deposito custa 9.900BTCs... Sad

sr. member
Activity: 378
Merit: 250
Step into a world!! A P2P world!
Fico feliz em ver que no mundo há pessoas que se negam a usar os antolhos que a sociedade nos impõe e que, cansadas da vergonha que são nossos governantes, estão lutando por uma mundo livre da máfia estatal. Uma prova que o indivíduo (libertário) não precisa temer a força normativa hipócrita do Estado para ser honesto.
Sinto-me orgulhoso de estar entre vocês.
Parabéns e obrigado.
https://www.youtube.com/watch?v=B7DVlC3kXrM

Gostei bastante do vídeo também.

Me fez refletir sobre alguma coisas.

Abçs
hero member
Activity: 882
Merit: 1000
It's got electrolytes
Fico feliz em ver que no mundo há pessoas que se negam a usar os antolhos que a sociedade nos impõe e que, cansadas da vergonha que são nossos governantes, estão lutando por uma mundo livre da máfia estatal. Uma prova que o indivíduo (libertário) não precisa temer a força normativa hipócrita do Estado para ser honesto.

Sinto-me orgulhoso de estar entre vocês.

Parabéns e obrigado.

https://www.youtube.com/watch?v=B7DVlC3kXrM


Os criminosos que hoje detém os monopólios do poder em breve verão seus esforços se tornarem inúteis, pois um novo sistema está surgindo silenciosamente e é tão superior que fará o antigo enferrujar a beira da estrada, como a velhos telefones públicos que ninguém usa mais.

Em uma linda manhã de primavera o político criminal despertará, e perceberá que seu poder se esvaiu dentro do buraco negro do blockchain.


Obrigado pelo vídeo, muito bom mesmo.

full member
Activity: 175
Merit: 100
Crypto Liberty
Fico feliz em ver que no mundo há pessoas que se negam a usar os antolhos que a sociedade nos impõe e que, cansadas da vergonha que são nossos governantes, estão lutando por uma mundo livre da máfia estatal. Uma prova que o indivíduo (libertário) não precisa temer a força normativa hipócrita do Estado para ser honesto.

Sinto-me orgulhoso de estar entre vocês.

Parabéns e obrigado.

https://www.youtube.com/watch?v=B7DVlC3kXrM
hero member
Activity: 868
Merit: 1000
Impossible is Nothing
sr. member
Activity: 378
Merit: 250
Step into a world!! A P2P world!
Sinto que essa loteria está muito além da compreensão da massa "curintiana" (com todo respeito aos Corinthianos, é só um exemplo de popularidade, não me entendam mal).
...


Infelizmente a parte técnica não tem como ter uma explicação simples. O que nos leva até as discussões "estranhas"?

-->Os problemas que precisam serem superados para que seja possível fazer o software da loteria funcionar.

Certamente que for jogar não vai precisar ler essa thread para entender o programa... mas se quiser...

 Grin
Pages:
Jump to: