rollhub-dice 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/client.d.ts +20 -2
- package/dist/cjs/client.d.ts.map +1 -1
- package/dist/cjs/client.js +72 -3
- package/dist/cjs/client.js.map +1 -1
- package/dist/cjs/errors.d.ts +3 -0
- package/dist/cjs/errors.d.ts.map +1 -1
- package/dist/cjs/errors.js +8 -1
- package/dist/cjs/errors.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types.d.ts +14 -0
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/verify.d.ts +6 -4
- package/dist/cjs/verify.d.ts.map +1 -1
- package/dist/cjs/verify.js +9 -11
- package/dist/cjs/verify.js.map +1 -1
- package/dist/esm/client.d.ts +20 -2
- package/dist/esm/client.d.ts.map +1 -1
- package/dist/esm/client.js +72 -3
- package/dist/esm/client.js.map +1 -1
- package/dist/esm/errors.d.ts +3 -0
- package/dist/esm/errors.d.ts.map +1 -1
- package/dist/esm/errors.js +8 -1
- package/dist/esm/errors.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types.d.ts +14 -0
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/verify.d.ts +6 -4
- package/dist/esm/verify.d.ts.map +1 -1
- package/dist/esm/verify.js +9 -11
- package/dist/esm/verify.js.map +1 -1
- package/package.json +1 -1
package/dist/cjs/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DiceAgentOptions, Balance, BetOptions, BetResult, Bet, VerifyResult } from './types.js';
|
|
1
|
+
import type { DiceAgentOptions, Balance, BetOptions, BetResult, Bet, VerifyResult, VerificationProof } from './types.js';
|
|
2
2
|
export declare class DiceAgent {
|
|
3
3
|
private readonly apiKey;
|
|
4
4
|
private readonly baseUrl;
|
|
@@ -9,7 +9,7 @@ export declare class DiceAgent {
|
|
|
9
9
|
static register(walletAddress: string, baseUrl?: string): Promise<DiceAgent>;
|
|
10
10
|
/** Get current balance. */
|
|
11
11
|
balance(): Promise<Balance>;
|
|
12
|
-
/** Place a dice bet. */
|
|
12
|
+
/** Place a dice bet with automatic provably fair verification. */
|
|
13
13
|
bet(options: BetOptions): Promise<BetResult>;
|
|
14
14
|
/** List available play strategies. */
|
|
15
15
|
strategies(): Promise<unknown>;
|
|
@@ -46,6 +46,24 @@ export declare class DiceAgent {
|
|
|
46
46
|
bets(): Promise<Bet[]>;
|
|
47
47
|
/** Verify a past bet by ID. */
|
|
48
48
|
verify(betId: number): Promise<VerifyResult>;
|
|
49
|
+
/**
|
|
50
|
+
* Compute a provably fair roll matching the server algorithm.
|
|
51
|
+
* SHA3-384(server||client||nonce) → AES-256-CTR(key, iv, 16 zero-bytes) → XOR uint32s → 0.5 + val/4294967295
|
|
52
|
+
*/
|
|
53
|
+
static _computeRoll(serverSeedHex: string, clientSeedHex: string, nonce: number): number;
|
|
54
|
+
/** SHA3-384 hash of server seed bytes, as hex string. */
|
|
55
|
+
static _hashServerSeed(serverSeedHex: string): string;
|
|
56
|
+
/**
|
|
57
|
+
* Verify a bet's provably fair proof.
|
|
58
|
+
* Throws VerificationError if verification fails.
|
|
59
|
+
*/
|
|
60
|
+
static _verifyBet(data: {
|
|
61
|
+
server_seed: string;
|
|
62
|
+
server_seed_hash: string;
|
|
63
|
+
client_seed: string;
|
|
64
|
+
nonce: number;
|
|
65
|
+
roll: number;
|
|
66
|
+
}): VerificationProof;
|
|
49
67
|
private request;
|
|
50
68
|
}
|
|
51
69
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/cjs/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAEhB,OAAO,EACP,UAAU,EACV,SAAS,EACT,GAAG,EACH,YAAY,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAEhB,OAAO,EACP,UAAU,EACV,SAAS,EACT,GAAG,EACH,YAAY,EACZ,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAapB,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,gBAAgB;IAKrC;;OAEG;WACU,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAWlF,2BAA2B;IACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC,kEAAkE;IAC5D,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAyBlD,sCAAsC;IAChC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC,wDAAwD;IAClD,IAAI,CAAC,OAAO,EAAE;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,OAAO,CAAC;IAWpB,wCAAwC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhF,+BAA+B;IACzB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrD,4BAA4B;IACtB,QAAQ,CAAC,OAAO,EAAE;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpB,uDAAuD;IACjD,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9C,+BAA+B;IACzB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,yCAAyC;IACnC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrD,4BAA4B;IACtB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAIlC,uBAAuB;IACjB,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAK5B,+BAA+B;IACzB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIlD;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IA0BxF,yDAAyD;IACzD,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAIrD;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,iBAAiB;YA6BP,OAAO;CAatB"}
|
package/dist/cjs/client.js
CHANGED
|
@@ -30,14 +30,28 @@ class DiceAgent {
|
|
|
30
30
|
async balance() {
|
|
31
31
|
return this.request('GET', '/balance');
|
|
32
32
|
}
|
|
33
|
-
/** Place a dice bet. */
|
|
33
|
+
/** Place a dice bet with automatic provably fair verification. */
|
|
34
34
|
async bet(options) {
|
|
35
|
-
|
|
35
|
+
const clientSecret = options.clientSecret ?? (0, node_crypto_1.randomBytes)(16).toString('hex');
|
|
36
|
+
const result = await this.request('POST', '/dice', {
|
|
36
37
|
target: options.target,
|
|
37
38
|
direction: options.direction,
|
|
38
39
|
amount: options.amount,
|
|
39
|
-
client_secret:
|
|
40
|
+
client_secret: clientSecret,
|
|
40
41
|
});
|
|
42
|
+
// Auto-verify if server_seed is present in proof
|
|
43
|
+
const serverSeed = result.proof?.server_seed;
|
|
44
|
+
if (serverSeed) {
|
|
45
|
+
const verification = DiceAgent._verifyBet({
|
|
46
|
+
server_seed: serverSeed,
|
|
47
|
+
server_seed_hash: result.proof.server_seed_hash,
|
|
48
|
+
client_seed: result.proof.client_seed || clientSecret,
|
|
49
|
+
nonce: result.proof.nonce,
|
|
50
|
+
roll: result.roll,
|
|
51
|
+
});
|
|
52
|
+
result.verification = verification;
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
41
55
|
}
|
|
42
56
|
/** List available play strategies. */
|
|
43
57
|
async strategies() {
|
|
@@ -97,6 +111,61 @@ class DiceAgent {
|
|
|
97
111
|
async verify(betId) {
|
|
98
112
|
return this.request('GET', `/verify/${betId}`);
|
|
99
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Compute a provably fair roll matching the server algorithm.
|
|
116
|
+
* SHA3-384(server||client||nonce) → AES-256-CTR(key, iv, 16 zero-bytes) → XOR uint32s → 0.5 + val/4294967295
|
|
117
|
+
*/
|
|
118
|
+
static _computeRoll(serverSeedHex, clientSeedHex, nonce) {
|
|
119
|
+
const serverBytes = Buffer.from(serverSeedHex, 'hex');
|
|
120
|
+
const clientBytes = Buffer.from(clientSeedHex, 'hex');
|
|
121
|
+
const nonceBytes = Buffer.alloc(8);
|
|
122
|
+
nonceBytes.writeBigUInt64LE(BigInt(nonce));
|
|
123
|
+
const h = (0, node_crypto_1.createHash)('sha3-384');
|
|
124
|
+
h.update(serverBytes);
|
|
125
|
+
h.update(clientBytes);
|
|
126
|
+
h.update(nonceBytes);
|
|
127
|
+
const digest = h.digest();
|
|
128
|
+
const key = digest.subarray(0, 32);
|
|
129
|
+
const iv = digest.subarray(32, 48);
|
|
130
|
+
const cipher = (0, node_crypto_1.createCipheriv)('aes-256-ctr', key, iv);
|
|
131
|
+
const ct = cipher.update(Buffer.alloc(16));
|
|
132
|
+
let xor = 0;
|
|
133
|
+
for (let i = 0; i < 16; i += 4) {
|
|
134
|
+
xor ^= ct.readUInt32LE(i);
|
|
135
|
+
}
|
|
136
|
+
return 0.5 + xor / 4294967295;
|
|
137
|
+
}
|
|
138
|
+
/** SHA3-384 hash of server seed bytes, as hex string. */
|
|
139
|
+
static _hashServerSeed(serverSeedHex) {
|
|
140
|
+
return (0, node_crypto_1.createHash)('sha3-384').update(Buffer.from(serverSeedHex, 'hex')).digest('hex');
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Verify a bet's provably fair proof.
|
|
144
|
+
* Throws VerificationError if verification fails.
|
|
145
|
+
*/
|
|
146
|
+
static _verifyBet(data) {
|
|
147
|
+
const computedHash = DiceAgent._hashServerSeed(data.server_seed);
|
|
148
|
+
const hashOk = computedHash === data.server_seed_hash;
|
|
149
|
+
const rollRecalc = parseFloat(DiceAgent._computeRoll(data.server_seed, data.client_seed, data.nonce).toFixed(6));
|
|
150
|
+
const rollReported = parseFloat(data.roll.toFixed(6));
|
|
151
|
+
const rollOk = rollRecalc === rollReported;
|
|
152
|
+
const verified = hashOk && rollOk;
|
|
153
|
+
const proof = {
|
|
154
|
+
verified,
|
|
155
|
+
server_seed: data.server_seed,
|
|
156
|
+
server_seed_hash: data.server_seed_hash,
|
|
157
|
+
client_seed: data.client_seed,
|
|
158
|
+
nonce: data.nonce,
|
|
159
|
+
roll_reported: rollReported,
|
|
160
|
+
roll_recalculated: rollRecalc,
|
|
161
|
+
hash_verified: hashOk,
|
|
162
|
+
roll_verified: rollOk,
|
|
163
|
+
};
|
|
164
|
+
if (!verified) {
|
|
165
|
+
throw new errors_js_1.VerificationError(`Bet verification failed: hash_ok=${hashOk}, roll_ok=${rollOk}`);
|
|
166
|
+
}
|
|
167
|
+
return proof;
|
|
168
|
+
}
|
|
100
169
|
async request(method, path, body) {
|
|
101
170
|
const url = `${this.baseUrl}${path}`;
|
|
102
171
|
const init = {
|
package/dist/cjs/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/errors.d.ts
CHANGED
|
@@ -18,4 +18,7 @@ export declare class NetworkError extends Error {
|
|
|
18
18
|
readonly cause: unknown;
|
|
19
19
|
constructor(message: string, cause?: unknown);
|
|
20
20
|
}
|
|
21
|
+
export declare class VerificationError extends RollhubError {
|
|
22
|
+
constructor(message?: string);
|
|
23
|
+
}
|
|
21
24
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/cjs/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,IAAI,EAAE,OAAO,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAO1E;AAED,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,OAAO,SAA+B;CAInD;AAED,qBAAa,wBAAyB,SAAQ,YAAY;gBAC5C,OAAO,SAAyB;CAI7C;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,UAAU,SAAI;CAK3B;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,KAAK,EAAE,OAAO,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,IAAI,EAAE,OAAO,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAO1E;AAED,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,OAAO,SAA+B;CAInD;AAED,qBAAa,wBAAyB,SAAQ,YAAY;gBAC5C,OAAO,SAAyB;CAI7C;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,UAAU,SAAI;CAK3B;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,KAAK,EAAE,OAAO,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AAED,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,OAAO,SAA4B;CAIhD"}
|
package/dist/cjs/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NetworkError = exports.RateLimitError = exports.InsufficientBalanceError = exports.AuthenticationError = exports.RollhubError = void 0;
|
|
3
|
+
exports.VerificationError = exports.NetworkError = exports.RateLimitError = exports.InsufficientBalanceError = exports.AuthenticationError = exports.RollhubError = void 0;
|
|
4
4
|
class RollhubError extends Error {
|
|
5
5
|
status;
|
|
6
6
|
code;
|
|
@@ -46,4 +46,11 @@ class NetworkError extends Error {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
exports.NetworkError = NetworkError;
|
|
49
|
+
class VerificationError extends RollhubError {
|
|
50
|
+
constructor(message = 'Bet verification failed') {
|
|
51
|
+
super(message, 0, 'VERIFICATION_FAILED');
|
|
52
|
+
this.name = 'VerificationError';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.VerificationError = VerificationError;
|
|
49
56
|
//# sourceMappingURL=errors.js.map
|
package/dist/cjs/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAa,SAAQ,KAAK;IACrB,MAAM,CAAS;IACf,IAAI,CAAS;IACb,IAAI,CAAU;IAE9B,YAAY,OAAe,EAAE,MAAc,EAAE,IAAY,EAAE,IAAc;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAZD,oCAYC;AAED,MAAa,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAO,GAAG,4BAA4B;QAChD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC;AAED,MAAa,wBAAyB,SAAQ,YAAY;IACxD,YAAY,OAAO,GAAG,sBAAsB;QAC1C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAED,MAAa,cAAe,SAAQ,YAAY;IAC9B,UAAU,CAAS;IAEnC,YAAY,UAAU,GAAG,CAAC;QACxB,KAAK,CAAC,6BAA6B,UAAU,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AARD,wCAQC;AAED,MAAa,YAAa,SAAQ,KAAK;IACrB,KAAK,CAAU;IAE/B,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AARD,oCAQC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAa,SAAQ,KAAK;IACrB,MAAM,CAAS;IACf,IAAI,CAAS;IACb,IAAI,CAAU;IAE9B,YAAY,OAAe,EAAE,MAAc,EAAE,IAAY,EAAE,IAAc;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAZD,oCAYC;AAED,MAAa,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAO,GAAG,4BAA4B;QAChD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC;AAED,MAAa,wBAAyB,SAAQ,YAAY;IACxD,YAAY,OAAO,GAAG,sBAAsB;QAC1C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAED,MAAa,cAAe,SAAQ,YAAY;IAC9B,UAAU,CAAS;IAEnC,YAAY,UAAU,GAAG,CAAC;QACxB,KAAK,CAAC,6BAA6B,UAAU,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AARD,wCAQC;AAED,MAAa,YAAa,SAAQ,KAAK;IACrB,KAAK,CAAU;IAE/B,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AARD,oCAQC;AAED,MAAa,iBAAkB,SAAQ,YAAY;IACjD,YAAY,OAAO,GAAG,yBAAyB;QAC7C,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { DiceAgent } from './client.js';
|
|
2
2
|
export { verifyRoll } from './verify.js';
|
|
3
|
-
export { RollhubError, AuthenticationError, InsufficientBalanceError, RateLimitError, NetworkError, } from './errors.js';
|
|
4
|
-
export type { DiceAgentOptions, RegisterResponse, Balance, BetOptions, BetResult, BetProof, Bet, VerifyResult, } from './types.js';
|
|
3
|
+
export { RollhubError, AuthenticationError, InsufficientBalanceError, RateLimitError, NetworkError, VerificationError, } from './errors.js';
|
|
4
|
+
export type { DiceAgentOptions, RegisterResponse, Balance, BetOptions, BetResult, BetProof, VerificationProof, Bet, VerifyResult, } from './types.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,SAAS,EACT,QAAQ,EACR,iBAAiB,EACjB,GAAG,EACH,YAAY,GACb,MAAM,YAAY,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NetworkError = exports.RateLimitError = exports.InsufficientBalanceError = exports.AuthenticationError = exports.RollhubError = exports.verifyRoll = exports.DiceAgent = void 0;
|
|
3
|
+
exports.VerificationError = exports.NetworkError = exports.RateLimitError = exports.InsufficientBalanceError = exports.AuthenticationError = exports.RollhubError = exports.verifyRoll = exports.DiceAgent = void 0;
|
|
4
4
|
var client_js_1 = require("./client.js");
|
|
5
5
|
Object.defineProperty(exports, "DiceAgent", { enumerable: true, get: function () { return client_js_1.DiceAgent; } });
|
|
6
6
|
var verify_js_1 = require("./verify.js");
|
|
@@ -11,4 +11,5 @@ Object.defineProperty(exports, "AuthenticationError", { enumerable: true, get: f
|
|
|
11
11
|
Object.defineProperty(exports, "InsufficientBalanceError", { enumerable: true, get: function () { return errors_js_1.InsufficientBalanceError; } });
|
|
12
12
|
Object.defineProperty(exports, "RateLimitError", { enumerable: true, get: function () { return errors_js_1.RateLimitError; } });
|
|
13
13
|
Object.defineProperty(exports, "NetworkError", { enumerable: true, get: function () { return errors_js_1.NetworkError; } });
|
|
14
|
+
Object.defineProperty(exports, "VerificationError", { enumerable: true, get: function () { return errors_js_1.VerificationError; } });
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,yCAAyC;AAAhC,uGAAA,UAAU,OAAA;AACnB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,yCAAyC;AAAhC,uGAAA,UAAU,OAAA;AACnB,yCAOqB;AANnB,yGAAA,YAAY,OAAA;AACZ,gHAAA,mBAAmB,OAAA;AACnB,qHAAA,wBAAwB,OAAA;AACxB,2GAAA,cAAc,OAAA;AACd,yGAAA,YAAY,OAAA;AACZ,8GAAA,iBAAiB,OAAA"}
|
package/dist/cjs/types.d.ts
CHANGED
|
@@ -18,11 +18,24 @@ export interface BetOptions {
|
|
|
18
18
|
clientSecret?: string;
|
|
19
19
|
}
|
|
20
20
|
export interface BetProof {
|
|
21
|
+
server_seed: string;
|
|
21
22
|
server_secret: string;
|
|
22
23
|
client_secret: string;
|
|
24
|
+
client_seed: string;
|
|
23
25
|
nonce: number;
|
|
24
26
|
server_seed_hash: string;
|
|
25
27
|
}
|
|
28
|
+
export interface VerificationProof {
|
|
29
|
+
verified: boolean;
|
|
30
|
+
server_seed: string;
|
|
31
|
+
server_seed_hash: string;
|
|
32
|
+
client_seed: string;
|
|
33
|
+
nonce: number;
|
|
34
|
+
roll_reported: number;
|
|
35
|
+
roll_recalculated: number;
|
|
36
|
+
hash_verified: boolean;
|
|
37
|
+
roll_verified: boolean;
|
|
38
|
+
}
|
|
26
39
|
export interface BetResult {
|
|
27
40
|
bet_id: number;
|
|
28
41
|
roll: number;
|
|
@@ -31,6 +44,7 @@ export interface BetResult {
|
|
|
31
44
|
multiplier: number;
|
|
32
45
|
balance: number;
|
|
33
46
|
proof: BetProof;
|
|
47
|
+
verification?: VerificationProof;
|
|
34
48
|
}
|
|
35
49
|
export interface Bet {
|
|
36
50
|
bet_id: number;
|
package/dist/cjs/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
|
package/dist/cjs/verify.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Verify a provably fair dice roll.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Algorithm (mirrors @blackjackfun/rng):
|
|
5
|
+
* SHA3-384(serverSeed || clientSeed || nonce) → 48 bytes
|
|
6
|
+
* key = first 32 bytes, iv = next 16 bytes
|
|
7
|
+
* AES-256-CTR encrypt 16 zero-bytes → XOR all uint32 LE values
|
|
8
|
+
* roll = 0.5 + xorValue / 4294967295
|
|
7
9
|
*
|
|
8
|
-
* The server_seed_hash should equal
|
|
10
|
+
* The server_seed_hash should equal SHA3-384(serverSecret bytes).
|
|
9
11
|
*/
|
|
10
12
|
export declare function verifyRoll(params: {
|
|
11
13
|
serverSecret: string;
|
package/dist/cjs/verify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CASvC"}
|
package/dist/cjs/verify.js
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.verifyRoll = verifyRoll;
|
|
4
|
-
const
|
|
4
|
+
const client_js_1 = require("./client.js");
|
|
5
5
|
/**
|
|
6
6
|
* Verify a provably fair dice roll.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Algorithm (mirrors @blackjackfun/rng):
|
|
9
|
+
* SHA3-384(serverSeed || clientSeed || nonce) → 48 bytes
|
|
10
|
+
* key = first 32 bytes, iv = next 16 bytes
|
|
11
|
+
* AES-256-CTR encrypt 16 zero-bytes → XOR all uint32 LE values
|
|
12
|
+
* roll = 0.5 + xorValue / 4294967295
|
|
11
13
|
*
|
|
12
|
-
* The server_seed_hash should equal
|
|
14
|
+
* The server_seed_hash should equal SHA3-384(serverSecret bytes).
|
|
13
15
|
*/
|
|
14
16
|
function verifyRoll(params) {
|
|
15
17
|
const { serverSecret, clientSecret, nonce, serverSeedHash } = params;
|
|
16
|
-
|
|
17
|
-
const computedHash = (0, node_crypto_1.createHash)('sha256').update(serverSecret).digest('hex');
|
|
18
|
+
const computedHash = client_js_1.DiceAgent._hashServerSeed(serverSecret);
|
|
18
19
|
const hashValid = computedHash === serverSeedHash;
|
|
19
|
-
|
|
20
|
-
const message = `${clientSecret}:${nonce}`;
|
|
21
|
-
const hmac = (0, node_crypto_1.createHmac)('sha256', serverSecret).update(message).digest('hex');
|
|
22
|
-
const roll = parseInt(hmac.slice(0, 8), 16) / 0x100000000;
|
|
20
|
+
const roll = parseFloat(client_js_1.DiceAgent._computeRoll(serverSecret, clientSecret, nonce).toFixed(6));
|
|
23
21
|
return { roll, hashValid };
|
|
24
22
|
}
|
|
25
23
|
//# sourceMappingURL=verify.js.map
|
package/dist/cjs/verify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":";;AAaA,gCAcC;AA3BD,2CAAwC;AAExC;;;;;;;;;;GAUG;AACH,SAAgB,UAAU,CAAC,MAK1B;IACC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;IAErE,MAAM,YAAY,GAAG,qBAAS,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,YAAY,KAAK,cAAc,CAAC;IAElD,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAS,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9F,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC"}
|
package/dist/esm/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { DiceAgentOptions, Balance, BetOptions, BetResult, Bet, VerifyResult } from './types.js';
|
|
1
|
+
import type { DiceAgentOptions, Balance, BetOptions, BetResult, Bet, VerifyResult, VerificationProof } from './types.js';
|
|
2
2
|
export declare class DiceAgent {
|
|
3
3
|
private readonly apiKey;
|
|
4
4
|
private readonly baseUrl;
|
|
@@ -9,7 +9,7 @@ export declare class DiceAgent {
|
|
|
9
9
|
static register(walletAddress: string, baseUrl?: string): Promise<DiceAgent>;
|
|
10
10
|
/** Get current balance. */
|
|
11
11
|
balance(): Promise<Balance>;
|
|
12
|
-
/** Place a dice bet. */
|
|
12
|
+
/** Place a dice bet with automatic provably fair verification. */
|
|
13
13
|
bet(options: BetOptions): Promise<BetResult>;
|
|
14
14
|
/** List available play strategies. */
|
|
15
15
|
strategies(): Promise<unknown>;
|
|
@@ -46,6 +46,24 @@ export declare class DiceAgent {
|
|
|
46
46
|
bets(): Promise<Bet[]>;
|
|
47
47
|
/** Verify a past bet by ID. */
|
|
48
48
|
verify(betId: number): Promise<VerifyResult>;
|
|
49
|
+
/**
|
|
50
|
+
* Compute a provably fair roll matching the server algorithm.
|
|
51
|
+
* SHA3-384(server||client||nonce) → AES-256-CTR(key, iv, 16 zero-bytes) → XOR uint32s → 0.5 + val/4294967295
|
|
52
|
+
*/
|
|
53
|
+
static _computeRoll(serverSeedHex: string, clientSeedHex: string, nonce: number): number;
|
|
54
|
+
/** SHA3-384 hash of server seed bytes, as hex string. */
|
|
55
|
+
static _hashServerSeed(serverSeedHex: string): string;
|
|
56
|
+
/**
|
|
57
|
+
* Verify a bet's provably fair proof.
|
|
58
|
+
* Throws VerificationError if verification fails.
|
|
59
|
+
*/
|
|
60
|
+
static _verifyBet(data: {
|
|
61
|
+
server_seed: string;
|
|
62
|
+
server_seed_hash: string;
|
|
63
|
+
client_seed: string;
|
|
64
|
+
nonce: number;
|
|
65
|
+
roll: number;
|
|
66
|
+
}): VerificationProof;
|
|
49
67
|
private request;
|
|
50
68
|
}
|
|
51
69
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/esm/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAEhB,OAAO,EACP,UAAU,EACV,SAAS,EACT,GAAG,EACH,YAAY,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAEhB,OAAO,EACP,UAAU,EACV,SAAS,EACT,GAAG,EACH,YAAY,EACZ,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAapB,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,gBAAgB;IAKrC;;OAEG;WACU,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAWlF,2BAA2B;IACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAIjC,kEAAkE;IAC5D,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAyBlD,sCAAsC;IAChC,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpC,wDAAwD;IAClD,IAAI,CAAC,OAAO,EAAE;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,GAAG,OAAO,CAAC,OAAO,CAAC;IAWpB,wCAAwC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,MAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIhF,+BAA+B;IACzB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrD,4BAA4B;IACtB,QAAQ,CAAC,OAAO,EAAE;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,OAAO,CAAC;IAUpB,uDAAuD;IACjD,oBAAoB,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9C,+BAA+B;IACzB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,yCAAyC;IACnC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrD,4BAA4B;IACtB,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAIlC,uBAAuB;IACjB,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAK5B,+BAA+B;IACzB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAIlD;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IA0BxF,yDAAyD;IACzD,MAAM,CAAC,eAAe,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;IAIrD;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,iBAAiB;YA6BP,OAAO;CAatB"}
|
package/dist/esm/client.js
CHANGED
|
@@ -30,14 +30,28 @@ class DiceAgent {
|
|
|
30
30
|
async balance() {
|
|
31
31
|
return this.request('GET', '/balance');
|
|
32
32
|
}
|
|
33
|
-
/** Place a dice bet. */
|
|
33
|
+
/** Place a dice bet with automatic provably fair verification. */
|
|
34
34
|
async bet(options) {
|
|
35
|
-
|
|
35
|
+
const clientSecret = options.clientSecret ?? (0, node_crypto_1.randomBytes)(16).toString('hex');
|
|
36
|
+
const result = await this.request('POST', '/dice', {
|
|
36
37
|
target: options.target,
|
|
37
38
|
direction: options.direction,
|
|
38
39
|
amount: options.amount,
|
|
39
|
-
client_secret:
|
|
40
|
+
client_secret: clientSecret,
|
|
40
41
|
});
|
|
42
|
+
// Auto-verify if server_seed is present in proof
|
|
43
|
+
const serverSeed = result.proof?.server_seed;
|
|
44
|
+
if (serverSeed) {
|
|
45
|
+
const verification = DiceAgent._verifyBet({
|
|
46
|
+
server_seed: serverSeed,
|
|
47
|
+
server_seed_hash: result.proof.server_seed_hash,
|
|
48
|
+
client_seed: result.proof.client_seed || clientSecret,
|
|
49
|
+
nonce: result.proof.nonce,
|
|
50
|
+
roll: result.roll,
|
|
51
|
+
});
|
|
52
|
+
result.verification = verification;
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
41
55
|
}
|
|
42
56
|
/** List available play strategies. */
|
|
43
57
|
async strategies() {
|
|
@@ -97,6 +111,61 @@ class DiceAgent {
|
|
|
97
111
|
async verify(betId) {
|
|
98
112
|
return this.request('GET', `/verify/${betId}`);
|
|
99
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* Compute a provably fair roll matching the server algorithm.
|
|
116
|
+
* SHA3-384(server||client||nonce) → AES-256-CTR(key, iv, 16 zero-bytes) → XOR uint32s → 0.5 + val/4294967295
|
|
117
|
+
*/
|
|
118
|
+
static _computeRoll(serverSeedHex, clientSeedHex, nonce) {
|
|
119
|
+
const serverBytes = Buffer.from(serverSeedHex, 'hex');
|
|
120
|
+
const clientBytes = Buffer.from(clientSeedHex, 'hex');
|
|
121
|
+
const nonceBytes = Buffer.alloc(8);
|
|
122
|
+
nonceBytes.writeBigUInt64LE(BigInt(nonce));
|
|
123
|
+
const h = (0, node_crypto_1.createHash)('sha3-384');
|
|
124
|
+
h.update(serverBytes);
|
|
125
|
+
h.update(clientBytes);
|
|
126
|
+
h.update(nonceBytes);
|
|
127
|
+
const digest = h.digest();
|
|
128
|
+
const key = digest.subarray(0, 32);
|
|
129
|
+
const iv = digest.subarray(32, 48);
|
|
130
|
+
const cipher = (0, node_crypto_1.createCipheriv)('aes-256-ctr', key, iv);
|
|
131
|
+
const ct = cipher.update(Buffer.alloc(16));
|
|
132
|
+
let xor = 0;
|
|
133
|
+
for (let i = 0; i < 16; i += 4) {
|
|
134
|
+
xor ^= ct.readUInt32LE(i);
|
|
135
|
+
}
|
|
136
|
+
return 0.5 + xor / 4294967295;
|
|
137
|
+
}
|
|
138
|
+
/** SHA3-384 hash of server seed bytes, as hex string. */
|
|
139
|
+
static _hashServerSeed(serverSeedHex) {
|
|
140
|
+
return (0, node_crypto_1.createHash)('sha3-384').update(Buffer.from(serverSeedHex, 'hex')).digest('hex');
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Verify a bet's provably fair proof.
|
|
144
|
+
* Throws VerificationError if verification fails.
|
|
145
|
+
*/
|
|
146
|
+
static _verifyBet(data) {
|
|
147
|
+
const computedHash = DiceAgent._hashServerSeed(data.server_seed);
|
|
148
|
+
const hashOk = computedHash === data.server_seed_hash;
|
|
149
|
+
const rollRecalc = parseFloat(DiceAgent._computeRoll(data.server_seed, data.client_seed, data.nonce).toFixed(6));
|
|
150
|
+
const rollReported = parseFloat(data.roll.toFixed(6));
|
|
151
|
+
const rollOk = rollRecalc === rollReported;
|
|
152
|
+
const verified = hashOk && rollOk;
|
|
153
|
+
const proof = {
|
|
154
|
+
verified,
|
|
155
|
+
server_seed: data.server_seed,
|
|
156
|
+
server_seed_hash: data.server_seed_hash,
|
|
157
|
+
client_seed: data.client_seed,
|
|
158
|
+
nonce: data.nonce,
|
|
159
|
+
roll_reported: rollReported,
|
|
160
|
+
roll_recalculated: rollRecalc,
|
|
161
|
+
hash_verified: hashOk,
|
|
162
|
+
roll_verified: rollOk,
|
|
163
|
+
};
|
|
164
|
+
if (!verified) {
|
|
165
|
+
throw new errors_js_1.VerificationError(`Bet verification failed: hash_ok=${hashOk}, roll_ok=${rollOk}`);
|
|
166
|
+
}
|
|
167
|
+
return proof;
|
|
168
|
+
}
|
|
100
169
|
async request(method, path, body) {
|
|
101
170
|
const url = `${this.baseUrl}${path}`;
|
|
102
171
|
const init = {
|
package/dist/esm/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/errors.d.ts
CHANGED
|
@@ -18,4 +18,7 @@ export declare class NetworkError extends Error {
|
|
|
18
18
|
readonly cause: unknown;
|
|
19
19
|
constructor(message: string, cause?: unknown);
|
|
20
20
|
}
|
|
21
|
+
export declare class VerificationError extends RollhubError {
|
|
22
|
+
constructor(message?: string);
|
|
23
|
+
}
|
|
21
24
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/esm/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,IAAI,EAAE,OAAO,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAO1E;AAED,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,OAAO,SAA+B;CAInD;AAED,qBAAa,wBAAyB,SAAQ,YAAY;gBAC5C,OAAO,SAAyB;CAI7C;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,UAAU,SAAI;CAK3B;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,KAAK,EAAE,OAAO,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,MAAM,EAAE,MAAM,CAAC;IAC/B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,IAAI,EAAE,OAAO,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO;CAO1E;AAED,qBAAa,mBAAoB,SAAQ,YAAY;gBACvC,OAAO,SAA+B;CAInD;AAED,qBAAa,wBAAyB,SAAQ,YAAY;gBAC5C,OAAO,SAAyB;CAI7C;AAED,qBAAa,cAAe,SAAQ,YAAY;IAC9C,SAAgB,UAAU,EAAE,MAAM,CAAC;gBAEvB,UAAU,SAAI;CAK3B;AAED,qBAAa,YAAa,SAAQ,KAAK;IACrC,SAAgB,KAAK,EAAE,OAAO,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7C;AAED,qBAAa,iBAAkB,SAAQ,YAAY;gBACrC,OAAO,SAA4B;CAIhD"}
|
package/dist/esm/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NetworkError = exports.RateLimitError = exports.InsufficientBalanceError = exports.AuthenticationError = exports.RollhubError = void 0;
|
|
3
|
+
exports.VerificationError = exports.NetworkError = exports.RateLimitError = exports.InsufficientBalanceError = exports.AuthenticationError = exports.RollhubError = void 0;
|
|
4
4
|
class RollhubError extends Error {
|
|
5
5
|
status;
|
|
6
6
|
code;
|
|
@@ -46,4 +46,11 @@ class NetworkError extends Error {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
exports.NetworkError = NetworkError;
|
|
49
|
+
class VerificationError extends RollhubError {
|
|
50
|
+
constructor(message = 'Bet verification failed') {
|
|
51
|
+
super(message, 0, 'VERIFICATION_FAILED');
|
|
52
|
+
this.name = 'VerificationError';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.VerificationError = VerificationError;
|
|
49
56
|
//# sourceMappingURL=errors.js.map
|
package/dist/esm/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAa,SAAQ,KAAK;IACrB,MAAM,CAAS;IACf,IAAI,CAAS;IACb,IAAI,CAAU;IAE9B,YAAY,OAAe,EAAE,MAAc,EAAE,IAAY,EAAE,IAAc;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAZD,oCAYC;AAED,MAAa,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAO,GAAG,4BAA4B;QAChD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC;AAED,MAAa,wBAAyB,SAAQ,YAAY;IACxD,YAAY,OAAO,GAAG,sBAAsB;QAC1C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAED,MAAa,cAAe,SAAQ,YAAY;IAC9B,UAAU,CAAS;IAEnC,YAAY,UAAU,GAAG,CAAC;QACxB,KAAK,CAAC,6BAA6B,UAAU,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AARD,wCAQC;AAED,MAAa,YAAa,SAAQ,KAAK;IACrB,KAAK,CAAU;IAE/B,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AARD,oCAQC"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,YAAa,SAAQ,KAAK;IACrB,MAAM,CAAS;IACf,IAAI,CAAS;IACb,IAAI,CAAU;IAE9B,YAAY,OAAe,EAAE,MAAc,EAAE,IAAY,EAAE,IAAc;QACvE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAZD,oCAYC;AAED,MAAa,mBAAoB,SAAQ,YAAY;IACnD,YAAY,OAAO,GAAG,4BAA4B;QAChD,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC;AAED,MAAa,wBAAyB,SAAQ,YAAY;IACxD,YAAY,OAAO,GAAG,sBAAsB;QAC1C,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AALD,4DAKC;AAED,MAAa,cAAe,SAAQ,YAAY;IAC9B,UAAU,CAAS;IAEnC,YAAY,UAAU,GAAG,CAAC;QACxB,KAAK,CAAC,6BAA6B,UAAU,GAAG,EAAE,GAAG,EAAE,cAAc,CAAC,CAAC;QACvE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CACF;AARD,wCAQC;AAED,MAAa,YAAa,SAAQ,KAAK;IACrB,KAAK,CAAU;IAE/B,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AARD,oCAQC;AAED,MAAa,iBAAkB,SAAQ,YAAY;IACjD,YAAY,OAAO,GAAG,yBAAyB;QAC7C,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AALD,8CAKC"}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { DiceAgent } from './client.js';
|
|
2
2
|
export { verifyRoll } from './verify.js';
|
|
3
|
-
export { RollhubError, AuthenticationError, InsufficientBalanceError, RateLimitError, NetworkError, } from './errors.js';
|
|
4
|
-
export type { DiceAgentOptions, RegisterResponse, Balance, BetOptions, BetResult, BetProof, Bet, VerifyResult, } from './types.js';
|
|
3
|
+
export { RollhubError, AuthenticationError, InsufficientBalanceError, RateLimitError, NetworkError, VerificationError, } from './errors.js';
|
|
4
|
+
export type { DiceAgentOptions, RegisterResponse, Balance, BetOptions, BetResult, BetProof, VerificationProof, Bet, VerifyResult, } from './types.js';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,OAAO,EACP,UAAU,EACV,SAAS,EACT,QAAQ,EACR,iBAAiB,EACjB,GAAG,EACH,YAAY,GACb,MAAM,YAAY,CAAC"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NetworkError = exports.RateLimitError = exports.InsufficientBalanceError = exports.AuthenticationError = exports.RollhubError = exports.verifyRoll = exports.DiceAgent = void 0;
|
|
3
|
+
exports.VerificationError = exports.NetworkError = exports.RateLimitError = exports.InsufficientBalanceError = exports.AuthenticationError = exports.RollhubError = exports.verifyRoll = exports.DiceAgent = void 0;
|
|
4
4
|
var client_js_1 = require("./client.js");
|
|
5
5
|
Object.defineProperty(exports, "DiceAgent", { enumerable: true, get: function () { return client_js_1.DiceAgent; } });
|
|
6
6
|
var verify_js_1 = require("./verify.js");
|
|
@@ -11,4 +11,5 @@ Object.defineProperty(exports, "AuthenticationError", { enumerable: true, get: f
|
|
|
11
11
|
Object.defineProperty(exports, "InsufficientBalanceError", { enumerable: true, get: function () { return errors_js_1.InsufficientBalanceError; } });
|
|
12
12
|
Object.defineProperty(exports, "RateLimitError", { enumerable: true, get: function () { return errors_js_1.RateLimitError; } });
|
|
13
13
|
Object.defineProperty(exports, "NetworkError", { enumerable: true, get: function () { return errors_js_1.NetworkError; } });
|
|
14
|
+
Object.defineProperty(exports, "VerificationError", { enumerable: true, get: function () { return errors_js_1.VerificationError; } });
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,yCAAyC;AAAhC,uGAAA,UAAU,OAAA;AACnB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAClB,yCAAyC;AAAhC,uGAAA,UAAU,OAAA;AACnB,yCAOqB;AANnB,yGAAA,YAAY,OAAA;AACZ,gHAAA,mBAAmB,OAAA;AACnB,qHAAA,wBAAwB,OAAA;AACxB,2GAAA,cAAc,OAAA;AACd,yGAAA,YAAY,OAAA;AACZ,8GAAA,iBAAiB,OAAA"}
|
package/dist/esm/types.d.ts
CHANGED
|
@@ -18,11 +18,24 @@ export interface BetOptions {
|
|
|
18
18
|
clientSecret?: string;
|
|
19
19
|
}
|
|
20
20
|
export interface BetProof {
|
|
21
|
+
server_seed: string;
|
|
21
22
|
server_secret: string;
|
|
22
23
|
client_secret: string;
|
|
24
|
+
client_seed: string;
|
|
23
25
|
nonce: number;
|
|
24
26
|
server_seed_hash: string;
|
|
25
27
|
}
|
|
28
|
+
export interface VerificationProof {
|
|
29
|
+
verified: boolean;
|
|
30
|
+
server_seed: string;
|
|
31
|
+
server_seed_hash: string;
|
|
32
|
+
client_seed: string;
|
|
33
|
+
nonce: number;
|
|
34
|
+
roll_reported: number;
|
|
35
|
+
roll_recalculated: number;
|
|
36
|
+
hash_verified: boolean;
|
|
37
|
+
roll_verified: boolean;
|
|
38
|
+
}
|
|
26
39
|
export interface BetResult {
|
|
27
40
|
bet_id: number;
|
|
28
41
|
roll: number;
|
|
@@ -31,6 +44,7 @@ export interface BetResult {
|
|
|
31
44
|
multiplier: number;
|
|
32
45
|
balance: number;
|
|
33
46
|
proof: BetProof;
|
|
47
|
+
verification?: VerificationProof;
|
|
34
48
|
}
|
|
35
49
|
export interface Bet {
|
|
36
50
|
bet_id: number;
|
package/dist/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,OAAO;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
|
package/dist/esm/verify.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Verify a provably fair dice roll.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Algorithm (mirrors @blackjackfun/rng):
|
|
5
|
+
* SHA3-384(serverSeed || clientSeed || nonce) → 48 bytes
|
|
6
|
+
* key = first 32 bytes, iv = next 16 bytes
|
|
7
|
+
* AES-256-CTR encrypt 16 zero-bytes → XOR all uint32 LE values
|
|
8
|
+
* roll = 0.5 + xorValue / 4294967295
|
|
7
9
|
*
|
|
8
|
-
* The server_seed_hash should equal
|
|
10
|
+
* The server_seed_hash should equal SHA3-384(serverSecret bytes).
|
|
9
11
|
*/
|
|
10
12
|
export declare function verifyRoll(params: {
|
|
11
13
|
serverSecret: string;
|
package/dist/esm/verify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CASvC"}
|
package/dist/esm/verify.js
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.verifyRoll = verifyRoll;
|
|
4
|
-
const
|
|
4
|
+
const client_js_1 = require("./client.js");
|
|
5
5
|
/**
|
|
6
6
|
* Verify a provably fair dice roll.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Algorithm (mirrors @blackjackfun/rng):
|
|
9
|
+
* SHA3-384(serverSeed || clientSeed || nonce) → 48 bytes
|
|
10
|
+
* key = first 32 bytes, iv = next 16 bytes
|
|
11
|
+
* AES-256-CTR encrypt 16 zero-bytes → XOR all uint32 LE values
|
|
12
|
+
* roll = 0.5 + xorValue / 4294967295
|
|
11
13
|
*
|
|
12
|
-
* The server_seed_hash should equal
|
|
14
|
+
* The server_seed_hash should equal SHA3-384(serverSecret bytes).
|
|
13
15
|
*/
|
|
14
16
|
function verifyRoll(params) {
|
|
15
17
|
const { serverSecret, clientSecret, nonce, serverSeedHash } = params;
|
|
16
|
-
|
|
17
|
-
const computedHash = (0, node_crypto_1.createHash)('sha256').update(serverSecret).digest('hex');
|
|
18
|
+
const computedHash = client_js_1.DiceAgent._hashServerSeed(serverSecret);
|
|
18
19
|
const hashValid = computedHash === serverSeedHash;
|
|
19
|
-
|
|
20
|
-
const message = `${clientSecret}:${nonce}`;
|
|
21
|
-
const hmac = (0, node_crypto_1.createHmac)('sha256', serverSecret).update(message).digest('hex');
|
|
22
|
-
const roll = parseInt(hmac.slice(0, 8), 16) / 0x100000000;
|
|
20
|
+
const roll = parseFloat(client_js_1.DiceAgent._computeRoll(serverSecret, clientSecret, nonce).toFixed(6));
|
|
23
21
|
return { roll, hashValid };
|
|
24
22
|
}
|
|
25
23
|
//# sourceMappingURL=verify.js.map
|
package/dist/esm/verify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/verify.ts"],"names":[],"mappings":";;AAaA,gCAcC;AA3BD,2CAAwC;AAExC;;;;;;;;;;GAUG;AACH,SAAgB,UAAU,CAAC,MAK1B;IACC,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,MAAM,CAAC;IAErE,MAAM,YAAY,GAAG,qBAAS,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,YAAY,KAAK,cAAc,CAAC;IAElD,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAS,CAAC,YAAY,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAE9F,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC"}
|
package/package.json
CHANGED