hive-stream 2.0.5 → 3.0.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 (89) hide show
  1. package/.claude/settings.local.json +12 -0
  2. package/.env.example +2 -2
  3. package/.travis.yml +11 -11
  4. package/CHANGELOG.md +166 -0
  5. package/CLAUDE.md +75 -0
  6. package/LICENSE +21 -21
  7. package/README.md +338 -238
  8. package/dist/actions.d.ts +41 -10
  9. package/dist/actions.js +126 -23
  10. package/dist/actions.js.map +1 -1
  11. package/dist/adapters/base.adapter.d.ts +25 -25
  12. package/dist/adapters/base.adapter.js +63 -49
  13. package/dist/adapters/base.adapter.js.map +1 -1
  14. package/dist/adapters/mongodb.adapter.d.ts +50 -37
  15. package/dist/adapters/mongodb.adapter.js +363 -158
  16. package/dist/adapters/mongodb.adapter.js.map +1 -1
  17. package/dist/adapters/postgresql.adapter.d.ts +49 -0
  18. package/dist/adapters/postgresql.adapter.js +507 -0
  19. package/dist/adapters/postgresql.adapter.js.map +1 -0
  20. package/dist/adapters/sqlite.adapter.d.ts +40 -41
  21. package/dist/adapters/sqlite.adapter.js +470 -397
  22. package/dist/adapters/sqlite.adapter.js.map +1 -1
  23. package/dist/api.d.ts +6 -6
  24. package/dist/api.js +95 -55
  25. package/dist/api.js.map +1 -1
  26. package/dist/config.d.ts +16 -16
  27. package/dist/config.js +18 -18
  28. package/dist/config.js.map +1 -1
  29. package/dist/contracts/coinflip.contract.d.ts +27 -14
  30. package/dist/contracts/coinflip.contract.js +253 -94
  31. package/dist/contracts/coinflip.contract.js.map +1 -1
  32. package/dist/contracts/dice.contract.d.ts +37 -29
  33. package/dist/contracts/dice.contract.js +282 -155
  34. package/dist/contracts/dice.contract.js.map +1 -1
  35. package/dist/contracts/lotto.contract.d.ts +20 -20
  36. package/dist/contracts/lotto.contract.js +246 -246
  37. package/dist/contracts/nft.contract.d.ts +24 -0
  38. package/dist/contracts/nft.contract.js +533 -0
  39. package/dist/contracts/nft.contract.js.map +1 -0
  40. package/dist/contracts/token.contract.d.ts +18 -0
  41. package/dist/contracts/token.contract.js +263 -0
  42. package/dist/contracts/token.contract.js.map +1 -0
  43. package/dist/exchanges/bittrex.d.ts +6 -6
  44. package/dist/exchanges/bittrex.js +34 -34
  45. package/dist/exchanges/coingecko.d.ts +5 -0
  46. package/dist/exchanges/coingecko.js +40 -0
  47. package/dist/exchanges/coingecko.js.map +1 -0
  48. package/dist/exchanges/exchange.d.ts +9 -9
  49. package/dist/exchanges/exchange.js +26 -26
  50. package/dist/hive-rates.d.ts +9 -9
  51. package/dist/hive-rates.js +121 -75
  52. package/dist/hive-rates.js.map +1 -1
  53. package/dist/index.d.ts +12 -11
  54. package/dist/index.js +33 -32
  55. package/dist/index.js.map +1 -1
  56. package/dist/streamer.d.ts +140 -93
  57. package/dist/streamer.js +793 -545
  58. package/dist/streamer.js.map +1 -1
  59. package/dist/test.d.ts +1 -1
  60. package/dist/test.js +25 -25
  61. package/dist/test.js.map +1 -1
  62. package/dist/types/hive-stream.d.ts +35 -6
  63. package/dist/types/hive-stream.js +2 -2
  64. package/dist/utils.d.ts +27 -27
  65. package/dist/utils.js +271 -261
  66. package/dist/utils.js.map +1 -1
  67. package/ecosystem.config.js +17 -17
  68. package/jest.config.js +8 -8
  69. package/package.json +53 -48
  70. package/test-contract-block.md +18 -18
  71. package/tests/actions.spec.ts +252 -0
  72. package/tests/adapters/actions-persistence.spec.ts +144 -0
  73. package/tests/adapters/postgresql.adapter.spec.ts +127 -0
  74. package/tests/adapters/sqlite.adapter.spec.ts +180 -42
  75. package/tests/contracts/coinflip.contract.spec.ts +221 -131
  76. package/tests/contracts/dice.contract.spec.ts +202 -159
  77. package/tests/contracts/entrants.json +728 -728
  78. package/tests/contracts/lotto.contract.spec.ts +323 -323
  79. package/tests/contracts/nft.contract.spec.ts +948 -0
  80. package/tests/contracts/token.contract.spec.ts +334 -0
  81. package/tests/helpers/mock-adapter.ts +214 -0
  82. package/tests/setup.ts +29 -18
  83. package/tests/streamer-actions.spec.ts +263 -0
  84. package/tests/streamer.spec.ts +248 -151
  85. package/tests/utils.spec.ts +91 -94
  86. package/tsconfig.build.json +3 -22
  87. package/tslint.json +20 -20
  88. package/wallaby.js +26 -26
  89. package/.env +0 -3
@@ -1,95 +1,254 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CoinflipContract = void 0;
7
- const seedrandom_1 = __importDefault(require("seedrandom"));
8
- const uuid_1 = require("uuid");
9
- const CONTRACT_NAME = 'coinflip';
10
- const ACCOUNT = 'beggars';
11
- const TOKEN_SYMBOL = 'HIVE';
12
- const VALID_CURRENCIES = ['HIVE'];
13
- const MAX_AMOUNT = 20;
14
- function rng(previousBlockId, blockId, transactionId, serverSeed, clientSeed = '') {
15
- const random = (0, seedrandom_1.default)(`${previousBlockId}${blockId}${transactionId}${clientSeed}${serverSeed}`).double();
16
- const randomRoll = Math.floor(random * 2) + 1;
17
- return randomRoll === 1 ? 'heads' : 'tails';
18
- }
19
- class CoinflipContract {
20
- // tslint:disable-next-line: variable-name
21
- _instance;
22
- adapter;
23
- blockNumber;
24
- blockId;
25
- previousBlockId;
26
- transactionId;
27
- create() {
28
- this.adapter = this._instance.getAdapter();
29
- }
30
- updateBlockInfo(blockNumber, blockId, previousBlockId, transactionId) {
31
- // Lifecycle method which sets block info
32
- this.blockNumber = blockNumber;
33
- this.blockId = blockId;
34
- this.previousBlockId = previousBlockId;
35
- this.transactionId = transactionId;
36
- }
37
- async flip(payload, { sender, amount }) {
38
- const { guess, seed } = payload;
39
- const VALID_GUESSES = ['heads', 'tails'];
40
- const amountTrim = amount.split(' ');
41
- const amountParsed = parseFloat(amountTrim[0]);
42
- const amountCurrency = amountTrim[1].trim();
43
- const transaction = await this._instance.getTransaction(this.blockNumber, this.transactionId);
44
- const verify = await this._instance.verifyTransfer(transaction, sender, ACCOUNT, amount);
45
- if (verify) {
46
- // User sent an invalid currency
47
- if (!VALID_CURRENCIES.includes(amountCurrency)) {
48
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] You sent an invalid currency.`);
49
- return;
50
- }
51
- // User sent too much, refund the difference
52
- if (amountParsed > MAX_AMOUNT) {
53
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] You sent too much.`);
54
- return;
55
- }
56
- // Invalid guess
57
- if (!VALID_GUESSES.includes(guess)) {
58
- await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] Invalid guess. Please only send heads or tails.`);
59
- return;
60
- }
61
- const serverSeed = (0, uuid_1.v4)();
62
- const generatedGuess = rng(this.previousBlockId, this.blockId, this.transactionId, serverSeed, seed ?? '');
63
- if (generatedGuess === guess) {
64
- await this.adapter.addEvent(new Date(), CONTRACT_NAME, 'flip', payload, {
65
- action: 'transfer',
66
- data: {
67
- date: new Date(),
68
- guess,
69
- serverSeed,
70
- previousBlockId: this.previousBlockId,
71
- blockId: this.blockId,
72
- transactionId: this.transactionId,
73
- userWon: 'true'
74
- }
75
- });
76
- await this._instance.transferHiveTokens(ACCOUNT, sender, (amountParsed * 2).toFixed(3), amountTrim[1], `[Winner] | Guess: ${guess} | Server Roll: ${generatedGuess} | Previous block id: ${this.previousBlockId} | BlockID: ${this.blockId} | Trx ID: ${this.transactionId} | Server Seed: ${serverSeed}`);
77
- return;
78
- }
79
- await this.adapter.addEvent(new Date(), CONTRACT_NAME, 'flip', payload, {
80
- action: 'transfer',
81
- data: {
82
- guess,
83
- serverSeed,
84
- previousBlockId: this.previousBlockId,
85
- blockId: this.blockId,
86
- transactionId: this.transactionId,
87
- userWon: 'false'
88
- }
89
- });
90
- await this._instance.transferHiveTokens(ACCOUNT, sender, '0.001', amountTrim[1], `[Lost] | Guess: ${guess} | Server Roll: ${generatedGuess} | Previous block id: ${this.previousBlockId} | BlockID: ${this.blockId} | Trx ID: ${this.transactionId} | Server Seed: ${serverSeed}`);
91
- }
92
- }
93
- }
94
- exports.CoinflipContract = CoinflipContract;
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CoinflipContract = void 0;
7
+ const seedrandom_1 = __importDefault(require("seedrandom"));
8
+ const uuid_1 = require("uuid");
9
+ const bignumber_js_1 = __importDefault(require("bignumber.js"));
10
+ const CONTRACT_NAME = 'coinflip';
11
+ const ACCOUNT = 'beggars';
12
+ const TOKEN_SYMBOL = 'HIVE';
13
+ const VALID_CURRENCIES = ['HIVE'];
14
+ const MAX_AMOUNT = 20;
15
+ const MIN_AMOUNT = 0.001;
16
+ // Provably Fair Random Number Generator for coinflip
17
+ // Uses deterministic blockchain data to ensure results are verifiable by users
18
+ function rng(previousBlockId, blockId, transactionId, serverSeed, clientSeed = '') {
19
+ // Validate inputs to prevent manipulation
20
+ if (!previousBlockId || !blockId || !transactionId || !serverSeed) {
21
+ throw new Error('Invalid RNG parameters');
22
+ }
23
+ const random = (0, seedrandom_1.default)(`${previousBlockId}${blockId}${transactionId}${clientSeed}${serverSeed}`).double();
24
+ const randomRoll = Math.floor(random * 2) + 1;
25
+ // Ensure result is within expected range
26
+ if (randomRoll < 1 || randomRoll > 2) {
27
+ throw new Error('RNG generated invalid result');
28
+ }
29
+ return randomRoll === 1 ? 'heads' : 'tails';
30
+ }
31
+ class CoinflipContract {
32
+ _instance;
33
+ adapter;
34
+ blockNumber;
35
+ blockId;
36
+ previousBlockId;
37
+ transactionId;
38
+ // Cache for account balance to reduce API calls
39
+ balanceCache = null;
40
+ balanceCacheTimeout = 30000; // 30 seconds
41
+ // Queue system for processing bets to prevent race conditions
42
+ betQueue = [];
43
+ processingQueue = false;
44
+ pendingPayouts = new bignumber_js_1.default(0);
45
+ create() {
46
+ this.adapter = this._instance.getAdapter();
47
+ }
48
+ destroy() {
49
+ // Cleanup resources
50
+ }
51
+ /**
52
+ * Get Balance with caching
53
+ */
54
+ async getBalance() {
55
+ const now = Date.now();
56
+ // Return cached balance if still valid
57
+ if (this.balanceCache && (now - this.balanceCache.timestamp) < this.balanceCacheTimeout) {
58
+ return this.balanceCache.balance;
59
+ }
60
+ try {
61
+ const account = await this._instance['client'].database.getAccounts([ACCOUNT]);
62
+ if (account?.[0]) {
63
+ const balance = account[0].balance.split(' ');
64
+ const amount = new bignumber_js_1.default(balance[0]);
65
+ // Validate the amount is a valid number
66
+ if (amount.isNaN() || !amount.isFinite()) {
67
+ throw new Error('Invalid balance format received from API');
68
+ }
69
+ // Cache the balance
70
+ this.balanceCache = {
71
+ balance: amount,
72
+ timestamp: now
73
+ };
74
+ return amount;
75
+ }
76
+ }
77
+ catch (error) {
78
+ console.error('[CoinflipContract] Error fetching balance:', error);
79
+ // Return cached balance if available, even if expired
80
+ if (this.balanceCache) {
81
+ return this.balanceCache.balance;
82
+ }
83
+ }
84
+ return new bignumber_js_1.default(0);
85
+ }
86
+ updateBlockInfo(blockNumber, blockId, previousBlockId, transactionId) {
87
+ // Lifecycle method which sets block info
88
+ this.blockNumber = blockNumber;
89
+ this.blockId = blockId;
90
+ this.previousBlockId = previousBlockId;
91
+ this.transactionId = transactionId;
92
+ }
93
+ async flip(payload, { sender, amount }) {
94
+ // Add bet to queue for processing
95
+ return new Promise((resolve, reject) => {
96
+ this.betQueue.push(async () => {
97
+ try {
98
+ await this.processFlip(payload, { sender, amount });
99
+ resolve();
100
+ }
101
+ catch (error) {
102
+ reject(error);
103
+ }
104
+ });
105
+ // Start processing queue if not already running
106
+ this.processQueue();
107
+ });
108
+ }
109
+ async processQueue() {
110
+ if (this.processingQueue || this.betQueue.length === 0) {
111
+ return;
112
+ }
113
+ this.processingQueue = true;
114
+ while (this.betQueue.length > 0) {
115
+ const nextBet = this.betQueue.shift();
116
+ if (nextBet) {
117
+ try {
118
+ await nextBet();
119
+ }
120
+ catch (error) {
121
+ console.error('[CoinflipContract] Queue processing error:', error);
122
+ }
123
+ }
124
+ }
125
+ this.processingQueue = false;
126
+ }
127
+ async processFlip(payload, { sender, amount }) {
128
+ try {
129
+ // Validate payload structure
130
+ if (!payload || typeof payload !== 'object') {
131
+ throw new Error('Invalid payload structure');
132
+ }
133
+ const { guess, seed } = payload;
134
+ const VALID_GUESSES = ['heads', 'tails'];
135
+ // Validate amount format
136
+ if (!amount || typeof amount !== 'string' || !amount.includes(' ')) {
137
+ throw new Error('Invalid amount format');
138
+ }
139
+ const amountTrim = amount.split(' ');
140
+ if (amountTrim.length !== 2) {
141
+ throw new Error('Invalid amount format');
142
+ }
143
+ // Parse the numeric value using BigNumber for precision
144
+ const amountParsed = new bignumber_js_1.default(amountTrim[0]);
145
+ // Validate the parsed amount
146
+ if (amountParsed.isNaN() || !amountParsed.isFinite() || amountParsed.isNegative()) {
147
+ throw new Error('Invalid amount value');
148
+ }
149
+ const amountCurrency = amountTrim[1].trim();
150
+ const transaction = await this._instance.getTransaction(this.blockNumber, this.transactionId);
151
+ const verify = await this._instance.verifyTransfer(transaction, sender, ACCOUNT, amount);
152
+ // Get the balance of our contract account
153
+ const balance = await this.getBalance();
154
+ // Calculate available balance (total - pending payouts)
155
+ const availableBalance = balance.minus(this.pendingPayouts);
156
+ if (verify) {
157
+ // User sent an invalid currency
158
+ if (!VALID_CURRENCIES.includes(amountCurrency)) {
159
+ await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] You sent an invalid currency.`);
160
+ return;
161
+ }
162
+ // Validate bet amount is within bounds
163
+ if (amountParsed.isLessThan(MIN_AMOUNT)) {
164
+ await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] Bet amount too small. Minimum: ${MIN_AMOUNT} ${amountCurrency}.`);
165
+ return;
166
+ }
167
+ // User sent too much, refund the bet
168
+ if (amountParsed.isGreaterThan(MAX_AMOUNT)) {
169
+ await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] You sent too much. Maximum: ${MAX_AMOUNT} ${amountCurrency}.`);
170
+ return;
171
+ }
172
+ // Calculate potential payout (2x bet amount)
173
+ const potentialPayout = amountParsed.multipliedBy(2);
174
+ // Check if server can afford the payout
175
+ if (potentialPayout.isGreaterThan(availableBalance)) {
176
+ await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] The server cannot afford this bet payout.`);
177
+ return;
178
+ }
179
+ // Invalid guess
180
+ if (!guess || !VALID_GUESSES.includes(guess)) {
181
+ await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] Invalid guess. Please only send heads or tails.`);
182
+ return;
183
+ }
184
+ // Reserve the potential payout
185
+ this.pendingPayouts = this.pendingPayouts.plus(potentialPayout);
186
+ try {
187
+ const serverSeed = (0, uuid_1.v4)();
188
+ // Validate server seed was generated
189
+ if (!serverSeed || typeof serverSeed !== 'string') {
190
+ throw new Error('Failed to generate server seed');
191
+ }
192
+ const generatedGuess = rng(this.previousBlockId, this.blockId, this.transactionId, serverSeed, seed ?? '');
193
+ if (generatedGuess === guess) {
194
+ await this.adapter.addEvent(new Date(), CONTRACT_NAME, 'flip', payload, {
195
+ action: 'transfer',
196
+ data: {
197
+ date: new Date(),
198
+ guess,
199
+ serverSeed,
200
+ previousBlockId: this.previousBlockId,
201
+ blockId: this.blockId,
202
+ transactionId: this.transactionId,
203
+ userWon: 'true'
204
+ }
205
+ });
206
+ await this._instance.transferHiveTokens(ACCOUNT, sender, potentialPayout.toFixed(3), amountTrim[1], `[Winner] | Guess: ${guess} | Server Roll: ${generatedGuess} | Previous block id: ${this.previousBlockId} | BlockID: ${this.blockId} | Trx ID: ${this.transactionId} | Server Seed: ${serverSeed}`);
207
+ return;
208
+ }
209
+ await this.adapter.addEvent(new Date(), CONTRACT_NAME, 'flip', payload, {
210
+ action: 'transfer',
211
+ data: {
212
+ guess,
213
+ serverSeed,
214
+ previousBlockId: this.previousBlockId,
215
+ blockId: this.blockId,
216
+ transactionId: this.transactionId,
217
+ userWon: 'false'
218
+ }
219
+ });
220
+ await this._instance.transferHiveTokens(ACCOUNT, sender, '0.001', amountTrim[1], `[Lost] | Guess: ${guess} | Server Roll: ${generatedGuess} | Previous block id: ${this.previousBlockId} | BlockID: ${this.blockId} | Trx ID: ${this.transactionId} | Server Seed: ${serverSeed}`);
221
+ }
222
+ finally {
223
+ // Release the reserved payout
224
+ this.pendingPayouts = this.pendingPayouts.minus(potentialPayout);
225
+ }
226
+ }
227
+ }
228
+ catch (e) {
229
+ const error = e instanceof Error ? e : new Error(String(e));
230
+ console.error(`[CoinflipContract] Flip processing error: ${error.message}`, {
231
+ sender,
232
+ amount,
233
+ payload,
234
+ stack: error.stack
235
+ });
236
+ // Attempt to refund on error if amount is valid
237
+ try {
238
+ if (amount && typeof amount === 'string' && amount.includes(' ')) {
239
+ const [amountStr, currency] = amount.split(' ');
240
+ const amountBN = new bignumber_js_1.default(amountStr);
241
+ if (!amountBN.isNaN() && amountBN.isFinite() && !amountBN.isNegative()) {
242
+ await this._instance.transferHiveTokens(ACCOUNT, sender, amountStr, currency, '[Refund] Processing error occurred.');
243
+ }
244
+ }
245
+ }
246
+ catch (refundError) {
247
+ console.error(`[CoinflipContract] Failed to refund after error:`, refundError);
248
+ }
249
+ throw error;
250
+ }
251
+ }
252
+ }
253
+ exports.CoinflipContract = CoinflipContract;
95
254
  //# sourceMappingURL=coinflip.contract.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"coinflip.contract.js","sourceRoot":"","sources":["../../src/contracts/coinflip.contract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coinflip.contract.js","sourceRoot":"","sources":["../../src/contracts/coinflip.contract.ts"],"names":[],"mappings":"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"}
@@ -1,29 +1,37 @@
1
- export declare class DiceContract {
2
- private _instance;
3
- private blockNumber;
4
- private blockId;
5
- private previousBlockId;
6
- private transactionId;
7
- private create;
8
- private destroy;
9
- private updateBlockInfo;
10
- /**
11
- * Get Balance
12
- *
13
- * Helper method for getting the contract account balance. In the case of our dice contract
14
- * we want to make sure the account has enough money to pay out any bets
15
- *
16
- * @returns number
17
- */
18
- private getBalance;
19
- /**
20
- * Roll
21
- *
22
- * Automatically called when a custom JSON action matches the following method
23
- *
24
- * @param payload
25
- * @param param1 - sender and amount
26
- */
27
- private roll;
28
- private testauto;
29
- }
1
+ import { Streamer } from './../streamer';
2
+ export declare class DiceContract {
3
+ _instance: Streamer;
4
+ private blockNumber;
5
+ private blockId;
6
+ private previousBlockId;
7
+ private transactionId;
8
+ private balanceCache;
9
+ private readonly balanceCacheTimeout;
10
+ private betQueue;
11
+ private processingQueue;
12
+ private pendingPayouts;
13
+ create(): void;
14
+ destroy(): void;
15
+ updateBlockInfo(blockNumber: any, blockId: any, previousBlockId: any, transactionId: any): void;
16
+ /**
17
+ * Get Balance
18
+ *
19
+ * Helper method for getting the contract account balance with caching
20
+ * We cache the balance to reduce API calls since it doesn't change frequently
21
+ *
22
+ * @returns number
23
+ */
24
+ private getBalance;
25
+ /**
26
+ * Roll
27
+ *
28
+ * Automatically called when a custom JSON action matches the following method
29
+ *
30
+ * @param payload
31
+ * @param param1 - sender and amount
32
+ */
33
+ private roll;
34
+ private processQueue;
35
+ private processRoll;
36
+ private testauto;
37
+ }