Bitcoin Forum

Local => Português (Portuguese) => Topic started by: algorista on June 17, 2014, 09:08:53 PM



Title: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on June 17, 2014, 09:08:53 PM
...
 Se alguém fosse maluco o bastante para fazer uma megasena com bitcoins e pegasse o lucro "fora" do premio para contribuir a uma entidade carente...
...

Eu projetei um algoritmo de loteria descentralizado e que opera sem confiança entre as partes, que seriam anonimas, sem possibilidade de fraude, auditável diretamente no blockchain, com randomicidade replicável com semente extraída do processo de mineração, e usando apenas a tecnologia do Bitcoin + um site gerenciador (que não teria poder algum sobre os valores apostados, ou mesmo sobre a escolha do vencedor, apenas anotaria e listaria os address participantes, podendo até mesmo ser independentemente redundante).

Poderia perfeitamente se encaixar nessa sua proposta de dividir uma parte do premio com uma entidade X, ou até mesmo com múltiplas entidades, e  eventualmente pagando comissãodoação para alguma das partes (tipo pro cara que projetou o algoritmo ;D).

Eu nunca coloquei o conceito a prova, e tecnicamente é bem profundo, mas acho que a implementação não seria nenhum monstro.
Se alguém achar a ideia interessante poderemos discuti-la tecnicamente em outro Thread.

EDIT: o moderador separou as threads então vou editar por aqui mesmo.

Vou organizar essa ideia de uma forma didática e postarei aqui quando estiver pronto.



Title: [Ideia] Novo investimento em BTC
Post by: Adriano on June 17, 2014, 09:36:26 PM
** detalhe inicial: estou me abstendo de todo o conteúdo desse thread, vou apenas comentar o item a seguir:

...
 Se alguém fosse maluco o bastante para fazer uma megasena com bitcoins e pegasse o lucro "fora" do premio para contribuir a uma entidade carente...
...

Eu projetei um algoritmo de loteria descentralizado e que opera sem confiança entre as partes, que seriam anonimas, sem possibilidade de fraude, auditável diretamente no blockchain, com randomicidade replicável com semente extraída do processo de mineração, e usando apenas a tecnologia do Bitcoin + um site gerenciador (que não teria poder algum sobre os valores apostados, ou mesmo sobre a escolha do vencedor, apenas anotaria e listaria os address participantes, podendo até mesmo ser independentemente redundante).

Poderia perfeitamente se encaixar nessa sua proposta de dividir uma parte do premio com uma entidade X, ou até mesmo com múltiplas entidades, e  eventualmente pagando comissãodoação para alguma das partes (tipo pro cara que projetou o algoritmo ;D).

Eu nunca coloquei o conceito a prova, e tecnicamente é bem profundo, mas acho que a implementação não seria nenhum monstro.
Se alguém achar a ideia interessante poderemos discuti-la tecnicamente em outro Thread.



Oi Algorista. Gostei da idéia. Se quiser criar a outra thread vou ficar feliz em participar... no pior caso alguém daqui implementa anonimamente na deepweb,  a causa é nobre.


Adriano


Title: [Ideia] Novo investimento em BTC
Post by: hidedocscom on June 18, 2014, 01:12:26 PM
A principio, me parece boa a ideia também.


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: knightcoin on June 19, 2014, 03:39:15 PM
Legal a idea ... seria legal primeiro fazer uns diagramas ... usando UML talvez..

eu nao sei quais suas ideas, eu acho que poderia dividir em 2 aspectos fundamentais... 1) as cotas e 2) o sistema de sorteio em si...

O bitcoin em ja' tem o fator sorte na mineracao ( vale a pena acompanhar essa discursao no reddit sobre "qual e' o problema matematico que os mineradores tem que resolver para receberem os bitcoins como premio?" )

http://www.reddit.com/r/Bitcoin/comments/28e39s/what_is_this_mathematical_problem_that_mining/ (http://www.reddit.com/r/Bitcoin/comments/28e39s/what_is_this_mathematical_problem_that_mining/)

bem boa sorte... vou acompanhar o desenvolvimento ;)


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: centralminer on June 19, 2014, 05:09:15 PM
Seria muito bacana! Estou acompanhando também...
Abraços!


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: knightcoin on June 19, 2014, 05:37:05 PM
PS->Alais me lembrei desse projeto ...

https://github.com/zack-bitcoin/basiccoin

e' o esqueleto de uma cryptomoeda em menos de 600 linhas de codigo em python ... Acho o projeto interessante pra sabermos como realmente funciona o bitcoin... haja vista que atualmente somente o codigo do daemon do bitcoin tem mais de 44 mil linhas de codigo em C++ e assembler .. realmente nao e' facil entender ...


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: motaro on June 19, 2014, 06:30:00 PM
Eu gostei da idéia, mas como seria a recompensa financeira?


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: pao_de_lo on June 19, 2014, 07:13:41 PM
Seria maravilhoso  :o

tipo um:
Bit-Sena (mais caro, maior prêmio, mais difícil ganhar)
Bit-Quina (mais barato, menor prêmio, mais ganhadores)
Bit-Loto ou Bit-Mania, BitLotoMania

Se não desse para realizar os Concursos ao mesmo tempo, então poderia ser:
30 dias Bit-Sena. Depois entraria Bit-Quina 15 dias.

_________

 A FARSA DAS LOTERIAS.flv
http://www.youtube.com/watch?v=A8qgaZjQ8og

Senador Alvaro Dias denuncia fraudes nas Loterias da Caixa
http://www.youtube.com/watch?v=7WUPbAJm5_I

Loterias da Caixa @CanalDoOtario
http://www.youtube.com/watch?v=ykDOtQUMrMU

Essa loteria descentralizada seria mais um "tiro no peito" dos metacapitalistas (http://www.youtube.com/watch?v=yyCWeXVJvOg).  :o

Sim ou não?  :o

Mas e se eu ganhasse na Bit-Sena e ficasse rico, teria problemas com o nosso governo socialista


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on June 20, 2014, 12:38:16 AM
Eu gostei da idéia, mas como seria a recompensa financeira?

O fundamento da ideia é que as apostas seriam enviadas para address de "chave privada distribuída", portanto nem o apostador e nem alguma entidade central teria controle sobre esses valores, mas os valores só poderiam ser acessíveis a uma unica pessoa (ou a uma lista predefinida) através de um esforço coletivo, tudo gerenciado por software, claro.

Não haveria incentivo algum para uma fraude, já que nenhum usuário individual teria acesso a nenhum valor de aposta, nem mesmo ao valor da própria aposta, mas precisaria haver um esforço coordenado de uma maioria para que uma fraude fosse possível, assim como seria necessário o mesmo esforço para que o premio seja entregue.

Estou redigindo um primeiro esboço para discutirmos se a ideia é viável, em breve vou publicar aqui mesmo.



Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on June 20, 2014, 07:12:53 AM
Esboço da proposta:

A minha ideia é criar uma rede "P2P" onde cada participante seria ao mesmo tempo o apostador, o gerenciador do sorteiro, e responsável pela entrega do premio, tudo de forma distribuída e protegido pelas leis da criptografia.

Basicamente funcionaria da seguinte forma:

CRIAÇÃO DA LOTERIA:
1. Alguém cria uma loteria e registra em um ou vários sites (que chamei de "databases").
2. Apostadores munidos do software de apostas localizam a loteria publicada em um desses sites.

APOSTA:
3. Os apostadores criam "chaves privadas distribuidas"* (Bitcoin address) e fazem os envios do valor das apostas para essas chaves.
4. Para cada aposta é registrado junto uma chave RSA publica unica, e também uma chave ECDSA publica unica.
5. O software dos apostadores deve guardar a contraparte privada dessas chaves até o final da loteria.
6. As chaves publicas ECDSA publicadas junto com as apostas são utilizadas em outras apostas para formar as "chaves privadas distribuidas"*.
7. As chaves publicas RSA publicadas junto com as apostas são utilizadas para o envio das chaves privadas ECDSA ao ganhador do sorteio.
8. O ganhador do sorteio receberá as chaves privadas ECDSA de cada apostador, criptografadas com a chave publica RSA de sua aposta sorteada.
9. Tendo posse das chaves privadas ECDSA de cada aposta o vencedor poderá então coletar o total premiado.
10. O vencedor é o unico que tem posse das chaves privadas ECDSA que permitirão transferir os valores, pois nenhum apostador unico possui sequer uma chave privada ECDSA inteira, os apostadores tem apenas partes das chaves privadas ECDSA, pois essas foram construidas de forma distribuida. Mesmo o site database não tem as chaves, pois apesar de armazenar o envelope de comunicação, este site não possui a chave RSA privada que abre o envelope.

SORTEIO:
11. Para realizar o sorteio todos os apostadores monitoram o blockchain até obter o hash do "bloco alvo"*.
12. O hash do "bloco alvo" é submetido a um algoritimo que escolhe um vencedor dentre todas as apostas (o algoritimo ainda não foi criado)
13. A aposta do vencedor é conferida, verificando a validade da transação no blockchain, assim como a validade da construção distribuida dos address de pagamento.
14. Cada apostador envia as suas "chaves privadas ECDSA parciais" ao apostador vencedor (criptografando com a chave publica RSA deste).
    Caso o apostador falhe em apresentar sua chave parcial, o valor da aposta será destruido pela própria natureza do blockchain.
    Não existe incentivo algum em falhar com essa etapa pois não há maneira alguma do valor da aposta retornar ao apostador.
    Caso o apostador abandone a loteria antes do sorteio e venha a ser sorteado então o premio se perde em definitivo, mas poderia eventualmente existir um prazo para coleta do premio e em seguida sortear outro vencedor.
15. O vencedor então coleta as "chaves ECDSA parciais" e juntando-as poderá coletar seu premio.

DATABASES:
16. Os sites "databases" são intermediários nas conversas protocolares entre apostadores.
17. Devem operar sem login ou qualquer meio de identificação dos apostadores.
18. Podem exigir uma execução de PoW para evitar DDoS.
19. Devem permitir replicação anonima por leitura ou escrita, mas não substituição ou exclusão.
20. Os registros não são ordenados ou encadeados, apenas anotados, como se cada registro fosse um arquivo.
21. São responsáveis por anotar cada aposta efetuada.
22. E também por anotar os envios de chaves privadas ao vencedor.
23. Todos os apostadores devem ter cópias do database.
24. O vencedor utilizará a copia local para receber as chaves privadas ECDSA, assim evitando uma identificação de origem.

O modelo de sites databases foi pensado para simplificar a arquitetura e poder operacionalizar tudo a partir de celulares android.
Um modelo P2P de databases seria o ideal, mas seria necessário abrir portas tcp/ip nos computadores clientes, o que poderia ser um problema para a maioria dos usuarios.
Vou acabar escrevendo uma arquitetura mista que opere das duas formas simultaneamente.

CHAVES DISTRIBUIDAS:
Quase toda a segurança do protocolo se baseia na utilização de chaves privadas distribuidas, que são address cuja chave privada é formada por diversos participantes sem necessidade de confiança mutua.
O principio é relativamente simples e foi apresentada pela primeira vez pelo usuário ThePiachu no post https://bitcointalk.org/index.php?topic=84569.0 e que estou adaptando para a implementação dessa loteria distribuida, dentre outros projetos.

O fundamento é que uma chave publica ECDSA é formada pela formula:
Code:
K = k * G

K = chave publica
k = chave privada
G = constante do ponto na curva eliptica.

Portanto um par de chaves também poderia (suponho) ser construido de forma distribuida pelos participantes A, B e C com a formula:
Code:
(A + B + C) = (a + b + c) * G
Assim os address de pagamento das apostas seriam formados por multiplos participantes que divulgariam apenas a "chave publica parcial", mas só revelariam a "chave privada parcial" ao vencedor.
Outro detalhe, os participantes da construção das address de pagamentos não saberiam de quais address eles participariam, pois a escolha será regida por um algoritimo que se alimente de dados não fabricáveis, como a hash da transação de pagamento (algoritimo ainda não desenvolvido).
A construção desses address também ocorrerá de maneira não interativa, pois as chaves publicas parciais são geradas em excesso no momento de cada aposta, e ficam disponiveis, mesmo que nunca venham a ser utilizadas.

Os pagamentos dos participantes precisam ser conferidos, e a validade da construção dos address destes também precisa ser conferida.
Não tenho certeza da necessidade de fazer essa conferencia prosseguir recursivamente de forma infinita, isso precisa ser validado.

A escolha dos participantes da construção dos address não poderá ser arbitrária, e deverá realmente ser regida por um algoritimo, pois a escolha arbitrária permitiria que um apostador fornecesse todos os participantes e com isso tivesse o potencial de recuperar o valor da aposta caso não fosse o vencedor, o que é uma fraude inaceitável.

Outro detalhe a se observar é que nem toda chave privada ECDSA produz um address Bitcoin valido, portanto a soma A+B+C poderia gerar uma chave inutilizável, então para contornar isso deverá ser aplicado um algoritimo de força bruta até encontrar uma chave valida, semelhante ao que é feito no VanityGen.

* Ainda é tudo apenas uma ideia, não tenho certeza absoluta se os address poderão realmente ser construidos desta maneira. A idéia precisa ser testada ainda.


PROTOCOLO:

Modelo de Loteria (ficaria armazenado no site)
Code:
{
  "name": "Loteria do Instituto de pesquisas contra o cancer",
  "description": "hacktivism rulez",
  "owner": "anonymous",
  "site": "http://bitbit.org/loto123",
  "coin": "Bitcoin",
  "block_target": "311011",
  "block_limit": "310991",
  "estimated_arrival": "2014-07-19T19:07:14Z",
  "database": [
    {
      "url": "http://site1.org/bitbit",
      "type": "post basic 1.0"
    },
    {
      "url": "http://freehost2.org/~user/bitbit",
      "type": "post basic 1.0"
    },
    {
      "url": "http://onionhiddensite1234567890.onion/bitbit",
      "type": "post basic 1.0"
    }
  ],
  "quotas": {
    "principal": {
        "value": 0.0015,
        "recipient_type": "random",
        "method": "p1.0",
        "method_params": [],
        "bootstrap": ["....", "....", "...."]
    },
    "donation1": {
        "value": 0.001,
        "recipient_type" : "fixed",
        "address": "1doejFmV84SvgSbnTkJyPrRD44hUCjQrX",
        "site": "http://sitedainstituicao.org"
    }
  }
}
O campo "type" nos databases permitirá que sejam criados multiplos tipos de armazenamento, como P2P, mysql, memcache, etc.
A principio apenas um PHP aceitando POST será suficiente.

O "recipient_type fixed" permite que instituições ou projetos possam ser patrocinados pela loteria, de forma transparente e livre da asquerosa corrupção política.
Claro que esse address precisa ser abertamente reconhecido pela instituição receptora ou pelo menos ter alguma transparencia no processo que conduzirá os valores até a mesma.
O algoritimo não terá como ajudar muito quanto a isso, dependerá dos apostadores validarem isso.

O campo "quotas" teoricamente permitiria multiplas quotas de premiação, assim o total do premio poderia ser distribuido para N ganhadores distintos.
Essa possibilidade não foi estressada o suficiente para certificar seu funcionamento, precisará ser melhor analisada.

O campo "method" permite multiplos metodos de sorteio para permitir a criação de premios secundários, assim cada premio deverá ter um metodo diferente de sorteio, ou parametros diferentes para um mesmo metodo.

O campo "block_target" define o bloco cujo hash será utilizado para o sorteio, e o campo "block_limit" define o bloco maximo que os pagamentos devem ter confirmação para participarem do sorteio.
Pagamentos confirmados após esse bloco "block_limit" são silenciosamente rejeitados e o valor da aposta se perde pra sempre.
Embora seja possível que os participantes colaborem para o retorno desse valor de apostas tardias, o esforço não é justificável.

O campo "bootstrap" indica tres apostas iniciais (unique_id) que não participam do sorteio mas servem para formar as primeiras chaves de construção distribuida.
Essas tres apostas iniciais não tem como possuirem "chaves de construção distribuida" pois para essa construção são necessárias tres apostas previamente registradas.



APOSTA
Para cada aposta deverá ser enviado ao database um registro similar a esse:
Code:
{
  "rsa_public_key": "........",
  "quotas": [
    "principal": {
      "payment_transaction": ".......",
      "payment_address": "........",
      "address_construction": {
        "method": "basic 1.0",
        "members": ["... unique_id member A", "... unique_id member B", "... unique_id member C"]
      },
      "ecdsa_public_key": "........",
      "unique_id": "......"
    },
    "donation1": {
      "payment_transaction": ".......",
    },
  ]
}
O campo "method" deve permitir a coexistência de multiplos algoritimos de construção de chaves distribuidas.
O valor de "method" "bootstrap" é reservado para as tres primeiras apostas de cada loteria e que não participam do sorteio.
O metodo basico deverá ser A+B+C+ecdsa_public_key, sendo que as ecdsa_public_key de ABC deverão ser obtidas dos registros equivalentes e com mesma "quota".

O unique_id é calculado fazendo sha256sum da rsa_public_key+ecdsa_public_key, o que deve produzir entropia suficiente para não ocorrerem colisões.

O uso da hash da transação como referencia do pagamento ainda é um ponto de discussão devido ao "bug transaction malleability" ainda afetar quase todas as altcoins.


PAGAMENTO AO VENCEDOR
Todos os apostadores devem registrar nos databases as chaves privadas parciais, assim o vencedor poderá coletar seu premio.
Code:
{
  "rsa_public_key": "........",
  "ecdsa_public_key": "........",
  "quota": "principal",
  "ecdsa_private_key_rsa_encrypted": "........",
  "winner_rsa_public_key": "........"
}
Só é possível fazer esse registro quando os apostadores souberem quem foi o ganhador, pois assim poderão criptografar as chaves privadas ECDSA usando a chave RSA do ganhador.
A definição do ganhador se faz localmente com a aplicação de um algoritimo.


REDUNDANCIA DA CHAVE PRIVADA ECDSA PARCIAL (storage)
Para evitar que valores de apostas sejam perdidas e moedas sejam destruidas no caso de um apostador abandonar a loteria, eu pensei em fazer uma copia da chave privada ECDSA parcial, utilizando para isso um outro participante escolhido randomicamente.
Essa escolha não exige determinismo em algoritimos especiais, já que não compromete o sorteio e nem mesmo a segurança do valor apostado, apenas oferece uma redundancia em caso de abandono.
Cada apostador deveria escolher uma outra aposta e enviar um registro de redundancia.
Code:
{
  "rsa_public_key": "........",
  "ecdsa_public_key": "........",
  "quota": "principal",
  "ecdsa_private_key_rsa_encrypted": "........",
  "store_rsa_public_key": "........"
}
O apostador que recebe esse registro (storage) deverá também informá-lo ao vencedor, em um registro normal de pagamento, como se fosse o pagador original.

*esta ideia não foi estressada suficientemente ainda, precisa ser submetida a analise.


CARTEIRA
Todas as operações de pagamentos e recebimentos podem ser automatizadas com a API do blockchain.info, portanto o usuario precisará apenas ter uma carteira nesse site que facilitará bastante para fazer apostas de um clique usando seu celular android.
Acredito que esse seja o melhor caminho para a implementação do software de loteria, mas existe também a possibilidade de interfacear um cliente RPC ou implementar um cliente leve.


COMENTARIO ADICIONAL

Este esboço de algoritimo foi construido no melhor animo de boa vontade, sem intenção de vantagem, portanto tenham paciência caso o esforço seja infrutífero ou não apresente o resultado desejado.
E espero que alguem com tempo e disposição escreva o software necessário para tornar isso realidade.
Eu vou acabar escrevendo esse software, mas agora não tenho como disponibilizar tempo pra isso pois o equilibrio entre receitas e despesas anda complicado.

Acredito que olhar para esse projeto como apenas uma loteria seria uma visão curta das possibilidades implicitas, pois este poderá servir de impulsionador para muitos projetos que carecem de investimentos e cuja participação como beneficiários de uma loteria poderia ser de muita ajuda.

Em um breve futuro poderiam haver milhares de loterias beneficiando uma infinidade de obras de interesse coletivo.
E sem precisar dar nenhum centavo a nenhum político sangue suga.
Vamos sonhar, pois por sonhar ainda não se paga imposto.



Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: hidedocscom on June 20, 2014, 02:11:43 PM
Acho que ainda vou precisar mastigar um pouco mais a ideia, confesso que ainda fico um pouco "perdido" quando vejo sites replicando a mesma informacao.  :D

Só pondo um pouco mais de carvão na churrasqueira.

Imaginem que fosse possivel criar uma carteira de bitcoin normal, só que a diferença é que essa carteira seria criada ao ser solicitada por dois moderadores, onde cada um tivesse um par de chaves (publica/privada) independentes.

Ao criar a carteira, o software pediria a chave publica de ambos os apostadores para criptografar a chave privada da carteira criada. Assim teriamos 2 coberturas de criptografia sobre a real chave privada da carteira.

Criada a carteira, somente com a aprovacao dos dois moderadores seria possivel resgatar a chave privada.

Agora, vem os apostadores. Imaginem que seja um jogo tipo "mega-sena" onde temos 6 pares 01-07-12-17-24-51 (só espero nao ter chutado os numeros da mega da proxima segunda. :D).

Todos que quisessem colaborar depositariam 2 reais de bitcoins, algo como, 0,0015 btc e na descrição colocariam os codigos separados por "-".

Na apuração, o software de apostas  pediria para os dois moderadores que desprotegessem a chave privada e em seguida identificaria as senas, quinas e quadras e devolveria os valores para as carteiras ganhadoras e a taxa % iria para a carteira da entidade a qual o grupo se comprometeu em ajudar.

+A unica dúvida que confesso que fiquei é se a "descricao" da transacao é registrada no blockchain. Se nao for, daí a ideia realmente teria uma falha técnica aí :D

++ Agora, porque nao colocar os 100 primeiros apostadores como moderadores e daí só com a aprovacao de cada um a chave privada da carteira poderia ser aberta. :D


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: Adriano on June 20, 2014, 04:50:44 PM
Algorista,

Primeiramente desculpe por te colocar nessa enrascada ao pedir para detalhar a ideia... Vendo o post pronto imagino o trabalhão que deu :-)

Vou tentar quebrar seu post em pedaços de "fácil digestão" para tentar entender melhor. Qualquer coisa posto aqui alguma dúvida ou comentário posteriormente.


Abraço,

Adriano


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on June 20, 2014, 04:56:19 PM
Acho que ainda vou precisar mastigar um pouco mais a ideia, confesso que ainda fico um pouco "perdido" quando vejo sites replicando a mesma informacao. Vou estudar mais. :D

Só pondo um pouco mais de carvão na churrasqueira.

Imaginem que fosse possivel criar uma carteira de bitcoin normal, só que a diferença é que essa carteira seria criada ao ser solicitada por dois moderadores, onde cada um tivesse um par de chaves (publica/privada) independentes.

Ao criar a carteira, o software pediria a chave publica de ambos os apostadores para criptografar a chave privada da carteira criada. Assim teriamos 2 coberturas de criptografia sobre a real chave privada da carteira.

Criada a carteira, somente com a aprovacao dos dois moderadores seria possivel resgatar a chave privada.

Agora, vem os apostadores. Imaginem que seja um jogo tipo "mega-sena" onde temos 6 pares 01-07-12-17-24-51 (só espero nao ter chutado os numeros da mega da proxima segunda. :D).

Todos que quisessem colaborar depositariam 2 reais de bitcoins, algo como, 0,0015 btc e na descrição colocariam os codigos separados por "-".

Na apuração, o software de apostas  pediria para os dois moderadores que desprotegessem a chave privada e em seguida identificaria as senas, quinas e quadras e devolveria os valores para as carteiras ganhadoras e a taxa % iria para a carteira da entidade a qual o grupo se comprometeu em ajudar.

+A unica dúvida que confesso que fiquei é se a "descricao" da transacao é registrada no blockchain. Se nao for, daí a ideia realmente teria uma falha técnica aí :D

++ Agora, porque nao colocar os 100 primeiros apostadores como moderadores e daí só com a aprovacao de cada um a chave privada da carteira poderia ser aberta. :D

Eu consigo visualizar os seguintes pontos nos seus comentários:

1 - Vocë citou um sorteio por dezenas, semelhante as loterias Brasileiras, mas eu não vejo como isso possa feito. Na minha proposta o que será sorteada é a aposta em sí, e não um palpite do apostador. O hash do bloco é submetido a um algoritmo que chega em um numero, e esse numero é então comparado a um numero gerado com o hash da aposta, assim a aposta que mais se aproximar será o vencedor. Não há palpite do apostador e nem concurso sem vencedor.

2 - Entendo que aqueles que vc chamou de "moderadores" seriam os detentores das "chaves privadas parciais", mas o problema dessas chaves é que para transferir o valor associado a elas é necessário juntá-las, e com isso entregar a autoridade a uma das partes, o que evidentemente cria uma relação de confiança. Na minha proposta as chaves parciais são entregues ao vencedor da loteria então este ganha autoridade sobre os valores  podendo transferi-los.



Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on June 20, 2014, 05:02:02 PM
Algorista,

Primeiramente desculpe por te colocar nessa enrascada ao pedir para detalhar a ideia... Vendo o post pronto imagino o trabalhão que deu :-)

Vou tentar quebrar seu post em pedaços de "fácil digestão" para tentar entender melhor. Qualquer coisa posto aqui alguma dúvida ou comentário posteriormente.


Abraço,

Adriano

Na verdade foi bem divertido.

Será interessante se alguns voluntários criem diagramas e ilustrações para melhor explicar a ideia, eu nem me aventurei por esse caminho pois não sei desenhar.





Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: Parana on June 22, 2014, 01:02:33 PM
Achei super interessante a ideia.

Vou acompanhar tbm.

Abçs


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: hidedocscom on June 22, 2014, 02:28:55 PM
Achei genial o jogo, só não me acostumei ou quero dizer, não sei se gosto da ideia do hash que mais se aproxima ser o vencedor do jogo.

Hashes são normalmente seguros e a maioria aqui no grupo sabe que é a essencial a segurança deles para o funcionamento das criptomoedas.
 
As vezes compro umas rifas beneficientes aonde os premios estão associados aos ultimos 3 digitos do primeiro premio da loto. Usar algo mais simples como isso, talvez atraia mais os apostadores ou não.

Como tudo que se faz para a internet é algo que tem muito mais potencial de crescimento, talvez os ultimos 3 digitos fique pequeno em muito pouco tempo, logo, teria que aumentar conforme a quantidade de apostas.

Algo mundialmente aceitavel talvez tivesse que considerar a loto dos americanos, nao é?


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on June 22, 2014, 05:14:19 PM
Achei genial o jogo, só não me acostumei ou quero dizer, não sei se gosto da ideia do hash que mais se aproxima ser o vencedor do jogo.

Hashes são normalmente seguros e a maioria aqui no grupo sabe que é a essencial a segurança deles para o funcionamento das criptomoedas.
 
As vezes compro umas rifas beneficientes aonde os premios estão associados aos ultimos 3 digitos do primeiro premio da loto. Usar algo mais simples como isso, talvez atraia mais os apostadores ou não.

Como tudo que se faz para a internet é algo que tem muito mais potencial de crescimento, talvez os ultimos 3 digitos fique pequeno em muito pouco tempo, logo, teria que aumentar conforme a quantidade de apostas.

Algo mundialmente aceitavel talvez tivesse que considerar a loto dos americanos, nao é?

Concordo que um sistema de dezenas atrairia mais apostadores, até pela possibilidade da pessoa aplicar aquela "fézinha" usando números mágicos (de acordo com as crenças de cada um).

Extrair dezenas da hash do blockchain é relativamente simples, bastaria pegar alguns bits da entropia e ir fazendo um loop de MOD 60, e cada resultado daria uma dezena confiável de 0..59.

Para o apostador escolher as dezenas sem revelar os números de sua aposta, ele poderia expor apenas um hash das suas dezenas, por exemplo a aposta "01-07-12-17-24-51" daria o hash "4f2955e9105615a1c18239530c08b303b28cd983b403e853b3fc76451df32483" que então seria usado para encontrar o vencedor.

Um grande problema que vejo nessa abordagem é nos casos em que ninguém acerta as dezenas, o que causaria a nada desejável "acumulada". O processo das loterias tradicionais é semelhante ao processo de mineração, onde é preciso um número alto de apostas para que estatisticamente alguém acerte as dezenas em um intervalo especificado. E essa programação é feita através do ajuste do valor das apostas e da quantidade de dezenas por aposta (demanda X oferta). Um erro nessa formula pode gerar uma loteria com centenas de vencedores por concurso, ou pior, um concurso que acumula eternamente.

Outro ponto difícil de resolver é que estou tentando construir um algorítimo de pagamento distribuído, sem autoridade central, então fica a duvida de como fazer o pagamento em caso de múltiplos ganhadores. Já que cada participante tem apenas fragmentos das chaves privadas das apostas de vários apostadores, portanto ele não tem autonomia para fracionar o pagamento, ele pode apenas enviar a "chave privada parcial" para um apostador em específico.

No caso de uma loteria de dezenas haveria a possibilidade de haver muitos ganhadores ou de nunca se chegar a um ganhador, pois tudo depende do equilíbrio entre quantidade de apostas e quantidade de dezenas.

É preciso encontrar uma solução para essas questões para implementar um sistema de dezenas.


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: Parana on June 22, 2014, 06:54:51 PM
...
Um grande problema que vejo nessa abordagem é nos casos em que ninguém acerta as dezenas, o que causaria a nada desejável "acumulada". O processo das loterias tradicionais é semelhante ao processo de mineração, onde é preciso um número alto de apostas para que estatisticamente alguém acerte as dezenas em um intervalo especificado. E essa programação é feita através do ajuste do valor das apostas e da quantidade de dezenas por aposta (demanda X oferta). Um erro nessa formula pode gerar uma loteria com centenas de vencedores por concurso, ou pior, um concurso que acumula eternamente.

Outro ponto difícil de resolver é que estou tentando construir um algorítimo de pagamento distribuído, sem autoridade central, então fica a duvida de como fazer o pagamento em caso de múltiplos ganhadores. Já que cada participante tem apenas fragmentos das chaves privadas das apostas de vários apostadores, portanto ele não tem autonomia para fracionar o pagamento, ele pode apenas enviar a "chave privada parcial" para um apostador em específico.

No caso de uma loteria de dezenas haveria a possibilidade de haver muitos ganhadores ou de nunca se chegar a um ganhador, pois tudo depende do equilíbrio entre quantidade de apostas e quantidade de dezenas.
É preciso encontrar uma solução para essas questões para implementar um sistema de dezenas.

Um idéia:

Bem, digamos que enquanto o conceito do sistema é espalhado pela net, por que não implementar um algo de medida quantidade de jogadores apostando X quantidade apostada, antes do sorteio.

Por exemplo: considerando que poucos jogadores estão participando, digamos que o sistema poderia "permitir" que ganhe as apostas a partir de 3 números acertados no sorteio.

Supondo que sejam 6 números ao total, que talvez seja muito, quem acertar 3 ganharia uma fração, dividida entre todos os ganhadores de 3 números. O valor sorteado para os

Caso tenham muitos jogadores, somente a partir de 5 números ganham.

Entendam que é só um exemplo. Sei que não ficou muito claro a minha explicação, por isso eu desenhei:

http://s27.postimg.org/tqoipsagj/apostas_loto_btc.png


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: motaro on June 23, 2014, 10:37:27 PM

14. Cada apostador envia as suas "chaves privadas ECDSA parciais" ao apostador vencedor (criptografando com a chave publica RSA deste).
    Caso o apostador falhe em apresentar sua chave parcial, o valor da aposta será destruido pela própria natureza do blockchain.
    Não existe incentivo algum em falhar com essa etapa pois não há maneira alguma do valor da aposta retornar ao apostador.
    Caso o apostador abandone a loteria antes do sorteio e venha a ser sorteado então o premio se perde em definitivo, mas poderia eventualmente existir um prazo para coleta do premio e em seguida sortear outro vencedor

Mas e se o apostador perdedor ser recusar a apresentar a chave intencionalmente, já que não ganhou?
Achei este ponto negativo.


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on June 23, 2014, 10:54:12 PM

14. Cada apostador envia as suas "chaves privadas ECDSA parciais" ao apostador vencedor (criptografando com a chave publica RSA deste).
    Caso o apostador falhe em apresentar sua chave parcial, o valor da aposta será destruido pela própria natureza do blockchain.
    Não existe incentivo algum em falhar com essa etapa pois não há maneira alguma do valor da aposta retornar ao apostador.
    Caso o apostador abandone a loteria antes do sorteio e venha a ser sorteado então o premio se perde em definitivo, mas poderia eventualmente existir um prazo para coleta do premio e em seguida sortear outro vencedor

Mas e se o apostador perdedor ser recusar a apresentar a chave intencionalmente, já que não ganhou?
Achei este ponto negativo.


Também pensei muito sobre isso, será tudo gerenciado pelo software então não será necessário uma ação direta do usuário para essa entrega da chave.
No entanto sempre existe aqueles que poderiam alterar o software só por maldade mesmo, sem obter nenhum benefício com isso, já que o valor apostado jamais poderia ser recuperado.

Existe também aqueles casos do cara que apostou mas perdeu o salvamento da aposta, ou simplesmente abandonou a loteria, e nesses casos ele não poderia entregar as chaves.

Para ambos os casos acredito que a REDUNDÂNCIA seja a resposta:

REDUNDANCIA DA CHAVE PRIVADA ECDSA PARCIAL (storage)
Para evitar que valores de apostas sejam perdidas e moedas sejam destruidas no caso de um apostador abandonar a loteria, eu pensei em fazer uma copia da chave privada ECDSA parcial, utilizando para isso um outro participante escolhido randomicamente.
Essa escolha não exige determinismo em algoritimos especiais, já que não compromete o sorteio e nem mesmo a segurança do valor apostado, apenas oferece uma redundancia em caso de abandono.
Cada apostador deveria escolher uma outra aposta e enviar um registro de redundancia.
Code:
{
  "rsa_public_key": "........",
  "ecdsa_public_key": "........",
  "quota": "principal",
  "ecdsa_private_key_rsa_encrypted": "........",
  "store_rsa_public_key": "........"
}
O apostador que recebe esse registro (storage) deverá também informá-lo ao vencedor, em um registro normal de pagamento, como se fosse o pagador original.

Esse registro de redundância poderia também ser conferido no momento da entrega do premio, assim quem não o tiver apresentado não ficaria qualificado como aposta valida para premiação.


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: hidedocscom on June 24, 2014, 02:03:11 PM
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).

Se alguém ler mais que 10 linhas, pra entender o que é pra fazer, ele já se distrai e acha que é golpe, entao, ele já se perde, fica na duvida e quando aparece um TI perdido no café, ele pede apoio para esse alguém de TI. Esse alguem vai explicar + ou - e daí o assunto muda e ele nao joga, sabe por que???.... porque perdeu o "impulso" que o leva a jogar sem pensar muito.

Esta muito legal essas ideias para loteria, mas, é a massa quem faz os jogos, se elas nao entendem ou nao podem acreditar nas "mandingas" como o proprio Algorista disse,  o jogo perde seu potencial.

Será que não conseguimos pensar em algo mais simples? Não precisa ser um relógio, cheio de engrenagens e recursos, só algo mais simples, bem idiota, para que alguém consiga construir rapidamente e outros entrem no jogo. É só uma opinião.

Podíamos levantar os tipos de jogos existentes, experimentar alguns virtuais e ver se as ideias aparecem. Alguém de "8 anos de idade" outro dia me disse que seria legal ter campeonatos remunerados em servidores de jogos "online" de xbox.  Qual a dificuldade para se construir um servico desse tipo? Alguem sabe ou já fez algo parecido?


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on June 24, 2014, 05:58:36 PM
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).

Se alguém ler mais que 10 linhas, pra entender o que é pra fazer, ele já se distrai e acha que é golpe, entao, ele já se perde, fica na duvida e quando aparece um TI perdido no café, ele pede apoio para esse alguém de TI. Esse alguem vai explicar + ou - e daí o assunto muda e ele nao joga, sabe por que???.... porque perdeu o "impulso" que o leva a jogar sem pensar muito.

Esta muito legal essas ideias para loteria, mas, é a massa quem faz os jogos, se elas nao entendem ou nao podem acreditar nas "mandingas" como o proprio Algorista disse,  o jogo perde seu potencial.

Será que não conseguimos pensar em algo mais simples? Não precisa ser um relógio, cheio de engrenagens e recursos, só algo mais simples, bem idiota, para que alguém consiga construir rapidamente e outros entrem no jogo. É só uma opinião.

Podíamos levantar os tipos de jogos existentes, experimentar alguns virtuais e ver se as ideias aparecem. Alguém de "8 anos de idade" outro dia me disse que seria legal ter campeonatos remunerados em servidores de jogos "online" de xbox.  Qual a dificuldade para se construir um servico desse tipo? Alguem sabe ou já fez algo parecido?


Concordo 100% com o que você disse agora.

Tecnicamente a solução é pesada de entender, assim como tudo na tecnologia do Bitcoin.
Mas o usuário final não precisa entender como funciona, ele só precisa instalar um app no celular (ou desktop) que exiba um address de pagamento e valor, e que na data do sorteio informe se ele ganhou, e solicite um address para recebimento do premio.
Assim como ninguém precisa ser um engenheiro aeronáutico para embarcar em um avião :D também não será preciso entender de nada para apostar.

https://i.imgur.com/0sebjxs.png
*exemplo de como imagino o app.

Qualquer inovação no ecossistema do Bitcoin ainda precisará de mais uma década para atingir o cidadão mediano.
A tendência é primeiro atingir o publico savvy então após alguns anos chegar aos TI em geral, e só depois começar a atingir os familiares dos profissionais de TI, e muito tempo depois atingir o publico em geral.

Respondendo sua pergunta: "Será que não conseguimos pensar em algo mais simples?"

Uma loteria centralizada é extremamente simples de implementar, nem precisa de software, basta recolher o pagamento e as apostas e então pagar o vencedor baseado em algum sorteio qualquer.
O problema dessa abordagem é que precisa confiar na entidade/pessoa que vai recolher os pagamentos.
No Bitcoin já existiu uma loteria dessas, mas todos nós sabemos o que acontece nesses casos*, e foi exatamente o que aconteceu:

https://en.bitcoin.it/wiki/BitLotto
https://bitcointalk.org/index.php?topic=79862.0

* geralmente quando alguém recebe um monte de Bitcoins de terceiros, ou ele é "hackeado", ou simplesmente desaparece com o dinheiro ::)

A minha proposta é criar um software de loteria descentralizada, onde seja "impossível" roubar o premio, falsificar apostas, reverter pagamentos, ou escolher arbitrariamente um vencedor.
E por isso é tão complexa do ponto de vista técnico, mas pro usuário final só precisa uma telinha bem simples.





Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: Parana on June 24, 2014, 06:27:04 PM
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...

 ;D


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: 2501 on June 25, 2014, 03:50:57 AM
Acompanhando


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: CripLib on June 25, 2014, 05:48:56 PM
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


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on June 25, 2014, 06:46:06 PM
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.



Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: Parana on June 25, 2014, 07:56:47 PM
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


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: person on June 26, 2014, 01:46:34 AM
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... :(



Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on June 26, 2014, 03:51:29 AM
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... :(

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://bitcointalk.org/index.php?topic=84569.0
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.

 



Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on July 01, 2014, 03:35:24 AM
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.





Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: Parana on July 20, 2014, 01:01:49 PM
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!!


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on July 21, 2014, 05:43:49 AM
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.





Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: digovc_ on September 23, 2014, 12:40:11 PM
Fiquei entusiasmado com a ideia! Tomei a liberdade de criar o repositório inicial para codificação (github.com/digovc/BitLoteria (http://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?


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on September 24, 2014, 12:36:44 AM
Fiquei entusiasmado com a ideia! Tomei a liberdade de criar o repositório inicial para codificação (github.com/digovc/BitLoteria (http://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  :D

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  ;D


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: manobra on September 24, 2014, 04:00:53 PM
"hacktivism rulez" => quantos anos vc tem?


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: tionil on September 24, 2014, 05:44:05 PM
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.


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on September 24, 2014, 10:11:47 PM
"hacktivism rulez" => quantos anos vc tem?
Eu já era velho quando essas gírias eram novas ;D



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.



Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: tionil on September 24, 2014, 11:20:10 PM
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.


Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: algorista on September 24, 2014, 11:48:32 PM
[...]
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.



Title: Re: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.
Post by: schiavonxv on September 25, 2014, 02:57:09 AM
[...]
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."