mirror of
https://github.com/oceanprotocol/ocean-subgraph.git
synced 2024-12-02 05:57:29 +01:00
fix errors, add order handler.
This commit is contained in:
parent
316dbeb9ad
commit
6470cb1c2c
@ -128,11 +128,26 @@ type Datatoken @entity {
|
|||||||
minter: User!
|
minter: User!
|
||||||
publisher: User!
|
publisher: User!
|
||||||
balances: [TokenBalance!] @derivedFrom(field: "datatokenId")
|
balances: [TokenBalance!] @derivedFrom(field: "datatokenId")
|
||||||
|
orders: [TokenOrder!] @derivedFrom(field: "datatokenId")
|
||||||
createTime: Int! # Block time datatoken was created
|
createTime: Int! # Block time datatoken was created
|
||||||
holdersCount: BigInt! # Number of addresses holding a balance of datatoken
|
holdersCount: BigInt! # Number of addresses holding a balance of datatoken
|
||||||
|
orderCount: BigInt! # Number of orders executed for this dataset
|
||||||
tx: Bytes # Datatoken creation transaction id
|
tx: Bytes # Datatoken creation transaction id
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type TokenOrder @entity {
|
||||||
|
id: ID! # datatokenId + userAddress + tx
|
||||||
|
datatokenId: Datatoken!
|
||||||
|
consumer: User!
|
||||||
|
payer: User!
|
||||||
|
amount: BigDecimal!
|
||||||
|
serviceId: Int!
|
||||||
|
timestamp: Int!
|
||||||
|
marketFeeCollector: User
|
||||||
|
marketFee: BigDecimal!
|
||||||
|
tx: Bytes
|
||||||
|
}
|
||||||
|
|
||||||
type TokenBalance @entity {
|
type TokenBalance @entity {
|
||||||
id: ID! # datatokenId + userAddress
|
id: ID! # datatokenId + userAddress
|
||||||
userAddress: User!
|
userAddress: User!
|
||||||
|
@ -6,7 +6,7 @@ import { log } from '@graphprotocol/graph-ts'
|
|||||||
|
|
||||||
import {
|
import {
|
||||||
OceanDatatokens,
|
OceanDatatokens,
|
||||||
Datatoken, PoolShare, Pool, User, TokenBalance
|
Datatoken, PoolShare, Pool, User, TokenBalance, TokenOrder
|
||||||
} from '../types/schema'
|
} from '../types/schema'
|
||||||
import {
|
import {
|
||||||
hexToDecimal,
|
hexToDecimal,
|
||||||
@ -14,7 +14,7 @@ import {
|
|||||||
tokenToDecimal,
|
tokenToDecimal,
|
||||||
createTokenBalanceEntity,
|
createTokenBalanceEntity,
|
||||||
updateDatatokenBalance,
|
updateDatatokenBalance,
|
||||||
saveTransaction,
|
saveTokenTransaction,
|
||||||
ZERO_BD, createPoolShareEntity, createUserEntity
|
ZERO_BD, createPoolShareEntity, createUserEntity
|
||||||
} from './helpers'
|
} from './helpers'
|
||||||
|
|
||||||
@ -37,8 +37,8 @@ export function handleTransfer(event: Transfer): void {
|
|||||||
let tokenBalanceToId = tokenId.concat('-').concat(event.params.to.toHex())
|
let tokenBalanceToId = tokenId.concat('-').concat(event.params.to.toHex())
|
||||||
let tokenBalanceFrom = TokenBalance.load(tokenBalanceFromId)
|
let tokenBalanceFrom = TokenBalance.load(tokenBalanceFromId)
|
||||||
let tokenBalanceTo = TokenBalance.load(tokenBalanceToId)
|
let tokenBalanceTo = TokenBalance.load(tokenBalanceToId)
|
||||||
let oldBalanceFrom = 0
|
let oldBalanceFrom = BigDecimal.fromString('0.0')
|
||||||
let oldBalanceTo = 0
|
let oldBalanceTo = BigDecimal.fromString('0.0')
|
||||||
|
|
||||||
let datatoken = Datatoken.load(tokenId)
|
let datatoken = Datatoken.load(tokenId)
|
||||||
|
|
||||||
@ -95,5 +95,34 @@ export function handleTransfer(event: Transfer): void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function handleOrderStarted(event: OrderStarted): void {
|
export function handleOrderStarted(event: OrderStarted): void {
|
||||||
|
let ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'
|
||||||
|
let tokenId = event.address.toHex()
|
||||||
|
let datatoken = Datatoken.load(tokenId)
|
||||||
|
if (datatoken == null) return
|
||||||
|
|
||||||
|
|
||||||
|
let payer = event.params.payer.toHex()
|
||||||
|
// let feeCollector = event.params.mrktFeeCollector
|
||||||
|
// let marketFee = event.params.marketFee
|
||||||
|
let tx = event.transaction.hash
|
||||||
|
let orderId = tokenId.concat('-').concat(payer).concat('-').concat(tx.toHexString())
|
||||||
|
let order = TokenOrder.load(orderId)
|
||||||
|
if (order == null) {
|
||||||
|
order = new TokenOrder(orderId)
|
||||||
|
}
|
||||||
|
order.datatokenId = tokenId
|
||||||
|
order.amount = tokenToDecimal(event.params.amount.toBigDecimal(), 18)
|
||||||
|
order.consumer = event.params.consumer.toHex()
|
||||||
|
order.payer = payer
|
||||||
|
order.serviceId = event.params.serviceId.toI32()
|
||||||
|
order.timestamp = event.params.timestamp.toI32()
|
||||||
|
if (event.params.mrktFeeCollector != null && event.params.mrktFeeCollector.toHex() != ZERO_ADDRESS) {
|
||||||
|
order.marketFeeCollector = event.params.mrktFeeCollector.toHexString()
|
||||||
|
}
|
||||||
|
order.marketFee = tokenToDecimal(event.params.marketFee.toBigDecimal(), 18)
|
||||||
|
order.tx = tx
|
||||||
|
|
||||||
|
order.save()
|
||||||
|
datatoken.orderCount = datatoken.orderCount + BigInt.fromI32(1)
|
||||||
|
datatoken.save()
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ import { TokenRegistered } from '../types/DTFactory/DTFactory'
|
|||||||
import { OceanDatatokens, Datatoken } from '../types/schema'
|
import { OceanDatatokens, Datatoken } from '../types/schema'
|
||||||
import { Datatoken as DatatokenContract } from '../types/templates'
|
import { Datatoken as DatatokenContract } from '../types/templates'
|
||||||
import {
|
import {
|
||||||
|
tokenToDecimal,
|
||||||
ZERO_BD,
|
ZERO_BD,
|
||||||
} from './helpers'
|
} from './helpers'
|
||||||
import { log } from '@graphprotocol/graph-ts'
|
import { log } from '@graphprotocol/graph-ts'
|
||||||
@ -19,12 +20,19 @@ export function handleNewToken(event: TokenRegistered): void {
|
|||||||
|
|
||||||
let datatoken = new Datatoken(event.params.tokenAddress.toHexString())
|
let datatoken = new Datatoken(event.params.tokenAddress.toHexString())
|
||||||
log.error('************************ handleNewToken: datatokenId {}', [datatoken.id.toString()])
|
log.error('************************ handleNewToken: datatokenId {}', [datatoken.id.toString()])
|
||||||
datatoken.minter = event.params.registeredBy
|
|
||||||
datatoken.publisher = event.params.registeredBy
|
datatoken.factoryID = event.address.toHexString()
|
||||||
|
datatoken.symbol = event.params.tokenSymbol
|
||||||
|
datatoken.name = event.params.tokenName
|
||||||
|
datatoken.decimals = 18
|
||||||
|
datatoken.address = event.params.tokenAddress.toHexString()
|
||||||
|
datatoken.cap = tokenToDecimal(event.params.tokenCap.toBigDecimal(), 18)
|
||||||
datatoken.supply = ZERO_BD
|
datatoken.supply = ZERO_BD
|
||||||
|
datatoken.minter = event.params.registeredBy.toHex()
|
||||||
|
datatoken.publisher = event.params.registeredBy.toHex()
|
||||||
datatoken.createTime = event.block.timestamp.toI32()
|
datatoken.createTime = event.block.timestamp.toI32()
|
||||||
datatoken.holdersCount = BigInt.fromI32(0)
|
datatoken.holdersCount = BigInt.fromI32(0)
|
||||||
datatoken.factoryID = event.address.toHexString()
|
datatoken.orderCount = BigInt.fromI32(0)
|
||||||
datatoken.tx = event.transaction.hash
|
datatoken.tx = event.transaction.hash
|
||||||
datatoken.save()
|
datatoken.save()
|
||||||
|
|
||||||
|
@ -7,13 +7,13 @@ import {
|
|||||||
ethereum
|
ethereum
|
||||||
} from '@graphprotocol/graph-ts'
|
} from '@graphprotocol/graph-ts'
|
||||||
import {
|
import {
|
||||||
Pool,
|
Pool,
|
||||||
User,
|
User,
|
||||||
PoolToken,
|
PoolToken,
|
||||||
PoolShare,
|
PoolShare,
|
||||||
TokenPrice,
|
TokenPrice,
|
||||||
Transaction,
|
PoolTransaction,
|
||||||
OceanPools, Datatoken, TokenBalance
|
OceanPools, Datatoken, TokenBalance, TokenTransaction
|
||||||
} from '../types/schema'
|
} from '../types/schema'
|
||||||
import { BToken } from '../types/templates/Pool/BToken'
|
import { BToken } from '../types/templates/Pool/BToken'
|
||||||
import { log } from '@graphprotocol/graph-ts'
|
import { log } from '@graphprotocol/graph-ts'
|
||||||
@ -27,7 +27,7 @@ export let OCEAN: string = (network == 'mainnet')
|
|||||||
: '0x8967BCF84170c91B0d24D4302C2376283b0B3a07'
|
: '0x8967BCF84170c91B0d24D4302C2376283b0B3a07'
|
||||||
|
|
||||||
export function hexToDecimal(hexString: String, decimals: i32): BigDecimal {
|
export function hexToDecimal(hexString: String, decimals: i32): BigDecimal {
|
||||||
let bytes = Bytes.fromHexString(hexString).reverse() as Bytes
|
let bytes = Bytes.fromHexString(hexString.toString()).reverse() as Bytes
|
||||||
let bi = BigInt.fromUnsignedBytes(bytes)
|
let bi = BigInt.fromUnsignedBytes(bytes)
|
||||||
let scale = BigInt.fromI32(10).pow(decimals as u8).toBigDecimal()
|
let scale = BigInt.fromI32(10).pow(decimals as u8).toBigDecimal()
|
||||||
return bi.divDecimal(scale)
|
return bi.divDecimal(scale)
|
||||||
@ -59,7 +59,7 @@ export function createPoolTokenEntity(id: string, pool: string, address: string)
|
|||||||
|
|
||||||
let poolToken = new PoolToken(id)
|
let poolToken = new PoolToken(id)
|
||||||
poolToken.poolId = pool
|
poolToken.poolId = pool
|
||||||
poolToken.tokenId = datatoken ? datatoken.id: null
|
poolToken.tokenId = datatoken ? datatoken.id: ''
|
||||||
poolToken.address = address
|
poolToken.address = address
|
||||||
poolToken.balance = ZERO_BD
|
poolToken.balance = ZERO_BD
|
||||||
poolToken.denormWeight = ZERO_BD
|
poolToken.denormWeight = ZERO_BD
|
||||||
@ -79,6 +79,7 @@ export function updatePoolLiquidity(id: string): void {
|
|||||||
let hasOceanPrice = false
|
let hasOceanPrice = false
|
||||||
let poolOcnLiquidity = ZERO_BD
|
let poolOcnLiquidity = ZERO_BD
|
||||||
let poolDTLiquidity = ZERO_BD
|
let poolDTLiquidity = ZERO_BD
|
||||||
|
return
|
||||||
|
|
||||||
let oceanPoolTokenId = id.concat('-').concat(OCEAN)
|
let oceanPoolTokenId = id.concat('-').concat(OCEAN)
|
||||||
let oceanPoolToken = PoolToken.load(oceanPoolTokenId)
|
let oceanPoolToken = PoolToken.load(oceanPoolTokenId)
|
||||||
@ -88,7 +89,7 @@ export function updatePoolLiquidity(id: string): void {
|
|||||||
if (dtTokenPrice !== null) {
|
if (dtTokenPrice !== null) {
|
||||||
let poolTokenId = id.concat('-').concat(DT)
|
let poolTokenId = id.concat('-').concat(DT)
|
||||||
let poolToken = PoolToken.load(poolTokenId)
|
let poolToken = PoolToken.load(poolTokenId)
|
||||||
poolDTLiquidity = wethTokenPrice.price.times(poolToken.balance).div(poolToken.denormWeight).times(pool.totalWeight)
|
poolDTLiquidity = TokenPrice.price.times(poolToken.balance).div(poolToken.denormWeight).times(pool.totalWeight)
|
||||||
hasPrice = true
|
hasPrice = true
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,12 +161,12 @@ export function decrPoolCount(finalized: boolean): void {
|
|||||||
factory.save()
|
factory.save()
|
||||||
}
|
}
|
||||||
|
|
||||||
export function saveTransaction(event: ethereum.Event, eventName: string): void {
|
export function savePoolTransaction(event: ethereum.Event, eventName: string): void {
|
||||||
let tx = event.transaction.hash.toHexString().concat('-').concat(event.logIndex.toString())
|
let tx = event.transaction.hash.toHexString().concat('-').concat(event.logIndex.toString())
|
||||||
let userAddress = event.transaction.from.toHex()
|
let userAddress = event.transaction.from.toHex()
|
||||||
let transaction = Transaction.load(tx)
|
let transaction = PoolTransaction.load(tx)
|
||||||
if (transaction == null) {
|
if (transaction == null) {
|
||||||
transaction = new Transaction(tx)
|
transaction = new PoolTransaction(tx)
|
||||||
}
|
}
|
||||||
transaction.event = eventName
|
transaction.event = eventName
|
||||||
transaction.poolAddress = event.address.toHex()
|
transaction.poolAddress = event.address.toHex()
|
||||||
@ -180,6 +181,26 @@ export function saveTransaction(event: ethereum.Event, eventName: string): void
|
|||||||
createUserEntity(userAddress)
|
createUserEntity(userAddress)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function saveTokenTransaction(event: ethereum.Event, eventName: string): void {
|
||||||
|
let tx = event.transaction.hash.toHexString().concat('-').concat(event.logIndex.toString())
|
||||||
|
let userAddress = event.transaction.from.toHex()
|
||||||
|
let transaction = TokenTransaction.load(tx)
|
||||||
|
if (transaction == null) {
|
||||||
|
transaction = new TokenTransaction(tx)
|
||||||
|
}
|
||||||
|
transaction.event = eventName
|
||||||
|
transaction.datatokenAddress = event.address.toHex()
|
||||||
|
transaction.userAddress = userAddress
|
||||||
|
transaction.gasUsed = event.transaction.gasUsed.toBigDecimal()
|
||||||
|
transaction.gasPrice = event.transaction.gasPrice.toBigDecimal()
|
||||||
|
transaction.tx = event.transaction.hash
|
||||||
|
transaction.timestamp = event.block.timestamp.toI32()
|
||||||
|
transaction.block = event.block.number.toI32()
|
||||||
|
transaction.save()
|
||||||
|
|
||||||
|
createUserEntity(userAddress)
|
||||||
|
}
|
||||||
|
|
||||||
export function createUserEntity(address: string): void {
|
export function createUserEntity(address: string): void {
|
||||||
if (User.load(address) == null) {
|
if (User.load(address) == null) {
|
||||||
let user = new User(address)
|
let user = new User(address)
|
||||||
|
@ -19,7 +19,7 @@ import {
|
|||||||
createPoolShareEntity,
|
createPoolShareEntity,
|
||||||
createPoolTokenEntity,
|
createPoolTokenEntity,
|
||||||
updatePoolLiquidity,
|
updatePoolLiquidity,
|
||||||
saveTransaction,
|
savePoolTransaction,
|
||||||
ZERO_BD,
|
ZERO_BD,
|
||||||
decrPoolCount
|
decrPoolCount
|
||||||
} from './helpers'
|
} from './helpers'
|
||||||
@ -37,7 +37,7 @@ export function handleSetSwapFee(event: LOG_CALL, swapFeeStr: string=null): void
|
|||||||
pool.swapFee = hexToDecimal(swapFeeStr, 18)
|
pool.swapFee = hexToDecimal(swapFeeStr, 18)
|
||||||
pool.save()
|
pool.save()
|
||||||
|
|
||||||
saveTransaction(event, 'setSwapFee')
|
// savePoolTransaction(event, 'setSwapFee')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function handleSetController(event: LOG_CALL): void {
|
export function handleSetController(event: LOG_CALL): void {
|
||||||
@ -47,17 +47,16 @@ export function handleSetController(event: LOG_CALL): void {
|
|||||||
pool.controller = controller
|
pool.controller = controller
|
||||||
pool.save()
|
pool.save()
|
||||||
|
|
||||||
saveTransaction(event, 'setController')
|
// savePoolTransaction(event, 'setController')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function handleSetPublicSwap(event: LOG_CALL): void {
|
export function handleSetPublicSwap(event: LOG_CALL): void {
|
||||||
let poolId = event.address.toHex()
|
let poolId = event.address.toHex()
|
||||||
let pool = Pool.load(poolId)
|
let pool = Pool.load(poolId)
|
||||||
let publicSwap = event.params.data.toHexString().slice(-1) == '1'
|
pool.publicSwap = event.params.data.toHexString().slice(-1) == '1'
|
||||||
pool.publicSwap = publicSwap
|
|
||||||
pool.save()
|
pool.save()
|
||||||
|
|
||||||
saveTransaction(event, 'setPublicSwap')
|
// savePoolTransaction(event, 'setPublicSwap')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function handleFinalize(event: LOG_CALL): void {
|
export function handleFinalize(event: LOG_CALL): void {
|
||||||
@ -85,31 +84,32 @@ export function handleFinalize(event: LOG_CALL): void {
|
|||||||
factory.finalizedPoolCount = factory.finalizedPoolCount + 1
|
factory.finalizedPoolCount = factory.finalizedPoolCount + 1
|
||||||
factory.save()
|
factory.save()
|
||||||
|
|
||||||
saveTransaction(event, 'finalize')
|
// savePoolTransaction(event, 'finalize')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function handleSetup(event: LOG_CALL): void {
|
export function handleSetup(event: LOG_CALL): void {
|
||||||
let poolId = event.address.toHex()
|
let poolId = event.address.toHex()
|
||||||
|
|
||||||
let data = event.params.data.toHexString()
|
let data = event.params.data.toHexString()
|
||||||
let dataTokenAddress = data.slice(34,74)
|
let dataTokenAddress = Address.fromString(data.slice(34,74)).toHexString()
|
||||||
let dataTokenAmount = data.slice(98,162)
|
let dataTokenAmount = data.slice(98,162)
|
||||||
let dataTokenWeight = data.slice(162,226)
|
let dataTokenWeight = data.slice(162,226)
|
||||||
let baseTokenAddress = data.slice(226, 290-24)
|
let baseTokenAddress = Address.fromString(data.slice(226, 290-24)).toHexString()
|
||||||
let baseTokenAmount = data.slice(290,354)
|
let baseTokenAmount = data.slice(290,354)
|
||||||
let baseTokenWeight = data.slice(354,418)
|
let baseTokenWeight = data.slice(354,418)
|
||||||
let swapFee = data.slice(418)
|
let swapFee = data.slice(418)
|
||||||
|
|
||||||
_handleRebind(event, poolId, dataTokenAddress, dataTokenAmount, dataTokenWeight)
|
_handleRebind(event, poolId, dataTokenAddress, dataTokenAmount, dataTokenWeight)
|
||||||
_handleRebind(event, poolId, baseTokenAddress, baseTokenAmount, baseTokenWeight)
|
_handleRebind(event, poolId, baseTokenAddress, baseTokenAmount, baseTokenWeight)
|
||||||
handleSetSwapFee(event, swapFee)
|
handleSetSwapFee(event, swapFee)
|
||||||
handleFinalize(event)
|
handleFinalize(event)
|
||||||
|
savePoolTransaction(event, 'setup')
|
||||||
saveTransaction(event, 'setup')
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function _handleRebind(event: LOG_CALL, poolId: string, tokenAddress: string, balanceStr: string, denormWeightStr: string): void {
|
export function _handleRebind(event: LOG_CALL, poolId: string, tokenAddress: string, balanceStr: string, denormWeightStr: string): void {
|
||||||
let pool = Pool.load(poolId)
|
let pool = Pool.load(poolId)
|
||||||
|
let decimals = BigInt.fromI32(18).toI32()
|
||||||
|
|
||||||
let tokenBytes = Bytes.fromHexString(tokenAddress) as Bytes
|
let tokenBytes = Bytes.fromHexString(tokenAddress) as Bytes
|
||||||
let tokensList = pool.tokensList || []
|
let tokensList = pool.tokensList || []
|
||||||
if (tokensList.indexOf(tokenBytes) == -1 ) {
|
if (tokensList.indexOf(tokenBytes) == -1 ) {
|
||||||
@ -117,9 +117,8 @@ export function _handleRebind(event: LOG_CALL, poolId: string, tokenAddress: str
|
|||||||
}
|
}
|
||||||
pool.tokensList = tokensList
|
pool.tokensList = tokensList
|
||||||
pool.tokensCount = BigInt.fromI32(tokensList.length)
|
pool.tokensCount = BigInt.fromI32(tokensList.length)
|
||||||
|
|
||||||
let address = Address.fromString(tokenAddress)
|
let address = Address.fromString(tokenAddress)
|
||||||
let denormWeight = hexToDecimal(denormWeightStr, 18)
|
let denormWeight = hexToDecimal(denormWeightStr, decimals)
|
||||||
|
|
||||||
let poolTokenId = poolId.concat('-').concat(address.toHexString())
|
let poolTokenId = poolId.concat('-').concat(address.toHexString())
|
||||||
let poolToken = PoolToken.load(poolTokenId)
|
let poolToken = PoolToken.load(poolTokenId)
|
||||||
@ -136,14 +135,11 @@ export function _handleRebind(event: LOG_CALL, poolId: string, tokenAddress: str
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let datatoken = poolToken.tokenId != null ? Datatoken.load(poolToken.tokenId) : null
|
|
||||||
let decimals = datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals
|
|
||||||
let balance = hexToDecimal(balanceStr, decimals)
|
|
||||||
|
|
||||||
|
let balance = hexToDecimal(balanceStr, decimals)
|
||||||
poolToken.balance = balance
|
poolToken.balance = balance
|
||||||
poolToken.denormWeight = denormWeight
|
poolToken.denormWeight = denormWeight
|
||||||
poolToken.save()
|
poolToken.save()
|
||||||
|
|
||||||
if (balance.equals(ZERO_BD)) {
|
if (balance.equals(ZERO_BD)) {
|
||||||
decrPoolCount(pool.finalized)
|
decrPoolCount(pool.finalized)
|
||||||
pool.active = false
|
pool.active = false
|
||||||
@ -163,7 +159,7 @@ export function handleRebind(event: LOG_CALL): void {
|
|||||||
event.params.data.toHexString().slice(138)
|
event.params.data.toHexString().slice(138)
|
||||||
)
|
)
|
||||||
|
|
||||||
saveTransaction(event, 'rebind')
|
savePoolTransaction(event, 'rebind')
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -184,14 +180,16 @@ export function handleJoinPool(event: LOG_JOIN): void {
|
|||||||
if (!poolToken) {
|
if (!poolToken) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let datatoken = poolToken.tokenId != null ? Datatoken.load(poolToken.tokenId) : null
|
|
||||||
|
let datatoken: Datatoken | null
|
||||||
|
datatoken = poolToken.tokenId != null ? Datatoken.load(poolToken.tokenId) : null
|
||||||
let decimals = datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals
|
let decimals = datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals
|
||||||
let tokenAmountIn = tokenToDecimal(event.params.tokenAmountIn.toBigDecimal(), decimals)
|
let tokenAmountIn = tokenToDecimal(event.params.tokenAmountIn.toBigDecimal(), decimals)
|
||||||
poolToken.balance = poolToken.balance.plus(tokenAmountIn)
|
poolToken.balance = poolToken.balance.plus(tokenAmountIn)
|
||||||
poolToken.save()
|
poolToken.save()
|
||||||
|
|
||||||
updatePoolLiquidity(poolId)
|
updatePoolLiquidity(poolId)
|
||||||
saveTransaction(event, 'join')
|
savePoolTransaction(event, 'join')
|
||||||
}
|
}
|
||||||
|
|
||||||
export function handleExitPool(event: LOG_EXIT): void {
|
export function handleExitPool(event: LOG_EXIT): void {
|
||||||
@ -203,7 +201,9 @@ export function handleExitPool(event: LOG_EXIT): void {
|
|||||||
if (!poolToken) {
|
if (!poolToken) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let datatoken = poolToken.tokenId != null ? Datatoken.load(poolToken.tokenId) : null
|
|
||||||
|
let datatoken: Datatoken | null
|
||||||
|
datatoken = poolToken.tokenId != null ? Datatoken.load(poolToken.tokenId) : null
|
||||||
let decimals = datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals
|
let decimals = datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals
|
||||||
let tokenAmountOut = tokenToDecimal(event.params.tokenAmountOut.toBigDecimal(), decimals)
|
let tokenAmountOut = tokenToDecimal(event.params.tokenAmountOut.toBigDecimal(), decimals)
|
||||||
let newAmount = poolToken.balance.minus(tokenAmountOut)
|
let newAmount = poolToken.balance.minus(tokenAmountOut)
|
||||||
@ -219,7 +219,7 @@ export function handleExitPool(event: LOG_EXIT): void {
|
|||||||
pool.save()
|
pool.save()
|
||||||
|
|
||||||
updatePoolLiquidity(poolId)
|
updatePoolLiquidity(poolId)
|
||||||
saveTransaction(event, 'exit')
|
savePoolTransaction(event, 'exit')
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************
|
/************************************
|
||||||
@ -235,7 +235,8 @@ export function handleSwap(event: LOG_SWAP): void {
|
|||||||
if (!poolTokenIn) {
|
if (!poolTokenIn) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
let tokenAmountIn = tokenToDecimal(event.params.tokenAmountIn.toBigDecimal(), poolTokenIn.decimals)
|
let dtIn = Datatoken.load(tokenIn)
|
||||||
|
let tokenAmountIn = tokenToDecimal(event.params.tokenAmountIn.toBigDecimal(), (dtIn == null) ? 18 : dtIn.decimals)
|
||||||
let newAmountIn = poolTokenIn.balance.plus(tokenAmountIn)
|
let newAmountIn = poolTokenIn.balance.plus(tokenAmountIn)
|
||||||
poolTokenIn.balance = newAmountIn
|
poolTokenIn.balance = newAmountIn
|
||||||
poolTokenIn.save()
|
poolTokenIn.save()
|
||||||
@ -243,7 +244,8 @@ export function handleSwap(event: LOG_SWAP): void {
|
|||||||
let tokenOut = event.params.tokenOut.toHex()
|
let tokenOut = event.params.tokenOut.toHex()
|
||||||
let poolTokenOutId = poolId.concat('-').concat(tokenOut.toString())
|
let poolTokenOutId = poolId.concat('-').concat(tokenOut.toString())
|
||||||
let poolTokenOut = PoolToken.load(poolTokenOutId)
|
let poolTokenOut = PoolToken.load(poolTokenOutId)
|
||||||
let tokenAmountOut = tokenToDecimal(event.params.tokenAmountOut.toBigDecimal(), poolTokenOut.decimals)
|
let dtOut = Datatoken.load(tokenOut)
|
||||||
|
let tokenAmountOut = tokenToDecimal(event.params.tokenAmountOut.toBigDecimal(), (dtOut == null) ? 18 : dtOut.decimals)
|
||||||
let newAmountOut = poolTokenOut.balance.minus(tokenAmountOut)
|
let newAmountOut = poolTokenOut.balance.minus(tokenAmountOut)
|
||||||
poolTokenOut.balance = newAmountOut
|
poolTokenOut.balance = newAmountOut
|
||||||
poolTokenOut.save()
|
poolTokenOut.save()
|
||||||
@ -310,9 +312,9 @@ export function handleSwap(event: LOG_SWAP): void {
|
|||||||
|
|
||||||
swap.caller = event.params.caller
|
swap.caller = event.params.caller
|
||||||
swap.tokenIn = event.params.tokenIn
|
swap.tokenIn = event.params.tokenIn
|
||||||
swap.tokenInSym = poolTokenIn.symbol
|
swap.tokenInSym = (dtIn == null) ? 'OCEAN' : dtIn.symbol
|
||||||
swap.tokenOut = event.params.tokenOut
|
swap.tokenOut = event.params.tokenOut
|
||||||
swap.tokenOutSym = poolTokenOut.symbol
|
swap.tokenOutSym = (dtOut == null) ? 'OCEAN' : dtOut.symbol
|
||||||
swap.tokenAmountIn = tokenAmountIn
|
swap.tokenAmountIn = tokenAmountIn
|
||||||
swap.tokenAmountOut = tokenAmountOut
|
swap.tokenAmountOut = tokenAmountOut
|
||||||
swap.poolAddress = event.address.toHex()
|
swap.poolAddress = event.address.toHex()
|
||||||
@ -325,7 +327,7 @@ export function handleSwap(event: LOG_SWAP): void {
|
|||||||
swap.timestamp = event.block.timestamp.toI32()
|
swap.timestamp = event.block.timestamp.toI32()
|
||||||
swap.save()
|
swap.save()
|
||||||
|
|
||||||
saveTransaction(event, 'swap')
|
savePoolTransaction(event, 'swap')
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************
|
/************************************
|
||||||
|
Loading…
Reference in New Issue
Block a user