@actuallyfair/verifier 0.0.5 → 0.0.6
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/compute-wager.d.ts +6 -8
- package/dist/compute-wager.js +18 -34
- package/dist/duel-plinko-payouts.d.ts +15 -11
- package/dist/duel-plinko-payouts.js +530 -460
- package/dist/generated/context/index.d.ts +39 -69
- package/dist/generated/context/plinko.d.ts +53 -95
- package/dist/generated/context/plinko.js +184 -108
- package/package.json +1 -1
- package/protobuf/context/plinko.proto +30 -11
- package/src/compute-wager.ts +18 -37
- package/src/duel-plinko-payouts.ts +549 -466
- package/src/generated/context/plinko.ts +179 -116
|
@@ -3,55 +3,199 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.CustomPlinkoPayouts = exports.
|
|
6
|
+
exports.CustomPlinkoPayouts = exports.PlinkoPayouts = exports.Plinko = exports.plinkoPayoutTableToJSON = exports.plinkoPayoutTableFromJSON = exports.PlinkoPayoutTable = void 0;
|
|
7
7
|
/* eslint-disable */
|
|
8
8
|
const minimal_1 = __importDefault(require("protobufjs/minimal"));
|
|
9
9
|
const amount_1 = require("../amount");
|
|
10
|
-
var
|
|
11
|
-
(function (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
10
|
+
var PlinkoPayoutTable;
|
|
11
|
+
(function (PlinkoPayoutTable) {
|
|
12
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_UNSPECIFIED"] = 0] = "PLINKO_PAYOUT_TABLE_UNSPECIFIED";
|
|
13
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_8_LOW"] = 1] = "PLINKO_PAYOUT_TABLE_DUEL_8_LOW";
|
|
14
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_8_MEDIUM"] = 2] = "PLINKO_PAYOUT_TABLE_DUEL_8_MEDIUM";
|
|
15
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_8_HIGH"] = 3] = "PLINKO_PAYOUT_TABLE_DUEL_8_HIGH";
|
|
16
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_9_LOW"] = 4] = "PLINKO_PAYOUT_TABLE_DUEL_9_LOW";
|
|
17
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_9_MEDIUM"] = 5] = "PLINKO_PAYOUT_TABLE_DUEL_9_MEDIUM";
|
|
18
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_9_HIGH"] = 6] = "PLINKO_PAYOUT_TABLE_DUEL_9_HIGH";
|
|
19
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_10_LOW"] = 7] = "PLINKO_PAYOUT_TABLE_DUEL_10_LOW";
|
|
20
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_10_MEDIUM"] = 8] = "PLINKO_PAYOUT_TABLE_DUEL_10_MEDIUM";
|
|
21
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_10_HIGH"] = 9] = "PLINKO_PAYOUT_TABLE_DUEL_10_HIGH";
|
|
22
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_11_LOW"] = 10] = "PLINKO_PAYOUT_TABLE_DUEL_11_LOW";
|
|
23
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_11_MEDIUM"] = 11] = "PLINKO_PAYOUT_TABLE_DUEL_11_MEDIUM";
|
|
24
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_11_HIGH"] = 12] = "PLINKO_PAYOUT_TABLE_DUEL_11_HIGH";
|
|
25
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_12_LOW"] = 13] = "PLINKO_PAYOUT_TABLE_DUEL_12_LOW";
|
|
26
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_12_MEDIUM"] = 14] = "PLINKO_PAYOUT_TABLE_DUEL_12_MEDIUM";
|
|
27
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_12_HIGH"] = 15] = "PLINKO_PAYOUT_TABLE_DUEL_12_HIGH";
|
|
28
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_13_LOW"] = 16] = "PLINKO_PAYOUT_TABLE_DUEL_13_LOW";
|
|
29
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_13_MEDIUM"] = 17] = "PLINKO_PAYOUT_TABLE_DUEL_13_MEDIUM";
|
|
30
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_13_HIGH"] = 18] = "PLINKO_PAYOUT_TABLE_DUEL_13_HIGH";
|
|
31
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_14_LOW"] = 19] = "PLINKO_PAYOUT_TABLE_DUEL_14_LOW";
|
|
32
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_14_MEDIUM"] = 20] = "PLINKO_PAYOUT_TABLE_DUEL_14_MEDIUM";
|
|
33
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_14_HIGH"] = 21] = "PLINKO_PAYOUT_TABLE_DUEL_14_HIGH";
|
|
34
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_15_LOW"] = 22] = "PLINKO_PAYOUT_TABLE_DUEL_15_LOW";
|
|
35
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_15_MEDIUM"] = 23] = "PLINKO_PAYOUT_TABLE_DUEL_15_MEDIUM";
|
|
36
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_15_HIGH"] = 24] = "PLINKO_PAYOUT_TABLE_DUEL_15_HIGH";
|
|
37
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_16_LOW"] = 25] = "PLINKO_PAYOUT_TABLE_DUEL_16_LOW";
|
|
38
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_16_MEDIUM"] = 26] = "PLINKO_PAYOUT_TABLE_DUEL_16_MEDIUM";
|
|
39
|
+
PlinkoPayoutTable[PlinkoPayoutTable["PLINKO_PAYOUT_TABLE_DUEL_16_HIGH"] = 27] = "PLINKO_PAYOUT_TABLE_DUEL_16_HIGH";
|
|
40
|
+
PlinkoPayoutTable[PlinkoPayoutTable["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
|
|
41
|
+
})(PlinkoPayoutTable || (exports.PlinkoPayoutTable = PlinkoPayoutTable = {}));
|
|
42
|
+
function plinkoPayoutTableFromJSON(object) {
|
|
19
43
|
switch (object) {
|
|
20
44
|
case 0:
|
|
21
|
-
case "
|
|
22
|
-
return
|
|
45
|
+
case "PLINKO_PAYOUT_TABLE_UNSPECIFIED":
|
|
46
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_UNSPECIFIED;
|
|
23
47
|
case 1:
|
|
24
|
-
case "
|
|
25
|
-
return
|
|
48
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_8_LOW":
|
|
49
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_8_LOW;
|
|
26
50
|
case 2:
|
|
27
|
-
case "
|
|
28
|
-
return
|
|
51
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_8_MEDIUM":
|
|
52
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_8_MEDIUM;
|
|
29
53
|
case 3:
|
|
30
|
-
case "
|
|
31
|
-
return
|
|
54
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_8_HIGH":
|
|
55
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_8_HIGH;
|
|
56
|
+
case 4:
|
|
57
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_9_LOW":
|
|
58
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_9_LOW;
|
|
59
|
+
case 5:
|
|
60
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_9_MEDIUM":
|
|
61
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_9_MEDIUM;
|
|
62
|
+
case 6:
|
|
63
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_9_HIGH":
|
|
64
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_9_HIGH;
|
|
65
|
+
case 7:
|
|
66
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_10_LOW":
|
|
67
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_10_LOW;
|
|
68
|
+
case 8:
|
|
69
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_10_MEDIUM":
|
|
70
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_10_MEDIUM;
|
|
71
|
+
case 9:
|
|
72
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_10_HIGH":
|
|
73
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_10_HIGH;
|
|
74
|
+
case 10:
|
|
75
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_11_LOW":
|
|
76
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_11_LOW;
|
|
77
|
+
case 11:
|
|
78
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_11_MEDIUM":
|
|
79
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_11_MEDIUM;
|
|
80
|
+
case 12:
|
|
81
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_11_HIGH":
|
|
82
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_11_HIGH;
|
|
83
|
+
case 13:
|
|
84
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_12_LOW":
|
|
85
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_12_LOW;
|
|
86
|
+
case 14:
|
|
87
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_12_MEDIUM":
|
|
88
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_12_MEDIUM;
|
|
89
|
+
case 15:
|
|
90
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_12_HIGH":
|
|
91
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_12_HIGH;
|
|
92
|
+
case 16:
|
|
93
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_13_LOW":
|
|
94
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_13_LOW;
|
|
95
|
+
case 17:
|
|
96
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_13_MEDIUM":
|
|
97
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_13_MEDIUM;
|
|
98
|
+
case 18:
|
|
99
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_13_HIGH":
|
|
100
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_13_HIGH;
|
|
101
|
+
case 19:
|
|
102
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_14_LOW":
|
|
103
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_14_LOW;
|
|
104
|
+
case 20:
|
|
105
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_14_MEDIUM":
|
|
106
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_14_MEDIUM;
|
|
107
|
+
case 21:
|
|
108
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_14_HIGH":
|
|
109
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_14_HIGH;
|
|
110
|
+
case 22:
|
|
111
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_15_LOW":
|
|
112
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_15_LOW;
|
|
113
|
+
case 23:
|
|
114
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_15_MEDIUM":
|
|
115
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_15_MEDIUM;
|
|
116
|
+
case 24:
|
|
117
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_15_HIGH":
|
|
118
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_15_HIGH;
|
|
119
|
+
case 25:
|
|
120
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_16_LOW":
|
|
121
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_16_LOW;
|
|
122
|
+
case 26:
|
|
123
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_16_MEDIUM":
|
|
124
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_16_MEDIUM;
|
|
125
|
+
case 27:
|
|
126
|
+
case "PLINKO_PAYOUT_TABLE_DUEL_16_HIGH":
|
|
127
|
+
return PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_16_HIGH;
|
|
32
128
|
case -1:
|
|
33
129
|
case "UNRECOGNIZED":
|
|
34
130
|
default:
|
|
35
|
-
return
|
|
131
|
+
return PlinkoPayoutTable.UNRECOGNIZED;
|
|
36
132
|
}
|
|
37
133
|
}
|
|
38
|
-
exports.
|
|
39
|
-
function
|
|
134
|
+
exports.plinkoPayoutTableFromJSON = plinkoPayoutTableFromJSON;
|
|
135
|
+
function plinkoPayoutTableToJSON(object) {
|
|
40
136
|
switch (object) {
|
|
41
|
-
case
|
|
42
|
-
return "
|
|
43
|
-
case
|
|
44
|
-
return "
|
|
45
|
-
case
|
|
46
|
-
return "
|
|
47
|
-
case
|
|
48
|
-
return "
|
|
49
|
-
case
|
|
137
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_UNSPECIFIED:
|
|
138
|
+
return "PLINKO_PAYOUT_TABLE_UNSPECIFIED";
|
|
139
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_8_LOW:
|
|
140
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_8_LOW";
|
|
141
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_8_MEDIUM:
|
|
142
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_8_MEDIUM";
|
|
143
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_8_HIGH:
|
|
144
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_8_HIGH";
|
|
145
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_9_LOW:
|
|
146
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_9_LOW";
|
|
147
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_9_MEDIUM:
|
|
148
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_9_MEDIUM";
|
|
149
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_9_HIGH:
|
|
150
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_9_HIGH";
|
|
151
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_10_LOW:
|
|
152
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_10_LOW";
|
|
153
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_10_MEDIUM:
|
|
154
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_10_MEDIUM";
|
|
155
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_10_HIGH:
|
|
156
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_10_HIGH";
|
|
157
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_11_LOW:
|
|
158
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_11_LOW";
|
|
159
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_11_MEDIUM:
|
|
160
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_11_MEDIUM";
|
|
161
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_11_HIGH:
|
|
162
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_11_HIGH";
|
|
163
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_12_LOW:
|
|
164
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_12_LOW";
|
|
165
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_12_MEDIUM:
|
|
166
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_12_MEDIUM";
|
|
167
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_12_HIGH:
|
|
168
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_12_HIGH";
|
|
169
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_13_LOW:
|
|
170
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_13_LOW";
|
|
171
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_13_MEDIUM:
|
|
172
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_13_MEDIUM";
|
|
173
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_13_HIGH:
|
|
174
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_13_HIGH";
|
|
175
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_14_LOW:
|
|
176
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_14_LOW";
|
|
177
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_14_MEDIUM:
|
|
178
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_14_MEDIUM";
|
|
179
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_14_HIGH:
|
|
180
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_14_HIGH";
|
|
181
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_15_LOW:
|
|
182
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_15_LOW";
|
|
183
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_15_MEDIUM:
|
|
184
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_15_MEDIUM";
|
|
185
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_15_HIGH:
|
|
186
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_15_HIGH";
|
|
187
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_16_LOW:
|
|
188
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_16_LOW";
|
|
189
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_16_MEDIUM:
|
|
190
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_16_MEDIUM";
|
|
191
|
+
case PlinkoPayoutTable.PLINKO_PAYOUT_TABLE_DUEL_16_HIGH:
|
|
192
|
+
return "PLINKO_PAYOUT_TABLE_DUEL_16_HIGH";
|
|
193
|
+
case PlinkoPayoutTable.UNRECOGNIZED:
|
|
50
194
|
default:
|
|
51
195
|
return "UNRECOGNIZED";
|
|
52
196
|
}
|
|
53
197
|
}
|
|
54
|
-
exports.
|
|
198
|
+
exports.plinkoPayoutTableToJSON = plinkoPayoutTableToJSON;
|
|
55
199
|
function createBasePlinko() {
|
|
56
200
|
return { amount: undefined, payouts: undefined };
|
|
57
201
|
}
|
|
@@ -123,15 +267,15 @@ exports.Plinko = {
|
|
|
123
267
|
},
|
|
124
268
|
};
|
|
125
269
|
function createBasePlinkoPayouts() {
|
|
126
|
-
return { custom: undefined,
|
|
270
|
+
return { custom: undefined, table: undefined };
|
|
127
271
|
}
|
|
128
272
|
exports.PlinkoPayouts = {
|
|
129
273
|
encode(message, writer = minimal_1.default.Writer.create()) {
|
|
130
274
|
if (message.custom !== undefined) {
|
|
131
275
|
exports.CustomPlinkoPayouts.encode(message.custom, writer.uint32(10).fork()).ldelim();
|
|
132
276
|
}
|
|
133
|
-
if (message.
|
|
134
|
-
|
|
277
|
+
if (message.table !== undefined) {
|
|
278
|
+
writer.uint32(16).int32(message.table);
|
|
135
279
|
}
|
|
136
280
|
return writer;
|
|
137
281
|
},
|
|
@@ -149,10 +293,10 @@ exports.PlinkoPayouts = {
|
|
|
149
293
|
message.custom = exports.CustomPlinkoPayouts.decode(reader, reader.uint32());
|
|
150
294
|
continue;
|
|
151
295
|
case 2:
|
|
152
|
-
if (tag !==
|
|
296
|
+
if (tag !== 16) {
|
|
153
297
|
break;
|
|
154
298
|
}
|
|
155
|
-
message.
|
|
299
|
+
message.table = reader.int32();
|
|
156
300
|
continue;
|
|
157
301
|
}
|
|
158
302
|
if ((tag & 7) === 4 || tag === 0) {
|
|
@@ -165,7 +309,7 @@ exports.PlinkoPayouts = {
|
|
|
165
309
|
fromJSON(object) {
|
|
166
310
|
return {
|
|
167
311
|
custom: isSet(object.custom) ? exports.CustomPlinkoPayouts.fromJSON(object.custom) : undefined,
|
|
168
|
-
|
|
312
|
+
table: isSet(object.table) ? plinkoPayoutTableFromJSON(object.table) : undefined,
|
|
169
313
|
};
|
|
170
314
|
},
|
|
171
315
|
toJSON(message) {
|
|
@@ -173,8 +317,8 @@ exports.PlinkoPayouts = {
|
|
|
173
317
|
if (message.custom !== undefined) {
|
|
174
318
|
obj.custom = exports.CustomPlinkoPayouts.toJSON(message.custom);
|
|
175
319
|
}
|
|
176
|
-
if (message.
|
|
177
|
-
obj.
|
|
320
|
+
if (message.table !== undefined) {
|
|
321
|
+
obj.table = plinkoPayoutTableToJSON(message.table);
|
|
178
322
|
}
|
|
179
323
|
return obj;
|
|
180
324
|
},
|
|
@@ -186,75 +330,7 @@ exports.PlinkoPayouts = {
|
|
|
186
330
|
message.custom = (object.custom !== undefined && object.custom !== null)
|
|
187
331
|
? exports.CustomPlinkoPayouts.fromPartial(object.custom)
|
|
188
332
|
: undefined;
|
|
189
|
-
message.
|
|
190
|
-
? exports.DuelPlinkoPayouts.fromPartial(object.duel)
|
|
191
|
-
: undefined;
|
|
192
|
-
return message;
|
|
193
|
-
},
|
|
194
|
-
};
|
|
195
|
-
function createBaseDuelPlinkoPayouts() {
|
|
196
|
-
return { rows: 0, risk: 0 };
|
|
197
|
-
}
|
|
198
|
-
exports.DuelPlinkoPayouts = {
|
|
199
|
-
encode(message, writer = minimal_1.default.Writer.create()) {
|
|
200
|
-
if (message.rows !== 0) {
|
|
201
|
-
writer.uint32(8).uint32(message.rows);
|
|
202
|
-
}
|
|
203
|
-
if (message.risk !== 0) {
|
|
204
|
-
writer.uint32(16).int32(message.risk);
|
|
205
|
-
}
|
|
206
|
-
return writer;
|
|
207
|
-
},
|
|
208
|
-
decode(input, length) {
|
|
209
|
-
const reader = input instanceof minimal_1.default.Reader ? input : minimal_1.default.Reader.create(input);
|
|
210
|
-
let end = length === undefined ? reader.len : reader.pos + length;
|
|
211
|
-
const message = createBaseDuelPlinkoPayouts();
|
|
212
|
-
while (reader.pos < end) {
|
|
213
|
-
const tag = reader.uint32();
|
|
214
|
-
switch (tag >>> 3) {
|
|
215
|
-
case 1:
|
|
216
|
-
if (tag !== 8) {
|
|
217
|
-
break;
|
|
218
|
-
}
|
|
219
|
-
message.rows = reader.uint32();
|
|
220
|
-
continue;
|
|
221
|
-
case 2:
|
|
222
|
-
if (tag !== 16) {
|
|
223
|
-
break;
|
|
224
|
-
}
|
|
225
|
-
message.risk = reader.int32();
|
|
226
|
-
continue;
|
|
227
|
-
}
|
|
228
|
-
if ((tag & 7) === 4 || tag === 0) {
|
|
229
|
-
break;
|
|
230
|
-
}
|
|
231
|
-
reader.skipType(tag & 7);
|
|
232
|
-
}
|
|
233
|
-
return message;
|
|
234
|
-
},
|
|
235
|
-
fromJSON(object) {
|
|
236
|
-
return {
|
|
237
|
-
rows: isSet(object.rows) ? globalThis.Number(object.rows) : 0,
|
|
238
|
-
risk: isSet(object.risk) ? duelPlinkoRiskFromJSON(object.risk) : 0,
|
|
239
|
-
};
|
|
240
|
-
},
|
|
241
|
-
toJSON(message) {
|
|
242
|
-
const obj = {};
|
|
243
|
-
if (message.rows !== 0) {
|
|
244
|
-
obj.rows = Math.round(message.rows);
|
|
245
|
-
}
|
|
246
|
-
if (message.risk !== 0) {
|
|
247
|
-
obj.risk = duelPlinkoRiskToJSON(message.risk);
|
|
248
|
-
}
|
|
249
|
-
return obj;
|
|
250
|
-
},
|
|
251
|
-
create(base) {
|
|
252
|
-
return exports.DuelPlinkoPayouts.fromPartial(base ?? {});
|
|
253
|
-
},
|
|
254
|
-
fromPartial(object) {
|
|
255
|
-
const message = createBaseDuelPlinkoPayouts();
|
|
256
|
-
message.rows = object.rows ?? 0;
|
|
257
|
-
message.risk = object.risk ?? 0;
|
|
333
|
+
message.table = object.table ?? undefined;
|
|
258
334
|
return message;
|
|
259
335
|
},
|
|
260
336
|
};
|
package/package.json
CHANGED
|
@@ -9,22 +9,41 @@ message Plinko {
|
|
|
9
9
|
message PlinkoPayouts {
|
|
10
10
|
oneof payout_table {
|
|
11
11
|
CustomPlinkoPayouts custom = 1;
|
|
12
|
-
|
|
12
|
+
PlinkoPayoutTable table = 2;
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
|
|
16
|
-
message DuelPlinkoPayouts {
|
|
17
|
-
uint32 rows = 1;
|
|
18
|
-
DuelPlinkoRisk risk = 2;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
16
|
message CustomPlinkoPayouts {
|
|
22
17
|
repeated double possibilities = 1;
|
|
23
18
|
}
|
|
24
19
|
|
|
25
|
-
enum
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
20
|
+
enum PlinkoPayoutTable {
|
|
21
|
+
PLINKO_PAYOUT_TABLE_UNSPECIFIED = 0;
|
|
22
|
+
PLINKO_PAYOUT_TABLE_DUEL_8_LOW = 1;
|
|
23
|
+
PLINKO_PAYOUT_TABLE_DUEL_8_MEDIUM = 2;
|
|
24
|
+
PLINKO_PAYOUT_TABLE_DUEL_8_HIGH = 3;
|
|
25
|
+
PLINKO_PAYOUT_TABLE_DUEL_9_LOW = 4;
|
|
26
|
+
PLINKO_PAYOUT_TABLE_DUEL_9_MEDIUM = 5;
|
|
27
|
+
PLINKO_PAYOUT_TABLE_DUEL_9_HIGH = 6;
|
|
28
|
+
PLINKO_PAYOUT_TABLE_DUEL_10_LOW = 7;
|
|
29
|
+
PLINKO_PAYOUT_TABLE_DUEL_10_MEDIUM = 8;
|
|
30
|
+
PLINKO_PAYOUT_TABLE_DUEL_10_HIGH = 9;
|
|
31
|
+
PLINKO_PAYOUT_TABLE_DUEL_11_LOW = 10;
|
|
32
|
+
PLINKO_PAYOUT_TABLE_DUEL_11_MEDIUM = 11;
|
|
33
|
+
PLINKO_PAYOUT_TABLE_DUEL_11_HIGH = 12;
|
|
34
|
+
PLINKO_PAYOUT_TABLE_DUEL_12_LOW = 13;
|
|
35
|
+
PLINKO_PAYOUT_TABLE_DUEL_12_MEDIUM = 14;
|
|
36
|
+
PLINKO_PAYOUT_TABLE_DUEL_12_HIGH = 15;
|
|
37
|
+
PLINKO_PAYOUT_TABLE_DUEL_13_LOW = 16;
|
|
38
|
+
PLINKO_PAYOUT_TABLE_DUEL_13_MEDIUM = 17;
|
|
39
|
+
PLINKO_PAYOUT_TABLE_DUEL_13_HIGH = 18;
|
|
40
|
+
PLINKO_PAYOUT_TABLE_DUEL_14_LOW = 19;
|
|
41
|
+
PLINKO_PAYOUT_TABLE_DUEL_14_MEDIUM = 20;
|
|
42
|
+
PLINKO_PAYOUT_TABLE_DUEL_14_HIGH = 21;
|
|
43
|
+
PLINKO_PAYOUT_TABLE_DUEL_15_LOW = 22;
|
|
44
|
+
PLINKO_PAYOUT_TABLE_DUEL_15_MEDIUM = 23;
|
|
45
|
+
PLINKO_PAYOUT_TABLE_DUEL_15_HIGH = 24;
|
|
46
|
+
PLINKO_PAYOUT_TABLE_DUEL_16_LOW = 25;
|
|
47
|
+
PLINKO_PAYOUT_TABLE_DUEL_16_MEDIUM = 26;
|
|
48
|
+
PLINKO_PAYOUT_TABLE_DUEL_16_HIGH = 27;
|
|
30
49
|
}
|
package/src/compute-wager.ts
CHANGED
|
@@ -14,8 +14,6 @@ import {
|
|
|
14
14
|
import { bytesToHex } from "@noble/hashes/utils";
|
|
15
15
|
import { CrashDice } from "./generated/context/crash-dice";
|
|
16
16
|
import { MultiRoulette } from "./generated/context/multi-roulette";
|
|
17
|
-
import { getDuelPlinkoPayoutsFromEnum } from "./duel-plinko-payouts";
|
|
18
|
-
import { Plinko } from "./generated/context/plinko";
|
|
19
17
|
|
|
20
18
|
export function computeFairCoinTossResult(sig: Uint8Array) {
|
|
21
19
|
// We're going to hash the signature just to really be sure its fairly distributed
|
|
@@ -61,11 +59,11 @@ function doComputeCrashResult(hash: Uint8Array, houseEdge: number) {
|
|
|
61
59
|
}
|
|
62
60
|
|
|
63
61
|
export function computeCrashResult(
|
|
64
|
-
|
|
62
|
+
hash: Uint8Array,
|
|
65
63
|
gameHash: Uint8Array, // This is the hash of the next from the hash chain
|
|
66
64
|
houseEdge: number = 0
|
|
67
65
|
) {
|
|
68
|
-
return doComputeCrashResult(hmac(sha256,
|
|
66
|
+
return doComputeCrashResult(hmac(sha256, hash, gameHash), houseEdge);
|
|
69
67
|
}
|
|
70
68
|
|
|
71
69
|
export type CrashDiceOutcome = {
|
|
@@ -96,13 +94,13 @@ export function computeCrashDiceOutcome(
|
|
|
96
94
|
|
|
97
95
|
// returns the index of which roulette outcome was picked
|
|
98
96
|
export function computeMultiRouletteResult(
|
|
99
|
-
|
|
97
|
+
hash: Uint8Array,
|
|
100
98
|
bet: MultiRoulette
|
|
101
99
|
) {
|
|
102
|
-
const
|
|
100
|
+
const seedHash = sha256(hash);
|
|
103
101
|
|
|
104
102
|
const nBits = 52;
|
|
105
|
-
const hashHex = bytesToHex(
|
|
103
|
+
const hashHex = bytesToHex(seedHash);
|
|
106
104
|
const seed = hashHex.slice(0, nBits / 4);
|
|
107
105
|
const n = Number.parseInt(seed, 16);
|
|
108
106
|
|
|
@@ -119,7 +117,7 @@ export function computeMultiRouletteResult(
|
|
|
119
117
|
}
|
|
120
118
|
|
|
121
119
|
export function computeMineLocations(
|
|
122
|
-
|
|
120
|
+
hash: Uint8Array,
|
|
123
121
|
revealedCells: Set<number>, // tiles we know are safe
|
|
124
122
|
cells: number, // how many cells in total
|
|
125
123
|
mines: number // how many mines there are going to be in total
|
|
@@ -136,7 +134,7 @@ export function computeMineLocations(
|
|
|
136
134
|
break;
|
|
137
135
|
}
|
|
138
136
|
|
|
139
|
-
let mineIndex = Number(bytesToNumberBE(
|
|
137
|
+
let mineIndex = Number(bytesToNumberBE(hash) % BigInt(cellsLeft));
|
|
140
138
|
let adjustedIndex = 0;
|
|
141
139
|
|
|
142
140
|
for (let i = 0; i < cells; i++) {
|
|
@@ -211,7 +209,7 @@ export function computePinkoPossibilityIndexFromPath(path: PlinkoPath) {
|
|
|
211
209
|
// return a path (saying 'L' or 'R', where 'L' means go left, and 'R' means going right)
|
|
212
210
|
// of possibilities-1 length
|
|
213
211
|
export function computePlinkoPath(
|
|
214
|
-
|
|
212
|
+
hash: Uint8Array,
|
|
215
213
|
possibilities: number
|
|
216
214
|
): PlinkoPath {
|
|
217
215
|
if (
|
|
@@ -221,9 +219,9 @@ export function computePlinkoPath(
|
|
|
221
219
|
) {
|
|
222
220
|
throw new Error("invalid possibilities ");
|
|
223
221
|
}
|
|
224
|
-
const
|
|
222
|
+
const pathHash = sha256(hash);
|
|
225
223
|
|
|
226
|
-
let n = bytesToNumberBE(
|
|
224
|
+
let n = bytesToNumberBE(pathHash);
|
|
227
225
|
|
|
228
226
|
let ret: ("L" | "R")[] = [];
|
|
229
227
|
for (let i = 0; i < possibilities - 1; i++) {
|
|
@@ -259,12 +257,12 @@ export function computePlinkoPascalsProbabilities(rowNumber: number) {
|
|
|
259
257
|
return lastRow.map((v) => v / sum);
|
|
260
258
|
}
|
|
261
259
|
|
|
262
|
-
export function computePlinkoHouseEdge(
|
|
263
|
-
const odds = computePlinkoPascalsProbabilities(
|
|
260
|
+
export function computePlinkoHouseEdge(payouts: number[]) {
|
|
261
|
+
const odds = computePlinkoPascalsProbabilities(payouts.length);
|
|
264
262
|
|
|
265
263
|
let ev = 1; // you start off by betting everything
|
|
266
|
-
for (let i = 0; i <
|
|
267
|
-
ev -=
|
|
264
|
+
for (let i = 0; i < payouts.length; i++) {
|
|
265
|
+
ev -= payouts[i] * odds[i];
|
|
268
266
|
}
|
|
269
267
|
return ev;
|
|
270
268
|
}
|
|
@@ -272,46 +270,29 @@ export function computePlinkoHouseEdge(possibilities: number[]) {
|
|
|
272
270
|
export type PlinkoResult = {
|
|
273
271
|
slot: number;
|
|
274
272
|
multiplier: number;
|
|
275
|
-
win: boolean;
|
|
276
273
|
};
|
|
277
274
|
|
|
278
275
|
export function computePlinkoResult(
|
|
279
276
|
hash: Uint8Array,
|
|
280
277
|
clientSeed: string,
|
|
281
|
-
|
|
278
|
+
payouts: number[]
|
|
282
279
|
): PlinkoResult {
|
|
283
|
-
|
|
284
|
-
if (possibilities.length < 2) {
|
|
280
|
+
if (payouts.length < 2) {
|
|
285
281
|
throw new Error("invalid possibilities ");
|
|
286
282
|
}
|
|
287
283
|
|
|
288
|
-
const probabilities = computePlinkoPascalsProbabilities(
|
|
284
|
+
const probabilities = computePlinkoPascalsProbabilities(payouts.length);
|
|
289
285
|
const rollHash = hmacSha256(hash, clientSeed);
|
|
290
286
|
const roll = uniformFromHash(rollHash);
|
|
291
287
|
const slot = pickSlot(probabilities, roll);
|
|
292
|
-
const multiplier =
|
|
288
|
+
const multiplier = payouts[slot] ?? 0;
|
|
293
289
|
|
|
294
290
|
return {
|
|
295
291
|
slot,
|
|
296
292
|
multiplier,
|
|
297
|
-
win: multiplier >= 1,
|
|
298
293
|
};
|
|
299
294
|
}
|
|
300
295
|
|
|
301
|
-
function resolvePlinkoPayouts(bet: Plinko): number[] {
|
|
302
|
-
const payouts = bet.payouts;
|
|
303
|
-
if (!payouts) {
|
|
304
|
-
return [];
|
|
305
|
-
}
|
|
306
|
-
if (payouts.duel) {
|
|
307
|
-
return getDuelPlinkoPayoutsFromEnum(payouts.duel.rows, payouts.duel.risk);
|
|
308
|
-
}
|
|
309
|
-
if (payouts.custom) {
|
|
310
|
-
return payouts.custom.possibilities;
|
|
311
|
-
}
|
|
312
|
-
return [];
|
|
313
|
-
}
|
|
314
|
-
|
|
315
296
|
function hmacSha256(key: Uint8Array, message: string): Uint8Array {
|
|
316
297
|
const data = new TextEncoder().encode(message);
|
|
317
298
|
return hmac(sha256, key, data);
|