Pages:
Author

Topic: NinjaBets - Aposte nas olimpíadas de forma 'descentralizada' na testnet da ETH (Read 375 times)

legendary
Activity: 2352
Merit: 1121
☢️ alegotardo™️
Acho que o que você viu foi a transação mandando o LINK de pagamento para o endereço do oracle. Grin

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 Cheesy
Eu por exemplo que não entendo nada disso prefiro receber em ETH mesmo e converter o mais rápido possível para BTC
legendary
Activity: 2758
Merit: 6830
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. Grin

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.
legendary
Activity: 2352
Merit: 1121
☢️ alegotardo™️
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 Angry


-EDIT-

Desculpe, estou confundindo "Internal Transaction" com "Token Transfer".
legendary
Activity: 2758
Merit: 6830
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. Cheesy

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?
legendary
Activity: 2688
Merit: 2297
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.
legendary
Activity: 2758
Merit: 6830
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. Cool



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.
legendary
Activity: 1862
Merit: 5154
**In BTC since 2013**
São para essas coisas que serve a testnet.

@TryNinja... você também tem conhecimentos para desenvolver plataformas NFT?
legendary
Activity: 2688
Merit: 2297
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.
legendary
Activity: 2758
Merit: 6830
Acabou o jogo e é do Brasil. Cool

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

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

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

Cheesy
member
Activity: 97
Merit: 39
@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 Cool

Se tiver opção de apostar nos GP de F1, to dentro.(por enquanto pode ser ainda na testenet  Grin)
legendary
Activity: 2352
Merit: 1121
☢️ alegotardo™️
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 Cool
member
Activity: 97
Merit: 39
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  Undecided



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



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.
legendary
Activity: 2758
Merit: 6830
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.
member
Activity: 97
Merit: 39

acho que sei o que pode ser.



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

na kovan.etherscan.io mostra o saldo correto, deve ser algum zig no metamask.



hj mais tarde vou tentar de novo, vlw pela Força @sabotag3x e @TryNinja.
legendary
Activity: 2688
Merit: 2297
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




edit: também estou usando o Brave.
member
Activity: 97
Merit: 39
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á?



legendary
Activity: 2758
Merit: 6830
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á?
member
Activity: 97
Merit: 39
5) Coloca o montante que quer apostar e clica no time desejado:




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?
legendary
Activity: 2758
Merit: 6830
No aguardo: 0x7C0E59DcAE2045A433D4fFa2f7f6D76004d6fE0E  Grin Grin
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. Grin



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. Cool
legendary
Activity: 2688
Merit: 2297
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:




3) Seleciona a rede (testnet da Kuvan):




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




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




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





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
Pages:
Jump to: