@flayerlabs/gamemode-gate 0.5.6 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEPLOY.md +31 -3
- package/README.md +10 -5
- package/dist/chain/chains.d.ts +14 -6
- package/dist/chain/chains.d.ts.map +1 -1
- package/dist/chain/chains.js +11 -5
- package/dist/chain/chains.js.map +1 -1
- package/dist/chain/discover.d.ts +61 -3
- package/dist/chain/discover.d.ts.map +1 -1
- package/dist/chain/discover.js +181 -21
- package/dist/chain/discover.js.map +1 -1
- package/dist/chain/secure.d.ts +28 -0
- package/dist/chain/secure.d.ts.map +1 -1
- package/dist/chain/secure.js +55 -20
- package/dist/chain/secure.js.map +1 -1
- package/dist/chain/signer.d.ts +19 -13
- package/dist/chain/signer.d.ts.map +1 -1
- package/dist/chain/signer.js +11 -10
- package/dist/chain/signer.js.map +1 -1
- package/dist/claims.d.ts +14 -30
- package/dist/claims.d.ts.map +1 -1
- package/dist/claims.js +55 -76
- package/dist/claims.js.map +1 -1
- package/dist/demo.d.ts +1 -1
- package/dist/demo.d.ts.map +1 -1
- package/dist/demo.js +3 -3
- package/dist/demo.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +39 -45
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +71 -172
- package/dist/ledger.js.map +1 -1
- package/dist/main.d.ts +4 -2
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +11 -6
- package/dist/main.js.map +1 -1
- package/dist/room.d.ts +16 -0
- package/dist/room.d.ts.map +1 -1
- package/dist/room.js +29 -6
- package/dist/room.js.map +1 -1
- package/dist/server.d.ts +20 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +43 -34
- package/dist/server.js.map +1 -1
- package/dist/settlement.d.ts +0 -3
- package/dist/settlement.d.ts.map +1 -1
- package/dist/settlement.js +12 -44
- package/dist/settlement.js.map +1 -1
- package/dist/standings.d.ts.map +1 -1
- package/dist/standings.js +7 -1
- package/dist/standings.js.map +1 -1
- package/dist/store.d.ts +1 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +36 -19
- package/dist/store.js.map +1 -1
- package/dist/version.js +2 -2
- package/package.json +2 -2
- package/src/chain/chains.ts +17 -7
- package/src/chain/discover.ts +212 -21
- package/src/chain/secure.ts +75 -31
- package/src/chain/signer.ts +24 -30
- package/src/claims.ts +54 -78
- package/src/demo.ts +5 -5
- package/src/index.ts +6 -6
- package/src/ledger.ts +100 -248
- package/src/main.ts +11 -6
- package/src/room.ts +29 -3
- package/src/server.ts +58 -34
- package/src/settlement.ts +12 -43
- package/src/standings.ts +9 -1
- package/src/store.ts +36 -19
- package/src/version.ts +2 -2
package/dist/main.d.ts
CHANGED
|
@@ -77,9 +77,11 @@ export interface SpendTokenPricing {
|
|
|
77
77
|
* POSITION_MANAGER optional; selects a recorded stack on the chain (the legacy one when
|
|
78
78
|
* unset), or overrides the address for a chain with no address book
|
|
79
79
|
* SPEND_GATED_CALCULATOR optional address-book override
|
|
80
|
-
* POOL_SWAP optional address-book override; required for a v1_3 stack
|
|
80
|
+
* POOL_SWAP optional address-book override; required for a v1_3 or any_v1_3 stack
|
|
81
81
|
* FLETH optional address-book override; the chain's flETH wrapper
|
|
82
|
-
* FLAUNCH_VARIANT optional; v1_2, multichain or
|
|
82
|
+
* FLAUNCH_VARIANT optional; v1_2, multichain, v1_3 or any_v1_3 — the PRIMARY manager's
|
|
83
|
+
* generation. Adoption is not limited to it: any manager wired to the
|
|
84
|
+
* calculator is served (see chain/discover.ts)
|
|
83
85
|
* SETTLER optional; defaults to the signing key's own address
|
|
84
86
|
* WALLET_CAP_WEI default 0.025 ETH; the cap for ETH-paired launches
|
|
85
87
|
* ROUND_MS default 90000
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAA+D,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AASzG,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIvE;;;;;;;;;;;;GAYG;AAEH,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,KAAK,MAAM,EAAE,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,YAAY,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC;IAC3B,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,0FAA0F;IAC1F,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACpD;;;;OAIG;IACH,6BAA6B,EAAE,MAAM,CAAC;IACtC,oGAAoG;IACpG,OAAO,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;CACnB;AAuED
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,MAAM,CAAC;AACxF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,OAAO,EAA+D,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AASzG,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAIvE;;;;;;;;;;;;GAYG;AAEH,KAAK,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAE9C,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,KAAK,MAAM,EAAE,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,YAAY,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC;IAC3B,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,0FAA0F;IAC1F,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACpD;;;;OAIG;IACH,6BAA6B,EAAE,MAAM,CAAC;IACtC,oGAAoG;IACpG,OAAO,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;CACnB;AAuED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG,kBAAkB,CAmF3D;AA8BD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,eAAe,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,qEAAqE;IACrE,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,aAAa,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAClF,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EACtE,UAAU,EAAE,MAAM,EAClB,SAAS,GAAE,kBAAuB,GACjC,OAAO,CAAC,WAAW,CAAC,CA0ItB"}
|
package/dist/main.js
CHANGED
|
@@ -104,9 +104,11 @@ function address(env, name) {
|
|
|
104
104
|
* POSITION_MANAGER optional; selects a recorded stack on the chain (the legacy one when
|
|
105
105
|
* unset), or overrides the address for a chain with no address book
|
|
106
106
|
* SPEND_GATED_CALCULATOR optional address-book override
|
|
107
|
-
* POOL_SWAP optional address-book override; required for a v1_3 stack
|
|
107
|
+
* POOL_SWAP optional address-book override; required for a v1_3 or any_v1_3 stack
|
|
108
108
|
* FLETH optional address-book override; the chain's flETH wrapper
|
|
109
|
-
* FLAUNCH_VARIANT optional; v1_2, multichain or
|
|
109
|
+
* FLAUNCH_VARIANT optional; v1_2, multichain, v1_3 or any_v1_3 — the PRIMARY manager's
|
|
110
|
+
* generation. Adoption is not limited to it: any manager wired to the
|
|
111
|
+
* calculator is served (see chain/discover.ts)
|
|
110
112
|
* SETTLER optional; defaults to the signing key's own address
|
|
111
113
|
* WALLET_CAP_WEI default 0.025 ETH; the cap for ETH-paired launches
|
|
112
114
|
* ROUND_MS default 90000
|
|
@@ -138,13 +140,15 @@ export function resolveGateEnv(env) {
|
|
|
138
140
|
if (variantOverride !== undefined &&
|
|
139
141
|
variantOverride !== 'v1_2' &&
|
|
140
142
|
variantOverride !== 'multichain' &&
|
|
141
|
-
variantOverride !== 'v1_3'
|
|
142
|
-
|
|
143
|
+
variantOverride !== 'v1_3' &&
|
|
144
|
+
variantOverride !== 'any_v1_3') {
|
|
145
|
+
throw new Error(`FLAUNCH_VARIANT must be v1_2, multichain, v1_3 or any_v1_3, not ${variantOverride}`);
|
|
143
146
|
}
|
|
144
147
|
const flaunchVariant = variantOverride ?? recorded?.flaunchVariant ?? 'v1_2';
|
|
145
148
|
const poolSwap = address(env, 'POOL_SWAP') ?? recorded?.poolSwap ?? null;
|
|
146
|
-
|
|
147
|
-
|
|
149
|
+
// Both V1_3 generations take paired buys through the approved router.
|
|
150
|
+
if ((flaunchVariant === 'v1_3' || flaunchVariant === 'any_v1_3') && !poolSwap) {
|
|
151
|
+
throw new Error(`a ${flaunchVariant} stack needs POOL_SWAP — the approved router a paired-token buy goes through`);
|
|
148
152
|
}
|
|
149
153
|
const fleth = address(env, 'FLETH') ?? recorded?.fleth ?? null;
|
|
150
154
|
const signerPrivateKey = required(env, 'SIGNER_PRIVATE_KEY');
|
|
@@ -306,6 +310,7 @@ export async function startGate(game, gameConfig, overrides = {}) {
|
|
|
306
310
|
minLobbyLeadMs: config.minLobbyLeadMs,
|
|
307
311
|
gateEndsAtGraceS: config.gateEndsAtGraceS,
|
|
308
312
|
flaunchVariant: config.deployment.flaunchVariant,
|
|
313
|
+
positionManagerPolicy: 'wired-to-calculator',
|
|
309
314
|
...(announcedSpendTokens.length > 0 ? { spendTokens: announcedSpendTokens } : {}),
|
|
310
315
|
...(pairedTokenRegistry ? { pairedTokenRegistry } : {}),
|
|
311
316
|
requiresEoa: false,
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/dist/room.d.ts
CHANGED
|
@@ -32,6 +32,12 @@ export declare class Room<Config, State, Event, Action, PublicView, PlayerView>
|
|
|
32
32
|
readonly terms: RoundTerms;
|
|
33
33
|
readonly scoreAuthority: ScoreAuthority;
|
|
34
34
|
private seq;
|
|
35
|
+
/**
|
|
36
|
+
* The PositionManager the coin was launched on, as the gate resolved it at adoption. Null for
|
|
37
|
+
* rounds adopted before the gate recorded it (below 0.6.0), and for demo and mock rooms. Kept
|
|
38
|
+
* off `LaunchContext`, which is the wire type games receive.
|
|
39
|
+
*/
|
|
40
|
+
readonly positionManager: string | null;
|
|
35
41
|
/**
|
|
36
42
|
* HTTP actions and the server ticker can arrive together. Keep the one-writer promise true
|
|
37
43
|
* inside a process by running both through the same serial tail.
|
|
@@ -59,6 +65,7 @@ export declare class Room<Config, State, Event, Action, PublicView, PlayerView>
|
|
|
59
65
|
name?: string;
|
|
60
66
|
symbol?: string;
|
|
61
67
|
imageUrl?: string | null;
|
|
68
|
+
positionManager?: string | null;
|
|
62
69
|
};
|
|
63
70
|
}): Promise<Room<Config, State, Event, Action, PublicView, PlayerView>>;
|
|
64
71
|
/** Pick up a round that already exists. Returns null if there is no such round. */
|
|
@@ -102,6 +109,15 @@ export declare class Room<Config, State, Event, Action, PublicView, PlayerView>
|
|
|
102
109
|
playerView(player: PlayerId): PlayerView;
|
|
103
110
|
/** The cursor a reconnecting client resumes from. */
|
|
104
111
|
sequence(): number;
|
|
112
|
+
/**
|
|
113
|
+
* Record that the round is final: every landed buy is in `spent` and nothing will change again.
|
|
114
|
+
*
|
|
115
|
+
* The server calls this once, after its last clean settlement pass past `booksCloseAt`, before it
|
|
116
|
+
* closes the room's sockets. Idempotent — the first stamp wins, so a retried teardown after a
|
|
117
|
+
* failed socket close cannot move the moment. It is what `GET /coins/:coin/rankings` reads back
|
|
118
|
+
* as `settledAt`/`final`.
|
|
119
|
+
*/
|
|
120
|
+
markSettled(at: number): Promise<void>;
|
|
105
121
|
}
|
|
106
122
|
export {};
|
|
107
123
|
//# sourceMappingURL=room.d.ts.map
|
package/dist/room.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAE/B,OAAO,KAAK,EAAS,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACtH,OAAO,EAAmB,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAIvH;;;;;;GAMG;AACH,KAAK,aAAa,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AACxE,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,iBAAiB,CAAC;AAEzD;;;;;;;;;GASG;AACH,qBAAa,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAQlE,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,OAAO,CAAC,KAAK;IACb,QAAQ,CAAC,MAAM,EAAE,WAAW;IAC5B,QAAQ,CAAC,MAAM,EAAE,aAAa;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU;IAC1B,QAAQ,CAAC,cAAc,EAAE,cAAc;IACvC,OAAO,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
|
package/dist/room.js
CHANGED
|
@@ -22,12 +22,19 @@ export class Room {
|
|
|
22
22
|
terms;
|
|
23
23
|
scoreAuthority;
|
|
24
24
|
seq;
|
|
25
|
+
positionManager;
|
|
25
26
|
/**
|
|
26
27
|
* HTTP actions and the server ticker can arrive together. Keep the one-writer promise true
|
|
27
28
|
* inside a process by running both through the same serial tail.
|
|
28
29
|
*/
|
|
29
30
|
pending = Promise.resolve();
|
|
30
|
-
constructor(pool, game, id, round, window, launch, terms, scoreAuthority, seq
|
|
31
|
+
constructor(pool, game, id, round, window, launch, terms, scoreAuthority, seq,
|
|
32
|
+
/**
|
|
33
|
+
* The PositionManager the coin was launched on, as the gate resolved it at adoption. Null for
|
|
34
|
+
* rounds adopted before the gate recorded it (below 0.6.0), and for demo and mock rooms. Kept
|
|
35
|
+
* off `LaunchContext`, which is the wire type games receive.
|
|
36
|
+
*/
|
|
37
|
+
positionManager = null) {
|
|
31
38
|
this.pool = pool;
|
|
32
39
|
this.game = game;
|
|
33
40
|
this.id = id;
|
|
@@ -37,6 +44,7 @@ export class Room {
|
|
|
37
44
|
this.terms = terms;
|
|
38
45
|
this.scoreAuthority = scoreAuthority;
|
|
39
46
|
this.seq = seq;
|
|
47
|
+
this.positionManager = positionManager;
|
|
40
48
|
}
|
|
41
49
|
static async create(pool, game, round) {
|
|
42
50
|
const booksCloseAt = round.booksCloseAt ?? round.window.closesAt;
|
|
@@ -76,8 +84,8 @@ export class Room {
|
|
|
76
84
|
spend_token, spend_symbol, spend_decimals, usd_per_spend_token,
|
|
77
85
|
max_points_per_player, score_authority,
|
|
78
86
|
pool_id, opens_at, closes_at, books_close_at,
|
|
79
|
-
coin_address, coin_name, coin_symbol, coin_image_url, state, seq
|
|
80
|
-
) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, 0)`, [
|
|
87
|
+
coin_address, coin_name, coin_symbol, coin_image_url, position_manager, state, seq
|
|
88
|
+
) values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, 0)`, [
|
|
81
89
|
round.id,
|
|
82
90
|
game.id,
|
|
83
91
|
round.unitsPerPoint.toString(),
|
|
@@ -98,9 +106,10 @@ export class Room {
|
|
|
98
106
|
launch.name,
|
|
99
107
|
launch.symbol,
|
|
100
108
|
launch.imageUrl,
|
|
109
|
+
round.launch?.positionManager?.toLowerCase() ?? null,
|
|
101
110
|
serialise(game.id, started.snapshot()),
|
|
102
111
|
]);
|
|
103
|
-
return new Room(pool, game, round.id, started, round.window, launch, terms, round.scoreAuthority, 0);
|
|
112
|
+
return new Room(pool, game, round.id, started, round.window, launch, terms, round.scoreAuthority, 0, round.launch?.positionManager?.toLowerCase() ?? null);
|
|
104
113
|
}
|
|
105
114
|
/** Pick up a round that already exists. Returns null if there is no such round. */
|
|
106
115
|
static async load(pool, game, id) {
|
|
@@ -108,7 +117,7 @@ export class Room {
|
|
|
108
117
|
wallet_cap_wei, points_per_dollar, usd_per_eth,
|
|
109
118
|
spend_token, spend_symbol, spend_decimals, usd_per_spend_token,
|
|
110
119
|
max_points_per_player, score_authority, game_id,
|
|
111
|
-
coin_address, coin_name, coin_symbol, coin_image_url
|
|
120
|
+
coin_address, coin_name, coin_symbol, coin_image_url, position_manager
|
|
112
121
|
from rounds where id = $1`, [id]);
|
|
113
122
|
const row = result.rows[0];
|
|
114
123
|
if (!row)
|
|
@@ -141,7 +150,7 @@ export class Room {
|
|
|
141
150
|
// it holds that round's ETH price, which is exactly its spend token's price.
|
|
142
151
|
usdPerSpendToken: row.usd_per_spend_token === null ? Number(row.usd_per_eth) : Number(row.usd_per_spend_token),
|
|
143
152
|
});
|
|
144
|
-
return new Room(pool, game, id, Round.resume(game, row.state, window), window, launch, terms, row.score_authority, row.seq);
|
|
153
|
+
return new Room(pool, game, id, Round.resume(game, row.state, window), window, launch, terms, row.score_authority, row.seq, row.position_manager);
|
|
145
154
|
}
|
|
146
155
|
/**
|
|
147
156
|
* Apply one command and commit everything it caused.
|
|
@@ -254,6 +263,20 @@ export class Room {
|
|
|
254
263
|
sequence() {
|
|
255
264
|
return this.seq;
|
|
256
265
|
}
|
|
266
|
+
/**
|
|
267
|
+
* Record that the round is final: every landed buy is in `spent` and nothing will change again.
|
|
268
|
+
*
|
|
269
|
+
* The server calls this once, after its last clean settlement pass past `booksCloseAt`, before it
|
|
270
|
+
* closes the room's sockets. Idempotent — the first stamp wins, so a retried teardown after a
|
|
271
|
+
* failed socket close cannot move the moment. It is what `GET /coins/:coin/rankings` reads back
|
|
272
|
+
* as `settledAt`/`final`.
|
|
273
|
+
*/
|
|
274
|
+
async markSettled(at) {
|
|
275
|
+
await this.pool.query(`update rounds set settled_at = $1 where id = $2 and settled_at is null`, [
|
|
276
|
+
at,
|
|
277
|
+
this.id,
|
|
278
|
+
]);
|
|
279
|
+
}
|
|
257
280
|
}
|
|
258
281
|
/**
|
|
259
282
|
* Game state has to survive a round trip through JSON, and one thing silently does not: `bigint`
|
package/dist/room.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AAExD,OAAO,EAAE,eAAe,EAAwD,MAAM,gCAAgC,CAAC;AACvH,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAYrD;;;;;;;;;GASG;AACH,MAAM,OAAO,IAAI;IAQI;IACA;IACR;IACD;IACC;IACA;IACA;IACA;IACD;
|
|
1
|
+
{"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -118,6 +118,11 @@ export interface GameServerGateOptions extends GateBaseOptions {
|
|
|
118
118
|
/** Reviewed HTTPS origins that may receive player join tickets. The gate origin is always allowed. */
|
|
119
119
|
gameServerOrigins?: readonly string[];
|
|
120
120
|
}
|
|
121
|
+
/**
|
|
122
|
+
* How a gate decides which PositionManagers it adopts coins from. One value today; the type exists
|
|
123
|
+
* so a client can compare rather than test for presence, and so a later policy has a name.
|
|
124
|
+
*/
|
|
125
|
+
export type PositionManagerPolicy = 'wired-to-calculator';
|
|
121
126
|
/**
|
|
122
127
|
* The gate's public identity, in the exact shape the flaunch frontend's `GateServerConfig` already
|
|
123
128
|
* parses — served this way so the page that builds launches needs no second config type.
|
|
@@ -139,7 +144,15 @@ export interface GateAnnouncement {
|
|
|
139
144
|
roundDurationMs: number;
|
|
140
145
|
minLobbyLeadMs: number;
|
|
141
146
|
gateEndsAtGraceS: number;
|
|
147
|
+
/** The generation of the PRIMARY manager in `contracts.positionManager`; not a limit on adoption. */
|
|
142
148
|
flaunchVariant: FlaunchVariant;
|
|
149
|
+
/**
|
|
150
|
+
* How this gate decides which PositionManagers it adopts coins from. `'wired-to-calculator'`
|
|
151
|
+
* means any manager whose fee wiring routes to `contracts.spendGatedCalculator`, derived from the
|
|
152
|
+
* coin itself at adoption; `contracts.positionManager` is then the primary manager, not the only
|
|
153
|
+
* one. A gate that omits the field (below 0.6.0) adopts coins on `contracts.positionManager` only.
|
|
154
|
+
*/
|
|
155
|
+
positionManagerPolicy?: PositionManagerPolicy;
|
|
143
156
|
/**
|
|
144
157
|
* The non-ETH paired tokens this gate will run rounds on, each with the cap a launch on it should
|
|
145
158
|
* write. Absent or empty means ETH pairings only. Launch tooling refuses a pairing that is not
|
|
@@ -197,6 +210,13 @@ export type Admission = {
|
|
|
197
210
|
reason: string;
|
|
198
211
|
};
|
|
199
212
|
export type Admit = (request: AdmissionRequest) => Admission | Promise<Admission>;
|
|
213
|
+
/**
|
|
214
|
+
* How long after `closesAt` the books stay open for chain reconciliation.
|
|
215
|
+
*
|
|
216
|
+
* Independent of any authorisation lifetime: a signed ceiling lasts until the books close, and a
|
|
217
|
+
* buy included in the last seconds of play still needs two confirmations and a reconcile pass to
|
|
218
|
+
* reach the standings.
|
|
219
|
+
*/
|
|
200
220
|
export declare const DEFAULT_SETTLEMENT_TAIL_MS: number;
|
|
201
221
|
export declare function createGate<Config, State, Event, Action, PublicView, PlayerView>(options: GateOptions<Config, State, Event, Action, PublicView, PlayerView>): FastifyInstance;
|
|
202
222
|
export declare function createGameServerGate(options: GameServerGateOptions): FastifyInstance;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,eAAe,EAA0C,MAAM,SAAS,CAAC;AAIhG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,KAAK,EAKV,UAAU,EAIX,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAuB,MAAM,WAAW,CAAC;AAEtD,OAAO,
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,KAAK,eAAe,EAA0C,MAAM,SAAS,CAAC;AAIhG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAE/E,OAAO,KAAK,EAKV,UAAU,EAIX,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAuB,MAAM,WAAW,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAmC,MAAM,aAAa,CAAC;AACtE,OAAO,EAAe,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AASlD;;;;;;;;;;GAUG;AAEH,UAAU,eAAe;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,eAAe,EAAE,MAAM,CAAC;IACxB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACrF,mEAAmE;IACnE,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,kEAAkE;IAClE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,wFAAwF;IACxF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,cAAc,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IACpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,MAAM,gBAAgB,CAAC;IAClC,yDAAyD;IACzD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,iCAAiC,EAAE,aAAa,CAAC,CAAC;IACvG;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,0FAA0F;IAC1F,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,4FAA4F;AAC5F,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC;AAErF,iGAAiG;AACjG,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,6EAA6E;AAC7E,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAA;CAAE,CAAC;AACzG,MAAM,MAAM,eAAe,CAAC,MAAM,IAAI,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAElF,MAAM,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,IAAI,eAAe,GAAG;IAChG,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACvE,8FAA8F;IAC9F,MAAM,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7E,mEAAmE;AACnE,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,8FAA8F;IAC9F,MAAM,EAAE,MAAM,CAAC;IACf,kGAAkG;IAClG,kBAAkB,EAAE,MAAM,GAAG,kBAAkB,CAAC;IAChD,8EAA8E;IAC9E,UAAU,EAAE,MAAM,CAAC;IACnB,sGAAsG;IACtG,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,eAAe,EAAE,KAAK,MAAM,EAAE,CAAC;QAC/B,oBAAoB,EAAE,KAAK,MAAM,EAAE,CAAC;QACpC,2FAA2F;QAC3F,QAAQ,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,0FAA0F;IAC1F,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;IACtB,iGAAiG;IACjG,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,qHAAqH;IACrH,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,qGAAqG;IACrG,cAAc,EAAE,cAAc,CAAC;IAC/B;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C;;;;OAIG;IACH,WAAW,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACpC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B,iGAAiG;IACjG,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,8EAA8E;IAC9E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qFAAqF;AACrF,MAAM,WAAW,gBAAgB;IAC/B,mGAAmG;IACnG,EAAE,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IACnC,qEAAqE;IACrE,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,wFAAwF;IACxF,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,0FAA0F;IAC1F,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,gBAAgB,KAAK,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAsDlF;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,QAAa,CAAC;AAkDrD,wBAAgB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAC7E,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,GACzE,eAAe,CAEjB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,eAAe,CAuBpF;AA09BD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAClC,YAAY,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -6,7 +6,7 @@ import { isRefusal } from '@flayerlabs/gamemode-spec';
|
|
|
6
6
|
import { ETH_SPEND_TOKEN, isReactionId, LIVE_PROTOCOL_VERSION } from '@flayerlabs/gamemode-spec/live';
|
|
7
7
|
import { Room } from './room.js';
|
|
8
8
|
import { Standings } from './standings.js';
|
|
9
|
-
import {
|
|
9
|
+
import { Claims, isClaimAmount, isClaimRequestId } from './claims.js';
|
|
10
10
|
import { NotSignedIn, Sessions } from './sessions.js';
|
|
11
11
|
import { parsePlayCursor, readPlaySessions, recordPlaySession } from './play-sessions.js';
|
|
12
12
|
import { resolveEconomy } from './economy.js';
|
|
@@ -39,10 +39,8 @@ const ethOnly = (usdPerEth) => (token) => (token.isNative ? usdPerEth : null);
|
|
|
39
39
|
const wireEconomy = (balance) => ({
|
|
40
40
|
unitsPerPoint: balance.unitsPerPoint.toString(),
|
|
41
41
|
earned: balance.earned.toString(),
|
|
42
|
-
held: balance.held.toString(),
|
|
43
42
|
spent: balance.spent.toString(),
|
|
44
43
|
available: balance.available.toString(),
|
|
45
|
-
holdExpiresAt: balance.holdExpiresAt,
|
|
46
44
|
});
|
|
47
45
|
/** How often each open room is nudged so a deadline nobody is watching still fires. */
|
|
48
46
|
const TICK_MS = 250;
|
|
@@ -62,7 +60,14 @@ const MAX_AUTHORITATIVE_BUFFERED_BYTES = 1_024 * 1_024;
|
|
|
62
60
|
const TERMINAL_DRAIN_DEADLINE_MS = 1_000;
|
|
63
61
|
/** Reactions are also bounded across a whole room, not only per sending socket. */
|
|
64
62
|
const MAX_ROOM_REACTIONS_PER_SECOND = 20;
|
|
65
|
-
|
|
63
|
+
/**
|
|
64
|
+
* How long after `closesAt` the books stay open for chain reconciliation.
|
|
65
|
+
*
|
|
66
|
+
* Independent of any authorisation lifetime: a signed ceiling lasts until the books close, and a
|
|
67
|
+
* buy included in the last seconds of play still needs two confirmations and a reconcile pass to
|
|
68
|
+
* reach the standings.
|
|
69
|
+
*/
|
|
70
|
+
export const DEFAULT_SETTLEMENT_TAIL_MS = 5 * 60_000;
|
|
66
71
|
const GAME_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
|
|
67
72
|
function gameServerModule(id) {
|
|
68
73
|
return {
|
|
@@ -112,8 +117,8 @@ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
|
|
|
112
117
|
throw new RangeError('reactionIds must contain only valid reaction identifiers');
|
|
113
118
|
}
|
|
114
119
|
const settlementTailMs = options.settlementTailMs ?? DEFAULT_SETTLEMENT_TAIL_MS;
|
|
115
|
-
if (!Number.isSafeInteger(settlementTailMs) || settlementTailMs
|
|
116
|
-
throw new RangeError(
|
|
120
|
+
if (!Number.isSafeInteger(settlementTailMs) || settlementTailMs <= 0) {
|
|
121
|
+
throw new RangeError('settlementTailMs must be a positive number of milliseconds');
|
|
117
122
|
}
|
|
118
123
|
// A body limit costs nothing and is the cheapest protection against an endpoint that parses.
|
|
119
124
|
const app = Fastify({ logger: process.env.GATE_LOG === '1', bodyLimit: 64 * 1024 });
|
|
@@ -233,6 +238,7 @@ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
|
|
|
233
238
|
name: launch.name,
|
|
234
239
|
symbol: launch.symbol,
|
|
235
240
|
imageUrl: launch.imageUrl ?? null,
|
|
241
|
+
positionManager: launch.positionManager ?? null,
|
|
236
242
|
},
|
|
237
243
|
});
|
|
238
244
|
}
|
|
@@ -240,6 +246,8 @@ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
|
|
|
240
246
|
app.log.error(error);
|
|
241
247
|
return { ok: false, status: 503, message: 'this game is still being prepared' };
|
|
242
248
|
}
|
|
249
|
+
app.log.info(`${launch.coinAddress}: adopted ${launch.symbol || 'coin'} on position manager ` +
|
|
250
|
+
`${launch.positionManager ?? 'primary'} (pool ${launch.poolId}, ${spendToken.symbol})`);
|
|
243
251
|
rooms.set(launch.poolId, room);
|
|
244
252
|
return { ok: true, room, created: true };
|
|
245
253
|
}
|
|
@@ -327,8 +335,8 @@ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
|
|
|
327
335
|
*
|
|
328
336
|
* Served by every gate rather than behind an option, because the numbers already exist in the
|
|
329
337
|
* gate's own tables and this is the only place they exist at all — the platform never sees a
|
|
330
|
-
* play. Spend is `chain_spent_wei`, the chain-reconciled figure, not
|
|
331
|
-
* not a purchase. `spendWeiTotal` is a decimal string because wei does not survive JSON as a
|
|
338
|
+
* play. Spend is `chain_spent_wei`, the chain-reconciled figure, not authorisations: a signed
|
|
339
|
+
* ceiling is not a purchase. `spendWeiTotal` is a decimal string because wei does not survive JSON as a
|
|
332
340
|
* number, and `lastRoundAt` is milliseconds, matching every timestamp a round carries.
|
|
333
341
|
*
|
|
334
342
|
* The permissive CORS header mirrors `/config`: the dashboard is a different origin from the
|
|
@@ -561,7 +569,7 @@ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
|
|
|
561
569
|
if (!result.ok) {
|
|
562
570
|
return reply.code(result.refuse === 'award.invalid' ? 400 : 404).send({ refuse: result.refuse });
|
|
563
571
|
}
|
|
564
|
-
// `
|
|
572
|
+
// `spent` rises whenever settlement sees a purchase land, so this answer is only true at the
|
|
565
573
|
// moment it is read. Points are monotone; the wei beside them are not.
|
|
566
574
|
const balance = await claims.economyBalance(result.standing.roundId, result.standing.player);
|
|
567
575
|
return reply
|
|
@@ -644,10 +652,10 @@ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
|
|
|
644
652
|
const room = await roomFor(id);
|
|
645
653
|
if (!room)
|
|
646
654
|
return reply.code(404).send({ message: 'that game is not running' });
|
|
647
|
-
const {
|
|
655
|
+
const { spend, requestId } = request.body;
|
|
648
656
|
let upTo;
|
|
649
657
|
try {
|
|
650
|
-
upTo = BigInt(
|
|
658
|
+
upTo = BigInt(spend ?? '0');
|
|
651
659
|
}
|
|
652
660
|
catch {
|
|
653
661
|
return reply.code(400).send({ message: 'that amount was not understood' });
|
|
@@ -655,9 +663,8 @@ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
|
|
|
655
663
|
if (!isClaimAmount(upTo))
|
|
656
664
|
return reply.code(400).send({ message: 'that amount was not understood' });
|
|
657
665
|
// Required, not defaulted. Minting an id here for a caller that omitted one makes every retry a
|
|
658
|
-
// fresh
|
|
659
|
-
//
|
|
660
|
-
// to keep working.
|
|
666
|
+
// fresh signature, and a retry must receive the same bytes it was first given — otherwise the
|
|
667
|
+
// trusted page cannot tell a replayed request from a new one.
|
|
661
668
|
if (!isClaimRequestId(requestId)) {
|
|
662
669
|
return reply.code(400).send({ message: 'that request was not understood' });
|
|
663
670
|
}
|
|
@@ -675,10 +682,12 @@ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
|
|
|
675
682
|
buyer: payload.buyer,
|
|
676
683
|
poolId: payload.poolId,
|
|
677
684
|
deadline: payload.deadline.toString(),
|
|
678
|
-
|
|
679
|
-
nonce: payload.nonce.toString(),
|
|
685
|
+
spendCeilingWei: payload.spendCeilingWei.toString(),
|
|
680
686
|
signature: payload.signature,
|
|
681
687
|
signer: payload.signer,
|
|
688
|
+
// Not signed: the exact-in amount for THIS buy, clamped to what was available. The page
|
|
689
|
+
// spends exactly this; the calculator enforces the ceiling above.
|
|
690
|
+
spend: authorised.spend.toString(),
|
|
682
691
|
// The embed passes this opaque value to the Flaunch buy call. Game code never reconstructs
|
|
683
692
|
// the ABI and therefore cannot accidentally sign or submit a different transaction shape.
|
|
684
693
|
hookData: encodeHookData(payload),
|
|
@@ -768,10 +777,8 @@ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
|
|
|
768
777
|
: {
|
|
769
778
|
unitsPerPoint: room.terms.unitsPerPoint,
|
|
770
779
|
earned: 0n,
|
|
771
|
-
held: 0n,
|
|
772
780
|
spent: 0n,
|
|
773
781
|
available: 0n,
|
|
774
|
-
holdExpiresAt: null,
|
|
775
782
|
};
|
|
776
783
|
const economy = wireEconomy(balance);
|
|
777
784
|
return {
|
|
@@ -957,23 +964,14 @@ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
|
|
|
957
964
|
try {
|
|
958
965
|
const now = Date.now();
|
|
959
966
|
const sweeping = Boolean(settlement && now - reconciledAt >= RECONCILE_MS);
|
|
960
|
-
// Authorisations nobody spent come back to the player who earned them.
|
|
961
|
-
// A chain-backed gate expires holds atomically with confirmed spend, never ahead of a
|
|
962
|
-
// lagging/failed RPC read. Demo and legacy adapters retain their existing expiry path.
|
|
963
|
-
const released = settlement?.usesConfirmedSnapshots ? [] : await claims.releaseExpired().catch((error) => {
|
|
964
|
-
app.log.error(error);
|
|
965
|
-
return [];
|
|
966
|
-
});
|
|
967
|
-
for (const balance of released)
|
|
968
|
-
announcePlayer(balance.roundId, balance.player);
|
|
969
967
|
for (const [id, room] of rooms) {
|
|
970
|
-
// Gameplay is over, but a buzzer-time
|
|
971
|
-
//
|
|
968
|
+
// Gameplay is over, but a buzzer-time buy and the chart remain honourable through the
|
|
969
|
+
// independent books tail. A process can wake for the first time after this tail (for
|
|
972
970
|
// example after a stall or restart), so persist every due game wake before deleting it.
|
|
973
971
|
if (now > room.launch.booksCloseAt) {
|
|
974
|
-
//
|
|
975
|
-
//
|
|
976
|
-
if (settlement
|
|
972
|
+
// The last reconcile must run at the normal cadence, not on every tick, and a room is
|
|
973
|
+
// torn down only after one clean pass so the final standings carry every landed buy.
|
|
974
|
+
if (settlement && !sweeping)
|
|
977
975
|
continue;
|
|
978
976
|
try {
|
|
979
977
|
if (room.nextWakeAt() !== null)
|
|
@@ -989,10 +987,21 @@ function createGateRuntime(options, scoreAuthority, awardEndpoint) {
|
|
|
989
987
|
const final = await settlement.reconcile(id).catch(() => ({ read: 0, failed: 1, changed: [] }));
|
|
990
988
|
if (final.failed > 0)
|
|
991
989
|
app.log.error(`${id}: ${final.failed} final spend reads failed`);
|
|
992
|
-
if (
|
|
993
|
-
(final.failed > 0 || await settlement.hasPendingClaims(id).catch(() => true)))
|
|
990
|
+
if (final.failed > 0)
|
|
994
991
|
continue;
|
|
995
992
|
}
|
|
993
|
+
// The round is now proven final. Persist that before anything is torn down, so a page
|
|
994
|
+
// reading the standings can tell "ended, still settling" from "final" — and so the
|
|
995
|
+
// 4410 close below is never sent for a round the database still calls unsettled.
|
|
996
|
+
try {
|
|
997
|
+
await room.markSettled(now);
|
|
998
|
+
}
|
|
999
|
+
catch (error) {
|
|
1000
|
+
// Retain the room and retry: the standings would otherwise never be marked final,
|
|
1001
|
+
// and the sockets would be told the round ended before the database agreed.
|
|
1002
|
+
app.log.error(error);
|
|
1003
|
+
continue;
|
|
1004
|
+
}
|
|
996
1005
|
for (const watcher of watchers.get(id) ?? []) {
|
|
997
1006
|
if (watcher.viewer &&
|
|
998
1007
|
activePlayerSockets.get(playerSocketKey(id, watcher.viewer)) === watcher) {
|