@flayerlabs/gamemode-gate 0.4.2 → 0.5.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.
Files changed (63) hide show
  1. package/DEPLOY.md +27 -3
  2. package/README.md +3 -3
  3. package/dist/chain/chains.d.ts +45 -6
  4. package/dist/chain/chains.d.ts.map +1 -1
  5. package/dist/chain/chains.js +56 -5
  6. package/dist/chain/chains.js.map +1 -1
  7. package/dist/chain/discover.d.ts +20 -2
  8. package/dist/chain/discover.d.ts.map +1 -1
  9. package/dist/chain/discover.js +74 -6
  10. package/dist/chain/discover.js.map +1 -1
  11. package/dist/chain/secure.d.ts +11 -1
  12. package/dist/chain/secure.d.ts.map +1 -1
  13. package/dist/chain/secure.js +67 -0
  14. package/dist/chain/secure.js.map +1 -1
  15. package/dist/claims.d.ts +1 -1
  16. package/dist/claims.d.ts.map +1 -1
  17. package/dist/claims.js +2 -2
  18. package/dist/claims.js.map +1 -1
  19. package/dist/demo.d.ts +1 -1
  20. package/dist/demo.d.ts.map +1 -1
  21. package/dist/demo.js +9 -9
  22. package/dist/demo.js.map +1 -1
  23. package/dist/economy.d.ts +25 -9
  24. package/dist/economy.d.ts.map +1 -1
  25. package/dist/economy.js +63 -22
  26. package/dist/economy.js.map +1 -1
  27. package/dist/index.d.ts +6 -6
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +3 -3
  30. package/dist/index.js.map +1 -1
  31. package/dist/ledger.d.ts +2 -2
  32. package/dist/ledger.d.ts.map +1 -1
  33. package/dist/ledger.js +16 -16
  34. package/dist/ledger.js.map +1 -1
  35. package/dist/main.d.ts +30 -5
  36. package/dist/main.d.ts.map +1 -1
  37. package/dist/main.js +158 -17
  38. package/dist/main.js.map +1 -1
  39. package/dist/room.d.ts +7 -4
  40. package/dist/room.d.ts.map +1 -1
  41. package/dist/room.js +31 -10
  42. package/dist/room.js.map +1 -1
  43. package/dist/server.d.ts +33 -3
  44. package/dist/server.d.ts.map +1 -1
  45. package/dist/server.js +63 -25
  46. package/dist/server.js.map +1 -1
  47. package/dist/store.d.ts +1 -1
  48. package/dist/store.d.ts.map +1 -1
  49. package/dist/store.js +21 -0
  50. package/dist/store.js.map +1 -1
  51. package/package.json +2 -2
  52. package/src/chain/chains.ts +82 -9
  53. package/src/chain/discover.ts +87 -7
  54. package/src/chain/secure.ts +86 -1
  55. package/src/claims.ts +2 -2
  56. package/src/demo.ts +10 -10
  57. package/src/economy.ts +83 -31
  58. package/src/index.ts +7 -5
  59. package/src/ledger.ts +18 -18
  60. package/src/main.ts +181 -19
  61. package/src/room.ts +41 -14
  62. package/src/server.ts +107 -35
  63. package/src/store.ts +21 -0
@@ -1 +1 @@
1
- {"version":3,"file":"claims.js","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claims.js","sourceRoot":"","sources":["../src/claims.ts"],"names":[],"mappings":"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"}
package/dist/demo.d.ts CHANGED
@@ -10,7 +10,7 @@ export interface DemoOptions<Config, State, Event, Action, PublicView, PlayerVie
10
10
  lobbyMs?: number;
11
11
  roundMs?: number;
12
12
  /** The cap a wallet may spend, as a real launch would set on chain. Default 0.025 ETH. */
13
- walletCapWei?: bigint;
13
+ walletCap?: bigint;
14
14
  pointsPerDollar?: number;
15
15
  usdPerEth?: number;
16
16
  roundId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AA+B5D,MAAM,WAAW,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAC/E,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0FAA0F;IAC1F,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,eAAe,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,aAAa,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B,wFAAwF;IACxF,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;CACf;AAID;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EACvF,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,GACzE,OAAO,CAAC,IAAI,CAAC,CAmGf"}
1
+ {"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AA+B5D,MAAM,WAAW,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU;IAC/E,IAAI,EAAE,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0FAA0F;IAC1F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,IAAI;IACnB,GAAG,EAAE,eAAe,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,aAAa,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B,wFAAwF;IACxF,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC;CACf;AAID;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EACvF,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,GACzE,OAAO,CAAC,IAAI,CAAC,CAmGf"}
package/dist/demo.js CHANGED
@@ -35,15 +35,15 @@ const ETH = 1000000000000000000n;
35
35
  * is the one part of this that genuinely differs between games.
36
36
  */
37
37
  export async function createDemoGate(options) {
38
- const { game, config, databaseUrl = process.env.DATABASE_URL ?? 'postgres://postgres:gamemode@127.0.0.1:55439/gamemode', lobbyMs = 8_000, roundMs = 10 * 60_000, walletCapWei = ETH / 40n, pointsPerDollar = 100, usdPerEth = 3_000, roundId = 'dev', chainId = 8453, gateOrigin = 'http://127.0.0.1:4000', } = options;
38
+ const { game, config, databaseUrl = process.env.DATABASE_URL ?? 'postgres://postgres:gamemode@127.0.0.1:55439/gamemode', lobbyMs = 8_000, roundMs = 10 * 60_000, walletCap = ETH / 40n, pointsPerDollar = 100, usdPerEth = 3_000, roundId = 'dev', chainId = 8453, gateOrigin = 'http://127.0.0.1:4000', } = options;
39
39
  // The same check the real gate runs at boot. A demo that silently used an impossible economy
40
40
  // would teach a builder that their numbers work when they do not.
41
41
  const maxPointsPerPlayer = game.rewardBounds(config).maxPointsPerPlayer;
42
42
  const economy = resolveEconomy({
43
43
  maxPointsPerPlayer,
44
- walletCapWei,
44
+ walletCap,
45
45
  pointsPerDollar,
46
- usdPerEth,
46
+ usdPerSpendToken: usdPerEth,
47
47
  });
48
48
  if (!economy.ok) {
49
49
  throw new Error(`That economy does not work: ${economy.problem}. Try ${economy.suggestedPointsPerDollar} points per dollar.`);
@@ -58,10 +58,10 @@ export async function createDemoGate(options) {
58
58
  config,
59
59
  seed: Math.floor(Math.random() * 1_000_000),
60
60
  window: { opensAt, closesAt: opensAt + roundMs },
61
- weiPerPoint: economy.economy.weiPerPoint,
61
+ unitsPerPoint: economy.economy.unitsPerPoint,
62
62
  pointsPerDollar: economy.economy.pointsPerDollar,
63
- usdPerEth: economy.economy.usdPerEth,
64
- walletCapWei,
63
+ usdPerSpendToken: economy.economy.usdPerSpendToken,
64
+ walletCap,
65
65
  maxPointsPerPlayer,
66
66
  scoreAuthority: 'rules',
67
67
  poolId: DEMO_POOL_ID,
@@ -83,11 +83,11 @@ export async function createDemoGate(options) {
83
83
  contracts: { positionManager: DEMO_CALCULATOR, spendGatedCalculator: DEMO_CALCULATOR },
84
84
  signer: signer.address,
85
85
  settler: signer.address,
86
- walletCapWei: walletCapWei.toString(),
86
+ walletCap: walletCap.toString(),
87
87
  roundDurationMs: roundMs,
88
88
  minLobbyLeadMs: lobbyMs,
89
89
  gateEndsAtGraceS: 10,
90
- flaunchVariant: 'legacy11',
90
+ flaunchVariant: 'v1_2',
91
91
  requiresEoa: false,
92
92
  accepting: true,
93
93
  publicLaunchesOpen: true,
@@ -105,7 +105,7 @@ export async function createDemoGate(options) {
105
105
  app.post('/dev/wallet/buy', (request) => {
106
106
  const { maxSpendWei } = request.body;
107
107
  purchases.push({ maxSpendWei, at: Date.now() });
108
- return { spentWei: maxSpendWei };
108
+ return { spent: maxSpendWei };
109
109
  });
110
110
  return { app, roundId, opensAt, walletAddress: wallet.address, purchases, pool };
111
111
  }
package/dist/demo.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"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"}
package/dist/economy.d.ts CHANGED
@@ -7,30 +7,46 @@
7
7
  * environment variable was wrong, and no code was in a position to notice.
8
8
  *
9
9
  * So the arithmetic lives here, runs at round creation with the actual values, and refuses. A
10
- * creator sets one human number — how many points a dollar is worth — and never sees wei.
10
+ * creator sets one human number — how many points a dollar is worth — and never sees base units.
11
+ *
12
+ * Denomination. A pool's spend is measured on chain in its PAIRED token's own base units: wei for
13
+ * an ETH-paired coin, 10^-6 for a six-decimal stablecoin. Every amount in this package is
14
+ * therefore base units of the round's spend token, and the arithmetic here is parameterised by
15
+ * that token's decimals rather than assuming eighteen.
11
16
  */
17
+ /** The decimals of ETH, which is what every field was denominated in before paired-token rounds. */
18
+ export declare const ETH_DECIMALS = 18;
19
+ /** 10^decimals: one whole spend token in its base units. */
20
+ export declare function unitsPerToken(decimals: number): bigint;
12
21
  export interface EconomyInput {
13
22
  /** The most one player can earn, declared by the game itself via `rewardBounds`. */
14
23
  maxPointsPerPlayer: number;
15
- /** The pool's on-chain per-wallet ceiling. The chain enforces this whatever we do. */
16
- walletCapWei: bigint;
24
+ /** The pool's on-chain per-wallet ceiling, in base units of the spend token. */
25
+ walletCap: bigint;
17
26
  /** The creator's one knob. 100 means 100 points is worth a dollar. */
18
27
  pointsPerDollar: number;
19
- usdPerEth: number;
28
+ /** The market price of one whole spend token, in dollars. For an ETH round this IS the ETH price. */
29
+ usdPerSpendToken: number;
30
+ /** Decimals of the spend token. Defaults to 18 — ETH — which is what every older caller meant. */
31
+ decimals?: number;
20
32
  }
21
33
  export interface Economy {
22
- weiPerPoint: bigint;
23
- /** What a flawless round pays. Always at or under `walletCapWei`, or this would not exist. */
24
- maxPayoutWei: bigint;
34
+ /** Base units of the spend token per point. */
35
+ unitsPerPoint: bigint;
36
+ /** What a flawless round pays. Always at or under `walletCap`, or this would not exist. */
37
+ maxPayout: bigint;
25
38
  /**
26
- * The two inputs, returned beside the rate they produced.
39
+ * The inputs, returned beside the rate they produced.
27
40
  *
28
41
  * They travel together so a caller cannot persist a rate from one calculation and a dollar
29
42
  * figure from another. Both are process-wide settings, so the only place they are true of a
30
43
  * particular round is the moment that round's rate was fixed.
31
44
  */
32
45
  pointsPerDollar: number;
33
- usdPerEth: number;
46
+ /** The market price of one whole spend token — what a display should call the token's price. */
47
+ usdPerSpendToken: number;
48
+ /** The spend token's decimals. */
49
+ decimals: number;
34
50
  }
35
51
  export type EconomyResult = {
36
52
  ok: true;
@@ -1 +1 @@
1
- {"version":3,"file":"economy.d.ts","sourceRoot":"","sources":["../src/economy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,8FAA8F;IAC9F,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,wBAAwB,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAwDjE"}
1
+ {"version":3,"file":"economy.d.ts","sourceRoot":"","sources":["../src/economy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,oGAAoG;AACpG,eAAO,MAAM,YAAY,KAAK,CAAC;AAK/B,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gFAAgF;IAChF,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,eAAe,EAAE,MAAM,CAAC;IACxB,qGAAqG;IACrG,gBAAgB,EAAE,MAAM,CAAC;IACzB,kGAAkG;IAClG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,2FAA2F;IAC3F,SAAS,EAAE,MAAM,CAAC;IAClB;;;;;;OAMG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,gGAAgG;IAChG,gBAAgB,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,wBAAwB,EAAE,MAAM,CAAA;CAAE,CAAC;AASrE;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CA8EjE"}
package/dist/economy.js CHANGED
@@ -7,10 +7,27 @@
7
7
  * environment variable was wrong, and no code was in a position to notice.
8
8
  *
9
9
  * So the arithmetic lives here, runs at round creation with the actual values, and refuses. A
10
- * creator sets one human number — how many points a dollar is worth — and never sees wei.
10
+ * creator sets one human number — how many points a dollar is worth — and never sees base units.
11
+ *
12
+ * Denomination. A pool's spend is measured on chain in its PAIRED token's own base units: wei for
13
+ * an ETH-paired coin, 10^-6 for a six-decimal stablecoin. Every amount in this package is
14
+ * therefore base units of the round's spend token, and the arithmetic here is parameterised by
15
+ * that token's decimals rather than assuming eighteen.
11
16
  */
12
- /** 1 ETH in wei. */
17
+ /** The decimals of ETH, which is what every field was denominated in before paired-token rounds. */
18
+ export const ETH_DECIMALS = 18;
19
+ /** 1 ETH in wei. Kept as the default `unitsPerToken` so an ETH round is byte-identical to before. */
13
20
  const WEI_PER_ETH = 1000000000000000000n;
21
+ /** 10^decimals: one whole spend token in its base units. */
22
+ export function unitsPerToken(decimals) {
23
+ return 10n ** BigInt(decimals);
24
+ }
25
+ function resolveInputs(input) {
26
+ return {
27
+ usdPerSpendToken: input.usdPerSpendToken ?? Number.NaN,
28
+ decimals: input.decimals ?? ETH_DECIMALS,
29
+ };
30
+ }
14
31
  /**
15
32
  * Resolve the rate for one round, or refuse with the number that fixes it.
16
33
  *
@@ -23,12 +40,24 @@ const WEI_PER_ETH = 1000000000000000000n;
23
40
  * goes and reads this file.
24
41
  */
25
42
  export function resolveEconomy(input) {
26
- const { maxPointsPerPlayer, walletCapWei, pointsPerDollar, usdPerEth } = input;
43
+ const { maxPointsPerPlayer, walletCap, pointsPerDollar } = input;
44
+ const { usdPerSpendToken, decimals } = resolveInputs(input);
27
45
  if (!Number.isFinite(pointsPerDollar) || pointsPerDollar <= 0) {
28
46
  return { ok: false, problem: 'points per dollar must be a positive number', suggestedPointsPerDollar: 100 };
29
47
  }
30
- if (!Number.isFinite(usdPerEth) || usdPerEth <= 0) {
31
- return { ok: false, problem: 'the ETH price must be a positive number', suggestedPointsPerDollar: pointsPerDollar };
48
+ if (!Number.isSafeInteger(decimals) || decimals < 0 || decimals > 36) {
49
+ return {
50
+ ok: false,
51
+ problem: 'the spend token must have between 0 and 36 decimals',
52
+ suggestedPointsPerDollar: pointsPerDollar,
53
+ };
54
+ }
55
+ if (!Number.isFinite(usdPerSpendToken) || usdPerSpendToken <= 0) {
56
+ return {
57
+ ok: false,
58
+ problem: 'the spend token price must be a positive number',
59
+ suggestedPointsPerDollar: pointsPerDollar,
60
+ };
32
61
  }
33
62
  if (!Number.isSafeInteger(maxPointsPerPlayer) || maxPointsPerPlayer <= 0) {
34
63
  return {
@@ -37,58 +66,70 @@ export function resolveEconomy(input) {
37
66
  suggestedPointsPerDollar: pointsPerDollar,
38
67
  };
39
68
  }
40
- if (walletCapWei <= 0n) {
69
+ if (walletCap <= 0n) {
41
70
  return {
42
71
  ok: false,
43
72
  problem: 'this launch has no per-wallet spending cap, so nothing can be authorised',
44
73
  suggestedPointsPerDollar: pointsPerDollar,
45
74
  };
46
75
  }
47
- // How many points one ETH buys. Checked before it becomes a divisor: `pointsPerDollar` is
48
- // guarded as positive above, but a small enough positive value still rounds this product to
76
+ // How many points one whole token buys. Checked before it becomes a divisor: `pointsPerDollar`
77
+ // is guarded as positive above, but a small enough positive value still rounds this product to
49
78
  // zero — and dividing by it threw `Division by zero` out of the one function whose entire job is
50
79
  // to refuse a bad economy with a sentence an operator can act on.
51
- const pointsPerEth = Math.round(usdPerEth * pointsPerDollar);
52
- if (pointsPerEth <= 0) {
80
+ const pointsPerToken = Math.round(usdPerSpendToken * pointsPerDollar);
81
+ if (pointsPerToken <= 0) {
53
82
  return {
54
83
  ok: false,
55
- problem: 'one point would be worth more than a whole ETH, which cannot be what was meant',
84
+ problem: 'one point would be worth more than a whole spend token, which cannot be what was meant',
56
85
  suggestedPointsPerDollar: minimumPointsPerDollar(input),
57
86
  };
58
87
  }
59
- const weiPerPoint = WEI_PER_ETH / BigInt(pointsPerEth);
60
- if (weiPerPoint <= 0n) {
88
+ const units = unitsPerToken(decimals);
89
+ const unitsPerPoint = units / BigInt(pointsPerToken);
90
+ if (unitsPerPoint <= 0n) {
61
91
  return {
62
92
  ok: false,
63
- problem: 'each point would be worth less than the smallest unit of ETH',
93
+ problem: 'each point would be worth less than the smallest unit of the spend token',
64
94
  suggestedPointsPerDollar: Math.max(1, Math.floor(pointsPerDollar / 1000)),
65
95
  };
66
96
  }
67
- const maxPayoutWei = BigInt(Math.floor(maxPointsPerPlayer)) * weiPerPoint;
68
- if (maxPayoutWei > walletCapWei) {
97
+ const maxPayout = BigInt(Math.floor(maxPointsPerPlayer)) * unitsPerPoint;
98
+ if (maxPayout > walletCap) {
69
99
  return {
70
100
  ok: false,
71
101
  problem: 'a perfect round would earn more than this launch lets one wallet spend',
72
102
  suggestedPointsPerDollar: minimumPointsPerDollar(input),
73
103
  };
74
104
  }
75
- return { ok: true, economy: { weiPerPoint, maxPayoutWei, pointsPerDollar, usdPerEth } };
105
+ return {
106
+ ok: true,
107
+ economy: {
108
+ unitsPerPoint,
109
+ maxPayout,
110
+ pointsPerDollar,
111
+ usdPerSpendToken,
112
+ decimals,
113
+ },
114
+ };
76
115
  }
77
116
  /**
78
117
  * The smallest `pointsPerDollar` that keeps a flawless round inside the cap.
79
118
  *
80
119
  * Rounded up, then nudged until it actually passes: the division that produces it floors, and a
81
- * value that is correct to the last wei but fails the check is worse than useless in an error
120
+ * value that is correct to the last unit but fails the check is worse than useless in an error
82
121
  * message. Two steps is enough for any input — the loop is a guard against an off-by-one in the
83
122
  * rounding, not an iterative search.
84
123
  */
85
124
  function minimumPointsPerDollar(input) {
86
- const { maxPointsPerPlayer, walletCapWei, usdPerEth } = input;
125
+ const { maxPointsPerPlayer, walletCap } = input;
126
+ const { usdPerSpendToken, decimals } = resolveInputs(input);
87
127
  const points = BigInt(Math.floor(maxPointsPerPlayer));
88
- const maxWeiPerPoint = walletCapWei / points;
89
- if (maxWeiPerPoint <= 0n)
128
+ const maxUnitsPerPoint = walletCap / points;
129
+ if (maxUnitsPerPoint <= 0n)
90
130
  return Math.ceil(maxPointsPerPlayer);
91
- let candidate = Math.ceil(Number(WEI_PER_ETH / maxWeiPerPoint) / usdPerEth);
131
+ const units = Number.isSafeInteger(decimals) && decimals >= 0 && decimals <= 36 ? unitsPerToken(decimals) : WEI_PER_ETH;
132
+ let candidate = Math.ceil(Number(units / maxUnitsPerPoint) / usdPerSpendToken);
92
133
  for (let i = 0; i < 3; i++) {
93
134
  const result = resolveEconomy({ ...input, pointsPerDollar: candidate });
94
135
  if (result.ok)
@@ -1 +1 @@
1
- {"version":3,"file":"economy.js","sourceRoot":"","sources":["../src/economy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"economy.js","sourceRoot":"","sources":["../src/economy.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  /** Public server-side surface for a production Game Mode gate. */
2
2
  export { Claims, DEFAULT_SETTLEMENT_TAIL_MS, Room, Sessions, createGate, createGameServerGate, } from './server.js';
3
- export type { Admission, AdmissionRequest, Admit, ConfigForLaunch, GameServerGateOptions, GateOptions, MaxPointsForLaunch, VerifiedLaunch, } from './server.js';
3
+ export type { Admission, AdmissionRequest, Admit, AnnouncedSpendToken, ConfigForLaunch, GameServerGateOptions, GateOptions, MaxPointsForLaunch, PriceFor, VerifiedLaunch, } from './server.js';
4
4
  export { createTurnstileAdmit } from './turnstile.js';
5
5
  export type { TurnstileAdmitOptions } from './turnstile.js';
6
6
  export { Ledger } from './ledger.js';
@@ -11,7 +11,7 @@ export type { SignedPayload } from './chain/signer.js';
11
11
  export { Discovery, poolIdOf, verifyLaunch } from './chain/discover.js';
12
12
  export type { ChainReader, Deployment, Launch, LaunchCheck, PoolKey, Refused } from './chain/discover.js';
13
13
  export { Settlement } from './settlement.js';
14
- export { resolveEconomy } from './economy.js';
14
+ export { ETH_DECIMALS, resolveEconomy, unitsPerToken } from './economy.js';
15
15
  export type { Economy, EconomyInput, EconomyResult } from './economy.js';
16
16
  export { migrate } from './store.js';
17
17
  export { createDemoGate } from './demo.js';
@@ -28,10 +28,10 @@ export type { VerifiedPlayerJoin, VerifyPlayerJoinTicketOptions } from './player
28
28
  * gate (see DEPLOY.md), and the pieces below it stay exported for anyone wiring their own.
29
29
  */
30
30
  export { startGate, resolveGateEnv } from './main.js';
31
- export type { ResolvedGateConfig, StartedGate, StartGateOverrides } from './main.js';
31
+ export type { ResolvedGateConfig, SpendTokenPricing, StartedGate, StartGateOverrides } from './main.js';
32
32
  export type { GateAnnouncement } from './server.js';
33
33
  export { NotSignedIn } from './sessions.js';
34
- export { DEPLOYMENTS, deploymentFor } from './chain/chains.js';
35
- export type { GateDeployment } from './chain/chains.js';
36
- export { assertSecureConfig } from './chain/secure.js';
34
+ export { DEPLOYMENTS, PAIRED_DEPLOYMENTS, deploymentFor } from './chain/chains.js';
35
+ export type { FlaunchVariant, GateDeployment } from './chain/chains.js';
36
+ export { POSITION_MANAGER_ROLE, assertSecureConfig } from './chain/secure.js';
37
37
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EACL,MAAM,EACN,0BAA0B,EAC1B,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,YAAY,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAElG;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACtD,YAAY,EAAE,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACrF,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EACL,MAAM,EACN,0BAA0B,EAC1B,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,SAAS,EACT,gBAAgB,EAChB,KAAK,EACL,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,QAAQ,EACR,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3E,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,YAAY,EAAE,kBAAkB,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAElG;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACtD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACxG,YAAY,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnF,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ export { CLAIM_AUTHORIZATION_TTL_MS } from './claims.js';
6
6
  export { PayloadSigner, encodeHookData } from './chain/signer.js';
7
7
  export { Discovery, poolIdOf, verifyLaunch } from './chain/discover.js';
8
8
  export { Settlement } from './settlement.js';
9
- export { resolveEconomy } from './economy.js';
9
+ export { ETH_DECIMALS, resolveEconomy, unitsPerToken } from './economy.js';
10
10
  export { migrate } from './store.js';
11
11
  export { createDemoGate } from './demo.js';
12
12
  export { InvalidRegistration, RegistrationConflict, checkRegistration, disableGameRegistration, gateOrigin, pinGameRegistration, resolveGameRegistration, securityProfile, } from './registry.js';
@@ -18,6 +18,6 @@ export { PLAYER_JOIN_TICKET_TTL_MS, verifyPlayerJoinTicket } from './player-join
18
18
  */
19
19
  export { startGate, resolveGateEnv } from './main.js';
20
20
  export { NotSignedIn } from './sessions.js';
21
- export { DEPLOYMENTS, deploymentFor } from './chain/chains.js';
22
- export { assertSecureConfig } from './chain/secure.js';
21
+ export { DEPLOYMENTS, PAIRED_DEPLOYMENTS, deploymentFor } from './chain/chains.js';
22
+ export { POSITION_MANAGER_ROLE, assertSecureConfig } from './chain/secure.js';
23
23
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EACL,MAAM,EACN,0BAA0B,EAC1B,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAWrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAUxD,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAG7F;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EACL,MAAM,EACN,0BAA0B,EAC1B,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAarB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE3E,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,UAAU,EACV,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAUxD,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAG7F;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEnF,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
package/dist/ledger.d.ts CHANGED
@@ -62,7 +62,7 @@ export declare class Ledger {
62
62
  *
63
63
  * Never allowed to go backwards: a read from a lagging node must not undo what a later one saw.
64
64
  */
65
- recordChainSpend(roundId: string, player: PlayerId, spentWei: bigint): Promise<boolean>;
65
+ recordChainSpend(roundId: string, player: PlayerId, spent: bigint): Promise<boolean>;
66
66
  /** Everyone with a balance in this round, for the reconciler to ask the chain about. */
67
67
  playersIn(roundId: string): Promise<PlayerId[]>;
68
68
  /**
@@ -75,7 +75,7 @@ export declare class Ledger {
75
75
  * Returns how many were returned, so a caller can log something worth reading.
76
76
  */
77
77
  releaseExpired(nowSeconds: number): Promise<BalanceKey[]>;
78
- availableWei(roundId: string, player: PlayerId): Promise<bigint>;
78
+ available(roundId: string, player: PlayerId): Promise<bigint>;
79
79
  /** The authoritative balance snapshot, derived from the same state and ceiling as `claim`. */
80
80
  economyBalance(roundId: string, player: PlayerId): Promise<EconomyBalance>;
81
81
  private readState;
@@ -1 +1 @@
1
- {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;IAC5B,SAAS,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,CAAC;CAClB;AA8CD,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAEvC,2EAA2E;IACrE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;;;;;OAMG;IACG,KAAK,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,EAAE,GAAE,MAAmB,GACtB,OAAO,CAAC,WAAW,CAAC;IAiDvB,2FAA2F;IACrF,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAgB1G;;;;;OAKG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD;;;;OAIG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7F,wFAAwF;IAClF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQrD;;;;;;;;OAQG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAczD,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAItE,8FAA8F;IACxF,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;YAkBlE,SAAS;YA4CT,aAAa;YAeb,gBAAgB;CAS/B"}
1
+ {"version":3,"file":"ledger.d.ts","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGrE;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,UAAU,CAAC;IAC5B,SAAS,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,CAAC;CAClB;AA8CD,qBAAa,MAAM;IACL,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAEvC,2EAA2E;IACrE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;;;;;OAMG;IACG,KAAK,CACT,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,EAAE,GAAE,MAAmB,GACtB,OAAO,CAAC,WAAW,CAAC;IAiDvB,2FAA2F;IACrF,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAgB1G;;;;;OAKG;IACG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD;;;;OAIG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS1F,wFAAwF;IAClF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQrD;;;;;;;;OAQG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAczD,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAInE,8FAA8F;IACxF,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;YAkBlE,SAAS;YA4CT,aAAa;YAeb,gBAAgB;CAS/B"}
package/dist/ledger.js CHANGED
@@ -6,9 +6,9 @@ import { inTransaction, migrate, toBigInt } from './store.js';
6
6
  * wallet spend. Issuing past the second does not overspend — the chain refuses it — it mints a
7
7
  * signature that reverts at the swap, which to a player is indistinguishable from being robbed.
8
8
  */
9
- function availableFrom({ points, weiPerPoint, capWei, heldWei, chainSpentWei }) {
10
- const earnedWei = points * weiPerPoint;
11
- const ceiling = earnedWei < capWei ? earnedWei : capWei;
9
+ function availableFrom({ points, unitsPerPoint, capWei, held, chainSpentWei }) {
10
+ const earned = points * unitsPerPoint;
11
+ const ceiling = earned < capWei ? earned : capWei;
12
12
  // Spent-on-chain PLUS still-outstanding, never the larger of the two.
13
13
  //
14
14
  // Taking the larger looked safe and was not. Hold 40, spend it, let the hold expire, then hold
@@ -19,7 +19,7 @@ function availableFrom({ points, weiPerPoint, capWei, heldWei, chainSpentWei })
19
19
  //
20
20
  // Adding them double-counts a hold whose swap has already landed, until that hold expires. That
21
21
  // errs towards authorising too little, which is the direction that costs nobody anything.
22
- const available = ceiling - (chainSpentWei + heldWei);
22
+ const available = ceiling - (chainSpentWei + held);
23
23
  return available > 0n ? available : 0n;
24
24
  }
25
25
  export class Ledger {
@@ -117,9 +117,9 @@ export class Ledger {
117
117
  *
118
118
  * Never allowed to go backwards: a read from a lagging node must not undo what a later one saw.
119
119
  */
120
- async recordChainSpend(roundId, player, spentWei) {
120
+ async recordChainSpend(roundId, player, spent) {
121
121
  const result = await this.pool.query(`update balances set chain_spent_wei = greatest(chain_spent_wei, $3)
122
- where round_id = $1 and player = $2 and chain_spent_wei < $3`, [roundId, player, spentWei.toString()]);
122
+ where round_id = $1 and player = $2 and chain_spent_wei < $3`, [roundId, player, spent.toString()]);
123
123
  return result.rowCount === 1;
124
124
  }
125
125
  /** Everyone with a balance in this round, for the reconciler to ask the chain about. */
@@ -146,21 +146,21 @@ export class Ledger {
146
146
  ]));
147
147
  return [...unique.values()];
148
148
  }
149
- async availableWei(roundId, player) {
150
- return (await this.economyBalance(roundId, player)).availableWei;
149
+ async available(roundId, player) {
150
+ return (await this.economyBalance(roundId, player)).available;
151
151
  }
152
152
  /** The authoritative balance snapshot, derived from the same state and ceiling as `claim`. */
153
153
  async economyBalance(roundId, player) {
154
154
  const state = await this.readState(this.pool, roundId, player);
155
155
  if (!state) {
156
- return { weiPerPoint: 0n, earnedWei: 0n, heldWei: 0n, spentWei: 0n, availableWei: 0n, holdExpiresAt: null };
156
+ return { unitsPerPoint: 0n, earned: 0n, held: 0n, spent: 0n, available: 0n, holdExpiresAt: null };
157
157
  }
158
158
  return {
159
- weiPerPoint: state.weiPerPoint,
160
- earnedWei: state.points * state.weiPerPoint,
161
- heldWei: state.heldWei,
162
- spentWei: state.chainSpentWei,
163
- availableWei: availableFrom(state),
159
+ unitsPerPoint: state.unitsPerPoint,
160
+ earned: state.points * state.unitsPerPoint,
161
+ held: state.held,
162
+ spent: state.chainSpentWei,
163
+ available: availableFrom(state),
164
164
  // Seconds on the way in, because that is what the contract checks against; milliseconds on
165
165
  // the way out, because that is what a browser counts down with.
166
166
  holdExpiresAt: state.holdExpiresAtSeconds === null ? null : state.holdExpiresAtSeconds * 1000,
@@ -180,11 +180,11 @@ export class Ledger {
180
180
  return {
181
181
  points: toBigInt(balance.rows[0]?.points),
182
182
  chainSpentWei: toBigInt(balance.rows[0]?.chain_spent_wei),
183
- weiPerPoint: toBigInt(row.wei_per_point),
183
+ unitsPerPoint: toBigInt(row.wei_per_point),
184
184
  capWei: toBigInt(row.wallet_cap_wei),
185
185
  opensAt: Number(row.opens_at),
186
186
  closesAt: Number(row.closes_at),
187
- heldWei: toBigInt(held.rows[0]?.total),
187
+ held: toBigInt(held.rows[0]?.total),
188
188
  holdExpiresAtSeconds: earliest == null ? null : Number(earliest),
189
189
  };
190
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledger.js","sourceRoot":"","sources":["../src/ledger.ts"],"names":[],"mappings":"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"}