I have a multiple lock-guess game with many Lockers and many Guess'ers. I initiate each lockers and guessers with:
lockcid <- Simulator.activateContract (Wallet 1) Lock
lockcid2 <- Simulator.activateContract (Wallet 2) Lock
after Wallet1 lock some amount:
callEndpointOnInstance cid "lock" LockParams{secretWord="world", amount= Ada.adaValueOf 200}
Now te guesser has to address the specific lock with a extra parameter besides the guess word, which is the identifier of the Lock contract, the cid, which is of type ContractInstanceId:
callEndpointOnInstance guesscid "lock" GuessParams{guessWord="world",gameId=lockcid}
But the guess verb in the contract, [which is a sligh modification of the standard guess game](https://github.com/agocorona/DAppFlow/blob/main/ContractExample/GuessGameIndexed.hs#:~:text=utxos%20%3C-%20fundsAtAddressGeq%20%20%20cid%20(Ada.lovelaceValueOf%201)
expect an Address:
utxos <- fundsAtAddressGeq xxxxherexxxx (Ada.lovelaceValueOf 1)
How I can solve this?
ADDED:
Ok there is no evident direct relation because my game address depend on the hash of the user following the plutus pioneer program example Plutus Pioneer Program - Iteration #2 - Lecture #3 parameterized contracts. Alternatively I can make it depend on the contractInstance directly, instead of the user hash.That would be even more flexible since a single user could make more than one lock.
For the latter, I would need to pass explicity the contract instance to lock and guess
Or alternatively, in lock, extract the own contract instance from some magic primitive.
ADDED 2:
Since PubKeyHashes or ContractInstanceIds between off-chain and on-chain code is not possible (makeLift complains about that) I used an Integer as parameter of the on-chain script to differentiate between different Locks. And that works.