Bitcoin Forum
May 12, 2024, 09:41:50 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2  All
  Print  
Author Topic: [Ideia] Algoritimo de loteria descentralizada fundamentada no Bitcoin.  (Read 6688 times)
algorista (OP)
Hero Member
*****
Offline Offline

Activity: 882
Merit: 1000


It's got electrolytes


View Profile
June 17, 2014, 09:08:53 PM
Last edit: June 19, 2014, 04:34:36 AM by algorista
 #1

...
 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 Grin).

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.


+---------=====[ Rm 12:21 ]=====---------+
1715550110
Hero Member
*
Offline Offline

Posts: 1715550110

View Profile Personal Message (Offline)

Ignore
1715550110
Reply with quote  #2

1715550110
Report to moderator
1715550110
Hero Member
*
Offline Offline

Posts: 1715550110

View Profile Personal Message (Offline)

Ignore
1715550110
Reply with quote  #2

1715550110
Report to moderator
"With e-currency based on cryptographic proof, without the need to trust a third party middleman, money can be secure and transactions effortless." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715550110
Hero Member
*
Offline Offline

Posts: 1715550110

View Profile Personal Message (Offline)

Ignore
1715550110
Reply with quote  #2

1715550110
Report to moderator
1715550110
Hero Member
*
Offline Offline

Posts: 1715550110

View Profile Personal Message (Offline)

Ignore
1715550110
Reply with quote  #2

1715550110
Report to moderator
Adriano
Moderator
Legendary
*
Offline Offline

Activity: 1285
Merit: 1085



View Profile
June 17, 2014, 09:36:26 PM
 #2

** 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 Grin).

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

--
hidedocscom
Newbie
*
Offline Offline

Activity: 48
Merit: 0


View Profile
June 18, 2014, 01:12:26 PM
 #3

A principio, me parece boa a ideia também.
knightcoin
Full Member
***
Offline Offline

Activity: 238
Merit: 100


Stand on the shoulders of giants


View Profile
June 19, 2014, 03:39:15 PM
 #4

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/

bem boa sorte... vou acompanhar o desenvolvimento Wink

http://www.introversion.co.uk/
mit/x11 licence 18.x/16|o|3ffe ::71
centralminer
Full Member
***
Offline Offline

Activity: 182
Merit: 100


View Profile
June 19, 2014, 05:09:15 PM
 #5

Seria muito bacana! Estou acompanhando também...
Abraços!

knightcoin
Full Member
***
Offline Offline

Activity: 238
Merit: 100


Stand on the shoulders of giants


View Profile
June 19, 2014, 05:37:05 PM
 #6

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 ...

http://www.introversion.co.uk/
mit/x11 licence 18.x/16|o|3ffe ::71
motaro
Member
**
Offline Offline

Activity: 86
Merit: 10


View Profile
June 19, 2014, 06:30:00 PM
 #7

Eu gostei da idéia, mas como seria a recompensa financeira?
pao_de_lo
Legendary
*
Offline Offline

Activity: 968
Merit: 1001



View Profile WWW
June 19, 2014, 07:13:41 PM
 #8

Seria maravilhoso  Shocked

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 metacapitalistasShocked

Sim ou não?  Shocked

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

           ▄▄█████████▄▄                         ▄█▄                ▀██████▄                   ▄██████▀
        ▄█████████████████▄▄                    ▄███▄                 ▀██████▄               ▄██████▀
         ▀███████████████████▄                 ▄█████▄                  ▀██████             ██████▀
           █▀▀       ▀▀████████▄              ▄███████▄                   ██████▄         ▄██████
  ▄█▄                    ▀██████▄            ▄█████████▄                   ▀██████▄     ▄██████▀
 ▄████▄                    ▀█████▄          ▄███████████▄                    ███████▄ ▄███████
▄█████▀                     ▀█████▄        ▄██████▀██████▄                     █████▀▀▀█████▀
██████                       ██████       ▄██████   ██████▄                     ▀█▀     ▀█▀
██████                       ██████      ▄██████     ██████▄                     █       █
██████                       ██████     ▄██████       ██████▄                   ▄█▄     ▄█▄
▀██████▄                    ▄█████▀    ▄██████         ██████▄                ▄█████▄▄▄█████▄
 ▀██████▄                  ▄█████▀    ▄██████                                ███████▀ ▀███████
  ▀██████▄               ▄██████▀    ▄██████                               ▄██████▀     ▀██████▄
   ▀████████▄▄       ▄▄████████▀    ▄██████                               ▄██████         ██████▄
     ▀███████████████████████▀     ▄██████                 ██████▄      ▄██████▀           ▀██████▄
       ▀▀█████████████████▀▀      ▄██████                   ██████▄   ▄██████▀               ▀██████▄
           ▀▀█████████▀▀         ▄██████                     ██████▄▄██████▀                   ▀██████▄
-- HOLD YOUR
OWN KEYS!
-- -- [SUCCESS
RAISE
.US$18mil+.]
algorista (OP)
Hero Member
*****
Offline Offline

Activity: 882
Merit: 1000


It's got electrolytes


View Profile
June 20, 2014, 12:38:16 AM
 #9

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.


+---------=====[ Rm 12:21 ]=====---------+
algorista (OP)
Hero Member
*****
Offline Offline

Activity: 882
Merit: 1000


It's got electrolytes


View Profile
June 20, 2014, 07:12:53 AM
 #10

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.


+---------=====[ Rm 12:21 ]=====---------+
hidedocscom
Newbie
*
Offline Offline

Activity: 48
Merit: 0


View Profile
June 20, 2014, 02:11:43 PM
Last edit: June 20, 2014, 05:51:31 PM by hidedocscom
 #11

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.  Cheesy

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. Cheesy).

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í Cheesy

++ 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. Cheesy
Adriano
Moderator
Legendary
*
Offline Offline

Activity: 1285
Merit: 1085



View Profile
June 20, 2014, 04:50:44 PM
 #12

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

--
algorista (OP)
Hero Member
*****
Offline Offline

Activity: 882
Merit: 1000


It's got electrolytes


View Profile
June 20, 2014, 04:56:19 PM
 #13

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. Cheesy

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. Cheesy).

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í Cheesy

++ 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. Cheesy

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.


+---------=====[ Rm 12:21 ]=====---------+
algorista (OP)
Hero Member
*****
Offline Offline

Activity: 882
Merit: 1000


It's got electrolytes


View Profile
June 20, 2014, 05:02:02 PM
 #14

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.




+---------=====[ Rm 12:21 ]=====---------+
Parana
Sr. Member
****
Offline Offline

Activity: 378
Merit: 250

Step into a world!! A P2P world!


View Profile
June 22, 2014, 01:02:33 PM
 #15

Achei super interessante a ideia.

Vou acompanhar tbm.

Abçs

hidedocscom
Newbie
*
Offline Offline

Activity: 48
Merit: 0


View Profile
June 22, 2014, 02:28:55 PM
 #16

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 é?
algorista (OP)
Hero Member
*****
Offline Offline

Activity: 882
Merit: 1000


It's got electrolytes


View Profile
June 22, 2014, 05:14:19 PM
 #17

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.

+---------=====[ Rm 12:21 ]=====---------+
Parana
Sr. Member
****
Offline Offline

Activity: 378
Merit: 250

Step into a world!! A P2P world!


View Profile
June 22, 2014, 06:54:51 PM
 #18

...
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:



motaro
Member
**
Offline Offline

Activity: 86
Merit: 10


View Profile
June 23, 2014, 10:37:27 PM
 #19


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.
algorista (OP)
Hero Member
*****
Offline Offline

Activity: 882
Merit: 1000


It's got electrolytes


View Profile
June 23, 2014, 10:54:12 PM
 #20


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.

+---------=====[ Rm 12:21 ]=====---------+
Pages: [1] 2  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!