hive-stream 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +35 -0
- package/DOCUMENTATION.md +380 -0
- package/README.md +113 -22
- package/dist/actions.d.ts +3 -3
- package/dist/actions.js +7 -7
- package/dist/actions.js.map +1 -1
- package/dist/adapters/base.adapter.d.ts +19 -1
- package/dist/adapters/base.adapter.js +16 -0
- package/dist/adapters/base.adapter.js.map +1 -1
- package/dist/adapters/mongodb.adapter.d.ts +5 -11
- package/dist/adapters/mongodb.adapter.js +10 -10
- package/dist/adapters/mongodb.adapter.js.map +1 -1
- package/dist/adapters/postgresql.adapter.d.ts +17 -0
- package/dist/adapters/postgresql.adapter.js +99 -8
- package/dist/adapters/postgresql.adapter.js.map +1 -1
- package/dist/adapters/sqlite.adapter.d.ts +17 -0
- package/dist/adapters/sqlite.adapter.js +99 -8
- package/dist/adapters/sqlite.adapter.js.map +1 -1
- package/dist/api.js +86 -0
- package/dist/api.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.js +6 -3
- package/dist/config.js.map +1 -1
- package/dist/contracts/coinflip.contract.d.ts +8 -26
- package/dist/contracts/coinflip.contract.js +123 -144
- package/dist/contracts/coinflip.contract.js.map +1 -1
- package/dist/contracts/contract.d.ts +3 -0
- package/dist/contracts/contract.js +26 -0
- package/dist/contracts/contract.js.map +1 -0
- package/dist/contracts/dice.contract.d.ts +9 -36
- package/dist/contracts/dice.contract.js +135 -200
- package/dist/contracts/dice.contract.js.map +1 -1
- package/dist/contracts/exchange.contract.d.ts +11 -0
- package/dist/contracts/exchange.contract.js +492 -0
- package/dist/contracts/exchange.contract.js.map +1 -0
- package/dist/contracts/lotto.contract.d.ts +15 -19
- package/dist/contracts/lotto.contract.js +154 -162
- package/dist/contracts/lotto.contract.js.map +1 -1
- package/dist/contracts/nft.contract.d.ts +4 -0
- package/dist/contracts/nft.contract.js +65 -0
- package/dist/contracts/nft.contract.js.map +1 -1
- package/dist/contracts/poll.contract.d.ts +4 -0
- package/dist/contracts/poll.contract.js +105 -0
- package/dist/contracts/poll.contract.js.map +1 -0
- package/dist/contracts/rps.contract.d.ts +9 -0
- package/dist/contracts/rps.contract.js +217 -0
- package/dist/contracts/rps.contract.js.map +1 -0
- package/dist/contracts/tipjar.contract.d.ts +4 -0
- package/dist/contracts/tipjar.contract.js +60 -0
- package/dist/contracts/tipjar.contract.js.map +1 -0
- package/dist/contracts/token.contract.d.ts +3 -17
- package/dist/contracts/token.contract.js +128 -80
- package/dist/contracts/token.contract.js.map +1 -1
- package/dist/exchanges/coingecko.d.ts +7 -1
- package/dist/exchanges/coingecko.js +38 -21
- package/dist/exchanges/coingecko.js.map +1 -1
- package/dist/exchanges/exchange.d.ts +15 -8
- package/dist/exchanges/exchange.js +65 -11
- package/dist/exchanges/exchange.js.map +1 -1
- package/dist/hive-rates.d.ts +29 -4
- package/dist/hive-rates.js +179 -92
- package/dist/hive-rates.js.map +1 -1
- package/dist/index.d.ts +10 -3
- package/dist/index.js +18 -4
- package/dist/index.js.map +1 -1
- package/dist/streamer.d.ts +101 -8
- package/dist/streamer.js +410 -140
- package/dist/streamer.js.map +1 -1
- package/dist/test.js +11 -12
- package/dist/test.js.map +1 -1
- package/dist/types/hive-stream.d.ts +85 -14
- package/dist/types/rates.d.ts +47 -0
- package/dist/types/rates.js +29 -0
- package/dist/types/rates.js.map +1 -0
- package/dist/utils.d.ts +318 -11
- package/dist/utils.js +804 -115
- package/dist/utils.js.map +1 -1
- package/examples/contracts/README.md +8 -0
- package/examples/contracts/exchange.ts +38 -0
- package/examples/contracts/poll.ts +21 -0
- package/examples/contracts/rps.ts +19 -0
- package/examples/contracts/tipjar.ts +19 -0
- package/package.json +20 -19
- package/tests/actions.spec.ts +7 -7
- package/tests/adapters/actions-persistence.spec.ts +4 -4
- package/tests/adapters/sqlite.adapter.spec.ts +2 -2
- package/tests/contracts/coinflip.contract.spec.ts +26 -154
- package/tests/contracts/dice.contract.spec.ts +24 -140
- package/tests/contracts/exchange.contract.spec.ts +84 -0
- package/tests/contracts/lotto.contract.spec.ts +30 -295
- package/tests/contracts/token.contract.spec.ts +72 -316
- package/tests/exchanges/coingecko.exchange.spec.ts +169 -0
- package/tests/exchanges/exchange.base.spec.ts +246 -0
- package/tests/helpers/mock-fetch.ts +165 -0
- package/tests/hive-chain-features.spec.ts +238 -0
- package/tests/hive-rates.spec.ts +443 -0
- package/tests/integration/hive-rates.integration.spec.ts +35 -0
- package/tests/streamer-actions.spec.ts +29 -18
- package/tests/streamer.spec.ts +142 -49
- package/tests/types/rates.spec.ts +216 -0
- package/tests/utils.spec.ts +27 -6
|
@@ -3,245 +3,237 @@ 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.
|
|
7
|
-
const utils_1 = require("@hiveio/dhive/lib/utils");
|
|
8
|
-
const utils_2 = require("./../utils");
|
|
9
|
-
const seedrandom_1 = __importDefault(require("seedrandom"));
|
|
6
|
+
exports.createLottoContract = createLottoContract;
|
|
10
7
|
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
const MAX_TICKETS_PER_USER = 3;
|
|
28
|
-
// The percentage the site keeps (5%)
|
|
29
|
-
const PERCENTAGE = 5;
|
|
8
|
+
const seedrandom_1 = __importDefault(require("seedrandom"));
|
|
9
|
+
const zod_1 = require("zod");
|
|
10
|
+
const contract_1 = require("./contract");
|
|
11
|
+
const utils_1 = require("../utils");
|
|
12
|
+
const DEFAULT_NAME = 'hivelotto';
|
|
13
|
+
const DEFAULT_ACCOUNT = 'beggars';
|
|
14
|
+
const DEFAULT_FEE_ACCOUNT = 'beggars';
|
|
15
|
+
const DEFAULT_TOKEN_SYMBOL = 'HIVE';
|
|
16
|
+
const DEFAULT_VALID_DRAW_TYPES = ['hourly', 'daily'];
|
|
17
|
+
const DEFAULT_COST = 10;
|
|
18
|
+
const DEFAULT_MIN_ENTRIES_HOURLY = 25;
|
|
19
|
+
const DEFAULT_MIN_ENTRIES_DAILY = 100;
|
|
20
|
+
const DEFAULT_HOURLY_WINNERS_PICK = 3;
|
|
21
|
+
const DEFAULT_DAILY_WINNERS_PICK = 10;
|
|
22
|
+
const DEFAULT_MAX_TICKETS_PER_USER = 3;
|
|
23
|
+
const DEFAULT_PERCENTAGE = 5;
|
|
30
24
|
const COLLECTION_LOTTERY = 'lottery';
|
|
31
25
|
const COLLECTION_SETTINGS = 'settings';
|
|
32
|
-
const COLLECTION_WINNERS = 'winners';
|
|
33
26
|
function rng(previousBlockId, blockId, transactionId, entropy, maximum = 100) {
|
|
34
27
|
const random = (0, seedrandom_1.default)(`${previousBlockId}${blockId}${transactionId}${entropy}`).double();
|
|
35
|
-
|
|
36
|
-
return randomRoll;
|
|
28
|
+
return Math.floor(random * maximum) + 1;
|
|
37
29
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
this.previousBlockId = previousBlockId;
|
|
65
|
-
this.transactionId = transactionId;
|
|
66
|
-
}
|
|
67
|
-
async getBalance() {
|
|
68
|
-
const account = await this._instance['client'].database.getAccounts([ACCOUNT]);
|
|
69
|
-
if (account?.[0]) {
|
|
70
|
-
const balance = account[0].balance.split(' ');
|
|
71
|
-
const amount = balance[0];
|
|
72
|
-
return parseFloat(amount);
|
|
30
|
+
function createLottoContract(options = {}) {
|
|
31
|
+
const name = options.name || DEFAULT_NAME;
|
|
32
|
+
const account = options.account || DEFAULT_ACCOUNT;
|
|
33
|
+
const feeAccount = options.feeAccount || DEFAULT_FEE_ACCOUNT;
|
|
34
|
+
const tokenSymbol = options.tokenSymbol || DEFAULT_TOKEN_SYMBOL;
|
|
35
|
+
const validCurrencies = options.validCurrencies || [tokenSymbol];
|
|
36
|
+
const validDrawTypes = options.validDrawTypes || DEFAULT_VALID_DRAW_TYPES;
|
|
37
|
+
const cost = options.cost ?? DEFAULT_COST;
|
|
38
|
+
const minEntriesHourly = options.minEntriesHourly ?? DEFAULT_MIN_ENTRIES_HOURLY;
|
|
39
|
+
const minEntriesDaily = options.minEntriesDaily ?? DEFAULT_MIN_ENTRIES_DAILY;
|
|
40
|
+
const hourlyWinnersPick = options.hourlyWinnersPick ?? DEFAULT_HOURLY_WINNERS_PICK;
|
|
41
|
+
const dailyWinnersPick = options.dailyWinnersPick ?? DEFAULT_DAILY_WINNERS_PICK;
|
|
42
|
+
const maxTicketsPerUser = options.maxTicketsPerUser ?? DEFAULT_MAX_TICKETS_PER_USER;
|
|
43
|
+
const feePercentage = options.feePercentage ?? DEFAULT_PERCENTAGE;
|
|
44
|
+
const state = {
|
|
45
|
+
streamer: null,
|
|
46
|
+
adapter: null
|
|
47
|
+
};
|
|
48
|
+
const buySchema = zod_1.z.object({
|
|
49
|
+
type: zod_1.z.enum(['hourly', 'daily'])
|
|
50
|
+
});
|
|
51
|
+
const getBalance = async () => {
|
|
52
|
+
const accountInfo = await state.streamer['client'].database.getAccounts([account]);
|
|
53
|
+
if (accountInfo?.[0]) {
|
|
54
|
+
const balance = accountInfo[0].balance.split(' ');
|
|
55
|
+
return parseFloat(balance[0]);
|
|
73
56
|
}
|
|
74
57
|
return null;
|
|
75
|
-
}
|
|
76
|
-
async
|
|
77
|
-
const lotto = await
|
|
58
|
+
};
|
|
59
|
+
const getPreviousUserTicketsForCurrentDrawType = async (type, accountName) => {
|
|
60
|
+
const lotto = await state.adapter.find(COLLECTION_LOTTERY, { status: 'active', type });
|
|
78
61
|
if (!lotto[0] || !lotto[0].entries) {
|
|
79
62
|
return 0;
|
|
80
63
|
}
|
|
81
|
-
const userEntries = lotto[0].entries.filter(
|
|
64
|
+
const userEntries = lotto[0].entries.filter((entry) => entry.account === accountName);
|
|
82
65
|
return userEntries.length;
|
|
83
|
-
}
|
|
84
|
-
async
|
|
85
|
-
|
|
86
|
-
|
|
66
|
+
};
|
|
67
|
+
const buy = async (payload, ctx) => {
|
|
68
|
+
if (!ctx.transfer) {
|
|
69
|
+
throw new Error('Transfer context required for buy');
|
|
70
|
+
}
|
|
71
|
+
const sender = ctx.sender;
|
|
72
|
+
const amountRaw = ctx.transfer.rawAmount;
|
|
73
|
+
const amountTrim = amountRaw.split(' ');
|
|
87
74
|
const amountParsed = parseFloat(amountTrim[0]);
|
|
88
75
|
const amountCurrency = amountTrim[1].trim();
|
|
89
|
-
const transaction = await
|
|
90
|
-
const verify = await
|
|
76
|
+
const transaction = await state.streamer.getTransaction(ctx.block.number, ctx.transaction.id);
|
|
77
|
+
const verify = await state.streamer.verifyTransfer(transaction, sender, account, amountRaw);
|
|
91
78
|
if (verify) {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] You sent an invalid currency.`);
|
|
79
|
+
if (!validCurrencies.includes(amountCurrency)) {
|
|
80
|
+
await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] You sent an invalid currency.');
|
|
95
81
|
return;
|
|
96
82
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] You specified an invalid draw type`);
|
|
83
|
+
if (!validDrawTypes.includes(payload.type)) {
|
|
84
|
+
await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] You specified an invalid draw type');
|
|
100
85
|
return;
|
|
101
86
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
await this._instance.transferHiveTokens(ACCOUNT, sender, amountTrim[0], amountTrim[1], `[Refund] You have exceeded the allowed number of entries`);
|
|
87
|
+
const previousEntriesCount = await getPreviousUserTicketsForCurrentDrawType(payload.type, sender);
|
|
88
|
+
if (previousEntriesCount === maxTicketsPerUser) {
|
|
89
|
+
await state.streamer.transferHiveTokens(account, sender, amountTrim[0], amountTrim[1], '[Refund] You have exceeded the allowed number of entries');
|
|
106
90
|
return;
|
|
107
91
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
await this._instance.transferHiveTokens(ACCOUNT, sender, difference, amountTrim[1], `[Refund] A ticket costs ${COST} HIVE. You sent ${amount}. You were refunded ${difference} HIVE.`);
|
|
92
|
+
if (amountParsed > cost) {
|
|
93
|
+
const difference = new bignumber_js_1.default(amountParsed).minus(cost).toFixed(3);
|
|
94
|
+
await state.streamer.transferHiveTokens(account, sender, difference, amountTrim[1], `[Refund] A ticket costs ${cost} ${tokenSymbol}. You sent ${amountRaw}. You were refunded ${difference} ${tokenSymbol}.`);
|
|
112
95
|
return;
|
|
113
96
|
}
|
|
114
|
-
|
|
115
|
-
const lotto = await this.adapter.find(COLLECTION_LOTTERY, { status: 'active', type: type });
|
|
116
|
-
// We have a lotto
|
|
97
|
+
const lotto = await state.adapter.find(COLLECTION_LOTTERY, { status: 'active', type: payload.type });
|
|
117
98
|
if (lotto.length) {
|
|
118
99
|
const draw = lotto[0];
|
|
119
100
|
draw.entries.push({
|
|
120
101
|
account: sender,
|
|
121
|
-
transactionId:
|
|
102
|
+
transactionId: ctx.transaction.id,
|
|
122
103
|
date: new Date()
|
|
123
104
|
});
|
|
124
|
-
|
|
105
|
+
await state.adapter.replace(COLLECTION_LOTTERY, { _id: draw._id }, draw);
|
|
106
|
+
return;
|
|
125
107
|
}
|
|
126
|
-
// We need to create a new lotto, no active draws for this type
|
|
127
108
|
const entries = [{
|
|
128
109
|
account: sender,
|
|
129
|
-
transactionId:
|
|
110
|
+
transactionId: ctx.transaction.id,
|
|
130
111
|
date: new Date()
|
|
131
112
|
}];
|
|
132
|
-
|
|
113
|
+
await state.adapter.insert(COLLECTION_LOTTERY, { status: 'active', type: payload.type, entries });
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
const getWinners = async (count, entries, ctx) => {
|
|
117
|
+
const winners = [];
|
|
118
|
+
utils_1.Utils.shuffle(entries);
|
|
119
|
+
for (const entry of entries) {
|
|
120
|
+
if (winners.length < count) {
|
|
121
|
+
const winner = entries[rng(ctx.block.previousId + `${(0, seedrandom_1.default)().double()}`, ctx.block.id + `${(0, seedrandom_1.default)().double()}`, ctx.transaction.id + `${(0, seedrandom_1.default)().double()}`, (0, seedrandom_1.default)().double(), entries.length - 1)];
|
|
122
|
+
winners.push(winner);
|
|
123
|
+
await utils_1.Utils.sleep(300);
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
133
128
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
129
|
+
return winners;
|
|
130
|
+
};
|
|
131
|
+
const drawHourlyLottery = async (_payload, ctx) => {
|
|
132
|
+
const lotto = await state.adapter.find(COLLECTION_LOTTERY, { status: 'active', type: 'hourly' });
|
|
138
133
|
if (lotto.length) {
|
|
139
134
|
const draw = lotto[0];
|
|
140
135
|
const total = draw.entries.length;
|
|
141
|
-
|
|
142
|
-
if (total < MIN_ENTRIES_HOURLY) {
|
|
136
|
+
if (total < minEntriesHourly) {
|
|
143
137
|
const entrants = draw.entries.reduce((arr, entrant) => {
|
|
144
138
|
arr.push(entrant.account);
|
|
145
139
|
return arr;
|
|
146
140
|
}, []);
|
|
147
|
-
await
|
|
141
|
+
await state.streamer.transferHiveTokensMultiple(account, entrants, '10.000', tokenSymbol, '[Refund] The hourly lotto draw did not have enough contestants.');
|
|
148
142
|
return;
|
|
149
143
|
}
|
|
150
|
-
const balance = await
|
|
151
|
-
|
|
152
|
-
const
|
|
153
|
-
// Calculate how much the account gets to keep
|
|
154
|
-
const percentageFee = new bignumber_js_1.default(winningsAmount).dividedBy(100).multipliedBy(PERCENTAGE);
|
|
155
|
-
// The amount minus the percentage to pay out to winners
|
|
144
|
+
const balance = await getBalance();
|
|
145
|
+
const winningsAmount = new bignumber_js_1.default(total).multipliedBy(cost).toNumber();
|
|
146
|
+
const percentageFee = new bignumber_js_1.default(winningsAmount).dividedBy(100).multipliedBy(feePercentage);
|
|
156
147
|
const payoutTotal = new bignumber_js_1.default(winningsAmount).minus(percentageFee);
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
}
|
|
163
|
-
// Winnings exceed balance
|
|
164
|
-
if (payoutTotal.toNumber() > balance) {
|
|
148
|
+
const amountPerWinner = new bignumber_js_1.default(payoutTotal).dividedBy(hourlyWinnersPick).toFixed(3);
|
|
149
|
+
if (account !== feeAccount) {
|
|
150
|
+
await state.streamer.transferHiveTokens(account, feeAccount, percentageFee.toFixed(3), tokenSymbol, 'percentage fee');
|
|
151
|
+
}
|
|
152
|
+
if (balance !== null && payoutTotal.toNumber() > balance) {
|
|
165
153
|
throw new Error('Balance is less than amount to pay out');
|
|
166
154
|
}
|
|
167
|
-
const winners = await
|
|
155
|
+
const winners = await getWinners(hourlyWinnersPick, draw.entries, ctx);
|
|
168
156
|
if (winners) {
|
|
169
157
|
const winnerStrings = winners.reduce((arr, winner) => {
|
|
170
158
|
arr.push(winner.account);
|
|
171
159
|
return arr;
|
|
172
160
|
}, []);
|
|
173
|
-
await
|
|
161
|
+
await state.streamer.transferHiveTokensMultiple(account, winnerStrings, amountPerWinner, tokenSymbol, `Congratulations you won the hourly lottery. You won ${amountPerWinner} ${tokenSymbol}. Winners: ${winnerStrings.join(', ')}`);
|
|
174
162
|
const losers = draw.entries
|
|
175
|
-
.filter(
|
|
176
|
-
return !winnerStrings.includes(e.account);
|
|
177
|
-
})
|
|
163
|
+
.filter((entry) => !winnerStrings.includes(entry.account))
|
|
178
164
|
.reduce((unique, value) => {
|
|
179
165
|
return unique.includes(value.account) ? unique : [...unique, value.account];
|
|
180
166
|
}, []);
|
|
181
|
-
if (losers) {
|
|
182
|
-
await
|
|
167
|
+
if (losers.length) {
|
|
168
|
+
await state.streamer.transferHiveTokensMultiple(account, losers, '0.001', tokenSymbol, `Sorry, you didn't win the hourly draw. Winners: ${winnerStrings.join(', ')}`);
|
|
183
169
|
}
|
|
184
170
|
}
|
|
185
|
-
return
|
|
171
|
+
return;
|
|
186
172
|
}
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
173
|
+
return;
|
|
174
|
+
};
|
|
175
|
+
const drawDailyLottery = async (_payload, ctx) => {
|
|
176
|
+
const lotto = await state.adapter.find(COLLECTION_LOTTERY, { status: 'active', type: 'daily' });
|
|
191
177
|
if (lotto.length) {
|
|
192
178
|
const draw = lotto[0];
|
|
193
179
|
const total = draw.entries.length;
|
|
194
|
-
|
|
195
|
-
if (total < MIN_ENTRIES_DAILY) {
|
|
180
|
+
if (total < minEntriesDaily) {
|
|
196
181
|
for (const entrant of draw.entries) {
|
|
197
|
-
await
|
|
198
|
-
await
|
|
182
|
+
await state.streamer.transferHiveTokens(account, entrant.account, '10.000', tokenSymbol, '[Refund] The daily lotto draw did not have enough contestants.');
|
|
183
|
+
await utils_1.Utils.sleep(3000);
|
|
199
184
|
}
|
|
200
185
|
return;
|
|
201
186
|
}
|
|
202
|
-
const balance = await
|
|
203
|
-
|
|
204
|
-
const
|
|
205
|
-
// Calculate how much the account gets to keep
|
|
206
|
-
const percentageFee = new bignumber_js_1.default(winningsAmount).dividedBy(100).multipliedBy(PERCENTAGE);
|
|
207
|
-
// The amount minus the percentage to pay out to winners
|
|
187
|
+
const balance = await getBalance();
|
|
188
|
+
const winningsAmount = new bignumber_js_1.default(total).multipliedBy(cost).toNumber();
|
|
189
|
+
const percentageFee = new bignumber_js_1.default(winningsAmount).dividedBy(100).multipliedBy(feePercentage);
|
|
208
190
|
const payoutTotal = new bignumber_js_1.default(winningsAmount).minus(percentageFee);
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}
|
|
215
|
-
// Winnings exceed balance
|
|
216
|
-
if (payoutTotal.toNumber() > balance) {
|
|
191
|
+
const amountPerWinner = new bignumber_js_1.default(payoutTotal).dividedBy(dailyWinnersPick).toFixed(3);
|
|
192
|
+
if (account !== feeAccount) {
|
|
193
|
+
await state.streamer.transferHiveTokens(account, feeAccount, percentageFee.toFixed(3), tokenSymbol, 'percentage fee');
|
|
194
|
+
}
|
|
195
|
+
if (balance !== null && payoutTotal.toNumber() > balance) {
|
|
217
196
|
throw new Error('Balance is less than amount to pay out');
|
|
218
197
|
}
|
|
219
|
-
const winners = await
|
|
198
|
+
const winners = await getWinners(dailyWinnersPick, draw.entries, ctx);
|
|
220
199
|
if (winners) {
|
|
221
200
|
const winnerStrings = winners.reduce((arr, winner) => {
|
|
222
201
|
arr.push(winner.account);
|
|
223
202
|
return arr;
|
|
224
203
|
}, []);
|
|
225
|
-
await
|
|
204
|
+
await state.streamer.transferHiveTokensMultiple(account, winnerStrings, amountPerWinner, tokenSymbol, `Congratulations you won the daily lottery. You won ${amountPerWinner} ${tokenSymbol}`);
|
|
226
205
|
}
|
|
227
|
-
return
|
|
206
|
+
return;
|
|
228
207
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
await (
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
208
|
+
return;
|
|
209
|
+
};
|
|
210
|
+
return (0, contract_1.defineContract)({
|
|
211
|
+
name,
|
|
212
|
+
hooks: {
|
|
213
|
+
create: async ({ streamer, adapter }) => {
|
|
214
|
+
state.streamer = streamer;
|
|
215
|
+
state.adapter = adapter;
|
|
216
|
+
const settings = await state.adapter.findOne(COLLECTION_SETTINGS, {});
|
|
217
|
+
if (!settings) {
|
|
218
|
+
await state.adapter.insert(COLLECTION_SETTINGS, {
|
|
219
|
+
contractInitiated: new Date(),
|
|
220
|
+
enabled: true
|
|
221
|
+
});
|
|
222
|
+
}
|
|
241
223
|
}
|
|
224
|
+
},
|
|
225
|
+
actions: {
|
|
226
|
+
buy: (0, contract_1.action)(buy, {
|
|
227
|
+
schema: buySchema,
|
|
228
|
+
trigger: 'transfer'
|
|
229
|
+
}),
|
|
230
|
+
drawHourlyLottery: (0, contract_1.action)(drawHourlyLottery, {
|
|
231
|
+
trigger: 'time'
|
|
232
|
+
}),
|
|
233
|
+
drawDailyLottery: (0, contract_1.action)(drawDailyLottery, {
|
|
234
|
+
trigger: 'time'
|
|
235
|
+
})
|
|
242
236
|
}
|
|
243
|
-
|
|
244
|
-
}
|
|
237
|
+
});
|
|
245
238
|
}
|
|
246
|
-
exports.LottoContract = LottoContract;
|
|
247
239
|
//# sourceMappingURL=lotto.contract.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lotto.contract.js","sourceRoot":"","sources":["../../src/contracts/lotto.contract.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"lotto.contract.js","sourceRoot":"","sources":["../../src/contracts/lotto.contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,3 +22,7 @@ export declare class NFTContract {
|
|
|
22
22
|
private getCollectionInfo;
|
|
23
23
|
private getUserTokens;
|
|
24
24
|
}
|
|
25
|
+
export interface NFTContractOptions {
|
|
26
|
+
name?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function createNFTContract(options?: NFTContractOptions): import("..").ContractDefinition;
|
|
@@ -4,7 +4,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.NFTContract = void 0;
|
|
7
|
+
exports.createNFTContract = createNFTContract;
|
|
7
8
|
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
9
|
+
const contract_1 = require("./contract");
|
|
8
10
|
const CONTRACT_NAME = 'hivenft';
|
|
9
11
|
class NFTContract {
|
|
10
12
|
_instance;
|
|
@@ -530,4 +532,67 @@ class NFTContract {
|
|
|
530
532
|
}
|
|
531
533
|
}
|
|
532
534
|
exports.NFTContract = NFTContract;
|
|
535
|
+
function createNFTContract(options = {}) {
|
|
536
|
+
const name = options.name || CONTRACT_NAME;
|
|
537
|
+
const instance = new NFTContract();
|
|
538
|
+
const callWithContext = async (payload, ctx, handler, meta) => {
|
|
539
|
+
instance.updateBlockInfo(ctx.block.number, ctx.block.id, ctx.block.previousId, ctx.transaction.id);
|
|
540
|
+
return handler(payload, meta);
|
|
541
|
+
};
|
|
542
|
+
return (0, contract_1.defineContract)({
|
|
543
|
+
name,
|
|
544
|
+
hooks: {
|
|
545
|
+
create: async ({ streamer }) => {
|
|
546
|
+
instance._instance = streamer;
|
|
547
|
+
await instance.create();
|
|
548
|
+
},
|
|
549
|
+
destroy: async () => {
|
|
550
|
+
await instance.destroy();
|
|
551
|
+
}
|
|
552
|
+
},
|
|
553
|
+
actions: {
|
|
554
|
+
createCollection: (0, contract_1.action)((payload, ctx) => callWithContext(payload, ctx, instance.createCollection.bind(instance), { sender: ctx.sender }), {
|
|
555
|
+
trigger: 'custom_json'
|
|
556
|
+
}),
|
|
557
|
+
mintNFT: (0, contract_1.action)((payload, ctx) => callWithContext(payload, ctx, instance.mintNFT.bind(instance), { sender: ctx.sender }), {
|
|
558
|
+
trigger: 'custom_json'
|
|
559
|
+
}),
|
|
560
|
+
updateNFT: (0, contract_1.action)((payload, ctx) => callWithContext(payload, ctx, instance.updateNFT.bind(instance), { sender: ctx.sender }), {
|
|
561
|
+
trigger: 'custom_json'
|
|
562
|
+
}),
|
|
563
|
+
transferNFT: (0, contract_1.action)((payload, ctx) => callWithContext(payload, ctx, instance.transferNFT.bind(instance), { sender: ctx.sender }), {
|
|
564
|
+
trigger: 'custom_json'
|
|
565
|
+
}),
|
|
566
|
+
burnNFT: (0, contract_1.action)((payload, ctx) => callWithContext(payload, ctx, instance.burnNFT.bind(instance), { sender: ctx.sender }), {
|
|
567
|
+
trigger: 'custom_json'
|
|
568
|
+
}),
|
|
569
|
+
listNFT: (0, contract_1.action)((payload, ctx) => callWithContext(payload, ctx, instance.listNFT.bind(instance), { sender: ctx.sender }), {
|
|
570
|
+
trigger: 'custom_json'
|
|
571
|
+
}),
|
|
572
|
+
unlistNFT: (0, contract_1.action)((payload, ctx) => callWithContext(payload, ctx, instance.unlistNFT.bind(instance), { sender: ctx.sender }), {
|
|
573
|
+
trigger: 'custom_json'
|
|
574
|
+
}),
|
|
575
|
+
buyNFT: (0, contract_1.action)((payload, ctx) => {
|
|
576
|
+
const amountRaw = ctx.transfer?.rawAmount || '';
|
|
577
|
+
const [amount, asset] = amountRaw.split(' ');
|
|
578
|
+
return callWithContext(payload, ctx, instance.buyNFT.bind(instance), {
|
|
579
|
+
sender: ctx.sender,
|
|
580
|
+
amount,
|
|
581
|
+
asset
|
|
582
|
+
});
|
|
583
|
+
}, {
|
|
584
|
+
trigger: 'transfer'
|
|
585
|
+
}),
|
|
586
|
+
getTokenInfo: (0, contract_1.action)((payload, ctx) => callWithContext(payload, ctx, instance.getTokenInfo.bind(instance), { sender: ctx.sender }), {
|
|
587
|
+
trigger: 'custom_json'
|
|
588
|
+
}),
|
|
589
|
+
getCollectionInfo: (0, contract_1.action)((payload, ctx) => callWithContext(payload, ctx, instance.getCollectionInfo.bind(instance), { sender: ctx.sender }), {
|
|
590
|
+
trigger: 'custom_json'
|
|
591
|
+
}),
|
|
592
|
+
getUserTokens: (0, contract_1.action)((payload, ctx) => callWithContext(payload, ctx, instance.getUserTokens.bind(instance), { sender: ctx.sender }), {
|
|
593
|
+
trigger: 'custom_json'
|
|
594
|
+
})
|
|
595
|
+
}
|
|
596
|
+
});
|
|
597
|
+
}
|
|
533
598
|
//# sourceMappingURL=nft.contract.js.map
|