Bitcoin Forum

Local => Criptomoedas Alternativas => Topic started by: TryNinja on July 31, 2021, 01:49:52 AM



Title: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on July 31, 2021, 01:49:52 AM
Tirei um tempinho para codar um contrato simples, baseado em Solidity, que utiliza a ChainLink para demonstrar o funcionamento de uma casa de apostas descentralizada.

Site UI: https://ninjabets.vercel.app
Contrato na testnet da Kovan: https://kovan.etherscan.io/address/0xC950039ABcB06e7bC331d986a3DB86cFF50A4472

Como apostar

É preciso ter um pouco de ETH na testnet da Kovan para pagar as transações e fazer as apostas. Existem faucets que te dão um troquinho, e.g: https://app.mycrypto.com/faucet (ou sinta-se livre para postar seu endereço, e eu mesmo mando um pouco).

Como não desenvolvi nenhuma interface, os processos devem ser feitos pela interface da Etherscan.

Com o ETH em mãos, vá para a página do contrato na Etherscan (link acima) e clique na aba "Write Contract". A função payBet pode ser chamada passando o valor em ETH da aposta no primeiro campo, o id do jogo no _gameId e o id do time (1 ou 2) no _team. Depois é só clicar em Write e confirmar a transação.

Como recuperar o premio

Após o termino do jogo, você pode chamar a função claimRewards passando o mesmo _gameId. A recompensa é calculada baseada na proporção do valor apostado no time vencedor relativo ao resto do pote, dividida pelo total apostado no time perdedor + aposta inicial. E claro que você precisa ter apostado no time vencedor para fazer isso.

O id do jogo em andamento e a quantidade apostada (de todo o jogo e por jogador) podem ser vistos na aba "Read Contract", fazendo um query nas funções getTotalBets(_gameId) e getUserBets(_gameId, _user).

Código do contrato

O código pode ser visto na mesma página da Etherscan, na aba "Contract": https://kovan.etherscan.io/address/0xC950039ABcB06e7bC331d986a3DB86cFF50A4472#code

Limitações

1. Para simplificar todo o processo, programei o contrato para aceitar apostas em apenas 2 times (por partida).

2. Ele é descentralizado no papel, mas eu controlo a API que desenvolvi para o projeto (também para simplificar o processo). Ou seja, eu que coloco no sistema quem ganhou. Em um caso realmente descentralizado, poderiamos utilizar várias APIs de provedores diferentes e comparar seus resultados. API utilizada: https://ninjabets.ninjastic.space/games/idDoJogo

3. Eu, o operador do contrato, sou o único que posso definir novos jogos e chamar o oracle da ChainLink para pegar o resultado (para fins de demonstração). Em um caso descentralizado, poderiamos dar uma recompensa leve para quem chamasse as funções no momento certo (para incentivar o desenvolvimento de bots que fizessem essa manutenção). Um exemplo que utiliza desse formato é a Aave e Compound, onde qualquer um pode criar um bot "liquidador" para liquidar empréstimos que caem abaixo de um certo nível de colateral (ficando com uma % da recompensa).



E aí, quem topa uma aposta?  8)

Manda o endereço que eu passo uns ETH e a gente marca um jogo.

edit: atualizado com novo contrato


Title: Re: NinjaBets - Aposte nas olimpíadas de forma descentralizada na testnet da ETH
Post by: TryNinja on July 31, 2021, 01:50:03 AM
O processo por trás da tela

1. Eu, o operador, defino um novo jogo: setGames(1, "Bitcoin", "Bitcoin Cash")
https://kovan.etherscan.io/tx/0xbe05a1b1211fb67fcb678b5bb62226fc6f25cf6bef6215540ab97729226c60fe

2. O jogador 1 aposta no time 1 (Bitcoin), enviando 0.001 ETH enquanto chama a função: payBet(1, 1)
https://kovan.etherscan.io/tx/0x5c050b40cb38c6bec23ef3e72c8578c2682e91935f027fe6c68cc8fdb27f8f65

3. O jogador 2 aposta no time 2 (Bitcoin Cash), enviando 0.005 ETH enquanto chama a função: payBet(1, 2)
https://kovan.etherscan.io/tx/0x6fa8aa8505742bc3fecdf33b7e401010960a40fc9869f144c23806f2d1b42daf

4. Eu, operador, fecho as apostas para o jogo de id 1: finishCurrentGame(1)
https://kovan.etherscan.io/tx/0x555c3f8b3f5fac8239d49f884fc03f503798e1a4a6ab1e5dd20729fdc31a3fd5

5. Eu, operador, aguardo o termino do jogo e chamo a função: requestGameResult(1).
https://kovan.etherscan.io/tx/0x71b7007333644cb99b03729d81086daf0b6d1ca8b542d50c81c64dcb3261b272

6. Essa mesma função faz uma chamada ao contrato da Chainlink na rede testnet da Kovan, passando o endereço da api (https://ninjabets.ninjastic.space/games/1), o dado requisitado (winner) e a função callback (fulfillOracleRequest) para ser chamada com o resultado.

Code:
{
  "id": 1,
  "title": "Qual o verdadeiro Bitcoin?",
  "team1": "Bitcoin",
  "team2": "Bitcoin Cash",
  "winner": 1
}

7. Após pegar o resultado, o node da ChanLink chama a função de callback fulfillOracleRequest passando o resultado do campo "winner", trazido da API. https://kovan.etherscan.io/tx/0x0c3c20a513da5c9398b8dd0776acb90575794326413327ad99959669d1c174c3

8. O jogador 1, que apostou no time vencedor (1 = Bitcoin), chama a função: claimRewards(1), onde ele recebe 0.06 ETH (aposta inicial de 0.01 + 0.05 do perdedor no time 2).
https://kovan.etherscan.io/tx/0x1c68a16e519433d9c427fbc9d5d3af1161a1e874bc01caa473d65b0801dc9286

Fim. :)


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: bitmover on July 31, 2021, 03:43:06 PM
Boa, pegou minha sugestão de apostas da olimpíadas.

Mas pelo q eu entendi você não usa o api dos resultados dos jogos olímpicos. Daria para fazer isso usando um api real?

Eu die uma olhada e achei essa api aqui
https://olympicsapi.docs.apiary.io/


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on July 31, 2021, 08:33:23 PM
Mas pelo q eu entendi você não usa o api dos resultados dos jogos olímpicos. Daria para fazer isso usando um api real?
A blockchain não se importa, qualquer API pode ser utilizada. Por isso foi utilizado uma API fake demonstrativa.

Eu die uma olhada e achei essa api aqui
https://olympicsapi.docs.apiary.io/
Não tem os resultados.


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 01, 2021, 10:05:37 PM
Ninguém vai uma aposta? 8)

@bitmover, encontrei isso hoje, por acaso:

This is why we’ve chosen to integrate with Chainlink. The amazing folks at Chainlink Labs have worked tirelessly to help us not only secure our current supported assets with Chainlink Price Feeds but also incorporate something new for on-chain data feeds…
Thales goes to the 2021 Olympic Games!

As Thales smart contracts are well-suited to support sports markets, we wanted this MVP release to be something special, so we decided to include some trial Olympics sports markets for everyone to feel part of this ancient macro-event tradition.

https://thales.market/markets#olympics


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: pjvperes on August 02, 2021, 02:10:32 PM
@TryNinja Parabéns, ficou muito top mano. Queria aprender também a codar esses smartcontracts com ChainLink usando Solidity, como aprendeu? Me recomenda uns conteúdos aí kkkkkkkkkkkkkk

OBS: não sei nada de programação.


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 02, 2021, 07:55:37 PM
@TryNinja Parabéns, ficou muito top mano. Queria aprender também a codar esses smartcontracts com ChainLink usando Solidity, como aprendeu? Me recomenda uns conteúdos aí kkkkkkkkkkkkkk
Valeu. Eu já tinha um background como programador JavaScript, então não foi tão dificil. Aprendi tentando ler contratos de farms na ETH/BSC para não ser roubado e depois me aprofundei aqui e ali. Se quiser começar, recomendo esse site para achar bons recursos: https://cryptodevhub.io/wiki

Também recomendo o CryptoZombies, que curti demais: https://cryptozombies.io

Como você não sabe programação, pode ser interessante começar com JavaScript e desenvolvimento web, também.



Depois de aprender Solidity, é só saber ler os docs da Chainlink ou qualquer lib que queira usar. https://docs.chain.link


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: joker_josue on August 02, 2021, 11:35:13 PM
Também recomendo o CryptoZombies, que curti demais: https://cryptozombies.io

Este é muito interessante. Tenho de tirar um tempo para testar.
Dará sempre para aprender mais algumas coisas.
Boa dica.


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: sabotag3x on August 03, 2021, 08:27:05 AM
É preciso ter um pouco de ETH na testnet da Kovak

Kovan? Foi a mais perto que encontrei..

Se me mandar uns ETH eu aceito fazer uma aposta para testar o sistema, pode ser qualquer esporte, meu endereço: 0x2abe5d8Ad5199f1d5C40A7487AC8a6464d15BE03


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 03, 2021, 09:07:08 AM
Kovan? Foi a mais perto que encontrei..

Se me mandar uns ETH eu aceito fazer uma aposta para testar o sistema, pode ser qualquer esporte, meu endereço: 0x2abe5d8Ad5199f1d5C40A7487AC8a6464d15BE03
Opa, esse mesmo. ;D

Já mandei 0.05 ETH: https://kovan.etherscan.io/tx/0xfae093c0ef9bac2e1b2b0947ffdaafa268da01fb5bf3db949e6907eb8ab153f7

Hoje, às 22:00 (hórario de Brasilia), temos as quartas de finais do volley de praia com Brasil vs Letônia: https://olympics.com/tokyo-2020/olympic-games/en/results/beach-volleyball/results-men-qfnl-000200-.htm

A partida de id 3 está aberta. Você pode conferir os seus dados na aba "Read Contract" na etherscan.

currentGameId:
Code:
3

games, passando o id 3:
Code:
team1   string :  Brasil
team2   string :  Letonia
winner   uint256 :  0
bettingClosed   bool :  false

E apostar na aba "Write Contract", passando o valor, _gameId de 3 e o _team (1 = Brasil ou 2 = Letonia).

Apostei 0.03 na Letonia. 8)
https://kovan.etherscan.io/tx/0x457c71008b63c1f8e7332a3a1dc8a55466a4a54899a3d040cf1af2226ea7ad71

O resultado será tirado da API: https://ninjabets.ninjastic.space/games/3



Mais alguem?


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: sabotag3x on August 03, 2021, 09:51:22 AM
Mais alguem?

Fiz duas apostas para testar, uma em cada equipe.. Pensei em apostar só na Letônia para testar o que o contrato faria (devolveria o valor apostado aos dois ou teria algum bug que somaria os 2 montantes de quem apostou na Letônia, dividiria por 2 e enviaria o valor errado :P)..

Bem fácil apostar pelo Etherscan, imagino que também deva ser fácil criar um frontend para ficar mais amigável ao usuário..


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 03, 2021, 11:12:52 AM
Fiz duas apostas para testar, uma em cada equipe.. Pensei em apostar só na Letônia para testar o que o contrato faria (devolveria o valor apostado aos dois ou teria algum bug que somaria os 2 montantes de quem apostou na Letônia, dividiria por 2 e enviaria o valor errado :P)..
Não é tão simples assim. :D

A formula é: [(userBet / totalWinnerBets) * totalLoserBets] + userBet

Ou seja, se você tiver 20% do total de apostas na Letônia e ela ganhar, vai receber seu inicial + 20% do pote do prêmio (apostas no Brasil).

imagino que também deva ser fácil criar um frontend para ficar mais amigável ao usuário..
Vamos ver... ::)


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: alegotardo on August 03, 2021, 08:03:20 PM
Mais alguem?

Opa, já que fizeram a frente eu vou participar também, não parece ser complicado... muito pelo contrário.
Minha wallet é 0x1D4abD8c5Bc50ceA64C3128914370781DA98C4d9 (https://etherscan.io/address/0x1D4abD8c5Bc50ceA64C3128914370781DA98C4d9)

[edit]
Tenho migalhas na wallet então sem o aporte financeiro não consigo apostar :P
Também vou ficar off daqui a pouco e não vou conseguir participar dessa aposta de hoje.

Qualquer coisa marcamos pra outro dia ;)


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 03, 2021, 09:53:06 PM
Tenho migalhas na wallet então sem o aporte financeiro não consigo apostar :P
Também vou ficar off daqui a pouco e não vou conseguir participar dessa aposta de hoje.
Mandei 0.04 ETH :)

https://kovan.etherscan.io/tx/0xb38e4eb45fbe4cc69c1117de0bb3bc6d67092d65808feecc58f50f074a7d7911

Seria legal uma aposta com várias pessoas diferentes, para testar o sistema por completo. :D


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: alegotardo on August 04, 2021, 01:34:33 AM
Tenho migalhas na wallet então sem o aporte financeiro não consigo apostar :P
Também vou ficar off daqui a pouco e não vou conseguir participar dessa aposta de hoje.
Mandei 0.04 ETH :)

https://kovan.etherscan.io/tx/0xb38e4eb45fbe4cc69c1117de0bb3bc6d67092d65808feecc58f50f074a7d7911

Seria legal uma aposta com várias pessoas diferentes, para testar o sistema por completo. :D

Desculpe, estou só no "mobile" agora e não sei como usar a etherscan aqui junto com minha Walker. até baixei o app da metamask mas não tenho ideia de como juntar ambos :-\


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: sabotag3x on August 04, 2021, 01:48:01 AM
Apostei 0.03 na Letonia. 8)

https://talkimg.com/images/2023/07/23/nFp23.png

:D :D


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 04, 2021, 02:27:25 AM
Complicado... ;D

Apostei logo na Letonia para "garantir" a sua vitória (queria que você desse o claim).



Resultado requisitado ao oracle: https://kovan.etherscan.io/tx/0x41c82d5132df6cb2ae5072c36639f63a8b562a491534d3439301a0e669b3e5ca

E premio recebido (0.065 ETH): https://kovan.etherscan.io/tx/0xf1c1a9ff7c0b0234d0d1d1f1023007334d4437b7d139ec757bbf1ee33069df0e

8)


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: sabotag3x on August 04, 2021, 02:54:32 AM
Apostei logo na Letonia para "garantir" a sua vitória (queria que você desse o claim).

Eu pensei que eu tinha apostado 0,025 no Brasil e 0,01 na Letônia, justamente para testar o claim porém olhando agora as minhas apostas de ontem, pelo visto fiz as duas apostas no Brasil :-\


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 04, 2021, 09:16:10 AM
Eu pensei que eu tinha apostado 0,025 no Brasil e 0,01 na Letônia, justamente para testar o claim porém olhando agora as minhas apostas de ontem, pelo visto fiz as duas apostas no Brasil :-\
Mais uma, então? Te mandei outros 0.05 ETH.

Fiz um novo deploy com algumas pequenas melhorias no código do contrato. E.g:

- data limite para as apostas
- qualquer um pode chamar a função requestGameResult()
- vários jogos/apostas podem rolar ao mesmo tempo

Novo contrato: https://kovan.etherscan.io/address/0xC950039ABcB06e7bC331d986a3DB86cFF50A4472

Dia 7 de Agosto, às 8:30 (horário de Brasilia), vai rolar Brasil vs Espanha pela medalha dourada. Dá tempo até do @alegotardo e, quem sabe, mais alguem participar. O id do jogo é 2 e as apostas vão até as 7:30 do mesmo dia (7 de Agosto).

Também criei uma interface simples, que pega os dados direto da blockchain, para facilitar as apostas. 8)

Lembrando que tem que conectar a carteira (e.g Metamask) na rede da Kovan, que já vem pre-configurada por padrão (só selecionar na tela da carteira).

https://ninjabets.vercel.app


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: alegotardo on August 04, 2021, 01:46:30 PM
Mandei 0.04 ETH :)
Primeiro eu pensei em fugir com o dindin, mas aí fiquei com medo de tomar RedTrust de um DT1, depois me lembrei que na verdade o depósito foi feito na testnet da Kovan... bem que desconfiei que o @TryNinja não fosse assim tão generoso.

Dia 7 de Agosto, às 8:30 (horário de Brasilia), vai rolar Brasil vs Espanha pela medalha dourada. Dá tempo até do @alegotardo e, quem sabe, mais alguem participar. O id do jogo é 2 e as apostas vão até as 7:30 do mesmo dia (7 de Agosto).

Que maravilha, consegui fazer as apostas, a primeira (https://kovan.etherscan.io/tx/0x785e3e551bf0154224f5e9c7ef0824ac4024d6dbbbc120ce5c099612fd2627ce) pela etherscan mesmo que foi tranquilo e uma segunda (https://kovan.etherscan.io/tx/0x25b65c6f7aa3b9828ab9fe8108e4f6d6ac1a2c02917f5020dcf6374c111902a9) pela interface que ficou muito bacana... intuitiva e fácil de mexer.

Ah, se eu ganhar o prêmio vou devolver apenas o valor não apostado, ok? :P


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: wallacegunner on August 04, 2021, 01:54:10 PM
Eu pensei que eu tinha apostado 0,025 no Brasil e 0,01 na Letônia, justamente para testar o claim porém olhando agora as minhas apostas de ontem, pelo visto fiz as duas apostas no Brasil :-\
Mais uma, então? Te mandei outros 0.05 ETH.

Fiz um novo deploy com algumas pequenas melhorias no código do contrato. E.g:

- data limite para as apostas
- qualquer um pode chamar a função requestGameResult()
- vários jogos/apostas podem rolar ao mesmo tempo

Novo contrato: https://kovan.etherscan.io/address/0xC950039ABcB06e7bC331d986a3DB86cFF50A4472

Dia 7 de Agosto, às 8:30 (horário de Brasilia), vai rolar Brasil vs Espanha pela medalha dourada. Dá tempo até do @alegotardo e, quem sabe, mais alguem participar. O id do jogo é 2 e as apostas vão até as 7:30 do mesmo dia (7 de Agosto).

Também criei uma interface simples, que pega os dados direto da blockchain, para facilitar as apostas. 8)

Lembrando que tem que conectar a carteira (e.g Metamask) na rede da Kovan, que já vem pre-configurada por padrão (só selecionar na tela da carteira).

https://ninjabets.vercel.app

No aguardo: 0x7C0E59DcAE2045A433D4fFa2f7f6D76004d6fE0E  ;D ;D


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: sabotag3x on August 04, 2021, 02:52:34 PM
Lembrando que tem que conectar a carteira (e.g Metamask) na rede da Kovan, que já vem pre-configurada por padrão (só selecionar na tela da carteira).

Vou postar um mini-tutorial, talvez o pessoal não esteja participando pois não saiba o quão fácil é..

1) você baixa a extensão Metamask: https://metamask.io/

2) Ai você cria uma carteira nova:

https://talkimg.com/images/2023/07/23/nF9YG.png


3) Seleciona a rede (testnet da Kuvan):

https://talkimg.com/images/2023/07/23/nFBiD.png


4) Clica em Connect no belo site que o @TryNinja fez e seleciona a carteira:

https://talkimg.com/images/2023/07/23/nFiwf.png


5) Coloca o montante que quer apostar e clica no time desejado:

https://talkimg.com/images/2023/07/23/nF8EZ.png


6) Depois é só confirmar a transação:

https://talkimg.com/images/2023/07/23/nFK48.png



Pelo método anterior (etherscan), é o mesmo processo porém você precisa(va) inserir os dados da aposta manualmente ao invés de apenas clicar.. o legal dessas apostas é que o site pode ficar offline por algum motivo e mesmo assim você consegue fazer a aposta por outro lugar..

Apostei no Brasil O0


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 04, 2021, 06:59:40 PM
No aguardo: 0x7C0E59DcAE2045A433D4fFa2f7f6D76004d6fE0E  ;D ;D
As faucets da Kovan parecem estar bem secas, mas consegui enviar 0.04

To gostando de ver várias apostas... espero que não tenha implementado um bug critico na nova versão do contrato. ;D



Primeiro eu pensei em fugir com o dindin, mas aí fiquei com medo de tomar RedTrust de um DT1, depois me lembrei que na verdade o depósito foi feito na testnet da Kovan... bem que desconfiei que o @TryNinja não fosse assim tão generoso.
Reportado. 8)


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: wallacegunner on August 05, 2021, 02:15:03 AM
5) Coloca o montante que quer apostar e clica no time desejado:

https://i.imgur.com/1JxbEu6.png


vou usar o mini-tutorial do @sabotag3x para avisar pro @TryNinja que depois que conecto o site com o metamask, não aparece as opções de aposta, mostra apenas o endereço e no balance fica só "Balance:ETH"

Obs¹.: os 0.04 já estão no metamask.
Obs².: to usando o Brave, e tbm tentei com o shields desativado.

alguma dica?


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 05, 2021, 02:22:38 AM
depois que conecto o site com o metamask, não aparece as opções de aposta, mostra apenas o endereço e no balance fica só "Balance:ETH"
Estranho, tem como abrir o console do navegador (inspecionar elemento) e ver se aparece algum erro lá?


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: wallacegunner on August 05, 2021, 02:27:51 AM
depois que conecto o site com o metamask, não aparece as opções de aposta, mostra apenas o endereço e no balance fica só "Balance:ETH"
Estranho, tem como abrir o console do navegador (inspecionar elemento) e ver se aparece algum erro lá?

https://i.postimg.cc/Vvs6dQ8f/image.png



Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: sabotag3x on August 05, 2021, 03:00:28 AM
alguma dica?

Tentei reproduzir o erro e não obtive resultado.. Tentei conectar em outra rede e depois logar, etc e nada desse erro..

Esses 3 erros do console também aparecem aqui..

Tenta pelo etherscan para ver se é problema no site ou no metamask: https://kovan.etherscan.io/address/0xC950039ABcB06e7bC331d986a3DB86cFF50A4472

https://talkimg.com/images/2023/07/23/nF7Cj.png


edit: também estou usando o Brave.


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: wallacegunner on August 05, 2021, 03:08:47 AM

acho que sei o que pode ser.

https://i.postimg.cc/SKw6npmb/image.png

tem o registro de 0.04, mas na parte de cima, ta zerado ainda.

na kovan.etherscan.io (https://kovan.etherscan.io/tx/0xfe8b2a8a685489e663b9ebec5713b69fb571b0b97ba96c9d368e88f50d5d916f) mostra o saldo correto, deve ser algum zig no metamask.

https://i.postimg.cc/vZChVnvK/image.png

hj mais tarde vou tentar de novo, vlw pela Força @sabotag3x e @TryNinja.


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 05, 2021, 10:11:33 AM
tem o registro de 0.04, mas na parte de cima, ta zerado ainda.
Parece ser problema no RPC que não está trazendo os dados. Tenta trocar a rede para a main e depois voltar novamente para a Kovan, ou só abrir e fechar o navegador.

Aproveitei e fiz alguns ajustes no site, que agora verifica se você ganhou a aposta e já mostra um botão de claim com o valor do prêmio.


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: wallacegunner on August 05, 2021, 01:33:10 PM
Tenta pelo etherscan para ver se é problema no site ou no metamask: https://kovan.etherscan.io/address/0xC950039ABcB06e7bC331d986a3DB86cFF50A4472

Parece ser problema no RPC que não está trazendo os dados. Tenta trocar a rede para a main e depois voltar novamente para a Kovan, ou só abrir e fechar o navegador.

ontem mesmo tinha feito isso, troquei de rede, e depois abrir o navegador só com o seu site, mas mesmo assim nada  :-\

https://i.postimg.cc/9FL9WBCv/image.png

Realmente parece algo na MetaMask, tentei pela etherscan, e só conectou a carteira depois de recarregar a pagina umas 3x.

Quando clico em "Write" não acontece nada.

No console do navegador mostra isso

https://i.postimg.cc/CxZ97m10/image.png

preenchi os campo desse forma.

payBet: 0.02
_gameId: 2
_team: tentei 1, 01, team1, tbm tentei 0, "Brasil" e Brasil (mesmo o campo sendo "numeric" eu tentei)

vou instalar a MetaMask em outro navegador e tentar de novo.


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: alegotardo on August 05, 2021, 06:12:52 PM
tem o registro de 0.04, mas na parte de cima, ta zerado ainda.
Parece ser problema no RPC que não está trazendo os dados. Tenta trocar a rede para a main e depois voltar novamente para a Kovan, ou só abrir e fechar o navegador.

Aproveitei e fiz alguns ajustes no site, que agora verifica se você ganhou a aposta e já mostra um botão de claim com o valor do prêmio.

Ótimo, aos poucos você vai aprimorando a interface.
Acho que seria interessante colocar links também que direcionam o usuário para a Etherscan, tanto nas apostas feitas pelo próprio usuário como também as apostas gerais ou o contrato do jogo em questão.

Mais pra frente quando tiver boas APIs para extrair os dados dos jogos com fontes confiáveis você cria um site de apostas profissional e começa a lucrar com isso.
Tá aí um excelente nicho de mercado para investir.... o primeiro site de apostas esportivas descentralizado 8)


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: wallacegunner on August 06, 2021, 12:25:40 PM
@TryNinja @sabotag3x

Deu certo usando o MSEdge, pelo Brave não deu certo de forma alguma ate agora, mesmo removendo o Metamask e instalando de novo.


Obrigado pela a todos pela ajuda.


Apostas Feitas.




Ótimo, aos poucos você vai aprimorando a interface.
Acho que seria interessante colocar links também que direcionam o usuário para a Etherscan, tanto nas apostas feitas pelo próprio usuário como também as apostas gerais ou o contrato do jogo em questão.

Mais pra frente quando tiver boas APIs para extrair os dados dos jogos com fontes confiáveis você cria um site de apostas profissional e começa a lucrar com isso.
Tá aí um excelente nicho de mercado para investir.... o primeiro site de apostas esportivas descentralizado 8)

Se tiver opção de apostar nos GP de F1, to dentro.(por enquanto pode ser ainda na testenet  ;D)


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 07, 2021, 03:03:04 PM
Acabou o jogo e é do Brasil. 8)

Tx callback da Chainlink: https://kovan.etherscan.io/tx/0x2d55a999666a9afb17bd60fdefb21db58d138acde8bedbb46adf26488826c294

Mas agora tenho uma pessima notícia para os apostadores. ;D

Dei claim no meu prêmio e me deparei com o valor errado. Fui debuggar e descobri algo que eu não tinha percebido antes.

Esse é o código que calcula o prêmio:

Code:
uint256 userInitialBets = games[_gameId].bets[winner][msg.sender].amount;

uint256 winnerPoolBets = games[_gameId].totalBets[winner];
uint256 loserPoolBets = games[_gameId].totalBets[winner == 1 ? 2 : 1];

uint256 prizeAmount = userInitialBets.div(winnerPoolBets).mul(loserPoolBets).add(userInitialBets);

Algo de errado ai? A principio, parece que não. Pega o valor do bet (0.00987), divide pela pool total de apostas no vencedor (0.05325), o que daria 0.185352113. Multiplica esse valor pela pool de apostas dos perdedores (0.04881) e dá 0.00904703664. Adiciona o valor apostado pelo usuário no time vencedor (0.00987).

Prêmio final de 0.00987 / 0.05325 * 0.04881 + 0.00987 = 0.0189170366!

https://kovan.etherscan.io/tx/0x9e6ce0b658c3dd86efd5b2989d6ffe59cfe7563610bf54e3f91d236c34e1f4cc

...mas o claim foi de 0.00987... por que?

A primeira divisão (0.00987 / 0.05325) retorna 0.18, que é um número abaixo de 1. Acontece que a solidity arredonda o número para zero...

Code:
/**
    * @dev Returns the integer division of two unsigned integers. Reverts on
    * division by zero. The result is rounded towards zero.
    *
    * Counterpart to Solidity's `/` operator. Note: this function uses a
    * `revert` opcode (which leaves remaining gas untouched) while Solidity
    * uses an invalid opcode to revert (consuming all remaining gas).
    *
    * Requirements:
    * - The divisor cannot be zero.
    */
function div(uint256 a, uint256 b) internal pure returns (uint256) {
    return div(a, b, "SafeMath: division by zero");
}

No final das contas, a matemática fica: 0 * 0.04881 + 0.00987 = 0.00987

A solução seria primeiro multiplicar o valor para depois dividir.

#rugDoNinjabets
#rektnews

:D


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: sabotag3x on August 07, 2021, 03:49:49 PM
A primeira divisão (0.00987 / 0.05325) retorna 0.18, que é um número abaixo de zero.

Como assim abaixo de zero? 0.18 > 0

Abaixo de 1?

#rugDoNinjabets
#rektnews

Flag criada.


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: joker_josue on August 07, 2021, 04:20:57 PM
São para essas coisas que serve a testnet.

@TryNinja... você também tem conhecimentos para desenvolver plataformas NFT?


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 07, 2021, 04:31:46 PM
Como assim abaixo de zero? 0.18 > 0
Meu pensamento na hora foi:

Números para a direita -> menor.

- 0
- 0.18 = mais números para a direita > abaixo de zero.

Ainda bem que eu vivo de crypto. 8)



você também tem conhecimentos para desenvolver plataformas NFT?
Ter eu não tenho, mas também não tinha o conhecimento de como implementar o chainlink (de forma prática) em um smartcontract.


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: sabotag3x on August 07, 2021, 07:04:10 PM
Dei o claim reward aqui e recebi a aposta de volta, ao menos deu pra testar essa parte do sistema..

Não sei o quanto você está comprometido com o design do site, se for muito então seria legal trocar o "Claim 0,00 ETH" por "já resgatado" após o usuário receber o seu prêmio.


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 07, 2021, 07:44:53 PM
Não sei o quanto você está comprometido com o design do site, se for muito então seria legal trocar o "Claim 0,00 ETH" por "já resgatado" após o usuário receber o seu prêmio.
Era a ideia mas esqueci de expor uma função que retorna se o usuário já deu claim. :D

Estou vendo se consigo integrar uma API que achei, que retorna dados de jogos reais. Também estou pensando em implementar apostas em mais de 2 times/jogadores.

Mas alguem tem alguma sugestão para o NinjaBets v3?


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: alegotardo on August 09, 2021, 01:15:49 PM
Eu fiz o Claim...
Já furioso em não ter recebido a minha parte dos lucros (só o valor apostado e descontado as as taxas), aí pra completar ainda recebi o valor em um token.
Eu paguei em ETH e recebi de volta em ShitToken, é isso mesmo?

Flag criada.

Aonde? Quero apoiar mas não achei >:(


-EDIT-

Desculpe, estou confundindo "Internal Transaction" com "Token Transfer".


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: TryNinja on August 09, 2021, 02:01:49 PM
Desculpe, estou confundindo "Internal Transaction" com "Token Transfer".
Acho que o que você viu foi a transação mandando o LINK de pagamento para o endereço do oracle. ;D

Mas eu realmente estava pensando em criar um $NINJA e distribuir ele como parte do prêmio. Ainda dava para brincar mais um pouco e criar um contrato de staking onde você poderia lockar o $NINJA e receber uma parte dos lucros da plataforma.


Title: Re: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH
Post by: alegotardo on August 09, 2021, 05:14:30 PM
Acho que o que você viu foi a transação mandando o LINK de pagamento para o endereço do oracle. ;D

Então, eu vi que na verdade tem uma transação output de taxas e uma transação input na aba Internal Txns, esse segundo achei que era um token quando bati o olho pela primeira vez.

Mas eu realmente estava pensando em criar um $NINJA e distribuir ele como parte do prêmio. Ainda dava para brincar mais um pouco e criar um contrato de staking onde você poderia lockar o $NINJA e receber uma parte dos lucros da plataforma.

Até que é interessante, mas aí os anti Defi são capaz de chamar de pirâmide :D
Eu por exemplo que não entendo nada disso prefiro receber em ETH mesmo e converter o mais rápido possível para BTC