Script: Add liquidity to all markets in a group
This commit is contained in:
parent
b87e29d7c0
commit
14c008234a
|
@ -55,6 +55,7 @@ Returns the authenticated user.
|
|||
Gets all groups, in no particular order.
|
||||
|
||||
Parameters:
|
||||
|
||||
- `availableToUserId`: Optional. if specified, only groups that the user can
|
||||
join and groups they've already joined will be returned.
|
||||
|
||||
|
@ -81,7 +82,6 @@ Gets a group's markets by its unique ID.
|
|||
Requires no authorization.
|
||||
Note: group is singular in the URL.
|
||||
|
||||
|
||||
### `GET /v0/markets`
|
||||
|
||||
Lists all markets, ordered by creation date descending.
|
||||
|
@ -582,12 +582,17 @@ $ curl https://manifold.markets/api/v0/market -X POST -H 'Content-Type: applicat
|
|||
"initialProb":25}'
|
||||
```
|
||||
|
||||
### `POST /v0/market/[marketId]/add-liquidity`
|
||||
|
||||
Adds a specified amount of liquidity into the market.
|
||||
|
||||
- `amount`: Required. The amount of liquidity to add, in M$.
|
||||
|
||||
### `POST /v0/market/[marketId]/close`
|
||||
|
||||
Closes a market on behalf of the authorized user.
|
||||
- `closeTime`: Optional. Milliseconds since the epoch to close the market at. If not provided, the market will be closed immediately. Cannot provide close time in past.
|
||||
|
||||
- `closeTime`: Optional. Milliseconds since the epoch to close the market at. If not provided, the market will be closed immediately. Cannot provide close time in past.
|
||||
|
||||
### `POST /v0/market/[marketId]/resolve`
|
||||
|
||||
|
|
52
functions/src/scripts/contest/bulk-add-liquidity.ts
Normal file
52
functions/src/scripts/contest/bulk-add-liquidity.ts
Normal file
|
@ -0,0 +1,52 @@
|
|||
// Run with `npx ts-node src/scripts/contest/resolve-markets.ts`
|
||||
|
||||
const DOMAIN = 'http://localhost:3000'
|
||||
// Dev API key for Cause Exploration Prizes (@CEP)
|
||||
// const API_KEY = '188f014c-0ba2-4c35-9e6d-88252e281dbf'
|
||||
// DEV API key for Criticism and Red Teaming (@CARTBot)
|
||||
const API_KEY = '6ff1f78a-32fe-43b2-b31b-9e3c78c5f18c'
|
||||
|
||||
// Warning: Checking these in can be dangerous!
|
||||
// Prod API key for @CEPBot
|
||||
|
||||
// Can just curl /v0/group/{slug} to get a group
|
||||
async function getGroupBySlug(slug: string) {
|
||||
const resp = await fetch(`${DOMAIN}/api/v0/group/${slug}`)
|
||||
return await resp.json()
|
||||
}
|
||||
|
||||
async function getMarketsByGroupId(id: string) {
|
||||
// API structure: /v0/group/by-id/[id]/markets
|
||||
const resp = await fetch(`${DOMAIN}/api/v0/group/by-id/${id}/markets`)
|
||||
return await resp.json()
|
||||
}
|
||||
|
||||
async function addLiquidityById(id: string, amount: number) {
|
||||
const resp = await fetch(`${DOMAIN}/api/v0/market/${id}/add-liquidity`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Authorization: `Key ${API_KEY}`,
|
||||
},
|
||||
body: JSON.stringify({
|
||||
amount: amount,
|
||||
}),
|
||||
})
|
||||
return await resp.json()
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const group = await getGroupBySlug('cart-contest')
|
||||
const markets = await getMarketsByGroupId(group.id)
|
||||
|
||||
// Count up some metrics
|
||||
console.log('Number of markets', markets.length)
|
||||
|
||||
// Resolve each market to NO
|
||||
for (const market of markets.slice(0, 3)) {
|
||||
console.log(market.slug, market.totalLiquidity)
|
||||
const resp = await addLiquidityById(market.id, 200)
|
||||
console.log(resp)
|
||||
}
|
||||
}
|
||||
main()
|
28
web/pages/api/v0/market/[id]/add-liquidity.ts
Normal file
28
web/pages/api/v0/market/[id]/add-liquidity.ts
Normal file
|
@ -0,0 +1,28 @@
|
|||
import { NextApiRequest, NextApiResponse } from 'next'
|
||||
import {
|
||||
CORS_ORIGIN_MANIFOLD,
|
||||
CORS_ORIGIN_LOCALHOST,
|
||||
} from 'common/envs/constants'
|
||||
import { applyCorsHeaders } from 'web/lib/api/cors'
|
||||
import { fetchBackend, forwardResponse } from 'web/lib/api/proxy'
|
||||
|
||||
export const config = { api: { bodyParser: true } }
|
||||
|
||||
export default async function route(req: NextApiRequest, res: NextApiResponse) {
|
||||
await applyCorsHeaders(req, res, {
|
||||
origin: [CORS_ORIGIN_MANIFOLD, CORS_ORIGIN_LOCALHOST],
|
||||
methods: 'POST',
|
||||
})
|
||||
|
||||
const { id } = req.query
|
||||
const contractId = id as string
|
||||
|
||||
if (req.body) req.body.contractId = contractId
|
||||
try {
|
||||
const backendRes = await fetchBackend(req, 'addliquidity')
|
||||
await forwardResponse(res, backendRes)
|
||||
} catch (err) {
|
||||
console.error('Error talking to cloud function: ', err)
|
||||
res.status(500).json({ message: 'Error communicating with backend.' })
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user