Skip to content

Commit

Permalink
Save results to dynamodb
Browse files Browse the repository at this point in the history
  • Loading branch information
Quantumplation committed Dec 10, 2024
1 parent 50e38f8 commit f61aa03
Show file tree
Hide file tree
Showing 5 changed files with 254 additions and 7 deletions.
1 change: 1 addition & 0 deletions referee/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
"module": "ES2022",
"target": "ES2022",
"dependencies": {
"@aws-sdk/client-dynamodb": "^3.705.0",
"@aws-sdk/client-kinesis": "^3.696.0",
"@blaze-cardano/sdk": "^0.2.11",
"@noble/ed25519": "^2.1.0",
Expand Down
14 changes: 13 additions & 1 deletion referee/referee.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,22 @@ import * as bech32 from "bech32-buffer";
import * as ed25519 from "@noble/ed25519";
import { blake2b } from "@noble/hashes/blake2b";
import { KinesisClient, PutRecordsCommand } from "@aws-sdk/client-kinesis";
import { DynamoDBClient, PutItemCommand } from "@aws-sdk/client-dynamodb";
import { Packet } from "utils/HydraMultiplayer/base.js";
import { fromHex, toHex } from "utils/helpers.js";

const NETWORK_ID = Number(process.env.NETWORK_ID);
const HYDRA_NODE = "http://localhost:4001/";
const DISCORD_BOT = "https://discord.us-east-1.hydra-doom.sundae.fi/match"; // TODO
const DISCORD_BOT = "https://discord.hydra-doom.sundae.fi/match"; // TODO
const RECORD_STATS = true;

const kinesis = new KinesisClient({
region: "us-east-1",
});
const dynamo = new DynamoDBClient({
region: "us-east-1",
});

const encoder = new TextEncoder();

async function sendEvent(gameId, data) {
Expand Down Expand Up @@ -53,6 +58,13 @@ async function reportResults(gameId, results) {
console.log(`Reporting results for game ${gameId}\n`, JSON.stringify(results, null, 2));
for(let i = 0; i < 5; i++) {
try {
await dynamo.send(new PutItemCommand({
TableName: "doom-game-results",
Item: {
pk: { S: gameId },
results: { S: JSON.stringify(results) },
},
}));
let resp = await fetch(DISCORD_BOT, {
method: "POST",
body: JSON.stringify(results),
Expand Down
240 changes: 240 additions & 0 deletions referee/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,57 @@
"@smithy/util-utf8" "^2.0.0"
tslib "^2.6.2"

"@aws-sdk/client-dynamodb@^3.705.0":
version "3.705.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/client-dynamodb/-/client-dynamodb-3.705.0.tgz#e25cd3a3bc6884549dfee5003e3b5622ea8cf047"
integrity sha512-uHmjzK4/r6KiXSMofSRmLdGb0N+X42yoTZN9YrQK2PxPMdLjh7JCGv4thlLcZP1NBHPfFxsEh61kqf8+1SfzgQ==
dependencies:
"@aws-crypto/sha256-browser" "5.2.0"
"@aws-crypto/sha256-js" "5.2.0"
"@aws-sdk/client-sso-oidc" "3.699.0"
"@aws-sdk/client-sts" "3.699.0"
"@aws-sdk/core" "3.696.0"
"@aws-sdk/credential-provider-node" "3.699.0"
"@aws-sdk/middleware-endpoint-discovery" "3.696.0"
"@aws-sdk/middleware-host-header" "3.696.0"
"@aws-sdk/middleware-logger" "3.696.0"
"@aws-sdk/middleware-recursion-detection" "3.696.0"
"@aws-sdk/middleware-user-agent" "3.696.0"
"@aws-sdk/region-config-resolver" "3.696.0"
"@aws-sdk/types" "3.696.0"
"@aws-sdk/util-endpoints" "3.696.0"
"@aws-sdk/util-user-agent-browser" "3.696.0"
"@aws-sdk/util-user-agent-node" "3.696.0"
"@smithy/config-resolver" "^3.0.12"
"@smithy/core" "^2.5.3"
"@smithy/fetch-http-handler" "^4.1.1"
"@smithy/hash-node" "^3.0.10"
"@smithy/invalid-dependency" "^3.0.10"
"@smithy/middleware-content-length" "^3.0.12"
"@smithy/middleware-endpoint" "^3.2.3"
"@smithy/middleware-retry" "^3.0.27"
"@smithy/middleware-serde" "^3.0.10"
"@smithy/middleware-stack" "^3.0.10"
"@smithy/node-config-provider" "^3.1.11"
"@smithy/node-http-handler" "^3.3.1"
"@smithy/protocol-http" "^4.1.7"
"@smithy/smithy-client" "^3.4.4"
"@smithy/types" "^3.7.1"
"@smithy/url-parser" "^3.0.10"
"@smithy/util-base64" "^3.0.0"
"@smithy/util-body-length-browser" "^3.0.0"
"@smithy/util-body-length-node" "^3.0.0"
"@smithy/util-defaults-mode-browser" "^3.0.27"
"@smithy/util-defaults-mode-node" "^3.0.27"
"@smithy/util-endpoints" "^2.1.6"
"@smithy/util-middleware" "^3.0.10"
"@smithy/util-retry" "^3.0.10"
"@smithy/util-utf8" "^3.0.0"
"@smithy/util-waiter" "^3.1.9"
"@types/uuid" "^9.0.1"
tslib "^2.6.2"
uuid "^9.0.1"

"@aws-sdk/client-kinesis@^3.696.0":
version "3.696.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/client-kinesis/-/client-kinesis-3.696.0.tgz#f4da916e665ab6a3f41d60638bd5a808e3d3a09e"
Expand Down Expand Up @@ -145,6 +196,51 @@
"@smithy/util-utf8" "^3.0.0"
tslib "^2.6.2"

"@aws-sdk/client-sso-oidc@3.699.0":
version "3.699.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.699.0.tgz#a35665e681abd518b56330bc7dab63041fbdaf83"
integrity sha512-u8a1GorY5D1l+4FQAf4XBUC1T10/t7neuwT21r0ymrtMFSK2a9QqVHKMoLkvavAwyhJnARSBM9/UQC797PFOFw==
dependencies:
"@aws-crypto/sha256-browser" "5.2.0"
"@aws-crypto/sha256-js" "5.2.0"
"@aws-sdk/core" "3.696.0"
"@aws-sdk/credential-provider-node" "3.699.0"
"@aws-sdk/middleware-host-header" "3.696.0"
"@aws-sdk/middleware-logger" "3.696.0"
"@aws-sdk/middleware-recursion-detection" "3.696.0"
"@aws-sdk/middleware-user-agent" "3.696.0"
"@aws-sdk/region-config-resolver" "3.696.0"
"@aws-sdk/types" "3.696.0"
"@aws-sdk/util-endpoints" "3.696.0"
"@aws-sdk/util-user-agent-browser" "3.696.0"
"@aws-sdk/util-user-agent-node" "3.696.0"
"@smithy/config-resolver" "^3.0.12"
"@smithy/core" "^2.5.3"
"@smithy/fetch-http-handler" "^4.1.1"
"@smithy/hash-node" "^3.0.10"
"@smithy/invalid-dependency" "^3.0.10"
"@smithy/middleware-content-length" "^3.0.12"
"@smithy/middleware-endpoint" "^3.2.3"
"@smithy/middleware-retry" "^3.0.27"
"@smithy/middleware-serde" "^3.0.10"
"@smithy/middleware-stack" "^3.0.10"
"@smithy/node-config-provider" "^3.1.11"
"@smithy/node-http-handler" "^3.3.1"
"@smithy/protocol-http" "^4.1.7"
"@smithy/smithy-client" "^3.4.4"
"@smithy/types" "^3.7.1"
"@smithy/url-parser" "^3.0.10"
"@smithy/util-base64" "^3.0.0"
"@smithy/util-body-length-browser" "^3.0.0"
"@smithy/util-body-length-node" "^3.0.0"
"@smithy/util-defaults-mode-browser" "^3.0.27"
"@smithy/util-defaults-mode-node" "^3.0.27"
"@smithy/util-endpoints" "^2.1.6"
"@smithy/util-middleware" "^3.0.10"
"@smithy/util-retry" "^3.0.10"
"@smithy/util-utf8" "^3.0.0"
tslib "^2.6.2"

"@aws-sdk/client-sso@3.696.0":
version "3.696.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.696.0.tgz#a9251e88cdfc91fb14191f760f68baa835e88f1c"
Expand Down Expand Up @@ -235,6 +331,52 @@
"@smithy/util-utf8" "^3.0.0"
tslib "^2.6.2"

"@aws-sdk/client-sts@3.699.0":
version "3.699.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.699.0.tgz#9419be6bbf3809008128117afea8b9129b5a959d"
integrity sha512-++lsn4x2YXsZPIzFVwv3fSUVM55ZT0WRFmPeNilYIhZClxHLmVAWKH4I55cY9ry60/aTKYjzOXkWwyBKGsGvQg==
dependencies:
"@aws-crypto/sha256-browser" "5.2.0"
"@aws-crypto/sha256-js" "5.2.0"
"@aws-sdk/client-sso-oidc" "3.699.0"
"@aws-sdk/core" "3.696.0"
"@aws-sdk/credential-provider-node" "3.699.0"
"@aws-sdk/middleware-host-header" "3.696.0"
"@aws-sdk/middleware-logger" "3.696.0"
"@aws-sdk/middleware-recursion-detection" "3.696.0"
"@aws-sdk/middleware-user-agent" "3.696.0"
"@aws-sdk/region-config-resolver" "3.696.0"
"@aws-sdk/types" "3.696.0"
"@aws-sdk/util-endpoints" "3.696.0"
"@aws-sdk/util-user-agent-browser" "3.696.0"
"@aws-sdk/util-user-agent-node" "3.696.0"
"@smithy/config-resolver" "^3.0.12"
"@smithy/core" "^2.5.3"
"@smithy/fetch-http-handler" "^4.1.1"
"@smithy/hash-node" "^3.0.10"
"@smithy/invalid-dependency" "^3.0.10"
"@smithy/middleware-content-length" "^3.0.12"
"@smithy/middleware-endpoint" "^3.2.3"
"@smithy/middleware-retry" "^3.0.27"
"@smithy/middleware-serde" "^3.0.10"
"@smithy/middleware-stack" "^3.0.10"
"@smithy/node-config-provider" "^3.1.11"
"@smithy/node-http-handler" "^3.3.1"
"@smithy/protocol-http" "^4.1.7"
"@smithy/smithy-client" "^3.4.4"
"@smithy/types" "^3.7.1"
"@smithy/url-parser" "^3.0.10"
"@smithy/util-base64" "^3.0.0"
"@smithy/util-body-length-browser" "^3.0.0"
"@smithy/util-body-length-node" "^3.0.0"
"@smithy/util-defaults-mode-browser" "^3.0.27"
"@smithy/util-defaults-mode-node" "^3.0.27"
"@smithy/util-endpoints" "^2.1.6"
"@smithy/util-middleware" "^3.0.10"
"@smithy/util-retry" "^3.0.10"
"@smithy/util-utf8" "^3.0.0"
tslib "^2.6.2"

"@aws-sdk/core@3.696.0":
version "3.696.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.696.0.tgz#bdf306bdc019f485738d91d8838eec877861dd26"
Expand Down Expand Up @@ -297,6 +439,24 @@
"@smithy/types" "^3.7.1"
tslib "^2.6.2"

"@aws-sdk/credential-provider-ini@3.699.0":
version "3.699.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.699.0.tgz#7919a454b05c5446d04a0d3270807046a029ee30"
integrity sha512-dXmCqjJnKmG37Q+nLjPVu22mNkrGHY8hYoOt3Jo9R2zr5MYV7s/NHsCHr+7E+BZ+tfZYLRPeB1wkpTeHiEcdRw==
dependencies:
"@aws-sdk/core" "3.696.0"
"@aws-sdk/credential-provider-env" "3.696.0"
"@aws-sdk/credential-provider-http" "3.696.0"
"@aws-sdk/credential-provider-process" "3.696.0"
"@aws-sdk/credential-provider-sso" "3.699.0"
"@aws-sdk/credential-provider-web-identity" "3.696.0"
"@aws-sdk/types" "3.696.0"
"@smithy/credential-provider-imds" "^3.2.6"
"@smithy/property-provider" "^3.1.9"
"@smithy/shared-ini-file-loader" "^3.1.10"
"@smithy/types" "^3.7.1"
tslib "^2.6.2"

"@aws-sdk/credential-provider-node@3.696.0":
version "3.696.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.696.0.tgz#6d8d97a85444bfd3c5a1aded9ce894f68e6d3547"
Expand All @@ -315,6 +475,24 @@
"@smithy/types" "^3.7.1"
tslib "^2.6.2"

"@aws-sdk/credential-provider-node@3.699.0":
version "3.699.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.699.0.tgz#6a1e32a49a7fa71d10c85a927267d1782444def1"
integrity sha512-MmEmNDo1bBtTgRmdNfdQksXu4uXe66s0p1hi1YPrn1h59Q605eq/xiWbGL6/3KdkViH6eGUuABeV2ODld86ylg==
dependencies:
"@aws-sdk/credential-provider-env" "3.696.0"
"@aws-sdk/credential-provider-http" "3.696.0"
"@aws-sdk/credential-provider-ini" "3.699.0"
"@aws-sdk/credential-provider-process" "3.696.0"
"@aws-sdk/credential-provider-sso" "3.699.0"
"@aws-sdk/credential-provider-web-identity" "3.696.0"
"@aws-sdk/types" "3.696.0"
"@smithy/credential-provider-imds" "^3.2.6"
"@smithy/property-provider" "^3.1.9"
"@smithy/shared-ini-file-loader" "^3.1.10"
"@smithy/types" "^3.7.1"
tslib "^2.6.2"

"@aws-sdk/credential-provider-process@3.696.0":
version "3.696.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.696.0.tgz#45da7b948aa40987b413c7c0d4a8125bf1433651"
Expand All @@ -341,6 +519,20 @@
"@smithy/types" "^3.7.1"
tslib "^2.6.2"

"@aws-sdk/credential-provider-sso@3.699.0":
version "3.699.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.699.0.tgz#515e2ecd407bace3141b8b192505631de415667e"
integrity sha512-Ekp2cZG4pl9D8+uKWm4qO1xcm8/MeiI8f+dnlZm8aQzizeC+aXYy9GyoclSf6daK8KfRPiRfM7ZHBBL5dAfdMA==
dependencies:
"@aws-sdk/client-sso" "3.696.0"
"@aws-sdk/core" "3.696.0"
"@aws-sdk/token-providers" "3.699.0"
"@aws-sdk/types" "3.696.0"
"@smithy/property-provider" "^3.1.9"
"@smithy/shared-ini-file-loader" "^3.1.10"
"@smithy/types" "^3.7.1"
tslib "^2.6.2"

"@aws-sdk/credential-provider-web-identity@3.696.0":
version "3.696.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.696.0.tgz#3f97c00bd3bc7cfd988e098af67ff7c8392ce188"
Expand All @@ -352,6 +544,26 @@
"@smithy/types" "^3.7.1"
tslib "^2.6.2"

"@aws-sdk/endpoint-cache@3.693.0":
version "3.693.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/endpoint-cache/-/endpoint-cache-3.693.0.tgz#4b3f0bbc16dc2907e1b977e3d8ddfc7ba008fd12"
integrity sha512-/zK0ZZncBf5FbTfo8rJMcQIXXk4Ibhe5zEMiwFNivVPR2uNC0+oqfwXz7vjxwY0t6BPE3Bs4h9uFEz4xuGCY6w==
dependencies:
mnemonist "0.38.3"
tslib "^2.6.2"

"@aws-sdk/middleware-endpoint-discovery@3.696.0":
version "3.696.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint-discovery/-/middleware-endpoint-discovery-3.696.0.tgz#c1a4cf63888fbd6903c3a767355829397e5ae9f3"
integrity sha512-KZvgR3lB9zdLuuO+SxeQQVDn8R46Brlolsbv7JGyR6id0BNy6pqitHdcrZCyp9jaMjrSFcPROceeLy70Cu3pZg==
dependencies:
"@aws-sdk/endpoint-cache" "3.693.0"
"@aws-sdk/types" "3.696.0"
"@smithy/node-config-provider" "^3.1.11"
"@smithy/protocol-http" "^4.1.7"
"@smithy/types" "^3.7.1"
tslib "^2.6.2"

"@aws-sdk/middleware-host-header@3.696.0":
version "3.696.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.696.0.tgz#20aae0efeb973ca1a6db1b1014acbcdd06ad472e"
Expand Down Expand Up @@ -417,6 +629,17 @@
"@smithy/types" "^3.7.1"
tslib "^2.6.2"

"@aws-sdk/token-providers@3.699.0":
version "3.699.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.699.0.tgz#354990dd52d651c1f7a64c4c0894c868cdc81de2"
integrity sha512-kuiEW9DWs7fNos/SM+y58HCPhcIzm1nEZLhe2/7/6+TvAYLuEWURYsbK48gzsxXlaJ2k/jGY3nIsA7RptbMOwA==
dependencies:
"@aws-sdk/types" "3.696.0"
"@smithy/property-provider" "^3.1.9"
"@smithy/shared-ini-file-loader" "^3.1.10"
"@smithy/types" "^3.7.1"
tslib "^2.6.2"

"@aws-sdk/types@3.696.0", "@aws-sdk/types@^3.222.0":
version "3.696.0"
resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.696.0.tgz#559c3df74dc389b6f40ba6ec6daffeab155330cd"
Expand Down Expand Up @@ -1496,6 +1719,11 @@
dependencies:
undici-types "~6.20.0"

"@types/uuid@^9.0.1":
version "9.0.8"
resolved "https://registry.yarnpkg.com/@types/uuid/-/uuid-9.0.8.tgz#7545ba4fc3c003d6c756f651f3bf163d8f0f29ba"
integrity sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==

"@types/ws@^8.5.13":
version "8.5.13"
resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.13.tgz#6414c280875e2691d0d1e080b05addbf5cb91e20"
Expand Down Expand Up @@ -2749,6 +2977,13 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==

mnemonist@0.38.3:
version "0.38.3"
resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.3.tgz#35ec79c1c1f4357cfda2fe264659c2775ccd7d9d"
integrity sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==
dependencies:
obliterator "^1.6.1"

ms@^2.0.0, ms@^2.1.2, ms@^2.1.3:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
Expand Down Expand Up @@ -3012,6 +3247,11 @@ npmlog@^7.0.1:
gauge "^5.0.0"
set-blocking "^2.0.0"

obliterator@^1.6.1:
version "1.6.1"
resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-1.6.1.tgz#dea03e8ab821f6c4d96a299e17aef6a3af994ef3"
integrity sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==

once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
Expand Down
1 change: 0 additions & 1 deletion src/utils/HydraMultiplayer/base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@ export abstract class HydraMultiplayer {
kills: number[],
data: Uint8Array,
): Promise<void> {
console.log("SendPacket", kills);
const ephemeralKey = this.key.publicKeyHashBytes;
this.packetQueue.push({ to, from, ephemeralKey, kills, data });
await this.sendPacketQueue();
Expand Down
5 changes: 0 additions & 5 deletions src/utils/HydraMultiplayer/dedicated.ts
Original file line number Diff line number Diff line change
Expand Up @@ -57,18 +57,13 @@ export class HydraMultiplayerDedicated extends HydraMultiplayer {
this.clients[packet.from] = this.clients[packet.from] || { kills: [] };
this.clients[packet.from].kills = packet.kills;

console.log("Kills: ", this.clients);

let keys = Object.keys(this.clients);
let allAgree = true;
for(let i = 0; i < keys.length; i++) {
for(let j = i + 1; j < keys.length; j++) {
const clientA = this.clients[keys[i]];
const clientB = this.clients[keys[j]];
if(clientA && clientB) {
console.log(`Comparing ${keys[i]} and ${keys[j]}`);
console.log(`Client A: ${clientA.kills}`);
console.log(`Client B: ${clientB.kills}`);
if(clientA.kills.toString() != clientB.kills.toString()) {
allAgree = false;
}
Expand Down

0 comments on commit f61aa03

Please sign in to comment.