diff --git a/api/resolvers/rewards.js b/api/resolvers/rewards.js index 52647f6b..7c96d1a2 100644 --- a/api/resolvers/rewards.js +++ b/api/resolvers/rewards.js @@ -161,7 +161,7 @@ export default { const [{ to, from }] = await models.$queryRaw` SELECT date_trunc('month', (now() AT TIME ZONE 'America/Chicago')) AT TIME ZONE 'America/Chicago' as from, (date_trunc('month', (now() AT TIME ZONE 'America/Chicago')) AT TIME ZONE 'America/Chicago') + interval '1 month - 1 second' as to` - return await topUsers(parent, { when: 'custom', to: new Date(to).getTime().toString(), from: new Date(from).getTime().toString(), limit: 64 }, { models, ...context }) + return await topUsers(parent, { when: 'custom', to: new Date(to).getTime().toString(), from: new Date(from).getTime().toString(), limit: 100 }, { models, ...context }) } }, Mutation: { diff --git a/api/resolvers/user.js b/api/resolvers/user.js index 0e5e04ad..d3058204 100644 --- a/api/resolvers/user.js +++ b/api/resolvers/user.js @@ -5,7 +5,7 @@ import { decodeCursor, LIMIT, nextCursorEncoded } from '@/lib/cursor' import { msatsToSats } from '@/lib/format' import { bioSchema, emailSchema, settingsSchema, ssValidate, userSchema } from '@/lib/validate' import { getItem, updateItem, filterClause, createItem, whereClause, muteClause } from './item' -import { ANON_USER_ID, DELETE_USER_ID, RESERVED_MAX_USER_ID, SN_USER_IDS } from '@/lib/constants' +import { ANON_USER_ID, DELETE_USER_ID, RESERVED_MAX_USER_ID, SN_NO_REWARDS_IDS } from '@/lib/constants' import { viewGroup } from './growth' import { whenRange } from '@/lib/time' @@ -106,7 +106,7 @@ export function viewValueGroup () { WHERE user_values_today.t >= date_trunc('day', timezone('America/Chicago', $1)) AND date_trunc('day', user_values_today.t) <= date_trunc('day', timezone('America/Chicago', $2))) ) v - WHERE v.id NOT IN (${SN_USER_IDS.join(',')}) + WHERE v.id NOT IN (${SN_NO_REWARDS_IDS.join(',')}) GROUP BY v.id ) vv` } diff --git a/lib/constants.js b/lib/constants.js index 31f3a252..ba6cec03 100644 --- a/lib/constants.js +++ b/lib/constants.js @@ -37,6 +37,7 @@ export const ANON_ITEM_SPAM_INTERVAL = '0' export const INV_PENDING_LIMIT = 100 export const BALANCE_LIMIT_MSATS = 250000000 // 250k sat export const SN_USER_IDS = [616, 6030, 946, 4502, 27] +export const SN_NO_REWARDS_IDS = [27, 4502] export const ANON_INV_PENDING_LIMIT = 1000 export const ANON_BALANCE_LIMIT_MSATS = 0 // disable export const MAX_POLL_NUM_CHOICES = 10 diff --git a/lib/madness.js b/lib/madness.js index 2be505cb..e5451d9b 100644 --- a/lib/madness.js +++ b/lib/madness.js @@ -1,66 +1,101 @@ export const proportions = [ - 0.3312903760145768, - 0.09938711280437303, - 0.06625807520291535, - 0.04969355640218651, - 0.033129037601457675, - 0.02981613384131191, - 0.026503230081166142, - 0.023190326321020374, - 0.019877422560874606, - 0.016564518800728838, - 0.014908066920655955, - 0.013251615040583071, - 0.012920324664568494, - 0.012589034288553918, - 0.01225774391253934, - 0.011926453536524764, - 0.011595163160510187, - 0.01126387278449561, - 0.010932582408481033, - 0.010601292032466457, - 0.01027000165645188, - 0.009938711280437303, - 0.009607420904422726, - 0.00927613052840815, - 0.008944840152393572, - 0.008613549776378996, - 0.008282259400364419, - 0.007950969024349842, - 0.007619678648335266, - 0.007288388272320689, - 0.006957097896306112, - 0.006625807520291536, - 0.006294517144276959, - 0.005963226768262382, - 0.005631936392247805, - 0.005300646016233228, - 0.0049693556402186515, - 0.004638065264204075, - 0.004306774888189498, - 0.003975484512174921, - 0.0036441941361603446, - 0.003312903760145768, - 0.0031472585721384794, - 0.002981613384131191, - 0.0028159681961239026, - 0.002650323008116614, - 0.0024846778201093257, - 0.0023190326321020373, - 0.002153387444094749, - 0.0019877422560874605, - 0.0018220970680801723, - 0.001656451880072884, - 0.0014908066920655955, - 0.001325161504058307, - 0.0011595163160510187, - 0.0009938711280437303, - 0.000828225940036442, - 0.0006625807520291535, - 0.0004969355640218651, - 0.00033129037601457677, - 0.00033129037601457677, - 0.00033129037601457677, - 0.00033129037601457677, - 0.00033129037601457677 + 0.08122, + 0.07, + 0.06, + 0.05, + 0.045, + 0.04, + 0.035, + 0.03, + 0.029, + 0.028, + 0.027, + 0.026, + 0.025, + 0.024, + 0.023, + 0.022, + 0.021, + 0.02, + 0.019, + 0.018, + 0.017, + 0.016, + 0.015, + 0.014, + 0.013, + 0.012, + 0.011, + 0.01, + 0.009, + 0.0083, + 0.0077, + 0.0074, + 0.0071, + 0.0068, + 0.0065, + 0.0063, + 0.0061, + 0.0059, + 0.0057, + 0.0055, + 0.0053, + 0.0051, + 0.0049, + 0.0047, + 0.0045, + 0.0043, + 0.0041, + 0.0039, + 0.0037, + 0.0036, + 0.0035, + 0.0034, + 0.0033, + 0.0032, + 0.0031, + 0.003, + 0.0029, + 0.0028, + 0.0027, + 0.0026, + 0.0025, + 0.0024, + 0.0023, + 0.0022, + 0.0021, + 0.002, + 0.0019, + 0.0018, + 0.0017, + 0.0016, + 0.0015, + 0.0014, + 0.0013, + 0.0012, + 0.0011, + 0.001, + 0.0009, + 0.0008, + 0.00078, + 0.00076, + 0.00074, + 0.00072, + 0.0007, + 0.00068, + 0.00066, + 0.00064, + 0.00062, + 0.0006, + 0.00058, + 0.00056, + 0.00054, + 0.00052, + 0.0005, + 0.00048, + 0.00046, + 0.00044, + 0.00042, + 0.0004, + 0.00038 ] diff --git a/pages/rewards/index.js b/pages/rewards/index.js index ff97768f..f4851241 100644 --- a/pages/rewards/index.js +++ b/pages/rewards/index.js @@ -99,7 +99,7 @@ export default function Rewards ({ ssrData }) { let { rewards: [{ total, sources, time, leaderboard }] } = useData(data, ssrData) if (rewardsData?.rewards?.length > 0) { - total = rewardsData.rewards[0].total + total = rewardsData.rewards[0].total - 1000000 > 0 ? rewardsData.rewards[0].total - 1000000 : 0 sources = rewardsData.rewards[0].sources time = rewardsData.rewards[0].time } @@ -108,7 +108,7 @@ export default function Rewards ({ ssrData }) { return (
- estimated reward: {numWithUnits(Math.floor(total * proportions[rank - 1]))} + estimated reward: {numWithUnits(rank === 1 ? 1000000 : Math.floor(total * proportions[rank - 2]))}
) @@ -116,12 +116,18 @@ export default function Rewards ({ ssrData }) { return ( - +

+ Rewards are sponsored by{' '} + + the Austin Bitcoin++ Conference May 1-4 + +

+
-

+

@@ -137,7 +143,7 @@ export default function Rewards ({ ssrData }) { {leaderboard?.users && -

leaderboard

+

leaderboard

diff --git a/pages/~/index.js b/pages/~/index.js index b2b5162b..38bb81f3 100644 --- a/pages/~/index.js +++ b/pages/~/index.js @@ -7,6 +7,7 @@ import Snl from '@/components/snl' import { useQuery } from '@apollo/client' import PageLoading from '@/components/page-loading' import TerritoryHeader from '@/components/territory-header' +import Link from 'next/link' export const getServerSideProps = getGetServerSideProps({ query: SUB_ITEMS, @@ -29,6 +30,14 @@ export default function Sub ({ ssrData }) { <> )} + + + Million Sat Madness + is sponsored by{' '} + + the Austin Bitcoin++ Conference May 1-4 + + ) diff --git a/worker/earn.js b/worker/earn.js index b2d90706..4af19b1f 100644 --- a/worker/earn.js +++ b/worker/earn.js @@ -2,7 +2,7 @@ import serialize from '@/api/resolvers/serial.js' import { notifyEarner } from '@/lib/webPush.js' import { PrismaClient } from '@prisma/client' import { proportions } from '@/lib/madness.js' -import { SN_USER_IDS } from '@/lib/constants.js' +import { SN_NO_REWARDS_IDS } from '@/lib/constants.js' const TOTAL_UPPER_BOUND_MSATS = 10000000000 @@ -55,10 +55,10 @@ export async function earn ({ name }) { SELECT id AS "userId", sum(proportion) as proportion, ROW_NUMBER() OVER (ORDER BY sum(proportion) DESC) as rank FROM user_values_days WHERE date_trunc('month', user_values_days.t) = date_trunc('month', (now() - interval '1 month') AT TIME ZONE 'America/Chicago') - AND NOT (id = ANY (${SN_USER_IDS})) + AND NOT (id = ANY (${SN_NO_REWARDS_IDS})) GROUP BY id ORDER BY proportion DESC - LIMIT 64` + LIMIT 100` // in order to group earnings for users we use the same createdAt time for // all earnings