Skip to content

Commit 7f945f0

Browse files
authored
Fix pools (#287)
* small cleanup * fix pools
1 parent 2839649 commit 7f945f0

14 files changed

+1402
-986
lines changed

abis/BPool.json

+94-65
Large diffs are not rendered by default.

abis/ERC721Factory.json

+27-12
Large diffs are not rendered by default.

abis/FactoryRouter.json

+1,143-789
Large diffs are not rendered by default.

schema.graphql

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ type Pool @entity {
9494
id: ID!
9595

9696
"owner address, pool controller"
97-
owner: String!
97+
controller: String!
9898

9999
"only finalized pools are relevant to us"
100100
isFinalized: Boolean!

src/mappings/erc20Templates.ts

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import { Order } from '../@types/schema'
2-
import { OrderStarted } from '../@types/templates/ERC20Template/ERC20Template'
2+
import {
3+
ConsumeMarketFees,
4+
NewPaymentCollector,
5+
OrderStarted,
6+
PublishMarketFees
7+
} from '../@types/templates/ERC20Template/ERC20Template'
8+
39
import { integer } from './utils/constants'
410
import { weiToDecimal } from './utils/generic'
511
import { getGlobalStats } from './utils/globalUtils'
@@ -58,6 +64,10 @@ export function handleOrderStarted(event: OrderStarted): void {
5864
token.save()
5965
}
6066

67+
export function handleNewPaymentCollector(event: NewPaymentCollector): void {}
68+
export function handlePublishMarketFees(event: PublishMarketFees): void {}
69+
export function handleConsumeMarketFees(event: ConsumeMarketFees): void {}
70+
6171
// export function handlePublishMarketFees(event: PublishMarketFees): void {
6272
// const order = Order.load(
6373
// getOrderId(

src/mappings/erc721Factory.ts

+3-7
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
1-
import { log } from '@graphprotocol/graph-ts'
21
import { NFTCreated, TokenCreated } from '../@types/ERC721Factory/ERC721Factory'
32
import { Nft, Token } from '../@types/schema'
3+
import { ERC20Template, ERC721Template } from '../@types/templates'
44
import { decimal, integer } from './utils/constants'
55
import { weiToDecimal } from './utils/generic'
66
import { getGlobalStats } from './utils/globalUtils'
77
import { getUser } from './utils/userUtils'
88

99
export function handleNftCreated(event: NFTCreated): void {
10-
log.warning('handleNftCreated is starting', [])
1110
const nft = new Nft(event.params.newTokenAddress.toHexString())
12-
11+
ERC721Template.create(event.params.newTokenAddress)
1312
const user = getUser(event.params.admin.toHexString())
1413
nft.owner = user.id
1514
nft.address = event.params.newTokenAddress.toHexString()
@@ -27,11 +26,8 @@ export function handleNftCreated(event: NFTCreated): void {
2726
}
2827

2928
export function handleNewToken(event: TokenCreated): void {
30-
log.warning('handleNewToken {} {}', [
31-
event.transaction.from.toHexString(),
32-
event.address.toHexString()
33-
])
3429
const token = new Token(event.params.newTokenAddress.toHexString())
30+
ERC20Template.create(event.params.newTokenAddress)
3531
token.isDatatoken = true
3632
token.address = event.params.newTokenAddress.toHexString()
3733
token.createdTimestamp = event.block.timestamp.toI32()

src/mappings/factoryRouter.ts

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { NewPool } from '../@types/FactoryRouter/FactoryRouter'
2+
import { Pool } from '../@types/schema'
3+
import { BPool } from '../@types/templates'
4+
5+
export function handleNewPool(event: NewPool): void {
6+
BPool.create(event.params.poolAddress)
7+
const pool = new Pool(event.params.poolAddress.toHexString())
8+
pool.save()
9+
}

src/mappings/nftUpdate.ts

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { log } from '@graphprotocol/graph-ts'
12
import { Nft, NftUpdate } from '../@types/schema'
23
import {
34
MetadataCreated,
@@ -12,6 +13,7 @@ function getId(tx: string, nftAddress: string): string {
1213
}
1314

1415
export function handleCreated(event: MetadataCreated): void {
16+
log.warning('nft handleCreated {}', [event.address.toHex()])
1517
const nftAddress = event.address.toHex()
1618
const nft = Nft.load(nftAddress)
1719
if (!nft) return

src/mappings/pool.ts

+19-2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { log } from '@graphprotocol/graph-ts'
12
import { PoolTransaction } from '../@types/schema'
23
import {
34
LOG_BPT,
@@ -9,6 +10,7 @@ import {
910
import { Transfer } from '../@types/templates/BPool/BToken'
1011
import { integer, PoolTransactionType } from './utils/constants'
1112
import { weiToDecimal } from './utils/generic'
13+
import { getGlobalStats } from './utils/globalUtils'
1214
import {
1315
calcSpotPrice,
1416
getPool,
@@ -21,6 +23,7 @@ import { getUser } from './utils/userUtils'
2123

2224
// kinda redundant code in join/swap/exit
2325
export function handleJoin(event: LOG_JOIN): void {
26+
log.warning('handle join {}', [event.address.toHex()])
2427
const pool = getPool(event.address.toHex())
2528
const user = getUser(event.params.caller.toHex())
2629
const poolTx = getPoolTransaction(event, user.id, PoolTransactionType.JOIN)
@@ -35,24 +38,33 @@ export function handleJoin(event: LOG_JOIN): void {
3538
event.params.tokenAmountIn.toBigDecimal(),
3639
token.decimals
3740
)
41+
log.warning('handle join ammount {} tokenAmountIn {}', [
42+
ammount.toString(),
43+
event.params.tokenAmountIn.toString()
44+
])
3845
if (token.isDatatoken) {
3946
poolTx.datatoken = token.id
4047
poolTx.datatokenValue = ammount
4148

4249
poolSnapshot.datatokenLiquidity =
4350
poolSnapshot.datatokenLiquidity.plus(ammount)
4451

45-
pool.datatokenLiquidity.plus(ammount)
52+
pool.datatokenLiquidity = pool.datatokenLiquidity.plus(ammount)
4653
} else {
4754
poolTx.baseToken = token.id
4855
poolTx.baseTokenValue = ammount
4956

5057
poolSnapshot.baseTokenLiquidity =
5158
poolSnapshot.baseTokenLiquidity.plus(ammount)
5259

53-
pool.baseTokenLiquidity.plus(ammount)
60+
pool.baseTokenLiquidity = pool.baseTokenLiquidity.plus(ammount)
5461
}
5562

63+
log.warning('handle join baseTokenLiquidity {} datatokenLiquidity {}', [
64+
pool.baseTokenLiquidity.toString(),
65+
pool.datatokenLiquidity.toString()
66+
])
67+
5668
poolSnapshot.save()
5769
poolTx.save()
5870
pool.save()
@@ -171,8 +183,10 @@ export function handleSwap(event: LOG_SWAP): void {
171183

172184
// setup is just to set token weight(it will mostly be 50:50) and spotPrice
173185
export function handleSetup(event: LOG_SETUP): void {
186+
log.warning('new Pool ', [])
174187
const pool = getPool(event.address.toHex())
175188

189+
pool.controller = event.params.caller.toHexString()
176190
const token = getToken(event.params.baseToken.toHex())
177191
pool.baseToken = token.id
178192
pool.baseTokenWeight = weiToDecimal(
@@ -203,6 +217,9 @@ export function handleSetup(event: LOG_SETUP): void {
203217
poolTx.save()
204218
}
205219

220+
const globalStats = getGlobalStats()
221+
globalStats.poolCount = globalStats.poolCount + 1
222+
globalStats.save()
206223
pool.save()
207224
datatoken.save()
208225
}

src/mappings/poolFactory.ts

-26
This file was deleted.

src/mappings/utils/generic.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ export function getOpfCollectorAddress(): string {
4646
return '0x967da4048cd07ab37855c090aaf366e4ce1b9f48'
4747
}
4848

49-
5049
export const OCEAN: string = getOceanAddress()
5150

5251
export function weiToDecimal(amount: BigDecimal, decimals: i32): BigDecimal {
@@ -57,5 +56,5 @@ export function weiToDecimal(amount: BigDecimal, decimals: i32): BigDecimal {
5756
}
5857

5958
export function gweiToEth(ammount: BigDecimal): BigDecimal {
60-
return ammount.div(BigDecimal.fromString('1.000.000.000'))
59+
return ammount.div(BigDecimal.fromString('1000000000'))
6160
}

src/mappings/utils/poolUtils.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
PoolTransaction
77
} from '../../@types/schema'
88
import { BPool } from '../../@types/templates/BPool/BPool'
9-
import { DAY, decimal } from './constants'
9+
import { DAY, decimal, integer } from './constants'
1010
import { gweiToEth, weiToDecimal } from './generic'
1111

1212
export function getPoolSharesId(
@@ -72,7 +72,8 @@ export function calcSpotPrice(
7272
// tokenIn is always the baseToken and tokenOut is the datatoken because we want the spot price to be in baseToken eg: 1 DT = 0.5 OCEAN
7373
const weiPrice = poolContract.try_getSpotPrice(
7474
Address.fromString(baseTokenAddress),
75-
Address.fromString(datatokenAddress)
75+
Address.fromString(datatokenAddress),
76+
integer.ZERO
7677
).value
7778
const price = weiToDecimal(weiPrice.toBigDecimal(), baseTokenDecimals)
7879

subgraph.rinkeby.yaml

+41-36
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ dataSources:
88
name: ERC721Factory
99
network: rinkeby
1010
source:
11-
address: '0xe4B39C90355899DB8f625D879B44Fa9C5Cdde550'
11+
address: '0x15087E3E9eAAAb37d32d9D06Fa4000309BD7Ee6D'
1212
abi: ERC721Factory
13-
startBlock: 9984045
13+
startBlock: 9989814
1414
mapping:
1515
kind: ethereum/events
16-
apiVersion: 0.0.5
16+
apiVersion: 0.0.6
1717
language: wasm/assemblyscript
1818
file: ./src/mappings/erc721Factory.ts
1919
entities:
@@ -30,12 +30,12 @@ dataSources:
3030
name: FixedRateExchange
3131
network: rinkeby
3232
source:
33-
address: '0x7084f7353bB7cfc92A65e7d23987Cb5D1A3Fb9b2'
33+
address: '0xB5f34bd0B3E8e59447fD5a750F2dE4262BABE66C'
3434
abi: FixedRateExchange
35-
startBlock: 9984045
35+
startBlock: 9989814
3636
mapping:
3737
kind: ethereum/events
38-
apiVersion: 0.0.5
38+
apiVersion: 0.0.6
3939
language: wasm/assemblyscript
4040
file: ./src/mappings/fixedRateExchange.ts
4141
entities:
@@ -64,12 +64,12 @@ dataSources:
6464
name: Dispenser
6565
network: rinkeby
6666
source:
67-
address: '0xa8fFDd525835795C940370FB816f82a5F7F5F860'
67+
address: '0x17b1760c20eAc7A2656412412F6020e6c00b78BD'
6868
abi: Dispenser
69-
startBlock: 9984045
69+
startBlock: 9989814
7070
mapping:
7171
kind: ethereum/events
72-
apiVersion: 0.0.5
72+
apiVersion: 0.0.6
7373
language: wasm/assemblyscript
7474
file: ./src/mappings/dispenser.ts
7575
entities:
@@ -90,6 +90,28 @@ dataSources:
9090
handler: handleTokensDispensed
9191
- event: OwnerWithdrawed(indexed address,indexed address,uint256)
9292
handler: handleOwnerWinthdraw
93+
94+
- kind: ethereum/contract
95+
name: FactoryRouter
96+
network: rinkeby
97+
source:
98+
address: '0x31066E8eFe281C755dC21d828bdF30363D055baB'
99+
abi: FactoryRouter
100+
startBlock: 9989814
101+
mapping:
102+
kind: ethereum/events
103+
apiVersion: 0.0.6
104+
language: wasm/assemblyscript
105+
file: ./src/mappings/factoryRouter.ts
106+
entities:
107+
- FactoryRouter
108+
abis:
109+
- name: FactoryRouter
110+
file: ./abis/FactoryRouter.json
111+
eventHandlers:
112+
- event: NewPool(indexed address,bool)
113+
handler: handleNewPool
114+
93115
templates:
94116
- name: ERC20Template
95117
kind: ethereum/contract
@@ -98,7 +120,7 @@ templates:
98120
abi: ERC20Template
99121
mapping:
100122
kind: ethereum/events
101-
apiVersion: 0.0.5
123+
apiVersion: 0.0.6
102124
language: wasm/assemblyscript
103125
file: ./src/mappings/erc20Templates.ts
104126
entities:
@@ -121,32 +143,15 @@ templates:
121143
handler: handlePublishMarketFees
122144
- event: ConsumeMarketFees(indexed address,indexed address,uint256)
123145
handler: handleConsumeMarketFees
124-
- kind: ethereum/contract
125-
name: BFactory
126-
network: rinkeby
127-
source:
128-
abi: BFactory
129-
mapping:
130-
kind: ethereum/events
131-
apiVersion: 0.0.5
132-
language: wasm/assemblyscript
133-
file: ./src/mappings/poolFactory.ts
134-
entities:
135-
- BFactory
136-
abis:
137-
- name: BFactory
138-
file: ./abis/BFactory.json
139-
eventHandlers:
140-
- event: BPoolCreated(indexed address,indexed address,indexed address,address,address,address)
141-
handler: handleNewPool
142-
- kind: ethereum/contract
143-
name: BPool
146+
147+
- name: BPool
148+
kind: ethereum/contract
144149
network: rinkeby
145150
source:
146151
abi: BPool
147152
mapping:
148153
kind: ethereum/events
149-
apiVersion: 0.0.5
154+
apiVersion: 0.0.6
150155
language: wasm/assemblyscript
151156
file: ./src/mappings/pool.ts
152157
entities:
@@ -158,6 +163,8 @@ templates:
158163
file: ./abis/BToken.json
159164
- name: BMath
160165
file: ./abis/BMath.json
166+
- name: ERC20
167+
file: ./abis/ERC20.json
161168
eventHandlers:
162169
- event: LOG_SWAP(indexed address,indexed address,indexed address,uint256,uint256,uint256)
163170
handler: handleSwap
@@ -167,18 +174,16 @@ templates:
167174
handler: handleExit
168175
- event: LOG_SETUP(indexed address,indexed address,uint256,uint256,indexed address,uint256,uint256)
169176
handler: handleSetup
170-
- event: LOG_BPT(uint256)
171-
handler: handleBpt
172-
- event: Transfer(indexed address,indexed address,uint256)
173-
handler: handlerBptTransfer
177+
178+
174179
- name: ERC721Template
175180
kind: ethereum/contract
176181
network: rinkeby
177182
source:
178183
abi: ERC721Template
179184
mapping:
180185
kind: ethereum/events
181-
apiVersion: 0.0.5
186+
apiVersion: 0.0.6
182187
language: wasm/assemblyscript
183188
file: ./src/mappings/nftUpdate.ts
184189
entities:

0 commit comments

Comments
 (0)