@flayerlabs/gamemode-spec 0.6.0 → 0.7.1
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/dist/embed.d.ts +44 -24
- package/dist/embed.d.ts.map +1 -1
- package/dist/embed.js +38 -24
- package/dist/embed.js.map +1 -1
- package/dist/frame.d.ts +10 -9
- package/dist/frame.d.ts.map +1 -1
- package/dist/frame.js +7 -7
- package/dist/frame.js.map +1 -1
- package/dist/live.d.ts +33 -25
- package/dist/live.d.ts.map +1 -1
- package/dist/live.js +1 -1
- package/dist/live.js.map +1 -1
- package/package.json +1 -1
- package/src/embed.ts +58 -36
- package/src/frame.ts +16 -15
- package/src/live.ts +33 -25
package/dist/embed.d.ts
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import type { PlayerId } from './index.js';
|
|
2
2
|
import { type BuyFailure, type LaunchContext, type PlayerIdentity, type WireMarketState } from './live.js';
|
|
3
3
|
export declare const EMBED_CHANNEL: "flaunch.game-mode";
|
|
4
|
-
export declare const EMBED_PROTOCOL_VERSION:
|
|
5
|
-
|
|
4
|
+
export declare const EMBED_PROTOCOL_VERSION: 2;
|
|
5
|
+
/** How many game-server origins a developer may declare for one game. */
|
|
6
|
+
export declare const MAX_GAME_SERVER_ORIGINS = 20;
|
|
7
|
+
/**
|
|
8
|
+
* How many other-chain gate origins a platform may fold into the same reviewed list. They ride along
|
|
9
|
+
* uncounted, so a game on every chain keeps all of its game-server slots.
|
|
10
|
+
*/
|
|
11
|
+
export declare const MAX_EXTRA_GATE_ORIGINS = 12;
|
|
12
|
+
/** The bound on the whole reviewed list: what a host policy or a registry pin may carry. */
|
|
13
|
+
export declare const MAX_REVIEWED_ORIGINS: number;
|
|
6
14
|
export interface GameSecurityProfile {
|
|
7
15
|
kind: 'game';
|
|
8
16
|
connect: {
|
|
@@ -20,35 +28,48 @@ export interface GameRegistration {
|
|
|
20
28
|
/** Reviewed HTTPS origins for a creator-owned authoritative game server. */
|
|
21
29
|
gameServerOrigins?: readonly string[];
|
|
22
30
|
}
|
|
23
|
-
/**
|
|
24
|
-
|
|
31
|
+
/**
|
|
32
|
+
* Parse the optional reviewed game-server network surface into one canonical set.
|
|
33
|
+
*
|
|
34
|
+
* `max` defaults to the whole reviewed list, which may carry other-chain gate origins. Pass
|
|
35
|
+
* `MAX_GAME_SERVER_ORIGINS` where the list is only what the developer declared.
|
|
36
|
+
*/
|
|
37
|
+
export declare function parseGameServerOrigins(input: unknown, max?: number): readonly string[] | null;
|
|
25
38
|
/** Parse the central registry response into the exact browser-safe shape the parent may trust. */
|
|
26
39
|
export declare function parseGameRegistration(input: unknown): GameRegistration | null;
|
|
40
|
+
/**
|
|
41
|
+
* What the gate signed, plus the one unsigned figure the page needs.
|
|
42
|
+
*
|
|
43
|
+
* `spendCeilingWei` is the buyer's cumulative ceiling on this pool — min(earned, walletCap) at
|
|
44
|
+
* signing — not the amount of this purchase. The calculator keeps `walletSpentWei` per (pool,
|
|
45
|
+
* buyer) and rejects any swap where walletSpent + thisSpend > ceiling, so the same signature is
|
|
46
|
+
* reusable until `deadline` and harmless by construction: it can never authorise more than the
|
|
47
|
+
* player earned. Nothing is held for it, so a declined wallet dialog changes nothing.
|
|
48
|
+
*
|
|
49
|
+
* `spend` is what this purchase should buy, exact-in. It is not hashed into the signature and the
|
|
50
|
+
* page must never spend more than it.
|
|
51
|
+
*
|
|
52
|
+
* Amounts are base units of the round's spend token — wei for an ETH round, 10^-6 of a
|
|
53
|
+
* six-decimal stablecoin on a paired round. The signed field keeps the contract's `Wei` name
|
|
54
|
+
* because it is EIP-712 vocabulary hashed into the calculator's typehash.
|
|
55
|
+
*/
|
|
27
56
|
export interface SpendAuthorisation {
|
|
28
57
|
buyer: string;
|
|
29
58
|
poolId: string;
|
|
30
59
|
deadline: string;
|
|
31
|
-
|
|
32
|
-
* The ceiling this signature authorises, in base units of the round's spend token.
|
|
33
|
-
*
|
|
34
|
-
* The one field in this SDK still named for wei, and deliberately: the name is hashed into the
|
|
35
|
-
* EIP-712 typehash that the deployed spend-gate calculator verifies, so renaming it would
|
|
36
|
-
* invalidate every signature. Despite the name it is not ETH on a paired round — a six-decimal
|
|
37
|
-
* stablecoin round authorises 10^-6 units of that token.
|
|
38
|
-
*/
|
|
39
|
-
maxSpendWei: string;
|
|
40
|
-
nonce: string;
|
|
60
|
+
spendCeilingWei: string;
|
|
41
61
|
signature: string;
|
|
42
62
|
signer: string;
|
|
43
63
|
/** Opaque proof from the gate. The parent passes it to the Flaunch SDK unchanged. */
|
|
44
64
|
hookData: `0x${string}`;
|
|
65
|
+
/** Exact-in amount for THIS buy, unsigned. 0 < spend <= spendCeilingWei. */
|
|
66
|
+
spend: string;
|
|
45
67
|
}
|
|
46
68
|
export interface SpendAuthorisationFields {
|
|
47
69
|
buyer: string;
|
|
48
70
|
poolId: string;
|
|
49
71
|
deadline: string | bigint;
|
|
50
|
-
|
|
51
|
-
nonce: string | bigint;
|
|
72
|
+
spendCeilingWei: string | bigint;
|
|
52
73
|
}
|
|
53
74
|
/** Build the one typed-data shape shared by the gate signer and trusted parent verifier. */
|
|
54
75
|
export declare function spendAuthorisationTypedData(fields: SpendAuthorisationFields, chainId: number, verifyingContract: string): {
|
|
@@ -69,10 +90,7 @@ export declare function spendAuthorisationTypedData(fields: SpendAuthorisationFi
|
|
|
69
90
|
readonly name: "deadline";
|
|
70
91
|
readonly type: "uint256";
|
|
71
92
|
}, {
|
|
72
|
-
readonly name: "
|
|
73
|
-
readonly type: "uint256";
|
|
74
|
-
}, {
|
|
75
|
-
readonly name: "nonce";
|
|
93
|
+
readonly name: "spendCeilingWei";
|
|
76
94
|
readonly type: "uint256";
|
|
77
95
|
}];
|
|
78
96
|
};
|
|
@@ -81,8 +99,7 @@ export declare function spendAuthorisationTypedData(fields: SpendAuthorisationFi
|
|
|
81
99
|
buyer: `0x${string}`;
|
|
82
100
|
poolId: `0x${string}`;
|
|
83
101
|
deadline: bigint;
|
|
84
|
-
|
|
85
|
-
nonce: bigint;
|
|
102
|
+
spendCeilingWei: bigint;
|
|
86
103
|
};
|
|
87
104
|
};
|
|
88
105
|
export interface EmbeddedContext {
|
|
@@ -151,9 +168,12 @@ export declare function isSpendAuthorisation(input: unknown): input is SpendAuth
|
|
|
151
168
|
/**
|
|
152
169
|
* Require the exact ABI payload the gate emits, including its zero referrer.
|
|
153
170
|
*
|
|
154
|
-
* The calculator signature covers the
|
|
171
|
+
* The calculator signature covers the signed fields but not the outer referrer. A creator iframe
|
|
155
172
|
* can therefore redirect attribution while preserving a valid signature unless the trusted
|
|
156
|
-
* bridge checks the complete canonical encoding before opening wallet UI.
|
|
173
|
+
* bridge checks the complete canonical encoding before opening wallet UI. The unsigned `spend`
|
|
174
|
+
* is not part of hookData; the page enforces it, the calculator enforces the ceiling.
|
|
175
|
+
*
|
|
176
|
+
* Layout: `abi.encode(address referrer, (buyer, poolId, deadline, spendCeilingWei, signature))`.
|
|
157
177
|
*/
|
|
158
178
|
export declare function isCanonicalSpendHookData(input: unknown): input is SpendAuthorisation;
|
|
159
179
|
export declare function parseGameToHostMessage(input: unknown): GameToHostMessage | null;
|
package/dist/embed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AAEnB,eAAO,MAAM,aAAa,EAAG,mBAA4B,CAAC;AAC1D,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAC;AASjD,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAGL,KAAK,UAAU,EACf,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,WAAW,CAAC;AAEnB,eAAO,MAAM,aAAa,EAAG,mBAA4B,CAAC;AAC1D,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAC;AASjD,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C;;;GAGG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,4FAA4F;AAC5F,eAAO,MAAM,oBAAoB,QAAmD,CAAC;AAErF,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KACvC,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,SAAuB,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,CA0B3G;AAED,kGAAkG;AAClG,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CA6C7E;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;IACxB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AAsBD,4FAA4F;AAC5F,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,wBAAwB,EAChC,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM;;;;;2BAYmB,KAAK,MAAM,EAAE;;;;;;;;;;;;;;;;;;;eAK9B,KAAK,MAAM,EAAE;gBACX,KAAK,MAAM,EAAE;;;;EAK3C;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,MAAM,EAAE,SAAS,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAC9B;IAAE,MAAM,EAAE,KAAK,CAAC;IAAC,aAAa,EAAE,kBAAkB,CAAA;CAAE,GACpD;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,iBAAiB,GACzB;IAAE,OAAO,EAAE,OAAO,aAAa,CAAC;IAAC,CAAC,EAAE,OAAO,sBAAsB,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAClF;IACE,OAAO,EAAE,OAAO,aAAa,CAAC;IAC9B,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAEN,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,WAAW,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GACzB;IACE,OAAO,EAAE,OAAO,aAAa,CAAC;IAC9B,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACjC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,eAAe,CAAC;CAC1B,GACD;IACE,OAAO,EAAE,OAAO,aAAa,CAAC;IAC9B,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,OAAO,CAAC;CAChB,GACD;IACE,OAAO,EAAE,OAAO,aAAa,CAAC;IAC9B,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACjC,IAAI,EAAE,UAAU,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,YAAY,CAAC;CACrB,GACD;IACE,OAAO,EAAE,OAAO,aAAa,CAAC;IAC9B,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACjC,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,OAAO,EAAE,OAAO,aAAa,CAAC;IAC9B,CAAC,EAAE,OAAO,sBAAsB,CAAC;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAwBN,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAyBhF;AAWD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAsBpF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,CAuC/E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,CAqB/E;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,SAAe,GACpB,OAAO,CAkBT;AAED,sFAAsF;AACtF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAUhH;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,cAAc,EAAE,CAerF;AAED,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACnG,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/embed.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isLaunchContext, isWireMarketState, } from './live.js';
|
|
2
2
|
export const EMBED_CHANNEL = 'flaunch.game-mode';
|
|
3
|
-
export const EMBED_PROTOCOL_VERSION =
|
|
3
|
+
export const EMBED_PROTOCOL_VERSION = 2;
|
|
4
4
|
const ADDRESS = /^0x[0-9a-fA-F]{40}$/;
|
|
5
5
|
const BYTES32 = /^0x[0-9a-fA-F]{64}$/;
|
|
6
6
|
const HEX = /^0x(?:[0-9a-fA-F]{2})*$/;
|
|
@@ -8,12 +8,25 @@ const DECIMAL = /^(?:0|[1-9][0-9]{0,77})$/;
|
|
|
8
8
|
const REQUEST_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
|
|
9
9
|
const DEPLOY_ID = /^[0-9a-f]{32}$/;
|
|
10
10
|
const PUBLIC_HOSTNAME = /^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
/** How many game-server origins a developer may declare for one game. */
|
|
12
|
+
export const MAX_GAME_SERVER_ORIGINS = 20;
|
|
13
|
+
/**
|
|
14
|
+
* How many other-chain gate origins a platform may fold into the same reviewed list. They ride along
|
|
15
|
+
* uncounted, so a game on every chain keeps all of its game-server slots.
|
|
16
|
+
*/
|
|
17
|
+
export const MAX_EXTRA_GATE_ORIGINS = 12;
|
|
18
|
+
/** The bound on the whole reviewed list: what a host policy or a registry pin may carry. */
|
|
19
|
+
export const MAX_REVIEWED_ORIGINS = MAX_GAME_SERVER_ORIGINS + MAX_EXTRA_GATE_ORIGINS;
|
|
20
|
+
/**
|
|
21
|
+
* Parse the optional reviewed game-server network surface into one canonical set.
|
|
22
|
+
*
|
|
23
|
+
* `max` defaults to the whole reviewed list, which may carry other-chain gate origins. Pass
|
|
24
|
+
* `MAX_GAME_SERVER_ORIGINS` where the list is only what the developer declared.
|
|
25
|
+
*/
|
|
26
|
+
export function parseGameServerOrigins(input, max = MAX_REVIEWED_ORIGINS) {
|
|
14
27
|
if (input === undefined)
|
|
15
28
|
return Object.freeze([]);
|
|
16
|
-
if (!Array.isArray(input) || input.length >
|
|
29
|
+
if (!Array.isArray(input) || input.length > max)
|
|
17
30
|
return null;
|
|
18
31
|
const origins = [];
|
|
19
32
|
const seen = new Set();
|
|
@@ -86,8 +99,7 @@ const SPEND_AUTHORIZATION_TYPES = {
|
|
|
86
99
|
{ name: 'buyer', type: 'address' },
|
|
87
100
|
{ name: 'poolId', type: 'bytes32' },
|
|
88
101
|
{ name: 'deadline', type: 'uint256' },
|
|
89
|
-
{ name: '
|
|
90
|
-
{ name: 'nonce', type: 'uint256' },
|
|
102
|
+
{ name: 'spendCeilingWei', type: 'uint256' },
|
|
91
103
|
],
|
|
92
104
|
};
|
|
93
105
|
function uint256(value, field) {
|
|
@@ -112,7 +124,7 @@ export function spendAuthorisationTypedData(fields, chainId, verifyingContract)
|
|
|
112
124
|
return {
|
|
113
125
|
domain: {
|
|
114
126
|
name: 'FlaunchSpendGate',
|
|
115
|
-
version: '
|
|
127
|
+
version: '2',
|
|
116
128
|
chainId,
|
|
117
129
|
verifyingContract: verifyingContract,
|
|
118
130
|
},
|
|
@@ -122,8 +134,7 @@ export function spendAuthorisationTypedData(fields, chainId, verifyingContract)
|
|
|
122
134
|
buyer: fields.buyer,
|
|
123
135
|
poolId: fields.poolId,
|
|
124
136
|
deadline: uint256(fields.deadline, 'deadline'),
|
|
125
|
-
|
|
126
|
-
nonce: uint256(fields.nonce, 'nonce'),
|
|
137
|
+
spendCeilingWei: uint256(fields.spendCeilingWei, 'spendCeilingWei'),
|
|
127
138
|
},
|
|
128
139
|
};
|
|
129
140
|
}
|
|
@@ -157,10 +168,12 @@ export function isSpendAuthorisation(input) {
|
|
|
157
168
|
BYTES32.test(value.poolId) &&
|
|
158
169
|
typeof value.deadline === 'string' &&
|
|
159
170
|
DECIMAL.test(value.deadline) &&
|
|
160
|
-
typeof value.
|
|
161
|
-
DECIMAL.test(value.
|
|
162
|
-
typeof value.
|
|
163
|
-
DECIMAL.test(value.
|
|
171
|
+
typeof value.spendCeilingWei === 'string' &&
|
|
172
|
+
DECIMAL.test(value.spendCeilingWei) &&
|
|
173
|
+
typeof value.spend === 'string' &&
|
|
174
|
+
DECIMAL.test(value.spend) &&
|
|
175
|
+
BigInt(value.spend) > 0n &&
|
|
176
|
+
BigInt(value.spend) <= BigInt(value.spendCeilingWei) &&
|
|
164
177
|
typeof value.signature === 'string' &&
|
|
165
178
|
HEX.test(value.signature) &&
|
|
166
179
|
value.signature.length <= 512 &&
|
|
@@ -182,17 +195,19 @@ const uint256Word = (value) => {
|
|
|
182
195
|
/**
|
|
183
196
|
* Require the exact ABI payload the gate emits, including its zero referrer.
|
|
184
197
|
*
|
|
185
|
-
* The calculator signature covers the
|
|
198
|
+
* The calculator signature covers the signed fields but not the outer referrer. A creator iframe
|
|
186
199
|
* can therefore redirect attribution while preserving a valid signature unless the trusted
|
|
187
|
-
* bridge checks the complete canonical encoding before opening wallet UI.
|
|
200
|
+
* bridge checks the complete canonical encoding before opening wallet UI. The unsigned `spend`
|
|
201
|
+
* is not part of hookData; the page enforces it, the calculator enforces the ceiling.
|
|
202
|
+
*
|
|
203
|
+
* Layout: `abi.encode(address referrer, (buyer, poolId, deadline, spendCeilingWei, signature))`.
|
|
188
204
|
*/
|
|
189
205
|
export function isCanonicalSpendHookData(input) {
|
|
190
206
|
if (!isSpendAuthorisation(input))
|
|
191
207
|
return false;
|
|
192
208
|
const deadline = uint256Word(input.deadline);
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
if (!deadline || !maxSpendWei || !nonce)
|
|
209
|
+
const spendCeilingWei = uint256Word(input.spendCeilingWei);
|
|
210
|
+
if (!deadline || !spendCeilingWei)
|
|
196
211
|
return false;
|
|
197
212
|
const signature = input.signature.slice(2).toLowerCase();
|
|
198
213
|
const signatureLength = uint256Word(String(signature.length / 2));
|
|
@@ -205,9 +220,8 @@ export function isCanonicalSpendHookData(input) {
|
|
|
205
220
|
input.buyer.slice(2).toLowerCase().padStart(64, '0'),
|
|
206
221
|
input.poolId.slice(2).toLowerCase(),
|
|
207
222
|
deadline,
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
uint256Word('192'),
|
|
223
|
+
spendCeilingWei,
|
|
224
|
+
uint256Word('160'),
|
|
211
225
|
signatureLength,
|
|
212
226
|
paddedSignature,
|
|
213
227
|
].join('')}`;
|
|
@@ -240,11 +254,11 @@ export function parseGameToHostMessage(input) {
|
|
|
240
254
|
buyer: authorisation.buyer,
|
|
241
255
|
poolId: authorisation.poolId,
|
|
242
256
|
deadline: authorisation.deadline,
|
|
243
|
-
|
|
244
|
-
nonce: authorisation.nonce,
|
|
257
|
+
spendCeilingWei: authorisation.spendCeilingWei,
|
|
245
258
|
signature: authorisation.signature,
|
|
246
259
|
signer: authorisation.signer,
|
|
247
260
|
hookData: authorisation.hookData,
|
|
261
|
+
spend: authorisation.spend,
|
|
248
262
|
},
|
|
249
263
|
};
|
|
250
264
|
}
|
package/dist/embed.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"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"}
|
package/dist/frame.d.ts
CHANGED
|
@@ -18,7 +18,7 @@ import { type LaunchContext, type WireMarketState } from './live.js';
|
|
|
18
18
|
* trusted. Everything else (which gate, which round, which coin) arrives in `gm:context`, so there
|
|
19
19
|
* is one source of truth and it is the page the player is actually looking at.
|
|
20
20
|
*/
|
|
21
|
-
export declare const FRAME_PROTOCOL_VERSION:
|
|
21
|
+
export declare const FRAME_PROTOCOL_VERSION: 2;
|
|
22
22
|
/**
|
|
23
23
|
* Why a buy did not happen, in terms a player can be told about.
|
|
24
24
|
*
|
|
@@ -40,21 +40,22 @@ export interface EmbedContext {
|
|
|
40
40
|
/** Optional — a live gate sends it in the first snapshot anyway. */
|
|
41
41
|
readonly launch?: LaunchContext;
|
|
42
42
|
}
|
|
43
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Exactly what the gate signed plus the unsigned `spend`, all strings because bigints do not
|
|
45
|
+
* survive JSON. See `SpendAuthorisation` in this package for the field semantics.
|
|
46
|
+
*/
|
|
44
47
|
export interface WireAuthorisation {
|
|
45
48
|
buyer: string;
|
|
46
49
|
poolId: string;
|
|
47
50
|
deadline: string;
|
|
48
|
-
/**
|
|
49
|
-
|
|
50
|
-
* into the EIP-712 typehash the calculator verifies — see `SpendAuthorisation` in this package.
|
|
51
|
-
*/
|
|
52
|
-
maxSpendWei: string;
|
|
53
|
-
nonce: string;
|
|
51
|
+
/** Cumulative ceiling for this buyer on this pool, EIP-712 field name. */
|
|
52
|
+
spendCeilingWei: string;
|
|
54
53
|
signature: string;
|
|
55
54
|
signer: string;
|
|
55
|
+
/** Exact-in amount for this buy; unsigned, never more than the ceiling. */
|
|
56
|
+
spend: string;
|
|
56
57
|
/** Opaque proof the page passes to the Flaunch buy call. Never calldata. */
|
|
57
|
-
hookData
|
|
58
|
+
hookData: `0x${string}`;
|
|
58
59
|
}
|
|
59
60
|
export type HostCall = {
|
|
60
61
|
method: 'address';
|
package/dist/frame.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../src/frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAExF;;;;;;;;;;;;;;;;;;GAkBG;AAEH,eAAO,MAAM,sBAAsB,EAAG,CAAU,CAAC;AAEjD;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,6FAA6F;AAC7F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;CACjC;AAED
|
|
1
|
+
{"version":3,"file":"frame.d.ts","sourceRoot":"","sources":["../src/frame.ts"],"names":[],"mappings":"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"}
|
package/dist/frame.js
CHANGED
|
@@ -18,7 +18,7 @@ import { isWireMarketState } from './live.js';
|
|
|
18
18
|
* trusted. Everything else (which gate, which round, which coin) arrives in `gm:context`, so there
|
|
19
19
|
* is one source of truth and it is the page the player is actually looking at.
|
|
20
20
|
*/
|
|
21
|
-
export const FRAME_PROTOCOL_VERSION =
|
|
21
|
+
export const FRAME_PROTOCOL_VERSION = 2;
|
|
22
22
|
const BUY_FAILURES = [
|
|
23
23
|
'nothing-to-spend',
|
|
24
24
|
'declined',
|
|
@@ -44,22 +44,22 @@ function sdkFrom(value) {
|
|
|
44
44
|
function authorisationFrom(value) {
|
|
45
45
|
if (!isRecord(value))
|
|
46
46
|
return null;
|
|
47
|
-
const { buyer, poolId, deadline,
|
|
48
|
-
for (const field of [buyer, poolId, deadline,
|
|
47
|
+
const { buyer, poolId, deadline, spendCeilingWei, spend, signature, signer, hookData } = value;
|
|
48
|
+
for (const field of [buyer, poolId, deadline, spendCeilingWei, spend, signature, signer]) {
|
|
49
49
|
if (!isNonEmptyString(field))
|
|
50
50
|
return null;
|
|
51
51
|
}
|
|
52
|
-
if (
|
|
52
|
+
if (!(typeof hookData === 'string' && hookData.startsWith('0x')))
|
|
53
53
|
return null;
|
|
54
54
|
return {
|
|
55
55
|
buyer: buyer,
|
|
56
56
|
poolId: poolId,
|
|
57
57
|
deadline: deadline,
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
spendCeilingWei: spendCeilingWei,
|
|
59
|
+
spend: spend,
|
|
60
60
|
signature: signature,
|
|
61
61
|
signer: signer,
|
|
62
|
-
|
|
62
|
+
hookData: hookData,
|
|
63
63
|
};
|
|
64
64
|
}
|
|
65
65
|
function callFrom(value) {
|
package/dist/frame.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../src/frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA4C,MAAM,WAAW,CAAC;AAExF;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"frame.js","sourceRoot":"","sources":["../src/frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA4C,MAAM,WAAW,CAAC;AAExF;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAU,CAAC;AAuHjD,MAAM,YAAY,GAA0B;IAC1C,kBAAkB;IAClB,UAAU;IACV,qBAAqB;IACrB,eAAe;IACf,WAAW;CACZ,CAAC;AAEF,MAAM,gBAAgB,GAA6B,CAAC,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;AAEtG,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAoC,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAE9C,MAAM,gBAAgB,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAE5G,iGAAiG;AACjG,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B;;;;GAIG;AACH,SAAS,OAAO,CAAC,KAAc;IAC7B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc;QAAE,OAAO,SAAS,CAAC;IAChF,OAAO,0DAA0D,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACpG,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC/F,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;QACzF,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,CAAC,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9E,OAAO;QACL,KAAK,EAAE,KAAe;QACtB,MAAM,EAAE,MAAgB;QACxB,QAAQ,EAAE,QAAkB;QAC5B,eAAe,EAAE,eAAyB;QAC1C,KAAK,EAAE,KAAe;QACtB,SAAS,EAAE,SAAmB;QAC9B,MAAM,EAAE,MAAgB;QACxB,QAAQ,EAAE,QAAyB;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/F,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,aAAa,GAAG,iBAAiB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAC7D,OAAO,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,sBAAsB;QAAE,OAAO,IAAI,CAAC;IACxE,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,EAAE,CAAC,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAChG,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACzF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACjE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5G,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/F,iGAAiG;IACjG,wFAAwF;IACxF,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,OAAO;QACL,OAAO;QACP,OAAO;QACP,WAAW;QACX,OAAO;QACP,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAkC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC;YAC9D,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,OAAwB,EAAE;YAChE,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;YAC5E,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,SAA0B,EAAE;YACnE,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QAC1I,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC9B,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,IAAI,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAoB,CAAC,EAAE,CAAC;YACtG,oFAAoF;YACpF,0CAA0C;YAC1C,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3F,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3G,OAAO;gBACL,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,MAAM,EAAE;wBACN,MAAM,EAAE,KAAK;wBACb,MAAM,EAAE,MAAM,CAAC,MAAoB;wBACnC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3C,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACzD;iBACF;aACF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,sBAAsB;QAAE,OAAO,IAAI,CAAC;IAExE,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,sBAAsB,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1E,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACrC,IAAI,eAAe,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC;YAAE,OAAO,IAAI,CAAC;QACrF,OAAO;YACL,CAAC,EAAE,sBAAsB;YACzB,IAAI,EAAE,aAAa;YACnB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;SAC9F,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,OAAO,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC;YACpC,CAAC,CAAC,EAAE,CAAC,EAAE,sBAAsB,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE;YACxE,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7C,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACvG,CAAC;QACD,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YAClC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAqB,CAAC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAC9G,OAAO;gBACL,CAAC,EAAE,sBAAsB;gBACzB,IAAI,EAAE,QAAQ;gBACd,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAqB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;aACrE,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/live.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export interface RoundStanding {
|
|
|
19
19
|
points: number;
|
|
20
20
|
/**
|
|
21
21
|
* What the chain says this wallet spent on the pool, in base units of the round's spend token.
|
|
22
|
-
* Reconciled spend, not authorisations:
|
|
22
|
+
* Reconciled spend, not authorisations: a signed ceiling that was never spent is not a purchase.
|
|
23
23
|
*/
|
|
24
24
|
spent: bigint;
|
|
25
25
|
}
|
|
@@ -39,9 +39,27 @@ export interface RoundStandings {
|
|
|
39
39
|
poolId: string;
|
|
40
40
|
coinAddress: string | null;
|
|
41
41
|
symbol: string;
|
|
42
|
+
/**
|
|
43
|
+
* Where the round stands against its window at the time of the read. Clock-based only: `ended`
|
|
44
|
+
* means gameplay is over, not that the numbers below are final — see {@link RoundStandings.final}.
|
|
45
|
+
*/
|
|
42
46
|
phase: RoundPhase;
|
|
43
47
|
opensAt: number;
|
|
44
48
|
closesAt: number;
|
|
49
|
+
/** Buys settle until here: the books tail after `closesAt` during which `spent` can still move. */
|
|
50
|
+
booksCloseAt: number;
|
|
51
|
+
/**
|
|
52
|
+
* When the gate finished its last reconcile of this round, in ms since the epoch. Null while the
|
|
53
|
+
* round is still settling (including the whole of gameplay), and on rounds a gate below 0.7.0
|
|
54
|
+
* closed.
|
|
55
|
+
*/
|
|
56
|
+
settledAt: number | null;
|
|
57
|
+
/**
|
|
58
|
+
* True once every landed buy is in `spent` and nothing will change again. `phase === 'ended'`
|
|
59
|
+
* alone does not mean final — the books tail can still settle buys. Render "Final" only on this
|
|
60
|
+
* flag.
|
|
61
|
+
*/
|
|
62
|
+
final: boolean;
|
|
45
63
|
/** The token `spent` is measured in, and its dollar price when the round was adopted. */
|
|
46
64
|
spendToken: SpendToken;
|
|
47
65
|
usdPerSpendToken: number;
|
|
@@ -81,6 +99,12 @@ export interface PlayerJoinTicket {
|
|
|
81
99
|
export declare function isPlayerJoinTicket(input: unknown): input is PlayerJoinTicket;
|
|
82
100
|
/** Check an untrusted launch response before using it to choose a room or trusted service. */
|
|
83
101
|
export declare function isLaunchContext(input: unknown): input is LaunchContext;
|
|
102
|
+
/**
|
|
103
|
+
* `ended` is the socket's finalization signal. The gate closes a room's sockets with `4410 'ended'`
|
|
104
|
+
* only after its last clean settlement pass past `booksCloseAt` — the same moment it stamps
|
|
105
|
+
* {@link RoundStandings.settledAt} — so a client that sees `ended` may treat the standings as final.
|
|
106
|
+
* A socket that merely passes `closesAt` stays open through the books tail.
|
|
107
|
+
*/
|
|
84
108
|
export type ConnectionState = 'connecting' | 'connected' | 'reconnecting' | 'superseded' | 'ended';
|
|
85
109
|
/**
|
|
86
110
|
* Who is currently connected. Telemetry, and deliberately nothing more.
|
|
@@ -168,41 +192,25 @@ export interface WireMarketState extends Omit<MarketState, 'trades'> {
|
|
|
168
192
|
*/
|
|
169
193
|
export declare function isWireMarketState(input: unknown): input is WireMarketState;
|
|
170
194
|
/**
|
|
171
|
-
* Authoritative ledger state
|
|
195
|
+
* Authoritative ledger state, in base units of the round's spend token (see {@link SpendToken}) —
|
|
196
|
+
* wei for an ETH round, 10^-6 of a six-decimal stablecoin for a round played in one.
|
|
172
197
|
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
198
|
+
* `available` is min(earned, walletCap) - spent: what the next signed ceiling lets this wallet
|
|
199
|
+
* add. Nothing is held. A buy the player declines or a wallet dialog they close changes nothing
|
|
200
|
+
* here; only chain-reconciled spend moves it down and only awards move it up.
|
|
175
201
|
*/
|
|
176
202
|
export interface EconomyBalance {
|
|
177
203
|
/** Immutable entitlement rate for this round, in base units. Not a live dollar quote. */
|
|
178
204
|
unitsPerPoint: bigint;
|
|
179
205
|
earned: bigint;
|
|
180
|
-
held: bigint;
|
|
181
206
|
spent: bigint;
|
|
182
207
|
available: bigint;
|
|
183
|
-
/**
|
|
184
|
-
* When the earliest outstanding hold expires, in epoch ms, or null when nothing is held.
|
|
185
|
-
*
|
|
186
|
-
* A player who opens the buy dialog and then declines keeps that allowance held until this
|
|
187
|
-
* passes, which is correct — the authorisation is still live and could still be spent. But
|
|
188
|
-
* without the deadline on the balance, a game cannot explain the gap between what a player
|
|
189
|
-
* earned and what they can spend, so it either tracks the deadline itself or shows a number
|
|
190
|
-
* that is wrong for five minutes.
|
|
191
|
-
*/
|
|
192
|
-
holdExpiresAt: number | null;
|
|
193
208
|
}
|
|
194
209
|
/** Stable player-facing reasons a platform buy did not happen. */
|
|
195
210
|
export type BuyFailure = 'nothing-to-spend' | 'declined' | 'not-enough-for-fees' | 'window-closed' | 'try-again';
|
|
196
|
-
/**
|
|
197
|
-
* JSON-safe form used on the wire.
|
|
198
|
-
*
|
|
199
|
-
* The base-unit amounts cross as decimal strings because JSON has no bigint. `holdExpiresAt` is an
|
|
200
|
-
* ordinary millisecond number and stays one.
|
|
201
|
-
*/
|
|
211
|
+
/** JSON-safe form used on the wire: the base-unit amounts cross as decimal strings. */
|
|
202
212
|
export type WireEconomyBalance = {
|
|
203
|
-
[Key in keyof
|
|
204
|
-
} & {
|
|
205
|
-
holdExpiresAt: number | null;
|
|
213
|
+
[Key in keyof EconomyBalance]: string;
|
|
206
214
|
};
|
|
207
215
|
/**
|
|
208
216
|
* The token a round's spending is measured in: the coin's paired token.
|
|
@@ -282,7 +290,7 @@ export type WireRoundTerms = Omit<RoundTerms, 'walletCap' | 'unitsPerPoint'> & {
|
|
|
282
290
|
};
|
|
283
291
|
/** Keep cosmetic reaction identifiers bounded and safe to use as asset keys. */
|
|
284
292
|
export declare function isReactionId(id: string): boolean;
|
|
285
|
-
export declare const LIVE_PROTOCOL_VERSION:
|
|
293
|
+
export declare const LIVE_PROTOCOL_VERSION: 2;
|
|
286
294
|
export type LiveServerFrame<PublicView, PlayerView> = {
|
|
287
295
|
v: typeof LIVE_PROTOCOL_VERSION;
|
|
288
296
|
type: 'snapshot';
|
package/dist/live.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"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"}
|
package/dist/live.js
CHANGED
package/dist/live.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,GAAW;IAC3D,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IACzC,OAAO,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"live.js","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,YAAY,CAAC,MAAmB,EAAE,GAAW;IAC3D,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC;IACzC,OAAO,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AA6FrC,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,OAAO,CACL,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK;QAC5B,wCAAwC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC3D,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC;QACpC,KAAK,CAAC,SAAoB,GAAG,CAAC,CAChC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,GAAG,qBAAqB,CAAC;AAEtC,8FAA8F;AAC9F,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,OAAO,CACL,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACxB,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG;QAC3B,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACvB,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG;QAC1B,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1G,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC9B,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,GAAG;QACxB,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ;QAChC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;QACzB,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;QACnG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;QACnC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,YAAY,CAAC;QACvC,KAAK,CAAC,OAAkB,GAAI,KAAK,CAAC,QAAmB;QACrD,KAAK,CAAC,QAAmB,IAAK,KAAK,CAAC,YAAuB,CAC7D,CAAC;AACJ,CAAC;AA8FD,MAAM,eAAe,GAAqC,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACtG,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAElD;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,KAAK,GAAG,KAAgC,CAAC;IAC/C,MAAM,MAAM,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,CAAC,CAAU,EAAE,GAAW,EAAe,EAAE,CACvD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC;IAE3D,IACE,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,MAA+B,CAAC;QAChE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK;QAC3B,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;QACzB,CAAC,KAAK,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAC5D,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC9D,MAAM,KAAK,GAAG,KAAgC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QACtF,wFAAwF;QACxF,yFAAyF;QACzF,8CAA8C;QAC9C,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACnG,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,CAAC;YAChG,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC9D,MAAM,KAAK,GAAG,KAAgC,CAAC;QAC/C,IACE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC;YACvB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjB,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACtD,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;YAC/C,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ;YAC/B,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACjC,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS;gBAC7B,CAAC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;YACnF,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpD,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;YAClF,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,EAC7E,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA4CD,wEAAwE;AACxE,MAAM,CAAC,MAAM,eAAe,GAAe,MAAM,CAAC,MAAM,CAAC;IACvD,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,IAAI;CACf,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwD;IACnF,OAAO,KAAK,EAAE,UAAU,IAAI,eAAe,CAAC;AAC9C,CAAC;AAwDD,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,OAAO,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAU,CAAC"}
|
package/package.json
CHANGED
package/src/embed.ts
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
} from './live.js';
|
|
10
10
|
|
|
11
11
|
export const EMBED_CHANNEL = 'flaunch.game-mode' as const;
|
|
12
|
-
export const EMBED_PROTOCOL_VERSION =
|
|
12
|
+
export const EMBED_PROTOCOL_VERSION = 2 as const;
|
|
13
13
|
|
|
14
14
|
const ADDRESS = /^0x[0-9a-fA-F]{40}$/;
|
|
15
15
|
const BYTES32 = /^0x[0-9a-fA-F]{64}$/;
|
|
@@ -18,7 +18,15 @@ const DECIMAL = /^(?:0|[1-9][0-9]{0,77})$/;
|
|
|
18
18
|
const REQUEST_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
|
|
19
19
|
const DEPLOY_ID = /^[0-9a-f]{32}$/;
|
|
20
20
|
const PUBLIC_HOSTNAME = /^(?=.{1,253}$)([a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,63}$/;
|
|
21
|
-
|
|
21
|
+
/** How many game-server origins a developer may declare for one game. */
|
|
22
|
+
export const MAX_GAME_SERVER_ORIGINS = 20;
|
|
23
|
+
/**
|
|
24
|
+
* How many other-chain gate origins a platform may fold into the same reviewed list. They ride along
|
|
25
|
+
* uncounted, so a game on every chain keeps all of its game-server slots.
|
|
26
|
+
*/
|
|
27
|
+
export const MAX_EXTRA_GATE_ORIGINS = 12;
|
|
28
|
+
/** The bound on the whole reviewed list: what a host policy or a registry pin may carry. */
|
|
29
|
+
export const MAX_REVIEWED_ORIGINS = MAX_GAME_SERVER_ORIGINS + MAX_EXTRA_GATE_ORIGINS;
|
|
22
30
|
|
|
23
31
|
export interface GameSecurityProfile {
|
|
24
32
|
kind: 'game';
|
|
@@ -39,10 +47,15 @@ export interface GameRegistration {
|
|
|
39
47
|
gameServerOrigins?: readonly string[];
|
|
40
48
|
}
|
|
41
49
|
|
|
42
|
-
/**
|
|
43
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Parse the optional reviewed game-server network surface into one canonical set.
|
|
52
|
+
*
|
|
53
|
+
* `max` defaults to the whole reviewed list, which may carry other-chain gate origins. Pass
|
|
54
|
+
* `MAX_GAME_SERVER_ORIGINS` where the list is only what the developer declared.
|
|
55
|
+
*/
|
|
56
|
+
export function parseGameServerOrigins(input: unknown, max = MAX_REVIEWED_ORIGINS): readonly string[] | null {
|
|
44
57
|
if (input === undefined) return Object.freeze([]);
|
|
45
|
-
if (!Array.isArray(input) || input.length >
|
|
58
|
+
if (!Array.isArray(input) || input.length > max) return null;
|
|
46
59
|
|
|
47
60
|
const origins: string[] = [];
|
|
48
61
|
const seen = new Set<string>();
|
|
@@ -116,32 +129,40 @@ export function parseGameRegistration(input: unknown): GameRegistration | null {
|
|
|
116
129
|
};
|
|
117
130
|
}
|
|
118
131
|
|
|
132
|
+
/**
|
|
133
|
+
* What the gate signed, plus the one unsigned figure the page needs.
|
|
134
|
+
*
|
|
135
|
+
* `spendCeilingWei` is the buyer's cumulative ceiling on this pool — min(earned, walletCap) at
|
|
136
|
+
* signing — not the amount of this purchase. The calculator keeps `walletSpentWei` per (pool,
|
|
137
|
+
* buyer) and rejects any swap where walletSpent + thisSpend > ceiling, so the same signature is
|
|
138
|
+
* reusable until `deadline` and harmless by construction: it can never authorise more than the
|
|
139
|
+
* player earned. Nothing is held for it, so a declined wallet dialog changes nothing.
|
|
140
|
+
*
|
|
141
|
+
* `spend` is what this purchase should buy, exact-in. It is not hashed into the signature and the
|
|
142
|
+
* page must never spend more than it.
|
|
143
|
+
*
|
|
144
|
+
* Amounts are base units of the round's spend token — wei for an ETH round, 10^-6 of a
|
|
145
|
+
* six-decimal stablecoin on a paired round. The signed field keeps the contract's `Wei` name
|
|
146
|
+
* because it is EIP-712 vocabulary hashed into the calculator's typehash.
|
|
147
|
+
*/
|
|
119
148
|
export interface SpendAuthorisation {
|
|
120
149
|
buyer: string;
|
|
121
150
|
poolId: string;
|
|
122
151
|
deadline: string;
|
|
123
|
-
|
|
124
|
-
* The ceiling this signature authorises, in base units of the round's spend token.
|
|
125
|
-
*
|
|
126
|
-
* The one field in this SDK still named for wei, and deliberately: the name is hashed into the
|
|
127
|
-
* EIP-712 typehash that the deployed spend-gate calculator verifies, so renaming it would
|
|
128
|
-
* invalidate every signature. Despite the name it is not ETH on a paired round — a six-decimal
|
|
129
|
-
* stablecoin round authorises 10^-6 units of that token.
|
|
130
|
-
*/
|
|
131
|
-
maxSpendWei: string;
|
|
132
|
-
nonce: string;
|
|
152
|
+
spendCeilingWei: string;
|
|
133
153
|
signature: string;
|
|
134
154
|
signer: string;
|
|
135
155
|
/** Opaque proof from the gate. The parent passes it to the Flaunch SDK unchanged. */
|
|
136
156
|
hookData: `0x${string}`;
|
|
157
|
+
/** Exact-in amount for THIS buy, unsigned. 0 < spend <= spendCeilingWei. */
|
|
158
|
+
spend: string;
|
|
137
159
|
}
|
|
138
160
|
|
|
139
161
|
export interface SpendAuthorisationFields {
|
|
140
162
|
buyer: string;
|
|
141
163
|
poolId: string;
|
|
142
164
|
deadline: string | bigint;
|
|
143
|
-
|
|
144
|
-
nonce: string | bigint;
|
|
165
|
+
spendCeilingWei: string | bigint;
|
|
145
166
|
}
|
|
146
167
|
|
|
147
168
|
// Field names here are part of the EIP-712 typehash the deployed calculator checks. They are
|
|
@@ -151,8 +172,7 @@ const SPEND_AUTHORIZATION_TYPES = {
|
|
|
151
172
|
{ name: 'buyer', type: 'address' },
|
|
152
173
|
{ name: 'poolId', type: 'bytes32' },
|
|
153
174
|
{ name: 'deadline', type: 'uint256' },
|
|
154
|
-
{ name: '
|
|
155
|
-
{ name: 'nonce', type: 'uint256' },
|
|
175
|
+
{ name: 'spendCeilingWei', type: 'uint256' },
|
|
156
176
|
],
|
|
157
177
|
} as const;
|
|
158
178
|
|
|
@@ -179,7 +199,7 @@ export function spendAuthorisationTypedData(
|
|
|
179
199
|
return {
|
|
180
200
|
domain: {
|
|
181
201
|
name: 'FlaunchSpendGate',
|
|
182
|
-
version: '
|
|
202
|
+
version: '2',
|
|
183
203
|
chainId,
|
|
184
204
|
verifyingContract: verifyingContract as `0x${string}`,
|
|
185
205
|
},
|
|
@@ -189,8 +209,7 @@ export function spendAuthorisationTypedData(
|
|
|
189
209
|
buyer: fields.buyer as `0x${string}`,
|
|
190
210
|
poolId: fields.poolId as `0x${string}`,
|
|
191
211
|
deadline: uint256(fields.deadline, 'deadline'),
|
|
192
|
-
|
|
193
|
-
nonce: uint256(fields.nonce, 'nonce'),
|
|
212
|
+
spendCeilingWei: uint256(fields.spendCeilingWei, 'spendCeilingWei'),
|
|
194
213
|
},
|
|
195
214
|
};
|
|
196
215
|
}
|
|
@@ -289,10 +308,12 @@ export function isSpendAuthorisation(input: unknown): input is SpendAuthorisatio
|
|
|
289
308
|
BYTES32.test(value.poolId) &&
|
|
290
309
|
typeof value.deadline === 'string' &&
|
|
291
310
|
DECIMAL.test(value.deadline) &&
|
|
292
|
-
typeof value.
|
|
293
|
-
DECIMAL.test(value.
|
|
294
|
-
typeof value.
|
|
295
|
-
DECIMAL.test(value.
|
|
311
|
+
typeof value.spendCeilingWei === 'string' &&
|
|
312
|
+
DECIMAL.test(value.spendCeilingWei) &&
|
|
313
|
+
typeof value.spend === 'string' &&
|
|
314
|
+
DECIMAL.test(value.spend) &&
|
|
315
|
+
BigInt(value.spend) > 0n &&
|
|
316
|
+
BigInt(value.spend) <= BigInt(value.spendCeilingWei) &&
|
|
296
317
|
typeof value.signature === 'string' &&
|
|
297
318
|
HEX.test(value.signature) &&
|
|
298
319
|
value.signature.length <= 512 &&
|
|
@@ -316,16 +337,18 @@ const uint256Word = (value: string): string | null => {
|
|
|
316
337
|
/**
|
|
317
338
|
* Require the exact ABI payload the gate emits, including its zero referrer.
|
|
318
339
|
*
|
|
319
|
-
* The calculator signature covers the
|
|
340
|
+
* The calculator signature covers the signed fields but not the outer referrer. A creator iframe
|
|
320
341
|
* can therefore redirect attribution while preserving a valid signature unless the trusted
|
|
321
|
-
* bridge checks the complete canonical encoding before opening wallet UI.
|
|
342
|
+
* bridge checks the complete canonical encoding before opening wallet UI. The unsigned `spend`
|
|
343
|
+
* is not part of hookData; the page enforces it, the calculator enforces the ceiling.
|
|
344
|
+
*
|
|
345
|
+
* Layout: `abi.encode(address referrer, (buyer, poolId, deadline, spendCeilingWei, signature))`.
|
|
322
346
|
*/
|
|
323
347
|
export function isCanonicalSpendHookData(input: unknown): input is SpendAuthorisation {
|
|
324
348
|
if (!isSpendAuthorisation(input)) return false;
|
|
325
349
|
const deadline = uint256Word(input.deadline);
|
|
326
|
-
const
|
|
327
|
-
|
|
328
|
-
if (!deadline || !maxSpendWei || !nonce) return false;
|
|
350
|
+
const spendCeilingWei = uint256Word(input.spendCeilingWei);
|
|
351
|
+
if (!deadline || !spendCeilingWei) return false;
|
|
329
352
|
|
|
330
353
|
const signature = input.signature.slice(2).toLowerCase();
|
|
331
354
|
const signatureLength = uint256Word(String(signature.length / 2));
|
|
@@ -337,9 +360,8 @@ export function isCanonicalSpendHookData(input: unknown): input is SpendAuthoris
|
|
|
337
360
|
input.buyer.slice(2).toLowerCase().padStart(64, '0'),
|
|
338
361
|
input.poolId.slice(2).toLowerCase(),
|
|
339
362
|
deadline,
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
uint256Word('192'),
|
|
363
|
+
spendCeilingWei,
|
|
364
|
+
uint256Word('160'),
|
|
343
365
|
signatureLength,
|
|
344
366
|
paddedSignature,
|
|
345
367
|
].join('')}`;
|
|
@@ -368,11 +390,11 @@ export function parseGameToHostMessage(input: unknown): GameToHostMessage | null
|
|
|
368
390
|
buyer: authorisation.buyer,
|
|
369
391
|
poolId: authorisation.poolId,
|
|
370
392
|
deadline: authorisation.deadline,
|
|
371
|
-
|
|
372
|
-
nonce: authorisation.nonce,
|
|
393
|
+
spendCeilingWei: authorisation.spendCeilingWei,
|
|
373
394
|
signature: authorisation.signature,
|
|
374
395
|
signer: authorisation.signer,
|
|
375
396
|
hookData: authorisation.hookData,
|
|
397
|
+
spend: authorisation.spend,
|
|
376
398
|
},
|
|
377
399
|
};
|
|
378
400
|
}
|
package/src/frame.ts
CHANGED
|
@@ -20,7 +20,7 @@ import { isWireMarketState, type LaunchContext, type WireMarketState } from './l
|
|
|
20
20
|
* is one source of truth and it is the page the player is actually looking at.
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
|
-
export const FRAME_PROTOCOL_VERSION =
|
|
23
|
+
export const FRAME_PROTOCOL_VERSION = 2 as const;
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Why a buy did not happen, in terms a player can be told about.
|
|
@@ -46,21 +46,22 @@ export interface EmbedContext {
|
|
|
46
46
|
readonly launch?: LaunchContext;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Exactly what the gate signed plus the unsigned `spend`, all strings because bigints do not
|
|
51
|
+
* survive JSON. See `SpendAuthorisation` in this package for the field semantics.
|
|
52
|
+
*/
|
|
50
53
|
export interface WireAuthorisation {
|
|
51
54
|
buyer: string;
|
|
52
55
|
poolId: string;
|
|
53
56
|
deadline: string;
|
|
54
|
-
/**
|
|
55
|
-
|
|
56
|
-
* into the EIP-712 typehash the calculator verifies — see `SpendAuthorisation` in this package.
|
|
57
|
-
*/
|
|
58
|
-
maxSpendWei: string;
|
|
59
|
-
nonce: string;
|
|
57
|
+
/** Cumulative ceiling for this buyer on this pool, EIP-712 field name. */
|
|
58
|
+
spendCeilingWei: string;
|
|
60
59
|
signature: string;
|
|
61
60
|
signer: string;
|
|
61
|
+
/** Exact-in amount for this buy; unsigned, never more than the ceiling. */
|
|
62
|
+
spend: string;
|
|
62
63
|
/** Opaque proof the page passes to the Flaunch buy call. Never calldata. */
|
|
63
|
-
hookData
|
|
64
|
+
hookData: `0x${string}`;
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
export type HostCall =
|
|
@@ -168,20 +169,20 @@ function sdkFrom(value: unknown): string | undefined {
|
|
|
168
169
|
|
|
169
170
|
function authorisationFrom(value: unknown): WireAuthorisation | null {
|
|
170
171
|
if (!isRecord(value)) return null;
|
|
171
|
-
const { buyer, poolId, deadline,
|
|
172
|
-
for (const field of [buyer, poolId, deadline,
|
|
172
|
+
const { buyer, poolId, deadline, spendCeilingWei, spend, signature, signer, hookData } = value;
|
|
173
|
+
for (const field of [buyer, poolId, deadline, spendCeilingWei, spend, signature, signer]) {
|
|
173
174
|
if (!isNonEmptyString(field)) return null;
|
|
174
175
|
}
|
|
175
|
-
if (
|
|
176
|
+
if (!(typeof hookData === 'string' && hookData.startsWith('0x'))) return null;
|
|
176
177
|
return {
|
|
177
178
|
buyer: buyer as string,
|
|
178
179
|
poolId: poolId as string,
|
|
179
180
|
deadline: deadline as string,
|
|
180
|
-
|
|
181
|
-
|
|
181
|
+
spendCeilingWei: spendCeilingWei as string,
|
|
182
|
+
spend: spend as string,
|
|
182
183
|
signature: signature as string,
|
|
183
184
|
signer: signer as string,
|
|
184
|
-
|
|
185
|
+
hookData: hookData as `0x${string}`,
|
|
185
186
|
};
|
|
186
187
|
}
|
|
187
188
|
|
package/src/live.ts
CHANGED
|
@@ -26,7 +26,7 @@ export interface RoundStanding {
|
|
|
26
26
|
points: number;
|
|
27
27
|
/**
|
|
28
28
|
* What the chain says this wallet spent on the pool, in base units of the round's spend token.
|
|
29
|
-
* Reconciled spend, not authorisations:
|
|
29
|
+
* Reconciled spend, not authorisations: a signed ceiling that was never spent is not a purchase.
|
|
30
30
|
*/
|
|
31
31
|
spent: bigint;
|
|
32
32
|
}
|
|
@@ -46,9 +46,27 @@ export interface RoundStandings {
|
|
|
46
46
|
poolId: string;
|
|
47
47
|
coinAddress: string | null;
|
|
48
48
|
symbol: string;
|
|
49
|
+
/**
|
|
50
|
+
* Where the round stands against its window at the time of the read. Clock-based only: `ended`
|
|
51
|
+
* means gameplay is over, not that the numbers below are final — see {@link RoundStandings.final}.
|
|
52
|
+
*/
|
|
49
53
|
phase: RoundPhase;
|
|
50
54
|
opensAt: number;
|
|
51
55
|
closesAt: number;
|
|
56
|
+
/** Buys settle until here: the books tail after `closesAt` during which `spent` can still move. */
|
|
57
|
+
booksCloseAt: number;
|
|
58
|
+
/**
|
|
59
|
+
* When the gate finished its last reconcile of this round, in ms since the epoch. Null while the
|
|
60
|
+
* round is still settling (including the whole of gameplay), and on rounds a gate below 0.7.0
|
|
61
|
+
* closed.
|
|
62
|
+
*/
|
|
63
|
+
settledAt: number | null;
|
|
64
|
+
/**
|
|
65
|
+
* True once every landed buy is in `spent` and nothing will change again. `phase === 'ended'`
|
|
66
|
+
* alone does not mean final — the books tail can still settle buys. Render "Final" only on this
|
|
67
|
+
* flag.
|
|
68
|
+
*/
|
|
69
|
+
final: boolean;
|
|
52
70
|
/** The token `spent` is measured in, and its dollar price when the round was adopted. */
|
|
53
71
|
spendToken: SpendToken;
|
|
54
72
|
usdPerSpendToken: number;
|
|
@@ -129,6 +147,12 @@ export function isLaunchContext(input: unknown): input is LaunchContext {
|
|
|
129
147
|
);
|
|
130
148
|
}
|
|
131
149
|
|
|
150
|
+
/**
|
|
151
|
+
* `ended` is the socket's finalization signal. The gate closes a room's sockets with `4410 'ended'`
|
|
152
|
+
* only after its last clean settlement pass past `booksCloseAt` — the same moment it stamps
|
|
153
|
+
* {@link RoundStandings.settledAt} — so a client that sees `ended` may treat the standings as final.
|
|
154
|
+
* A socket that merely passes `closesAt` stays open through the books tail.
|
|
155
|
+
*/
|
|
132
156
|
export type ConnectionState = 'connecting' | 'connected' | 'reconnecting' | 'superseded' | 'ended';
|
|
133
157
|
|
|
134
158
|
/**
|
|
@@ -281,28 +305,19 @@ export function isWireMarketState(input: unknown): input is WireMarketState {
|
|
|
281
305
|
}
|
|
282
306
|
|
|
283
307
|
/**
|
|
284
|
-
* Authoritative ledger state
|
|
308
|
+
* Authoritative ledger state, in base units of the round's spend token (see {@link SpendToken}) —
|
|
309
|
+
* wei for an ETH round, 10^-6 of a six-decimal stablecoin for a round played in one.
|
|
285
310
|
*
|
|
286
|
-
*
|
|
287
|
-
*
|
|
311
|
+
* `available` is min(earned, walletCap) - spent: what the next signed ceiling lets this wallet
|
|
312
|
+
* add. Nothing is held. A buy the player declines or a wallet dialog they close changes nothing
|
|
313
|
+
* here; only chain-reconciled spend moves it down and only awards move it up.
|
|
288
314
|
*/
|
|
289
315
|
export interface EconomyBalance {
|
|
290
316
|
/** Immutable entitlement rate for this round, in base units. Not a live dollar quote. */
|
|
291
317
|
unitsPerPoint: bigint;
|
|
292
318
|
earned: bigint;
|
|
293
|
-
held: bigint;
|
|
294
319
|
spent: bigint;
|
|
295
320
|
available: bigint;
|
|
296
|
-
/**
|
|
297
|
-
* When the earliest outstanding hold expires, in epoch ms, or null when nothing is held.
|
|
298
|
-
*
|
|
299
|
-
* A player who opens the buy dialog and then declines keeps that allowance held until this
|
|
300
|
-
* passes, which is correct — the authorisation is still live and could still be spent. But
|
|
301
|
-
* without the deadline on the balance, a game cannot explain the gap between what a player
|
|
302
|
-
* earned and what they can spend, so it either tracks the deadline itself or shows a number
|
|
303
|
-
* that is wrong for five minutes.
|
|
304
|
-
*/
|
|
305
|
-
holdExpiresAt: number | null;
|
|
306
321
|
}
|
|
307
322
|
|
|
308
323
|
/** Stable player-facing reasons a platform buy did not happen. */
|
|
@@ -313,15 +328,8 @@ export type BuyFailure =
|
|
|
313
328
|
| 'window-closed'
|
|
314
329
|
| 'try-again';
|
|
315
330
|
|
|
316
|
-
/**
|
|
317
|
-
|
|
318
|
-
*
|
|
319
|
-
* The base-unit amounts cross as decimal strings because JSON has no bigint. `holdExpiresAt` is an
|
|
320
|
-
* ordinary millisecond number and stays one.
|
|
321
|
-
*/
|
|
322
|
-
export type WireEconomyBalance = {
|
|
323
|
-
[Key in keyof Omit<EconomyBalance, 'holdExpiresAt'>]: string;
|
|
324
|
-
} & { holdExpiresAt: number | null };
|
|
331
|
+
/** JSON-safe form used on the wire: the base-unit amounts cross as decimal strings. */
|
|
332
|
+
export type WireEconomyBalance = { [Key in keyof EconomyBalance]: string };
|
|
325
333
|
|
|
326
334
|
/**
|
|
327
335
|
* The token a round's spending is measured in: the coin's paired token.
|
|
@@ -416,7 +424,7 @@ export function isReactionId(id: string): boolean {
|
|
|
416
424
|
return /^[A-Za-z0-9._:-]{1,64}$/.test(id);
|
|
417
425
|
}
|
|
418
426
|
|
|
419
|
-
export const LIVE_PROTOCOL_VERSION =
|
|
427
|
+
export const LIVE_PROTOCOL_VERSION = 2 as const;
|
|
420
428
|
|
|
421
429
|
export type LiveServerFrame<PublicView, PlayerView> =
|
|
422
430
|
| {
|