Então, como eu havia mencionado em um outro post, ao ver a movimentação que o
Sorteio de Ano Novo 2019/2020 gerou no fórum, seguido pelos sorteios com participação gratuita que surgiram na sequência (
1° Sorteio Grátis de BTC da aba portuguesa,
2° Sorteio Grátis de BTC da aba portuguesa [Patrocinado por TryNinja] e
3° Sorteio Grátis de BTC da aba portuguesa) eu fiquei a fim de bolar algo mais frequente e que o incentivo a participar aumente com o tempo.
A ideia é termos sorteios com certa frequência em datas especiais (Carnaval, Páscoa, Natal, Ano Novo, Bitcoin Halvening, etc). É ao mesmo tempo uma brincadeira e uma forma de estimular o uso de bitcoins (se você é holder raiz, pode recomprar seus bitcoins imediatamente após fazer uma aposta para evitar a
Síndrome da Pizza)
Para quem não quer ler os detalhes, a proposta é um sorteio semelhante à megasena, quina, etc... mas onde todo o processo pode ser verificado externamente (desde a quantidade de apostas, até a seleção dos números de cada aposta e do sorteio)
Abaixo listei as regras básicas e alguns exemplos de como vai funcionar. Me reservo no direito de fazer alterações nas mesmas conforme formos tendo novos concursos para corrigir eventuais distorções.
Como funciona- Cada ticket custa 0.0001 BTC (~ R$ 4.50)
- Inicialmente os sorteios serão esporádicos, o bloco a ser utilizado para o sorteio será amplamente divulgado via tópico qui no bitcointalk (embora qualquer pessoa possa participar)
- Caso sejam gerados mais de um bloco com o mesmo número, os blocos orfãos não são considerados
- Participam do sorteio todas as transações enviadas ao endereço do sorteio com ao menos 3 confirmações no momento do sorteio
- Múltiplas apostas podem ser realizadas através de uma única transação, bastando enviar um valor múltiplo do preço de um ticket
- Os prêmios serão pagos ao endereço que enviou a transação, e no caso de múltiplos endereços, um aleatório será escolhido dentre os utilizados
- O valor recebido será dividido pelo preço de um ticket e arredondado para o inteiro anterior para definir o número de tickets a ser gerado. Eventuais sobras serão consideradas doações ao pote do sorteio
- 49% do valor acumulado no endereço do sorteio será utilizado para prêmios da seguinte maneira, sempre arredondado para o satoshi anterior:
- 28% dividido entre os tickets que acertaram 4 números;
- 14% dividido entre os tickets que acertaram 3 números;
- 7% dividido entre os tickets que acertaram 2 números;
- O restante (51%) fica acumulado para os próximos sorteios.
- Inicialmente, tickets que não recebam nenhum prêmio participarão automaticamente do próximo sorteio para incentivar a adesão enquanto não temos um pote volumoso
SorteioPara cada sorteio será definido um bloco cujo hash será utilizado em conjunto com uma sequência de caracteres aleatórios para gerar 4 números entre 0 e 31.
Os caracteres aleatórios serão gerados previamente e o hash dos mesmos será publicado para que possa ser validado que os caracteres não foram alterados após a geração do bloco.
Havendo mais de um ganhador em cada faixa de prêmio, o total da faixa será dividido igualmente entre todos os ganhadores e o valor será arredondado para o satoshi anterior (por exemplo, um prêmio de 0.01 BTC dividido entre 3 acertadores pagaria 0.00333333 e sobraria 1 satoshi que permaneceria no pote para o próximo concurso
TicketsO valor recebido em cada transação será utilizado para calcular quantos tickets serão gerados. Para isso divide-se o valor recebido pelo preço de um ticket, arredondando para o inteiro anterior. Para cada ticket serão gerados 4 números aleatórios entre 0 e 31 utilizando-se o hash da transação e do bloco em que a transação foi confirmada. Tickets adicionais da mesma transação utilizam um digito adicional quando da geração do hash, efetivamente gerando uma nova combinação aleatória.
Prêmios e probabilidadesComo dito anteriormente, teremos 3 categorias de prêmios:
1º Prêmio: 4 Acertos (1 chance em 35960)
2º Prêmio: 3 Acertos (1 chance em 321.07)
3º Prêmio: 2 Acertos (1 chance em 15.86)
Adicionalmente, para os primeiros sorteios, os tickets que não receberem nenhum prêmio serão válidos para o próximo concurso. Minha ideia é que após o pote ester com um valor que incentive maior participação, esse incentivo deixe de existir mas seja adicionado algo parecido para quem acertar apenas um número (1 chance em 2.74). Isso deixaria apenas 1 chance em 1.76 de não receber nenhum prêmio.
O que ainda não é possívelPara garantir que todo o processo seja verificável, não é possível:
- Escolher os números para o ticket
- Fazer pagamentos ou receber o prêmio via lightning
- Receber o prêmio em outro endereço que não o endereço que originou a transação
Isso pode mudar no futuro, dependendo de qual popular o sorteio fique e de haver uma solução para deixar o processo transparente e verificável. Isso poderia criar mecanismos para evitar/diminuir os custos de transação
Dúvidas / Questões em aberto- É melhor acumular os prêmios individualmente em cada faixa ou manter um pote único?
- O que deve ser feito caso não hajam acertadores em uma faixa de prêmio? Uma opção é acumular esse valor para o próximo sorteio; outra alternativa é distribuir esse prêmio na faixa seguinte (por exemplo, ninguém acerta os 4 números então os acertadores de 3 números vão dividir a soma das duas faixas de premiação)
- O que acontece com o pote se por qualquer motivo os sorteios não puderem continuar? Vejo duas alternativas, mas quero ouvir outras opiniões: 1) Doar para uma instituição de caridade; 2) Fazer um último sorteio entre todos os tickets não premiados de todos os sorteios;
Em caso de ProblemasCaso hajam problemas ou situações não previstas nas regras, vou procurar resolver da melhor maneira possível buscando a mediação em conjunto com 2 outros membros da comunidade. Ainda não vou citar nomes porque não falei com ninguém a respeito, mas para o momento da abertura das apostas já devo ter os nomes (aceito sugestões também)
Exemplo PráticoFiz a geração dos números de sorteio para os primeiros 41087 blocos, cada um com uma sequência de caracteres diferente adicionada ao hash do bloco para o cálculo aleatório dos números. O objetivo é confirmar que os números realmente sequem uma distribuição aleatória e sem vícios. Caso alguém tenha interesse em ver esse conjunto de dados de exemplo, está disponível no seguinte link:
https://www.dropbox.com/s/a7s4jt7t1qiumkg/Simulado.xlsx?dl=0Além disso, simulei como teria sido o sorteio do nosso
Sorteio de Ano Novo 2019/2020 com essa metodologia:
Bloco: 610573 / 0000000000000000000f5459497937b8fcde43c2b55979fc06cfa19173909b7e
Transação: 425f3593a870f61be2b79db64d6663dfe5a44d4aee4bd0efd2a1a84b6793402a
Endereços de Origem:
['bc1q8fwaqx8pnxl4ack0mu3ecg6056c2gkxkaawzu4']
Ticket(s):
[3, 18, 19, 2]
Bloco: 610050 / 000000000000000000025c200a9ca463b894ec37dad7f60bb0a2c15ca1cc2bdf
Transação: e0e55b0f8242fccdcf54f8c5ba91fa2d14ef730f562c87ec98fc0dd3b0e146f7
Endereços de Origem:
['3F9jFHT9uyHuEffX2g8Ffhi8icqg5iXtae']
Ticket(s):
[28, 25, 6, 11]
[16, 24, 12, 23]
[23, 29, 8, 18]
[28, 10, 13, 12]
[16, 12, 4, 27]
Bloco: 609630 / 000000000000000000023f616587d98d2516b47a44d3fb56a6c0bbf479a4dbf8
Transação: a518b2a8c2049c7e1b7b18d888fcf758df1d1887079eabf687bd548c98127681
Endereços de Origem:
['bc1q6tv2wqvxm3rfk2zfugjqdae5skqdkraduzyzqy']
Ticket(s):
[30, 9, 26, 3]
[18, 17, 11, 31]
[24, 17, 11, 8]
Bloco: 608698 / 0000000000000000000ba762ad0c88a0ff0a7c9ea00c32ef37f6cdfb8ae84bdd
Transação: 1cab617fa2d72bdf3776b539cf9f25c23864e115987237672aefbd4baf948b1a
Endereços de Origem:
['bc1q9yfe07gfytzf200qqg6cm3wkugdmts6tj4myhc', 'bc1q9yfe07gfytzf200qqg6cm3wkugdmts6tj4myhc']
Ticket(s):
[13, 3, 7, 26]
Bloco: 608667 / 0000000000000000000461c85bb0c9bf1de9696f6032e7b4d5d75fee850854c3
Transação: c338bcf54fffd50c68c74f201ca16a0cc700d69841279b8bff5845c7a4e978e5
Endereços de Origem:
['13ndRYqndUZ4kvinHvbrz1J9U58xZAqbgA']
Ticket(s):
[7, 1, 15, 2]
Bloco: 608643 / 00000000000000000000c0850ae63b3f3eacf061edccf2c36d2e2a8eee2aaa72
Transação: be733e0698203da0585714eb479a757ca68dce2d89e8a8d599b54c0206173fdf
Endereços de Origem:
['1KC9TsU66VpjF9Xh89g2aaKZ9nXJRs9ZHn']
Ticket(s):
[16, 0, 23, 5]
[7, 27, 10, 8]
[21, 6, 8, 18]
[22, 8, 11, 12]
[24, 30, 22, 17]
[28, 9, 13, 7]
[10, 16, 27, 4]
[22, 24, 15, 17]
[30, 25, 2, 12]
[13, 19, 20, 24]
Bloco: 608637 / 000000000000000000054faed5985e33f3281604547ad22bd035785ca8ec20d8
Transação: caf02fb319e38b7d6bceafcda0e6f8720ebf8dcd14a1f2632fcd7baddf85a1b1
Endereços de Origem:
['bc1qek0j0zhmcehxeg0f6cs0vh8x9pw7u9qg7mus3r', '1NDyJtNTjmwk5xPNhjgAMu4HDHigtobu1s', '1NDyJtNTjmwk5xPNhjgAMu4HDHigtobu1s', 'bc1qsn9mahxq3h4d8euqqff4mkf46kgx93tw9nyvmv', '1NDyJtNTjmwk5xPNhjgAMu4HDHigtobu1s']
Ticket(s):
[21, 29, 8, 26]
[10, 25, 4, 31]
E para o sorteio, a string aleatória era 4b95d84c-f41f-4eea-9f49-e7d147d4fb59 (um hash dessa string seria publicado no momento da abertura das apostas para permitir a confirmação de que a sequência não foi alterada após a geração do bloco) e o resultado teria sido o seguinte:
Bloco: 610614 / 0000000000000000000465da70a3247e619e478ae45bf048e33a03a09a0f8dc2
String Aleatória: 4b95d84c-f41f-4eea-9f49-e7d147d4fb59
Resultado: [24, 10, 28, 12]
Os acertos teriam sido:
4 acertos: Nenhum
3 acertos: 1 ticket (txid e0e55b0f8242fccdcf54f8c5ba91fa2d14ef730f562c87ec98fc0dd3b0e146f7 com os números 28, 10, 13, 12)
2 acertos: 1 ticket (txid e0e55b0f8242fccdcf54f8c5ba91fa2d14ef730f562c87ec98fc0dd3b0e146f7 com os números 16, 24, 12, 23)
1 acerto: 13 tickets
0 acertos: 8 tickets
Próximos PassosEu gostaria de ouvir as opiniões dos interessados. Sei que parece um pouco confuso, mas escrevi meio correndo e vou atualizar o post após uma revisão e de acordo com os comentários.
Vou criar também um outro post no fórum de discussões técnicas para explicar em detalhes o algoritmo utilizado na loteria, assim como fornecer um código que pode ser utilizado para validar cada sorteio
Assim que o formato estiver definido, definimos a data do primeiro sorteio e abrimos as apostas (com sorte conseguimos fazer um para o Carnaval)
Abraço,
Adriano