balance limit changes
This commit is contained in:
		
							parent
							
								
									f465c6d881
								
							
						
					
					
						commit
						f31598d08d
					
				| @ -8,7 +8,7 @@ import { SELECT } from './item' | ||||
| import { lnAddrOptions, lnurlPayDescriptionHash } from '../../lib/lnurl' | ||||
| import { msatsToSats, msatsToSatsDecimal } from '../../lib/format' | ||||
| import { amountSchema, lnAddrSchema, ssValidate, withdrawlSchema } from '../../lib/validate' | ||||
| import { ANON_BALANCE_LIMIT_MSATS, ANON_INV_PENDING_LIMIT, ANON_USER_ID, BALANCE_LIMIT_MSATS, INV_PENDING_LIMIT } from '../../lib/constants' | ||||
| import { ANON_BALANCE_LIMIT_MSATS, ANON_INV_PENDING_LIMIT, ANON_USER_ID, BALANCE_LIMIT_MSATS, INV_PENDING_LIMIT, USER_IDS_BALANCE_NO_LIMIT } from '../../lib/constants' | ||||
| import { datePivot } from '../../lib/time' | ||||
| 
 | ||||
| export async function getInvoice (parent, { id }, { me, models, lnd }) { | ||||
| @ -260,7 +260,7 @@ export default { | ||||
| 
 | ||||
|       let expirePivot = { seconds: expireSecs } | ||||
|       let invLimit = INV_PENDING_LIMIT | ||||
|       let balanceLimit = BALANCE_LIMIT_MSATS | ||||
|       let balanceLimit = hodlInvoice || USER_IDS_BALANCE_NO_LIMIT.includes(Number(me.id)) ? 0 : BALANCE_LIMIT_MSATS | ||||
|       let id = me?.id | ||||
|       if (!me) { | ||||
|         expirePivot = { seconds: Math.min(expireSecs, 180) } | ||||
|  | ||||
| @ -23,9 +23,10 @@ export const MAX_POLL_CHOICE_LENGTH = 40 | ||||
| export const ITEM_SPAM_INTERVAL = '10m' | ||||
| export const ANON_ITEM_SPAM_INTERVAL = '0' | ||||
| export const INV_PENDING_LIMIT = 10 | ||||
| export const BALANCE_LIMIT_MSATS = 1000000000 // 1m sat
 | ||||
| export const BALANCE_LIMIT_MSATS = 500000000 // 500k sat
 | ||||
| export const SN_USER_IDS = [616, 6030, 946, 4502] | ||||
| export const ANON_INV_PENDING_LIMIT = 100 | ||||
| export const ANON_BALANCE_LIMIT_MSATS = 0 // disabl
 | ||||
| export const ANON_BALANCE_LIMIT_MSATS = 0 // disable
 | ||||
| export const MAX_POLL_NUM_CHOICES = 10 | ||||
| export const MIN_POLL_NUM_CHOICES = 2 | ||||
| export const POLL_COST = 1 | ||||
| @ -58,6 +59,7 @@ export const LNURLP_COMMENT_MAX_LENGTH = 1000 | ||||
| export const RESERVED_MAX_USER_ID = 615 | ||||
| export const GLOBAL_SEED = 616 | ||||
| export const FREEBIE_BASE_COST_THRESHOLD = 10 | ||||
| export const USER_IDS_BALANCE_NO_LIMIT = [...SN_USER_IDS, AD_USER_ID] | ||||
| 
 | ||||
| export const FOUND_BLURBS = [ | ||||
|   'The harsh frontier is no place for the unprepared. This hat will protect you from the sun, dust, and other elements Mother Nature throws your way.', | ||||
|  | ||||
| @ -1,13 +1,12 @@ | ||||
| import serialize from '../api/resolvers/serial.js' | ||||
| import { sendUserNotification } from '../api/webPush/index.js' | ||||
| import { ANON_USER_ID } from '../lib/constants.js' | ||||
| import { ANON_USER_ID, SN_USER_IDS } from '../lib/constants.js' | ||||
| import { msatsToSats, numWithUnits } from '../lib/format.js' | ||||
| 
 | ||||
| const ITEM_EACH_REWARD = 4.0 | ||||
| const UPVOTE_EACH_REWARD = 4.0 | ||||
| const TOP_PERCENTILE = 33 | ||||
| const TOTAL_UPPER_BOUND_MSATS = 1000000000 | ||||
| const REDUCE_REWARDS = [616, 6030, 946, 4502] | ||||
| 
 | ||||
| export function earn ({ models }) { | ||||
|   return async function ({ name }) { | ||||
| @ -115,7 +114,7 @@ export function earn ({ models }) { | ||||
|       -- early multiplier: 10/ln(early_rank + e) | ||||
|       -- we also weight by trust in a step wise fashion | ||||
|       upvoter_ratios AS ( | ||||
|           SELECT "userId", sum(early_multiplier*tipped_ratio*ratio*CASE WHEN users.id = ANY (${REDUCE_REWARDS}) THEN 0.2 ELSE CEIL(users.trust*2)+1 END) as upvoter_ratio, | ||||
|           SELECT "userId", sum(early_multiplier*tipped_ratio*ratio*CASE WHEN users.id = ANY (${SN_USER_IDS}) THEN 0.2 ELSE CEIL(users.trust*2)+1 END) as upvoter_ratio, | ||||
|               "parentId" IS NULL as "isPost", CASE WHEN "parentId" IS NULL THEN 'TIP_POST' ELSE 'TIP_COMMENT' END as type | ||||
|           FROM ( | ||||
|               SELECT *, | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| import * as math from 'mathjs' | ||||
| import { ANON_USER_ID } from '../lib/constants.js' | ||||
| import { ANON_USER_ID, SN_USER_IDS } from '../lib/constants.js' | ||||
| 
 | ||||
| export function trust ({ boss, models }) { | ||||
|   return async function () { | ||||
| @ -28,7 +28,6 @@ const MIN_SUCCESS = 1 | ||||
| const DISAGREE_MULT = 10 | ||||
| // https://en.wikipedia.org/wiki/Normal_distribution#Quantile_function
 | ||||
| const Z_CONFIDENCE = 6.109410204869 // 99.9999999% confidence
 | ||||
| const SEEDS = [616, 6030, 946, 4502] | ||||
| const GLOBAL_ROOT = 616 | ||||
| const SEED_WEIGHT = 0.25 | ||||
| const AGAINST_MSAT_MIN = 1000 | ||||
| @ -74,7 +73,7 @@ function trustGivenGraph (graph) { | ||||
| 
 | ||||
|   console.timeLog('trust', 'transforming result') | ||||
| 
 | ||||
|   const seedIdxs = SEEDS.map(id => posByUserId[id]) | ||||
|   const seedIdxs = SN_USER_IDS.map(id => posByUserId[id]) | ||||
|   const isOutlier = (fromIdx, idx) => [...seedIdxs, fromIdx].includes(idx) | ||||
|   const sqapply = (mat, fn) => { | ||||
|     let idx = 0 | ||||
| @ -156,10 +155,10 @@ async function getGraph (models) { | ||||
|             confidence(before - disagree, b_total - after, ${Z_CONFIDENCE}) | ||||
|           ELSE 0 END AS trust | ||||
|         FROM user_pair | ||||
|         WHERE b_id <> ANY (${SEEDS}) | ||||
|         WHERE b_id <> ANY (${SN_USER_IDS}) | ||||
|         UNION ALL | ||||
|         SELECT a_id AS id, seed_id AS oid, ${MAX_TRUST}::numeric as trust | ||||
|         FROM user_pair, unnest(${SEEDS}::int[]) seed_id | ||||
|         FROM user_pair, unnest(${SN_USER_IDS}::int[]) seed_id | ||||
|         GROUP BY a_id, a_total, seed_id | ||||
|         UNION ALL | ||||
|         SELECT a_id AS id, a_id AS oid, ${MAX_TRUST}::float as trust | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user