Skip to content

Conversation

@Jovian-Dsouza
Copy link

feat: add prisoners dilemma

Game Rules

The game is a classic test of trust and strategy between two players.

  • The Stake: Both players stake an equal amount of cryptocurrency to enter the game. This creates a shared pot.
  • The Choice: Each player secretly chooses to either "Split" the pot or "Steal" the pot.

The Outcomes:

  • If both players choose to Split, they cooperate, and each gets their original stake back.
  • If one player Splits and the other Steals, the defector (the one who chose "Steal") takes the entire pot, and the cooperator gets nothing.
  • If both players choose to Steal, they betray each other, and both lose their stake. The pot can be sent to a treasury or burned.

logs

  PrisonerDilemma
Initializing init_game computation definition
Comp def PDA for init_game: Eg2U3Gzgb3yyNV42U7GjqFo8G8WhZSobBohyyZW2g9ER
Init init_game computation definition transaction 5CcyKBgN9MvwVzUAdyGa8nhGnDs1trc3suUKxYTrNg4YmzoGw6QwbsAXJayWWH4iAxhtdF6ALFX8nYLVdZAVi5SC
Init game computation definition initialized with signature 5CcyKBgN9MvwVzUAdyGa8nhGnDs1trc3suUKxYTrNg4YmzoGw6QwbsAXJayWWH4iAxhtdF6ALFX8nYLVdZAVi5SC
Initializing player_move computation definition
Comp def PDA for player_move: 9qxpGQgLACqvUk97PG1QxnoqBz9iwpcFe2nCzFb2WgEh
Init player_move computation definition transaction 5f6ant81rP8wUEn1HawpqrYm1PNUWsnrLWSyYm2vQhrnS6CfwnSNPBudXJHtFpEREXDMgkZvvkNBUFKhsDXVKvz
Player move computation definition initialized with signature 5f6ant81rP8wUEn1HawpqrYm1PNUWsnrLWSyYm2vQhrnS6CfwnSNPBudXJHtFpEREXDMgkZvvkNBUFKhsDXVKvz
Initializing compare_moves computation definition
Comp def PDA for compare_moves: 2Q6qzEZom67f9d34VcZjW4ENaRfQ6WeS8GX9P5r15bnC
Init compare_moves computation definition transaction 3pdd5xVtMEvRg5Mhj6e7cVkczJem1eqe6WmN7PcBo2FNq5sV5wMTqBeSCnp76F686ob57C5ojt63FxAZuGcexzGW
Compare moves computation definition initialized with signature 3pdd5xVtMEvRg5Mhj6e7cVkczJem1eqe6WmN7PcBo2FNq5sV5wMTqBeSCnp76F686ob57C5ojt63FxAZuGcexzGW

--- Playing a complete game with two players ---
Initializing a new game
Game initialized with signature: 4MUYztwCXjFJhZb8JhVH3othy39NDNNjiCnupzmNFDb9VMWoEoJwf2iGkaYFyzzvJWzXui9wUpTHK5G8TAPJRvyR
Init game finalize signature: 5w57QBFfCS5zQigvAHE5JqSN8pebYh4ZiGS2rx9pnHPQFJwB5YwB7D7rqijBA7AFxKhhm79JPTM3wboh6M1PR9Kz
Airdropping funds to Player A
Funds airdropped to Player A
Player A making a move (split)
Player A move signature: w647rXKNpVkknowKYm2oRRkQ7QftMdhzrcsEsxuRyk11QH43PULVDTGJ8NED4SLLnGjjRbTcTfBv1bwdQHbQPoH
Player A move finalize signature: 5xrrgJYot9Fx4Fsx6TAKsVERinF8nQz2Ub1KzQULDiS3LM12Kn9z8pJpxuE1PTFXVS8QxAkTi1WSoBebej1tEfeF
Airdropping funds to Player B
Funds airdropped to Player B
Player B making a move (Steal)
Player B move signature: 4vec4uTo72C3ysoPPj3Winfrae8ckhj6XzuqZ38DcGmvbAAbXRvofD5b6FwGCXkCPzCTCZS3RcKASVhp66r7fcZp
Player B move finalize signature: 3Jon7ER2iYXRq4qB1DQz9TKoDBc2kMmrC2oeMbuTCy6VS4qJudZCDmuWZrjg1BkEF7YAmxkNMcG62QUdy9ZdzZBQ
Comparing moves
Finalize signature: 43vk4b2Uzb1dJD3GQyBo6uW1erbUsbn8U3Tssg9W2JAujRbbGvMeDk7iT8kVNbRa5PYuemcByLEkFfrALFdJvVUW
Game result: Player B Steals

--- Testing unauthorized player ---
Initializing a new game
Game initialized with signature: yikxkQfoPg8DXkzF6gBjy5J79h25AcQYrfFb6tzt3YvCQHDLAxy95YscwBoD1jKLqVG49W8uRG8f5ymik5pP61m
Init game finalize signature: 3ZAnty6XxhQQwfxXqzSxp8NGVAK1iSU1nnUbm1eefQnggL21sfGpydtgNAys3nNv1McoJ39wj96vNBpksije4Gad
Airdropping funds to unauthorized player
Funds airdropped to unauthorized player
Unauthorized player attempting to make a move
Expected error caught: AnchorError thrown in programs/prisoner_dilema/src/lib.rs:108. Error Code: NotAuthorized. Error Number: 6001. Error Message: Not authorized.

--- Testing multiple game scenarios ---

--- Testing game scenario: PlayerA 0 vs playerB 0 ---
Initializing a new game
Game initialized with signature: 2jsq69us52qAr4Gm65cCpT1jag2wzuiuAfZpdiDKusPNwt7cVKg7TAUVb2iEU6DVx7ZiXACk7zBcbkbcbmm6pyzQ
Init game finalize signature: 5kMz83zC2KzTvouwxSsbvJiTrw6m9wV27wdNnKNxvSLC5kWLa1mfF4wGigE6FcA7VJ12SkTWPAsJ424nghKtqZ1K
Player A making a move
Player A move signature: L8jzmt47A14vtBVUwX45ZA4RgCUfa4E22SGDpnGt8Vo9u9NAYLXa8CirkRq8bXDhxwTQebGLtrLWuGCUEajdiRm
Player A move finalize signature: 5gJ78gr4hihQKzjZijDoLrTnWoWmSUsFJoFPgWJA81CTN4FvZvfUcHwxoWmLzUE6YAKG4Zf4MbtAGZyECxQeRj2x
Player B making a move
Player B move signature: JXcJPshxZWM7kUL8fzqG4VscEQ8sB2pj2pm2eFKDLqSwostaNZ6wewtq3t3otZQoH5UTRdjufGFjozmEQoZDwMA
Player B move finalize signature: 5FZS53jLe4eUc3skTNd9mSzzhQzoPWYnUF15kHfhKmzXsKeXrNfvvTncKFKL7CnU6vwUx4kyr2ESE5m85CmkXTWh
Comparing moves
Compare moves signature: 5Mach4dYtzymPnhD9Kgnh9TqqTSe8H8ArAikfxkBbKriskjkecRQdM8kZkPDE3Mf7zbHvWZZ5hg6DE2uyrgzTt3f
Finalize signature: 4BKe6ofigFWBpvGpy2QV3RYZxmgMWbaVVbirsXf1qYEhSqtvTjVxacCEqPEzW7jk2MmCq7GYF8tRu95XQrWj8oTL
Game result: Both Players Split

--- Testing game scenario: PlayerA 1 vs playerB 0 ---
Initializing a new game
Game initialized with signature: 2DuAwomQZYHWBaLXyzGTLuF3cimBNMqNiNYVkK5soK99FNVELYbiUSutV35T3qPEQvRPimNGG3igWn2JAA98P2FM
Init game finalize signature: 4XDsT7WZUuAbtRbENQc2NT82bLTMZNeMMaSszqetJkCrkpYnDL8ycu8hDBSbwAbr6Fr6DKCGfkdQ9ep3Mpfda67M
Player A making a move
Player A move signature: 5QY1LjpqV9TwbgbX8i84CRQUX9x36yhUvD6w8sV69ByngS7XNYqPFLV5HzxksTvBGdF4TEgZheHMfJ3KthYm9TeY
Player A move finalize signature: DDdNUfht8UZgs444bRJndfSBamrzPjutCYAJmcLhauiYWmgGnZM5eUcC9hFAZPyRdCTYnP9XJ6Ngwrv8HfsDRZm
Player B making a move
Player B move signature: a5pG3FYYKk85ZPJCtyjcShqMGu4yLRrtnyKC2En3yAbGFDZsGUd8oQz3itDVRapVLiwSWaPW5enuabNCQBg3FkR
Player B move finalize signature: 4Kt1TfTdWheRq5WLHpRRLTWmeZypyyc8nNnQNdyNLCFVtsnuHT6XmoPcYHoKMpARPVeKfUeR6K2ZKrdezaBrsEUo
Comparing moves
Compare moves signature: 3rqg3ZaDHRYuXrPakwf4nRuyKyHaWFBCD4X5arfo1aQRJtCsevJurqg1VNFpjbVmXFgfBNjyWvYrefC9LboswU9Z
Finalize signature: 3njytkWbN44aCh9ENvMKCvCU2qA51ouBdUojcvtG8tteQTxfBm92jYBfggA5g7HJxLsSukBoBq3Jt2b7WXioBe4W
Game result: Player A Steals

--- Testing game scenario: PlayerA 0 vs playerB 1 ---
Initializing a new game
Game initialized with signature: 3XXzLwNkWHD2hUsSeeSJbVazwLKXxvbraus4SpznE8QwYKYE7uwEJsiNKA8goPXaZidiepxuH2ZiKwVoeYhHpja8
Init game finalize signature: 2KjaYPCZFqmFUH9PJ3UzamupZjgeEeD4bDgurNceYJ92qGQqRzsdWdhR52v9t1d3G97NZ9AfgTBSMtcZQyGWCYKm
Player A making a move
Player A move signature: 4d5zCtfRmMm5uBzX5Ww9bHZ97MjqiDP6642j5sG5hHV5okBzVENbqpK776mGukVZozHgvewvKUJmpL6siLBT9gKX
Player A move finalize signature: 4p1TiJQfNebfZGEaQJ4cJ9zhTQiiQgt13kSKV9aW1NeEj8s9Se3scqX1ikyEixdC4ioRUAtuM8c2BWfA4wPkyDYc
Player B making a move
Player B move signature: 5UsjSBKLEb6DeZ6DZRx1vyFmUTH6nmTxtgRMuKQxtJHE84AsM8viBzZu2DN7vVRP9wmzLKgrjpo8FjeLpe5yW4QV
Player B move finalize signature: 5GvQddepGzRUM3j8GAj4br1Bungvv3v11Y4zqJvFfYYWiNqRiUXxncn1fdxtfeWXbkHhWxZbrFSWsB7vphWcRGiL
Comparing moves
Compare moves signature: 4GLqjPYHeAjZegAT9eQZmsfjmGPsAjwgwCzSfaCYXDe5vrKMD6Xzthm1fri6dVHLXnvqKW1YVZ9YyABFxaANr6qX
Finalize signature: aP172LFhLimoDQBisX2ud7HC9hriwooWfN7yTCUTHPkEx3jh7wcvkFQoAr4jNfVF7cZiSaa4VCtqvsTsLEnYQKq
Game result: Player B Steals

--- Testing game scenario: PlayerA 1 vs playerB 1 ---
Initializing a new game
Game initialized with signature: 28bLsxsozdpR2q3GkTU4eTUCGkP5euUkAn9ZTQoRDaALdBath4XekdRtyEuJKzm5hj14nFs2LER4VtJA6Sn7KGbk
Init game finalize signature: FBuWLBBbzLTm9VrTtQbybFxGUVb3yxg2M9opvJ2XCd7C1iMPdmfYKxPd1jo8itnVoFijQL3gwEvbSMWXW6fFEhm
Player A making a move
Player A move signature: 4Fnds8Anuo4qnbgKD5ibwnjFNEsjQs53EF79QsSPBqjzYgcaZQigJ4tSGHCXWCNJUan4oDjYzLGKNAeBtAe9E7Sb
Player A move finalize signature: 2RTC52ofnsrhcgGYnzykoToDohMuX59NgeNQE7wWcLxpsSe8xYvcihf8hg8yCJYEJMM88jgftjEdzMkLfxcw531e
Player B making a move
Player B move signature: 2E3o4HtMTabKp9fWgbt6kW7B7STY9an32pShdwqqkhmD1LoUG69BCdkfydgy2XVETK7dJk2JzpvcAJhcTHo2kkLi
Player B move finalize signature: 3uykCTgzWX1ZpePisP8YP5sQpzvHdLhyqpMCdJLtVeJ9v1UqhorppeGq3EbFr7dMauWgd4EbBEwN5ZnDJFdMeNjG
Comparing moves
Compare moves signature: UY6L5RRAe5s1smqnZejQadPVPUcqAURSsNAVLZTNK62rnyqvY2q1GngauzvrCdG1L7CiceL8jnbgtGGmLcJ311E
Finalize signature: 25pQZn24JABpLAdTvwDGdvAsy7qprxLp11XSZiLGrcN5n8QenaxX7jZR61bAYdZsDhdLpHRDWU8WXa5GSUpPdkdn
Game result: Both Players Steal

--- Testing invalid move scenario ---
Initializing a new game for invalid move test
Game initialized for invalid move test: 6b1Cp8qTfepj7ujMXXQg9A1pitmRk1h3J7PiCQ8f853PxBrbmuEzVyorU8SwwFFyB8K36z3tSFNNHNamQy7MahF
Init game finalize signature for invalid move test: 5zG2TxKEQ5UjBxQnCaf9wvhNyZVhUyCJCz3HnYnnquedTGFuHAtaSd1f61e2DjHeZ7QtCSP1WPmhjsKg5RRoNq1W
Player A making a valid move (0)
Player A valid move signature: 3viytg9ujgfBgFYZ6SNkgCmi3Kz92e9yPQx3g1nC3H8hrEE6uBCMVn3Z6esAaWrn98Nu3n4xwYK47RK7zvHs9HCr
Player A move finalize signature: 247vgZCbL4GG7627FHF1vXxA8X8pHwQFGaqZEQBqaD1BhsQsc37bFe3r69eYV848Swgiq75y7NBp2soHxEGvJDAr
Player B making an invalid move (4)
Player B invalid move signature: 4Zy28haxkYaw72jef6jSyah9R1MAFAPJrCSpp8UHkq4wM5hrR9ooGMbcn6uiyfVtvTWA1YEwR6SgQxwtj6RmXp4L
Player B move finalize signature: 3Mb99Sw7hewyXJ3Rb1sj6AZb2WTYyermdZB3bSNzse2h2GcoRX1V8h9N1RnngCKuS1FH6ATxBQuD1hHjEvagcJ6x
Comparing moves for invalid move test
Compare moves signature for invalid move test: 3xVcNL2rnNdQnNTR2jSh93Y28YbWk3GNczE4KVz2uanY56m76NrtbyYLW7qTZQm9ujgTXsiQXU7yGBWf5fYb2aKb
Finalize signature for invalid move test: 3VeXFEuTWnpM98giyxKRXg1AYVxmx553dmVGtw1ojxQtKFnZ7AoiHHS2TKnR2jS5yLzjsEW3CnEPf5aBdbWRRErx
Game result for invalid move test: Invalid Move
    ✔ Tests for prisoner dilemma (27517ms)


@arihantbansal
Copy link
Member

Please run cargo +nightly fmt --all inside your example

@Jovian-Dsouza
Copy link
Author

Please run cargo +nightly fmt --all inside your example

@arihantbansal I have done the cargo code formatting. Thanks

@arihantbansal
Copy link
Member

Please fix the issue in your code arising from mismatched program IDs @Jovian-Dsouza

@Jovian-Dsouza
Copy link
Author

Please fix the issue in your code arising from mismatched program IDs @Jovian-Dsouza

@arihantbansal finding the root cause for this issue. Test seems to be running fine locally

@Jovian-Dsouza
Copy link
Author

@arihantbansal all tests are passing, can you please merge this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants