From 42e2514c82da4c82b59669a20be99b6b196f4261 Mon Sep 17 00:00:00 2001 From: jude Date: Sun, 29 Jan 2023 16:47:37 +0000 Subject: [PATCH] Cooperative random --- static/js/dom.js | 16 ++ static/js/index.js | 184 +++++++++++++++++++--- static/js/player.js | 21 +++ templates/index.html | 3 +- whitepaper/demonstration/presentation.pdf | Bin 0 -> 58261 bytes whitepaper/demonstration/presentation.tex | 46 ++++++ 6 files changed, 246 insertions(+), 24 deletions(-) create mode 100644 static/js/dom.js create mode 100644 static/js/player.js create mode 100644 whitepaper/demonstration/presentation.pdf create mode 100644 whitepaper/demonstration/presentation.tex diff --git a/static/js/dom.js b/static/js/dom.js new file mode 100644 index 0000000..05a3142 --- /dev/null +++ b/static/js/dom.js @@ -0,0 +1,16 @@ +export function updatePlayerDom() { + let list = document.querySelector("#playerList"); + list.replaceChildren(); + + let newDom = document.createElement("li"); + newDom.textContent = ID; + list.appendChild(newDom); + + for (let playerId of Object.keys(players)) { + let newDom = document.createElement("li"); + if (playerId !== ID) { + newDom.textContent = playerId; + list.appendChild(newDom); + } + } +} diff --git a/static/js/index.js b/static/js/index.js index 28873c8..cbacc64 100644 --- a/static/js/index.js +++ b/static/js/index.js @@ -1,61 +1,199 @@ +import { Player } from "./player.js"; + const ID = window.crypto.randomUUID(); // Timeout to consider a player disconnected const TIMEOUT = 30_000; let players = {}; +const WAITING = 0; +const PRE_GAME = 1; +const PLAYING = 2; +const POST_GAME = 3; + +let game_state = WAITING; + document.addEventListener("DOMContentLoaded", () => { let socket = io(); socket.on("connect", () => { console.log("Connected!"); - socket.emit("message", { type: "ANNOUNCE", author: ID, name: "" }); - players[ID] = { name: "", timeout: null }; + socket.emit("message", { + type: "ANNOUNCE", + id: window.crypto.randomUUID(), + author: ID, + name: "", + }); + // Create self + players[ID] = new Player(ID, name); }); socket.on("message", (data) => { // Ignore any messages that originate from us. - if (data.author !== ID) { - switch (data.type) { - case "ANNOUNCE": - playerConnected(socket, data); - break; + if (data.author === ID) { + return; + } - case "KEEPALIVE": - keepAlive(data); - break; - } + switch (data.type) { + case "ANNOUNCE": + playerConnected(socket, data); + break; + + case "KEEPALIVE": + keepAlive(data); + break; + + case "SYNC": + sync(data); + break; + + case "RANDOM": + cooperativeRandom(data); + break; } }); // Emit keepalive messages to inform other players we are still here window.setInterval(() => { - socket.emit("message", { type: "KEEPALIVE", author: ID }); + socket.emit("message", { + type: "KEEPALIVE", + id: window.crypto.randomUUID(), + author: ID, + }); }, TIMEOUT / 5); }); +/** + * Process player connect packets: these inform that a new player has joined. + * + * @param socket Socket instance used to announce ourselves to new player + * @param data Packet received + */ function playerConnected(socket, data) { + // Block players from joining mid-game + if (game_state !== WAITING) { + return; + } + // When a new player is seen, all announce to ensure they know all players. if (players[data.author] === undefined) { - players[data.author] = { name: data.name, timeout: window.setTimeout(() => { delete players[data.author]; updatePlayerDom(); }, TIMEOUT) }; - socket.emit("message", { type: "ANNOUNCE", author: ID, name: "" }); + players[data.author] = new Player(data.author, data.name); + socket.emit("message", { + type: "ANNOUNCE", + id: window.crypto.randomUUID(), + author: ID, + name: "", + }); + players[data.author].resetTimeout(); } else { } updatePlayerDom(); } +/** + * Process keep-alive packets: these are packets that check players are still online. + * + * @param data Packet received + */ function keepAlive(data) { - window.clearTimeout(players[data.author].timeout); - players[data.author].timeout = window.setTimeout(() => { delete players[data.author]; updatePlayerDom(); }, TIMEOUT); + players[data.author].resetTimeout(); } -function updatePlayerDom() { - let list = document.querySelector('#playerList'); - list.replaceChildren(); - for (let playerId of Object.keys(players)) { - let newDom = document.createElement('li'); - newDom.textContent = playerId; - list.appendChild(newDom); +/** + * Process sync packets: update player details like status and name. + * + * @param data Packet received + */ +function sync(data) { + players[data.author].name = data.name; + players[data.author].ready = data.ready; + + if (allPlayersReady()) { + game_state = PRE_GAME; + // Decide turn order. "Master" begins a cooperative rng process. + + // + } +} + +function allPlayersReady() { + for (let player of Object.values(players)) { + if (!player.ready) { + return false; + } + } + + return true; +} + +// Track ongoing random sessions. +const randomSessions = {}; + +/** + * Process cooperative random protocol. + * + * @param socket Socket instance for communication + * @param data Packet received + */ +function cooperativeRandom(socket, data) { + // Step 0: extract relevant information from data + let session = randomSessions[data.session]; + const stage = data.stage; + + if (session === undefined) { + // Step 1: generate and encrypt our random value. 4 bytes = 32 bit integer + const noise = CryptoJS.libs.WordArray.random(4); + const key = CryptoJS.libs.WordArray.random(256); + const cipherText = CryptoJS.AES.encrypt(noise, key); + + randomSessions[data.session] = { + range: data.range, + cipherTexts: {}, + cipherKeys: {}, + ourKey: key, + ourNoise: noise, + finalValue: -1, + }; + session = randomSessions[data.session]; + + // Step 2: send our random value and wait for all responses + socket.emit("message", { + type: "RANDOM", + author: ID, + stage: "CIPHERTEXT", + range: data.range, + cipherText: cipherText, + }); + } + + if (stage === "CIPHERTEXT") { + session.cipherTexts[data.author] = data.cipherText; + + if (Object.keys(session.cipherTexts).length === Object.keys(players).length) { + // Step 3: release our key once all players have sent a ciphertext + socket.emit("message", { + type: "RANDOM", + author: ID, + stage: "DECRYPT", + cipherKey: session.ourKey, + }); + } + } else if (stage === "DECRYPT") { + session.cipherKeys[data.author] = data.cipherKey; + + // Step 4: get final random value + if (Object.keys(session.cipherKeys).length === Object.keys(players).length) { + let total = 0; + + for (let participant of Object.keys(session.cipherKeys)) { + total += CryptoJS.AES.decrypt( + session.cipherTexts[participant], + session.cipherKeys[participant] + ); + } + + session.finalValue = total % session.range; + } } } diff --git a/static/js/player.js b/static/js/player.js new file mode 100644 index 0000000..14b804e --- /dev/null +++ b/static/js/player.js @@ -0,0 +1,21 @@ +import { updatePlayerDom } from "./dom.js"; + +export class Player { + constructor(id, name) { + this.name = name; + this.timeout = null; + this.id = id; + this.ready = false; + } + + resetTimeout() { + if (this.timeout !== null) { + window.clearTimeout(players[data.author].timeout); + } + + this.timeout = window.setTimeout(() => { + delete players[this.id]; + updatePlayerDom(); + }, TIMEOUT); + } +} diff --git a/templates/index.html b/templates/index.html index 0c49a63..0e81ac8 100644 --- a/templates/index.html +++ b/templates/index.html @@ -6,7 +6,8 @@ - + + diff --git a/whitepaper/demonstration/presentation.pdf b/whitepaper/demonstration/presentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5ab543776a7737707205c02904cacacec6e91324 GIT binary patch literal 58261 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