0xFable icon indicating copy to clipboard operation
0xFable copied to clipboard

Unable to join game

Open eviterin opened this issue 1 year ago • 10 comments

Issue: Player is unable to join a new game.

Build: 5080439

Steps to reproduce:

  1. clone fresh
  2. run make setup, make anvil, make webdev, make deploy, make circuits
  3. navigate to http://localhost:3000/?index=1 and mint deck
  4. navigate to http://localhost:3000/?index=2 and mint deck
  5. from index=1: create game (game index = 1)
  6. from index=2: join game (game index = 1)

Expected: Player 2 can join game of player 1.

Reality: Modal displays the following error message: "SyntaxError: Cannot convert #bigint.20826557750498812955920791981733214788339539821236692591183101691377953231916 to a BigInt"

eviterin avatar Mar 15 '24 18:03 eviterin

Just found this and have not had the time yet to investigate.

eviterin avatar Mar 15 '24 18:03 eviterin

Console points to contract: setting error modal: {"title":"Contract execution error","message":"SyntaxError: Cannot convert #bigint.20826557750498812955920791981733214788339539821236692591183101691377953231916 to a BigInt","buttons":[{"text":"Dismiss"}]}

eviterin avatar Mar 15 '24 18:03 eviterin

Hhm, so the error message points at the serialization we use to persist bigints in the browser storage. It seems like the string representing the bigint is not parsed correctly and is being fed directly to the contract instead of a bigint.

We override the JSON.stringify and JSON.parse logic in the setup.ts file.

I think we should try to pinpoint in which scenarios this happens. Clearly it doesn't happen if we don't mint and use users 0 and 1, right?

The standard deployment script should mint decks to index 0 and index 1, so I'm already surprised you manage to mint a deck to index 1? Okay lmao, we never set the claimed flag here: https://github.com/0xFableOrg/0xFable/blob/master/packages/contracts/src/DeckAirdrop.sol — that shouldn't be causing this issue though, but worth trying anyway.

Can you pinpoint the transaction in which this happens? joinGame, or drawInitialHand (you should be able to tell by the changing modal text, if not by the console). Mostly likely it's joinGame and the culprit is the gameID ... not sure what could have changed to make that into a parsed string though... so maybe not.

Good debugging exercise in perspective :D

norswap avatar Mar 20 '24 03:03 norswap

The culprit here is the saltHash param in the doJoinGameTransaction. The function expects a bigint but is being fed a string, from PrivateInfo.saltHash.

Screenshot 2024-03-21 at 8 52 54 PM

ultraviolet10 avatar Mar 21 '24 15:03 ultraviolet10

Hey @ShantelPeters! Thanks for showing interest. We've created an application for you to contribute to 0xFable. Go check it out on OnlyDust!

onlydustapp[bot] avatar Aug 23 '24 03:08 onlydustapp[bot]

Hey Shantel, we have a pretty good idea of how to fix this, but 0xFable's development is currently paused!

norswap avatar Aug 23 '24 23:08 norswap

Could I take a shot at this?

Verifieddanny avatar Feb 05 '25 13:02 Verifieddanny

Hi, I'm Hilary, a full-stack Web Developer and I will like to take on this issue.

ETA - 2 days

laryhills avatar Feb 10 '25 13:02 laryhills

Let me try this one!

Elite-tch avatar Feb 13 '25 06:02 Elite-tch

I'd love to work on this! ETA: 24Hrs telegram: kellmusk

kelly-musk avatar Feb 15 '25 22:02 kelly-musk