c183e00d47
* cpmm initial commit: common logic, cloud functions * remove unnecessary property * contract type * rename 'calculate.ts' => 'calculate-dpm.ts' * rename dpm calculations * use focus hook * mechanism-agnostic calculations * bet panel: use new calculations * use new calculations * delete markets cloud function * use correct contract type in scripts / functions * calculate fixed payouts; bets list calculations * new bet: use calculateCpmmPurchase * getOutcomeProbabilityAfterBet * use deductFixedFees * fix auto-refactor * fix antes * separate logic to payouts-dpm, payouts-fixed * liquidity provision tracking * remove comment * liquidity label * create liquidity provision even if no ante bet * liquidity fee * use all bets for getFixedCancelPayouts * updateUserBalance: allow negative balances * store initialProbability in contracts * turn on liquidity fee; turn off creator fee * Include time param in tweet url, so image preview is re-fetched * share redemption * cpmm ContractBetsTable display * formatMoney: handle minus zero * filter out redemption bets * track fees on contract and bets; change fee schedule for cpmm markets; only pay out creator fees at resolution * small fixes * small fixes * Redeem shares pays back loans first * Fix initial point on graph * calculateCpmmPurchase: deduct creator fee * Filter out redemption bets from feed * set env to dev for user-testing purposes * creator fees messaging * new cfmm: k = y^(1-p) * n^p * addCpmmLiquidity * correct price function * enable fees * handle overflow * liquidity provision tracking * raise fees * Fix merge error * fix dpm free response payout for single outcome * Fix DPM payout calculation * Remove hardcoding as dev Co-authored-by: James Grugett <jahooma@gmail.com>
53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import * as admin from 'firebase-admin'
|
|
import * as _ from 'lodash'
|
|
|
|
import { initAdmin } from './script-init'
|
|
initAdmin('stephen')
|
|
|
|
import { Bet } from '../../../common/bet'
|
|
import { getDpmProbability } from '../../../common/calculate-dpm'
|
|
import { Binary, Contract, DPM, FullContract } from '../../../common/contract'
|
|
|
|
type DocRef = admin.firestore.DocumentReference
|
|
const firestore = admin.firestore()
|
|
|
|
async function migrateContract(
|
|
contractRef: DocRef,
|
|
contract: FullContract<DPM, Binary>
|
|
) {
|
|
const bets = await contractRef
|
|
.collection('bets')
|
|
.get()
|
|
.then((snap) => snap.docs.map((bet) => bet.data() as Bet))
|
|
|
|
const lastBet = _.sortBy(bets, (bet) => -bet.createdTime)[0]
|
|
if (lastBet) {
|
|
const probAfter = getDpmProbability(contract.totalShares)
|
|
|
|
await firestore
|
|
.doc(`contracts/${contract.id}/bets/${lastBet.id}`)
|
|
.update({ probAfter })
|
|
|
|
console.log('updating last bet from', lastBet.probAfter, 'to', probAfter)
|
|
}
|
|
}
|
|
|
|
async function migrateContracts() {
|
|
const snapshot = await firestore.collection('contracts').get()
|
|
const contracts = snapshot.docs.map(
|
|
(doc) => doc.data() as FullContract<DPM, Binary>
|
|
)
|
|
|
|
console.log('Loaded contracts', contracts.length)
|
|
|
|
for (const contract of contracts) {
|
|
const contractRef = firestore.doc(`contracts/${contract.id}`)
|
|
|
|
console.log('contract', contract.question)
|
|
|
|
await migrateContract(contractRef, contract)
|
|
}
|
|
}
|
|
|
|
if (require.main === module) migrateContracts().then(() => process.exit())
|