CRYPTO 1984: 439-453
Dalam paper yang diterbitkan pada tahun 1984, Goldwasser dan Micali mengembangkan konsep mental poker yang memungkinkan pemain bermain permainan kartu online tanpa keperluan pihak ketiga yang dipercaya. Dalam artikel ini, kita akan membahas tentang bagaimana teknologi Markdown dapat digunakan untuk membuat game mental poker multi-player yang lebih baik.
Bibliografi
- Goldwasser, S. dan Micali, S. (1982). Probabilistic encryption & how to play mental poker keeping secret all partial information. Proceedings of the Fourteenth Annual ACM Symposium on Theory of Computing.
- Stamer, H. (2005). Efficient Electronic Gambling: An Extended Implementation of the Toolbox for Mental Card Games. WEWoRC 2005, LN P-74, 1-12.
- Schindelhauer, C. (1998). A Toolbox for Mental Card Games. Tech. Rep. of Medizinische Universitat Lubeck.
- Golle, P. (2005). Dealing Cards in Poker Games. Proceedings of the International Conference on Information Technology: Coding and Computing.
Apa Itu Mental Poker?
Mental poker adalah konsep yang memungkinkan pemain bermain permainan kartu online tanpa keperluan pihak ketiga yang dipercaya. Dalam game mental poker, setiap pemain memiliki codeword fragment untuk setiap kartu dalam deck, dan setiap kodeword tersebut digunakan sebagai kunci untuk mengenkripsi kartu.
Implementasi
Dalam implementasinya, kita dapat menggunakan teknologi Markdown untuk membuat file konfigurasi yang berisi informasi tentang game mental poker. File konfigurasi ini akan berisi informasi tentang jumlah kartu dalam deck, jenis kartu, dan lain-lain.
Berikut adalah contoh penggunaan API Mental Poker:
import { createConfig } from 'mental-poker';
const config = createConfig(52);
Establishing a Game
Untuk memulai game mental poker, setiap pemain harus menginisialisasi konfigurasi dan membuat deck kartu. Pada tahap ini, setiap pemain juga harus membuat codeword fragment untuk setiap kartu dalam deck.
Berikut adalah contoh penggunaan API Mental Poker:
import { createPlayer, createDeck } from 'mental-poker';
const self = createPlayer(config);
const opponents = [
/* Received from others */
];
const cardCodewords = createDeck(
[self, ...opponents].map(player => player.cardCodewordFragments),
);
Shuffling and Encrypting the Deck
Setelah deck kartu diinisialisasi, setiap pemain harus mengacaukan dan mengenkripsi deck kartu. Pada tahap ini, setiap pemain juga harus mendapatkan kunci privat untuk mengenkripsi deck kartu.
Berikut adalah contoh penggunaan API Mental Poker:
import { encryptDeck, decryptDeck } from 'mental-poker';
let deck = cardCodewords;
deck = encryptDeck(shuffle(deck), self.keyPairs[config.cardCount].privateKey);
// The deck shall be passed on to the next player
deck = [
/* And then received from someone else */
];
deck = encryptDeck(
decryptDeck(deck, self.keyPairs[config.cardCount].privateKey),
self.keyPairs.map(keyPair => keyPair.privateKey),
);
Drawing Cards
Setelah deck kartu dienkripsi, setiap pemain dapat melanjutkan ke tahap drawing cards. Pada tahap ini, setiap pemain harus mengambil kartu yang random dan mengenkripsi kartunya.
Berikut adalah contoh penggunaan API Mental Poker:
import { decryptCard } from 'mental-poker';
const cardEncrypted = deck[i];
const cardDecrypted = decryptCard(
cardEncrypted,
[self, ...opponents].map(player => player.keyPairs[i].privateKey),
);
// The resulting codeword index below represents a card ID
// If its value is -1, then someone has violated the protocol
const codewordIndex = cardCodewords.findIndex(cardCodeword =>
cardCodeword.equals(cardDecrypted),
);
API
Berikut adalah contoh penggunaan API Mental Poker:
import { createPlayer, createDeck } from 'mental-poker';
const self = createPlayer(config);
const opponents = [
/* Received from others */
];
const cardCodewords = createDeck(
[self, ...opponents].map(player => player.cardCodewordFragments),
);
Dengan demikian, kita dapat melihat bagaimana teknologi Markdown dapat digunakan untuk membuat game mental poker multi-player yang lebih baik.