mirror of
https://github.com/oceanprotocol/ocean-subgraph.git
synced 2024-12-02 05:57:29 +01:00
delete old
This commit is contained in:
parent
f6a0a874a2
commit
736c5bb5db
@ -1,188 +0,0 @@
|
|||||||
import { BigInt, BigDecimal } from '@graphprotocol/graph-ts'
|
|
||||||
import { OrderStarted, Transfer } from '../@types/templates/DataToken/DataToken'
|
|
||||||
|
|
||||||
import {
|
|
||||||
Datatoken,
|
|
||||||
Global,
|
|
||||||
PoolFactory,
|
|
||||||
TokenBalance,
|
|
||||||
TokenOrder,
|
|
||||||
User
|
|
||||||
} from '../@types/schema'
|
|
||||||
import {
|
|
||||||
tokenToDecimal,
|
|
||||||
updateTokenBalance,
|
|
||||||
ZERO_BD,
|
|
||||||
MINUS_1_BD,
|
|
||||||
saveTokenTransaction,
|
|
||||||
getGlobalStats
|
|
||||||
} from '../helpers'
|
|
||||||
|
|
||||||
/************************************
|
|
||||||
********** Pool Controls ***********
|
|
||||||
************************************/
|
|
||||||
|
|
||||||
export function handleTransfer(event: Transfer): void {
|
|
||||||
const tokenId = event.address.toHex()
|
|
||||||
|
|
||||||
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'
|
|
||||||
|
|
||||||
const amount = tokenToDecimal(event.params.value.toBigDecimal(), 18)
|
|
||||||
const tokenShareFrom = event.params.from.toHex()
|
|
||||||
const tokenShareTo = event.params.to.toHex()
|
|
||||||
const tokenBalanceFromId = tokenId.concat('-').concat(tokenShareFrom)
|
|
||||||
const tokenBalanceToId = tokenId.concat('-').concat(tokenShareTo)
|
|
||||||
let tokenBalanceFrom = TokenBalance.load(tokenBalanceFromId)
|
|
||||||
let tokenBalanceTo = TokenBalance.load(tokenBalanceToId)
|
|
||||||
let oldBalanceFrom = BigDecimal.fromString('0.0')
|
|
||||||
let oldBalanceTo = BigDecimal.fromString('0.0')
|
|
||||||
|
|
||||||
const isMint = tokenShareFrom == ZERO_ADDRESS
|
|
||||||
const isBurn = tokenShareTo == ZERO_ADDRESS
|
|
||||||
|
|
||||||
const datatoken = Datatoken.load(tokenId)
|
|
||||||
if (!datatoken) return
|
|
||||||
|
|
||||||
if (isMint) {
|
|
||||||
tokenBalanceTo = TokenBalance.load(tokenBalanceToId)
|
|
||||||
oldBalanceTo = tokenBalanceTo == null ? ZERO_BD : tokenBalanceTo.balance
|
|
||||||
datatoken.supply = datatoken.supply.plus(amount)
|
|
||||||
updateTokenBalance(tokenBalanceToId, tokenId, tokenShareTo, amount)
|
|
||||||
} else if (isBurn) {
|
|
||||||
tokenBalanceFrom = TokenBalance.load(tokenBalanceFromId)
|
|
||||||
oldBalanceFrom =
|
|
||||||
tokenBalanceFrom == null ? ZERO_BD : tokenBalanceFrom.balance
|
|
||||||
datatoken.supply = datatoken.supply.minus(amount)
|
|
||||||
updateTokenBalance(
|
|
||||||
tokenBalanceFromId,
|
|
||||||
tokenId,
|
|
||||||
tokenShareFrom,
|
|
||||||
amount.times(MINUS_1_BD)
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
tokenBalanceFrom = TokenBalance.load(tokenBalanceFromId)
|
|
||||||
oldBalanceFrom =
|
|
||||||
tokenBalanceFrom == null ? ZERO_BD : tokenBalanceFrom.balance
|
|
||||||
datatoken.supply = datatoken.supply.minus(amount)
|
|
||||||
updateTokenBalance(
|
|
||||||
tokenBalanceFromId,
|
|
||||||
tokenId,
|
|
||||||
tokenShareFrom,
|
|
||||||
amount.times(MINUS_1_BD)
|
|
||||||
)
|
|
||||||
|
|
||||||
tokenBalanceTo = TokenBalance.load(tokenBalanceToId)
|
|
||||||
oldBalanceTo = tokenBalanceTo == null ? ZERO_BD : tokenBalanceTo.balance
|
|
||||||
datatoken.supply = datatoken.supply.plus(amount)
|
|
||||||
updateTokenBalance(tokenBalanceToId, tokenId, tokenShareTo, amount)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
tokenBalanceTo != null &&
|
|
||||||
tokenBalanceTo.balance.notEqual(ZERO_BD) &&
|
|
||||||
oldBalanceTo.equals(ZERO_BD)
|
|
||||||
) {
|
|
||||||
datatoken.holderCount += BigInt.fromI32(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (
|
|
||||||
tokenBalanceFrom != null &&
|
|
||||||
tokenBalanceFrom.balance.equals(ZERO_BD) &&
|
|
||||||
oldBalanceFrom.notEqual(ZERO_BD)
|
|
||||||
) {
|
|
||||||
datatoken.holderCount -= BigInt.fromI32(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
datatoken.save()
|
|
||||||
saveTokenTransaction(event, 'Transfer')
|
|
||||||
}
|
|
||||||
|
|
||||||
export function handleOrderStarted(event: OrderStarted): void {
|
|
||||||
const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'
|
|
||||||
const tokenId = event.address.toHex()
|
|
||||||
const datatoken = Datatoken.load(tokenId)
|
|
||||||
if (!datatoken) return
|
|
||||||
|
|
||||||
const payer = event.params.payer.toHex()
|
|
||||||
// let feeCollector = event.params.mrktFeeCollector
|
|
||||||
// let marketFee = event.params.marketFee
|
|
||||||
const tx = event.transaction.hash
|
|
||||||
const orderId = tokenId
|
|
||||||
.concat('-')
|
|
||||||
.concat(payer)
|
|
||||||
.concat('-')
|
|
||||||
.concat(tx.toHexString())
|
|
||||||
let order = TokenOrder.load(orderId)
|
|
||||||
if (order == null) {
|
|
||||||
order = new TokenOrder(orderId)
|
|
||||||
}
|
|
||||||
if (!order) return
|
|
||||||
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.block = event.block.number.toI32()
|
|
||||||
|
|
||||||
order.save()
|
|
||||||
|
|
||||||
const orderVolume = datatoken.orderVolume
|
|
||||||
datatoken.orderVolume = orderVolume
|
|
||||||
? orderVolume.plus(order.amount)
|
|
||||||
: BigDecimal.fromString('0')
|
|
||||||
|
|
||||||
const orderCount = datatoken.orderCount
|
|
||||||
datatoken.orderCount = orderCount
|
|
||||||
? orderCount.plus(BigInt.fromI32(1))
|
|
||||||
: BigInt.fromI32(0)
|
|
||||||
|
|
||||||
datatoken.save()
|
|
||||||
|
|
||||||
saveTokenTransaction(event, 'OrderStarted')
|
|
||||||
|
|
||||||
let factory = PoolFactory.load('1')
|
|
||||||
|
|
||||||
if (factory == null) {
|
|
||||||
factory = new PoolFactory('1')
|
|
||||||
factory.totalOceanLiquidity = ZERO_BD
|
|
||||||
factory.totalSwapVolume = ZERO_BD
|
|
||||||
factory.totalSwapFee = ZERO_BD
|
|
||||||
factory.totalValueLocked = ZERO_BD
|
|
||||||
factory.orderCount = BigInt.fromI32(0)
|
|
||||||
factory.poolCount = 0
|
|
||||||
factory.finalizedPoolCount = 0
|
|
||||||
}
|
|
||||||
if (factory !== null) {
|
|
||||||
const orderCount = factory.orderCount
|
|
||||||
factory.orderCount = orderCount
|
|
||||||
? orderCount.plus(BigInt.fromI32(1))
|
|
||||||
: BigInt.fromI32(0)
|
|
||||||
const totalOrderValue = factory.totalOrderVolume
|
|
||||||
factory.totalOrderVolume = totalOrderValue
|
|
||||||
? totalOrderValue.plus(order.amount)
|
|
||||||
: BigDecimal.fromString('0')
|
|
||||||
factory.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
const user = User.load(datatoken.minter)
|
|
||||||
if (user !== null) {
|
|
||||||
user.nrSales = user.nrSales + 1
|
|
||||||
user.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
const gStats: Global = getGlobalStats()
|
|
||||||
if (gStats !== null) {
|
|
||||||
gStats.orderCount = factory.orderCount
|
|
||||||
gStats.totalOrderVolume = factory.totalOrderVolume
|
|
||||||
gStats.save()
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,166 +0,0 @@
|
|||||||
import { Address, BigInt, ethereum, log } from '@graphprotocol/graph-ts'
|
|
||||||
import {
|
|
||||||
Activated,
|
|
||||||
Deactivated,
|
|
||||||
AcceptedMinter,
|
|
||||||
RemovedMinter,
|
|
||||||
TokensDispensed,
|
|
||||||
OwnerWithdrawed,
|
|
||||||
Dispenser as DispenserEntity
|
|
||||||
} from '../@types/Dispenser/Dispenser'
|
|
||||||
|
|
||||||
import {
|
|
||||||
Dispenser,
|
|
||||||
DispenserTransaction,
|
|
||||||
User,
|
|
||||||
Datatoken
|
|
||||||
} from '../../@types/schema'
|
|
||||||
|
|
||||||
import { tokenToDecimal } from '../../helpers'
|
|
||||||
|
|
||||||
function _processDispenserUpdate(
|
|
||||||
event: ethereum.Event,
|
|
||||||
datatoken: string,
|
|
||||||
contractAddress: Address
|
|
||||||
): void {
|
|
||||||
const dt = Datatoken.load(datatoken)
|
|
||||||
if (!dt) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
let dispenser = Dispenser.load(datatoken)
|
|
||||||
if (!dispenser) {
|
|
||||||
dispenser = new Dispenser(datatoken)
|
|
||||||
}
|
|
||||||
const dispenserEntity = DispenserEntity.bind(contractAddress)
|
|
||||||
const dispenserStatus = dispenserEntity.try_status(
|
|
||||||
Address.fromString(datatoken)
|
|
||||||
)
|
|
||||||
if (dispenserStatus.reverted) return
|
|
||||||
dispenser.active = dispenserStatus.value.value0
|
|
||||||
let owner = User.load(dispenserStatus.value.value1.toHexString())
|
|
||||||
if (!owner) {
|
|
||||||
owner = new User(dispenserStatus.value.value1.toHexString())
|
|
||||||
owner.save()
|
|
||||||
}
|
|
||||||
dispenser.owner = owner.id
|
|
||||||
dispenser.minterApproved = dispenserStatus.value.value2
|
|
||||||
dispenser.isTrueMinter = dispenserStatus.value.value3
|
|
||||||
dispenser.maxTokens = tokenToDecimal(
|
|
||||||
dispenserStatus.value.value4.toBigDecimal(),
|
|
||||||
18
|
|
||||||
)
|
|
||||||
dispenser.maxBalance = tokenToDecimal(
|
|
||||||
dispenserStatus.value.value5.toBigDecimal(),
|
|
||||||
18
|
|
||||||
)
|
|
||||||
dispenser.balance = tokenToDecimal(
|
|
||||||
dispenserStatus.value.value6.toBigDecimal(),
|
|
||||||
18
|
|
||||||
)
|
|
||||||
dispenser.datatoken = dt.id
|
|
||||||
dispenser.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
export function handleDispenserActivated(event: Activated): void {
|
|
||||||
_processDispenserUpdate(
|
|
||||||
event,
|
|
||||||
event.params.datatokenAddress.toHexString(),
|
|
||||||
event.address
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export function handleDispenserDeactivated(event: Deactivated): void {
|
|
||||||
_processDispenserUpdate(
|
|
||||||
event,
|
|
||||||
event.params.datatokenAddress.toHexString(),
|
|
||||||
event.address
|
|
||||||
)
|
|
||||||
}
|
|
||||||
export function handleDispenserAcceptedMinter(event: AcceptedMinter): void {
|
|
||||||
_processDispenserUpdate(
|
|
||||||
event,
|
|
||||||
event.params.datatokenAddress.toHexString(),
|
|
||||||
event.address
|
|
||||||
)
|
|
||||||
}
|
|
||||||
export function handleDispenserRemovedMinter(event: RemovedMinter): void {
|
|
||||||
_processDispenserUpdate(
|
|
||||||
event,
|
|
||||||
event.params.datatokenAddress.toHexString(),
|
|
||||||
event.address
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
export function handleDispenserTokensDispensed(event: TokensDispensed): void {
|
|
||||||
_processDispenserUpdate(
|
|
||||||
event,
|
|
||||||
event.params.datatokenAddress.toHexString(),
|
|
||||||
event.address
|
|
||||||
)
|
|
||||||
const dt = Datatoken.load(event.params.datatokenAddress.toHexString())
|
|
||||||
if (!dt) {
|
|
||||||
log.warning('Tokens dispensed, but no datatoken ? ', [
|
|
||||||
event.params.datatokenAddress.toHexString()
|
|
||||||
])
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const tx = event.transaction.hash
|
|
||||||
const id = tx
|
|
||||||
.toHexString()
|
|
||||||
.concat('-')
|
|
||||||
.concat(event.params.datatokenAddress.toHexString())
|
|
||||||
log.info('Created dispenser in handleDispenserTokensDispensed with id {}', [
|
|
||||||
id
|
|
||||||
])
|
|
||||||
const dispensers = new DispenserTransaction(id)
|
|
||||||
dispensers.dispenserId = event.params.datatokenAddress.toHexString()
|
|
||||||
dispensers.datatoken = event.params.datatokenAddress.toHexString()
|
|
||||||
dispensers.user = event.params.userAddress.toHexString()
|
|
||||||
dispensers.amount = tokenToDecimal(
|
|
||||||
event.params.amount.toBigDecimal(),
|
|
||||||
BigInt.fromI32(18).toI32()
|
|
||||||
)
|
|
||||||
dispensers.block = event.block.number.toI32()
|
|
||||||
dispensers.timestamp = event.block.timestamp.toI32()
|
|
||||||
dispensers.tx = tx
|
|
||||||
dispensers.type = 'dispense'
|
|
||||||
dispensers.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
export function handleDispenserOwnerWithdrawed(event: OwnerWithdrawed): void {
|
|
||||||
_processDispenserUpdate(
|
|
||||||
event,
|
|
||||||
event.params.datatoken.toHexString(),
|
|
||||||
event.address
|
|
||||||
)
|
|
||||||
const dt = Datatoken.load(event.params.datatoken.toHexString())
|
|
||||||
if (!dt) {
|
|
||||||
log.warning('Tokens dispensed, but no datatoken ? ', [
|
|
||||||
event.params.datatoken.toHexString()
|
|
||||||
])
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const tx = event.transaction.hash
|
|
||||||
const id = tx
|
|
||||||
.toHexString()
|
|
||||||
.concat('-')
|
|
||||||
.concat(event.params.datatoken.toHexString())
|
|
||||||
log.info('Created dispenser in handleDispenserOwnerWithdrawed with id {} ', [
|
|
||||||
id
|
|
||||||
])
|
|
||||||
const dispensers = new DispenserTransaction(id)
|
|
||||||
dispensers.dispenserId = event.params.datatoken.toHexString()
|
|
||||||
dispensers.datatoken = event.params.datatoken.toHexString()
|
|
||||||
dispensers.user = event.params.owner.toHexString()
|
|
||||||
dispensers.amount = tokenToDecimal(
|
|
||||||
event.params.amount.toBigDecimal(),
|
|
||||||
BigInt.fromI32(18).toI32()
|
|
||||||
)
|
|
||||||
dispensers.block = event.block.number.toI32()
|
|
||||||
dispensers.timestamp = event.block.timestamp.toI32()
|
|
||||||
dispensers.tx = tx
|
|
||||||
dispensers.type = 'withdraw'
|
|
||||||
dispensers.save()
|
|
||||||
}
|
|
@ -1,51 +0,0 @@
|
|||||||
import { BigInt, log } from '@graphprotocol/graph-ts'
|
|
||||||
import { TokenRegistered } from '../@types/DTFactory/DTFactory'
|
|
||||||
import {
|
|
||||||
DatatokenFactory,
|
|
||||||
Datatoken as DatatokenEntity
|
|
||||||
} from '../@types/schema'
|
|
||||||
import { DataToken as DatatokenDataSource } from '../@types/templates'
|
|
||||||
|
|
||||||
import { createUserEntity, tokenToDecimal, ZERO_BD } from '../helpers'
|
|
||||||
|
|
||||||
export function handleNewToken(event: TokenRegistered): void {
|
|
||||||
let factory = DatatokenFactory.load('1')
|
|
||||||
|
|
||||||
// if no factory yet, set up blank initial
|
|
||||||
if (factory == null) {
|
|
||||||
factory = new DatatokenFactory('1')
|
|
||||||
factory.tokenCount = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
const datatoken = new DatatokenEntity(event.params.tokenAddress.toHexString())
|
|
||||||
log.warning('************************ handleNewToken: datatokenId {}', [
|
|
||||||
datatoken.id.toString()
|
|
||||||
])
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
createUserEntity(event.params.registeredBy.toHex())
|
|
||||||
datatoken.minter = event.params.registeredBy.toHex()
|
|
||||||
datatoken.publisher = event.params.registeredBy.toHex()
|
|
||||||
|
|
||||||
datatoken.holderCount = BigInt.fromI32(0)
|
|
||||||
datatoken.orderCount = BigInt.fromI32(0)
|
|
||||||
datatoken.orderVolume = BigInt.fromI32(0).toBigDecimal()
|
|
||||||
datatoken.metadataUpdateCount = BigInt.fromI32(0)
|
|
||||||
|
|
||||||
datatoken.createTime = event.block.timestamp.toI32()
|
|
||||||
datatoken.tx = event.transaction.hash
|
|
||||||
datatoken.save()
|
|
||||||
|
|
||||||
factory.tokenCount = factory.tokenCount + 1
|
|
||||||
factory.save()
|
|
||||||
|
|
||||||
DatatokenDataSource.create(event.params.tokenAddress)
|
|
||||||
}
|
|
@ -1,71 +0,0 @@
|
|||||||
import { BigInt, BigDecimal, log } from '@graphprotocol/graph-ts'
|
|
||||||
import { BPoolRegistered } from '../@types/Factory/Factory'
|
|
||||||
import { PoolFactory, Pool, Global } from '../@types/schema'
|
|
||||||
import { Pool as PoolContract } from '../@types/templates'
|
|
||||||
import { ZERO_BD, getGlobalStats } from '../helpers'
|
|
||||||
|
|
||||||
export function handleNewPool(event: BPoolRegistered): void {
|
|
||||||
let factory = PoolFactory.load('1')
|
|
||||||
|
|
||||||
if (factory == null) {
|
|
||||||
factory = new PoolFactory('1')
|
|
||||||
factory.totalOceanLiquidity = ZERO_BD
|
|
||||||
factory.totalSwapVolume = ZERO_BD
|
|
||||||
factory.totalSwapFee = ZERO_BD
|
|
||||||
factory.totalValueLocked = ZERO_BD
|
|
||||||
factory.orderCount = BigInt.fromI32(0)
|
|
||||||
factory.poolCount = 0
|
|
||||||
factory.finalizedPoolCount = 0
|
|
||||||
}
|
|
||||||
|
|
||||||
const pool = new Pool(event.params.bpoolAddress.toHexString())
|
|
||||||
log.info('************************ handleNewPool: poolId {}', [
|
|
||||||
pool.id.toString()
|
|
||||||
])
|
|
||||||
|
|
||||||
pool.factoryID = event.address.toHexString()
|
|
||||||
pool.controller = event.params.registeredBy
|
|
||||||
pool.publicSwap = false
|
|
||||||
pool.finalized = false
|
|
||||||
pool.symbol = ''
|
|
||||||
pool.name = ''
|
|
||||||
// pool.cap =
|
|
||||||
pool.active = true
|
|
||||||
pool.swapFee = BigDecimal.fromString('0.000001')
|
|
||||||
|
|
||||||
pool.totalWeight = ZERO_BD
|
|
||||||
pool.totalShares = ZERO_BD
|
|
||||||
pool.totalSwapVolume = ZERO_BD
|
|
||||||
pool.totalSwapFee = ZERO_BD
|
|
||||||
pool.valueLocked = ZERO_BD
|
|
||||||
|
|
||||||
pool.datatokenReserve = ZERO_BD
|
|
||||||
pool.oceanReserve = ZERO_BD
|
|
||||||
pool.spotPrice = ZERO_BD // : BigDecimal!
|
|
||||||
pool.consumePrice = ZERO_BD // : BigDecimal!
|
|
||||||
|
|
||||||
pool.tokenCount = BigInt.fromI32(0)
|
|
||||||
pool.holderCount = BigInt.fromI32(0)
|
|
||||||
pool.joinCount = BigInt.fromI32(0)
|
|
||||||
pool.exitCount = BigInt.fromI32(0)
|
|
||||||
pool.swapCount = BigInt.fromI32(0)
|
|
||||||
pool.transactionCount = BigInt.fromI32(0)
|
|
||||||
|
|
||||||
pool.datatokenAddress = ''
|
|
||||||
|
|
||||||
pool.createTime = event.block.timestamp.toI32()
|
|
||||||
pool.tx = event.transaction.hash
|
|
||||||
|
|
||||||
pool.save()
|
|
||||||
|
|
||||||
factory.poolCount = factory.poolCount + 1
|
|
||||||
factory.save()
|
|
||||||
const gStats: Global | null = getGlobalStats()
|
|
||||||
|
|
||||||
if (gStats) {
|
|
||||||
gStats.poolCount = factory.poolCount
|
|
||||||
gStats.save()
|
|
||||||
}
|
|
||||||
|
|
||||||
PoolContract.create(event.params.bpoolAddress)
|
|
||||||
}
|
|
@ -1,74 +0,0 @@
|
|||||||
import {
|
|
||||||
json,
|
|
||||||
BigInt,
|
|
||||||
ethereum,
|
|
||||||
log,
|
|
||||||
Bytes,
|
|
||||||
JSONValue,
|
|
||||||
JSONValueKind
|
|
||||||
} from '@graphprotocol/graph-ts'
|
|
||||||
import { MetadataUpdated, MetadataCreated } from '../@types/Metadata/Metadata'
|
|
||||||
|
|
||||||
import { Datatoken, MetadataUpdate } from '../@types/schema'
|
|
||||||
import { LZMA } from '../lzma/lzma'
|
|
||||||
|
|
||||||
export function handleMetadataEvent(
|
|
||||||
event: ethereum.Event,
|
|
||||||
dtAddress: string,
|
|
||||||
updatedBy: string,
|
|
||||||
created: boolean
|
|
||||||
): void {
|
|
||||||
const datatoken = Datatoken.load(dtAddress)
|
|
||||||
if (datatoken) {
|
|
||||||
const tx = event.transaction.hash
|
|
||||||
const id = tx.toHexString().concat('-').concat(dtAddress)
|
|
||||||
const metadataUpdate = new MetadataUpdate(id)
|
|
||||||
metadataUpdate.tx = tx
|
|
||||||
metadataUpdate.block = event.block.number.toI32()
|
|
||||||
metadataUpdate.timestamp = event.block.timestamp.toI32()
|
|
||||||
metadataUpdate.datatokenAddress = dtAddress
|
|
||||||
metadataUpdate.userAddress = updatedBy
|
|
||||||
metadataUpdate.datatokenId = dtAddress
|
|
||||||
metadataUpdate.save()
|
|
||||||
datatoken.metadataUpdateCount = datatoken.metadataUpdateCount.plus(
|
|
||||||
BigInt.fromI32(1)
|
|
||||||
)
|
|
||||||
datatoken.save()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export function handleMetadataUpdated(event: MetadataUpdated): void {
|
|
||||||
handleMetadataEvent(
|
|
||||||
event,
|
|
||||||
event.params.dataToken.toHexString(),
|
|
||||||
event.params.updatedBy.toHexString(),
|
|
||||||
false
|
|
||||||
)
|
|
||||||
}
|
|
||||||
export function jsonToString(val: JSONValue | null): string {
|
|
||||||
if (val != null && val.kind === JSONValueKind.STRING) {
|
|
||||||
return val.toString()
|
|
||||||
}
|
|
||||||
return ''
|
|
||||||
}
|
|
||||||
|
|
||||||
export function handleMetadataCreated(event: MetadataCreated): void {
|
|
||||||
const lzma = new LZMA()
|
|
||||||
const data = lzma.decode(event.params.data)
|
|
||||||
|
|
||||||
const obj = json.fromBytes(data.data as Bytes).toObject()
|
|
||||||
const did = obj.get('id')
|
|
||||||
const name = obj.get('service.attributes.main.name')
|
|
||||||
log.info('!!!!!!!!!!!!!!!!!!!!! DECOMPRESSED DATA {} {} {}', [
|
|
||||||
name.toString(),
|
|
||||||
did.toString(),
|
|
||||||
(data.data as Bytes).toString()
|
|
||||||
])
|
|
||||||
|
|
||||||
handleMetadataEvent(
|
|
||||||
event,
|
|
||||||
event.params.dataToken.toHexString(),
|
|
||||||
event.params.createdBy.toHexString(),
|
|
||||||
true
|
|
||||||
)
|
|
||||||
}
|
|
@ -1,577 +0,0 @@
|
|||||||
// import { BigInt, Address, BigDecimal, log } from '@graphprotocol/graph-ts'
|
|
||||||
// import {
|
|
||||||
// LOG_CALL,
|
|
||||||
// LOG_JOIN,
|
|
||||||
// LOG_EXIT,
|
|
||||||
// LOG_SWAP,
|
|
||||||
// Transfer,
|
|
||||||
// Pool as PoolEntity
|
|
||||||
// } from '../@types/templates/Pool/Pool'
|
|
||||||
|
|
||||||
// import {
|
|
||||||
// PoolFactory,
|
|
||||||
// Pool,
|
|
||||||
// PoolToken,
|
|
||||||
// PoolShare,
|
|
||||||
// Datatoken,
|
|
||||||
// PoolTransaction,
|
|
||||||
// Global
|
|
||||||
// } from '../@types/schema'
|
|
||||||
// import {
|
|
||||||
// hexToDecimal,
|
|
||||||
// tokenToDecimal,
|
|
||||||
// createPoolShareEntity,
|
|
||||||
// createPoolTokenEntity,
|
|
||||||
// ZERO_BD,
|
|
||||||
// MINUS_1_BD,
|
|
||||||
// decrPoolCount,
|
|
||||||
// updatePoolTransactionToken,
|
|
||||||
// createPoolTransaction,
|
|
||||||
// OCEAN,
|
|
||||||
// updatePoolTokenBalance,
|
|
||||||
// getOceanAddress,
|
|
||||||
// getGlobalStats,
|
|
||||||
// bigIntToDecimal
|
|
||||||
// } from '../helpers'
|
|
||||||
|
|
||||||
// /************************************
|
|
||||||
// ********** Pool Controls ***********
|
|
||||||
// ************************************/
|
|
||||||
|
|
||||||
// export function handleSetSwapFee(
|
|
||||||
// event: LOG_CALL,
|
|
||||||
// swapFeeStr: string | null = null
|
|
||||||
// ): void {
|
|
||||||
// const poolId = event.address.toHex()
|
|
||||||
// const pool = Pool.load(poolId)
|
|
||||||
// if (!pool) return
|
|
||||||
// if (!swapFeeStr) {
|
|
||||||
// swapFeeStr = event.params.data.toHexString().slice(-40)
|
|
||||||
// }
|
|
||||||
// if (swapFeeStr !== null) pool.swapFee = hexToDecimal(swapFeeStr, 18)
|
|
||||||
// pool.save()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// export function handleSetController(event: LOG_CALL): void {
|
|
||||||
// const poolId = event.address.toHex()
|
|
||||||
// const pool = Pool.load(poolId)
|
|
||||||
// if (!pool) return
|
|
||||||
// pool.controller = Address.fromString(
|
|
||||||
// event.params.data.toHexString().slice(-40)
|
|
||||||
// )
|
|
||||||
// pool.save()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// export function handleSetPublicSwap(event: LOG_CALL): void {
|
|
||||||
// const poolId = event.address.toHex()
|
|
||||||
// const pool = Pool.load(poolId)
|
|
||||||
// if (!pool) return
|
|
||||||
// pool.publicSwap = event.params.data.toHexString().slice(-1) == '1'
|
|
||||||
// pool.save()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// export function handleFinalize(event: LOG_CALL): void {
|
|
||||||
// const poolId = event.address.toHex()
|
|
||||||
// const pool = Pool.load(poolId)
|
|
||||||
// if (!pool) {
|
|
||||||
// log.error('Cannot handle finalize for unknown pool {} ', [poolId])
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// if (pool.tokenCount == BigInt.fromI32(0)) {
|
|
||||||
// log.error('Cannot mark pool {} finalized, because we have 0 tokenCount', [
|
|
||||||
// poolId
|
|
||||||
// ])
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// pool.finalized = true
|
|
||||||
// pool.symbol = 'BPT'
|
|
||||||
// pool.publicSwap = true
|
|
||||||
// pool.save()
|
|
||||||
|
|
||||||
// const factory = PoolFactory.load('1')
|
|
||||||
// if (!factory) return
|
|
||||||
// factory.finalizedPoolCount = factory.finalizedPoolCount + 1
|
|
||||||
// factory.save()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// export function _handleRebind(
|
|
||||||
// event: LOG_CALL,
|
|
||||||
// poolId: string,
|
|
||||||
// tokenAddress: string,
|
|
||||||
// balanceStr: string,
|
|
||||||
// denormWeightStr: string
|
|
||||||
// ): void {
|
|
||||||
// const pool = Pool.load(poolId)
|
|
||||||
// if (!pool) return
|
|
||||||
// const decimals = BigInt.fromI32(18).toI32()
|
|
||||||
|
|
||||||
// if (tokenAddress != OCEAN) {
|
|
||||||
// pool.datatokenAddress = tokenAddress
|
|
||||||
// }
|
|
||||||
// pool.tokenCount = pool.tokenCount.plus(BigInt.fromI32(1))
|
|
||||||
// const address = Address.fromString(tokenAddress)
|
|
||||||
// const denormWeight = hexToDecimal(denormWeightStr, decimals)
|
|
||||||
// const poolTokenId = poolId.concat('-').concat(address.toHexString())
|
|
||||||
// let poolToken = PoolToken.load(poolTokenId)
|
|
||||||
// if (poolToken == null) {
|
|
||||||
// createPoolTokenEntity(poolTokenId, poolId, address)
|
|
||||||
// poolToken = PoolToken.load(poolTokenId)
|
|
||||||
// pool.totalWeight = pool.totalWeight.plus(denormWeight)
|
|
||||||
// } else {
|
|
||||||
// const oldWeight = poolToken.denormWeight
|
|
||||||
// if (denormWeight > oldWeight) {
|
|
||||||
// pool.totalWeight = pool.totalWeight.plus(denormWeight).minus(oldWeight)
|
|
||||||
// } else {
|
|
||||||
// pool.totalWeight = pool.totalWeight.minus(oldWeight).minus(denormWeight)
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// if (!poolToken) return
|
|
||||||
// poolToken.denormWeight =
|
|
||||||
// denormWeight !== null ? denormWeight : BigDecimal.fromString('0')
|
|
||||||
// const balance = hexToDecimal(balanceStr, decimals)
|
|
||||||
// updatePoolTokenBalance(poolToken as PoolToken, balance, '_handleRebind')
|
|
||||||
|
|
||||||
// poolToken.save()
|
|
||||||
// if (balance.equals(ZERO_BD)) {
|
|
||||||
// decrPoolCount(pool.finalized)
|
|
||||||
// pool.active = false
|
|
||||||
// }
|
|
||||||
// pool.save()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// export function handleRebind(event: LOG_CALL): void {
|
|
||||||
// const poolId = event.address.toHex()
|
|
||||||
// _handleRebind(
|
|
||||||
// event,
|
|
||||||
// poolId,
|
|
||||||
// event.params.data.toHexString().slice(34, 74),
|
|
||||||
// event.params.data.toHexString().slice(74, 138),
|
|
||||||
// event.params.data.toHexString().slice(138)
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
|
|
||||||
// export function handleSetup(event: LOG_CALL): void {
|
|
||||||
// if (PoolTransaction.load(event.transaction.hash.toHexString()) != null) {
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const poolId = event.address.toHex()
|
|
||||||
// const data = event.params.data.toHexString()
|
|
||||||
// // First 2 chars are 0x
|
|
||||||
// // Next there is 8 chars
|
|
||||||
// // Next starts the data each params occupies exactly 64 chars
|
|
||||||
// // Each value is padded with 0s to the left
|
|
||||||
// // For an Address, need to remove the leading 24 zeros, because the address itself is 40 chars
|
|
||||||
// // For numbers we donot need to remove the leading zeros because they have no effect being on the left of the number
|
|
||||||
|
|
||||||
// // skip 8 then take the last 40 (2 + 8 + 24 = 34) to (2 + 8 + 64 = 74)
|
|
||||||
// const dataTokenAddress = Address.fromString(data.slice(34, 74)).toHexString()
|
|
||||||
|
|
||||||
// const dataTokenAmount = data.slice(74, 138) // 74+64
|
|
||||||
// const dataTokenWeight = data.slice(138, 202) // (74+64,74+(2*64)
|
|
||||||
// const baseTokenAddress = Address.fromString(
|
|
||||||
// data.slice(202 + 24, 266)
|
|
||||||
// ).toHexString() // (74+(2*64)+24, 74+(3*64))
|
|
||||||
// const baseTokenAmount = data.slice(266, 330) // (74+(3*64),74+(4*64))
|
|
||||||
// const baseTokenWeight = data.slice(330, 394) // (74+(4*64),74+(5*64))
|
|
||||||
// const swapFee = data.slice(394) // (74+(5*64), END)
|
|
||||||
|
|
||||||
// if (baseTokenAddress != OCEAN) {
|
|
||||||
// log.error('baseTokenAddress is not Ocean, but is {}', [baseTokenAddress])
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// const poolTokenId = poolId.concat('-').concat(baseTokenAddress)
|
|
||||||
// const poolToken = PoolToken.load(poolTokenId)
|
|
||||||
// if (!poolToken) return
|
|
||||||
|
|
||||||
// _handleRebind(
|
|
||||||
// event,
|
|
||||||
// poolId,
|
|
||||||
// dataTokenAddress,
|
|
||||||
// dataTokenAmount,
|
|
||||||
// dataTokenWeight
|
|
||||||
// )
|
|
||||||
// _handleRebind(
|
|
||||||
// event,
|
|
||||||
// poolId,
|
|
||||||
// baseTokenAddress,
|
|
||||||
// baseTokenAmount,
|
|
||||||
// baseTokenWeight
|
|
||||||
// )
|
|
||||||
// handleSetSwapFee(event, swapFee)
|
|
||||||
// handleFinalize(event)
|
|
||||||
// createPoolTransaction(event, 'setup', event.transaction.from.toHex())
|
|
||||||
|
|
||||||
// // update base token
|
|
||||||
// let amount = hexToDecimal(baseTokenAmount, 18)
|
|
||||||
|
|
||||||
// const poolTokenBalance = poolToken.balance
|
|
||||||
// const balance = poolTokenBalance
|
|
||||||
// ? poolTokenBalance
|
|
||||||
// : BigDecimal.fromString('0')
|
|
||||||
// updatePoolTransactionToken(
|
|
||||||
// event.transaction.hash.toHexString(),
|
|
||||||
// poolTokenId,
|
|
||||||
// amount,
|
|
||||||
// balance,
|
|
||||||
// ZERO_BD
|
|
||||||
// )
|
|
||||||
// // update the datatoken
|
|
||||||
// const poolDataToken = PoolToken.load(
|
|
||||||
// poolId.concat('-').concat(dataTokenAddress)
|
|
||||||
// )
|
|
||||||
// if (poolDataToken !== null) {
|
|
||||||
// amount = hexToDecimal(dataTokenAmount, 18)
|
|
||||||
// updatePoolTransactionToken(
|
|
||||||
// event.transaction.hash.toHexString(),
|
|
||||||
// poolId.concat('-').concat(dataTokenAddress),
|
|
||||||
// amount,
|
|
||||||
// poolDataToken.balance,
|
|
||||||
// ZERO_BD
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// /************************************
|
|
||||||
// ********** JOINS & EXITS ***********
|
|
||||||
// ************************************/
|
|
||||||
|
|
||||||
// export function handleJoinPool(event: LOG_JOIN): void {
|
|
||||||
// const poolId = event.address.toHex()
|
|
||||||
// const address = event.params.tokenIn.toHex()
|
|
||||||
// const ptx = event.transaction.hash.toHexString()
|
|
||||||
// const poolTokenId = poolId.concat('-').concat(address)
|
|
||||||
// const poolToken = PoolToken.load(poolTokenId)
|
|
||||||
// const pool = Pool.load(poolId)
|
|
||||||
// const datatoken = Datatoken.load(poolTokenId)
|
|
||||||
|
|
||||||
// const poolTx = PoolTransaction.load(ptx)
|
|
||||||
// if (poolTx !== null) return
|
|
||||||
// if (!pool || !poolToken || !datatoken) return
|
|
||||||
|
|
||||||
// if (pool.finalized == false) {
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// pool.joinCount = pool.joinCount.plus(BigInt.fromI32(1))
|
|
||||||
// pool.save()
|
|
||||||
|
|
||||||
// const decimals =
|
|
||||||
// datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals
|
|
||||||
// const tokenAmountIn = tokenToDecimal(
|
|
||||||
// event.params.tokenAmountIn.toBigDecimal(),
|
|
||||||
// decimals
|
|
||||||
// )
|
|
||||||
// updatePoolTokenBalance(
|
|
||||||
// poolToken as PoolToken,
|
|
||||||
// poolToken.balance.plus(tokenAmountIn),
|
|
||||||
// 'handleJoinPool'
|
|
||||||
// )
|
|
||||||
|
|
||||||
// poolToken.save()
|
|
||||||
// createPoolTransaction(event, 'join', event.params.caller.toHexString())
|
|
||||||
// updatePoolTransactionToken(
|
|
||||||
// event.transaction.hash.toHexString(),
|
|
||||||
// poolTokenId,
|
|
||||||
// tokenAmountIn,
|
|
||||||
// poolToken.balance,
|
|
||||||
// tokenAmountIn.times(pool.swapFee)
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
|
|
||||||
// export function handleExitPool(event: LOG_EXIT): void {
|
|
||||||
// const poolId = event.address.toHex()
|
|
||||||
|
|
||||||
// const address = event.params.tokenOut.toHex()
|
|
||||||
// const poolTokenId = poolId.concat('-').concat(address.toString())
|
|
||||||
// const pool = Pool.load(poolId)
|
|
||||||
// const poolToken = PoolToken.load(poolTokenId)
|
|
||||||
// const datatoken = Datatoken.load(poolTokenId)
|
|
||||||
// if (!poolToken || !pool || !datatoken) {
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
|
|
||||||
// const decimals =
|
|
||||||
// datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals
|
|
||||||
// const tokenAmountOut = tokenToDecimal(
|
|
||||||
// event.params.tokenAmountOut.toBigDecimal(),
|
|
||||||
// decimals
|
|
||||||
// )
|
|
||||||
// const newAmount = poolToken.balance.minus(tokenAmountOut)
|
|
||||||
// updatePoolTokenBalance(poolToken as PoolToken, newAmount, 'handleExitPool')
|
|
||||||
// poolToken.save()
|
|
||||||
|
|
||||||
// pool.exitCount = pool.exitCount.plus(BigInt.fromI32(1))
|
|
||||||
// if (newAmount.equals(ZERO_BD)) {
|
|
||||||
// decrPoolCount(pool.finalized)
|
|
||||||
// pool.active = false
|
|
||||||
// }
|
|
||||||
// pool.save()
|
|
||||||
|
|
||||||
// createPoolTransaction(event, 'exit', event.params.caller.toHexString())
|
|
||||||
// updatePoolTransactionToken(
|
|
||||||
// event.transaction.hash.toHexString(),
|
|
||||||
// poolTokenId,
|
|
||||||
// tokenAmountOut.times(MINUS_1_BD),
|
|
||||||
// poolToken.balance,
|
|
||||||
// tokenAmountOut.times(pool.swapFee)
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
|
|
||||||
// /************************************
|
|
||||||
// ************** SWAPS ***************
|
|
||||||
// ************************************/
|
|
||||||
|
|
||||||
// export function handleSwap(event: LOG_SWAP): void {
|
|
||||||
// const poolId = event.address.toHex()
|
|
||||||
// const ptx = event.transaction.hash.toHexString()
|
|
||||||
|
|
||||||
// const tokenIn = event.params.tokenIn.toHex()
|
|
||||||
// const poolTokenInId = poolId.concat('-').concat(tokenIn.toString())
|
|
||||||
// const poolTokenIn = PoolToken.load(poolTokenInId)
|
|
||||||
// if (!poolTokenIn) {
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// const dtIn = Datatoken.load(tokenIn)
|
|
||||||
// const tokenAmountIn = tokenToDecimal(
|
|
||||||
// event.params.tokenAmountIn.toBigDecimal(),
|
|
||||||
// dtIn == null ? 18 : dtIn.decimals
|
|
||||||
// )
|
|
||||||
// const newAmountIn = poolTokenIn.balance.plus(tokenAmountIn)
|
|
||||||
// updatePoolTokenBalance(
|
|
||||||
// poolTokenIn as PoolToken,
|
|
||||||
// newAmountIn,
|
|
||||||
// 'handleSwap.tokenIn'
|
|
||||||
// )
|
|
||||||
// poolTokenIn.save()
|
|
||||||
|
|
||||||
// const tokenOut = event.params.tokenOut.toHex()
|
|
||||||
// const poolTokenOutId = poolId.concat('-').concat(tokenOut.toString())
|
|
||||||
// const poolTokenOut = PoolToken.load(poolTokenOutId)
|
|
||||||
// const pool = Pool.load(poolId)
|
|
||||||
// const factory = PoolFactory.load('1')
|
|
||||||
// const dtOut = Datatoken.load(tokenOut)
|
|
||||||
// if (!poolTokenOut || !dtOut || !factory || !pool) return
|
|
||||||
|
|
||||||
// const tokenAmountOut = tokenToDecimal(
|
|
||||||
// event.params.tokenAmountOut.toBigDecimal(),
|
|
||||||
// dtOut == null ? 18 : dtOut.decimals
|
|
||||||
// )
|
|
||||||
// const newAmountOut = poolTokenOut.balance.minus(tokenAmountOut)
|
|
||||||
// updatePoolTokenBalance(
|
|
||||||
// poolTokenOut as PoolToken,
|
|
||||||
// newAmountOut,
|
|
||||||
// 'handleSwap.tokenOut'
|
|
||||||
// )
|
|
||||||
// poolTokenOut.save()
|
|
||||||
|
|
||||||
// pool.swapCount = pool.swapCount.plus(BigInt.fromI32(1))
|
|
||||||
// if (newAmountIn.equals(ZERO_BD) || newAmountOut.equals(ZERO_BD)) {
|
|
||||||
// decrPoolCount(pool.finalized)
|
|
||||||
// pool.active = false
|
|
||||||
// }
|
|
||||||
// if (tokenIn === getOceanAddress()) {
|
|
||||||
// pool.totalSwapVolume = pool.totalSwapVolume.plus(tokenAmountIn)
|
|
||||||
// factory.totalSwapVolume = factory.totalSwapVolume.plus(tokenAmountIn)
|
|
||||||
// } else {
|
|
||||||
// pool.totalSwapVolume = pool.totalSwapVolume.plus(tokenAmountOut)
|
|
||||||
// factory.totalSwapVolume = factory.totalSwapVolume.plus(tokenAmountOut)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// factory.save()
|
|
||||||
// pool.save()
|
|
||||||
// const gStats: Global = getGlobalStats()
|
|
||||||
// if (gStats !== null) {
|
|
||||||
// gStats.totalSwapVolume = factory.totalSwapVolume
|
|
||||||
// gStats.save()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// createPoolTransaction(event, 'swap', event.params.caller.toHexString())
|
|
||||||
// updatePoolTransactionToken(
|
|
||||||
// ptx,
|
|
||||||
// poolTokenIn.id,
|
|
||||||
// tokenAmountIn,
|
|
||||||
// poolTokenIn.balance,
|
|
||||||
// tokenAmountIn.times(pool.swapFee)
|
|
||||||
// )
|
|
||||||
// updatePoolTransactionToken(
|
|
||||||
// ptx,
|
|
||||||
// poolTokenOut.id,
|
|
||||||
// tokenAmountOut.times(MINUS_1_BD),
|
|
||||||
// poolTokenOut.balance,
|
|
||||||
// BigDecimal.fromString('0.0')
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
|
|
||||||
// /************************************
|
|
||||||
// *********** POOL SHARES ************
|
|
||||||
// ************************************/
|
|
||||||
|
|
||||||
// export function handleTransfer(event: Transfer): void {
|
|
||||||
// const poolId = event.address.toHex()
|
|
||||||
|
|
||||||
// const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'
|
|
||||||
|
|
||||||
// const isMint = event.params.from.toHex() == ZERO_ADDRESS
|
|
||||||
// const isBurn = event.params.to.toHex() == ZERO_ADDRESS
|
|
||||||
|
|
||||||
// const poolShareFromId = poolId.concat('-').concat(event.params.from.toHex())
|
|
||||||
// let poolShareFrom = PoolShare.load(poolShareFromId)
|
|
||||||
|
|
||||||
// const poolShareToId = poolId.concat('-').concat(event.params.to.toHex())
|
|
||||||
// let poolShareTo = PoolShare.load(poolShareToId)
|
|
||||||
// const poolShareToBalance = poolShareTo == null ? ZERO_BD : poolShareTo.balance
|
|
||||||
|
|
||||||
// const pool = Pool.load(poolId)
|
|
||||||
// if (!pool) return
|
|
||||||
// const poolTx = PoolTransaction.load(event.transaction.hash.toHexString())
|
|
||||||
// const value = tokenToDecimal(event.params.value.toBigDecimal(), 18)
|
|
||||||
|
|
||||||
// if (isMint) {
|
|
||||||
// if (poolShareTo == null) {
|
|
||||||
// createPoolShareEntity(poolShareToId, poolId, event.params.to.toHex())
|
|
||||||
// poolShareTo = PoolShare.load(poolShareToId)
|
|
||||||
// }
|
|
||||||
// if (poolShareTo !== null) {
|
|
||||||
// poolShareTo.balance = poolShareTo.balance.plus(value)
|
|
||||||
// poolShareTo.save()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// pool.totalShares = pool.totalShares.plus(value)
|
|
||||||
// if (poolTx != null) {
|
|
||||||
// poolTx.sharesTransferAmount = value
|
|
||||||
// if (poolShareTo !== null) poolTx.sharesBalance = poolShareTo.balance
|
|
||||||
// }
|
|
||||||
// } else if (isBurn) {
|
|
||||||
// if (poolShareFrom == null) {
|
|
||||||
// createPoolShareEntity(poolShareFromId, poolId, event.params.from.toHex())
|
|
||||||
// poolShareFrom = PoolShare.load(poolShareFromId)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// pool.totalShares = pool.totalShares.minus(value)
|
|
||||||
// if (poolTx !== null) {
|
|
||||||
// poolTx.sharesTransferAmount = poolTx.sharesTransferAmount.minus(value)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (poolTx !== null && poolShareFrom !== null) {
|
|
||||||
// poolTx.sharesBalance = poolShareFrom.balance
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (poolShareFrom !== null) {
|
|
||||||
// poolShareFrom.balance = poolShareFrom.balance.minus(value)
|
|
||||||
// poolShareFrom.save()
|
|
||||||
// }
|
|
||||||
// } else {
|
|
||||||
// if (poolShareTo == null) {
|
|
||||||
// createPoolShareEntity(poolShareToId, poolId, event.params.to.toHex())
|
|
||||||
// poolShareTo = PoolShare.load(poolShareToId)
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (poolShareTo !== null) {
|
|
||||||
// poolShareTo.balance = poolShareTo.balance.plus(value)
|
|
||||||
// poolShareTo.save()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (poolShareFrom == null) {
|
|
||||||
// createPoolShareEntity(poolShareFromId, poolId, event.params.from.toHex())
|
|
||||||
// poolShareFrom = PoolShare.load(poolShareFromId)
|
|
||||||
// }
|
|
||||||
// if (poolShareFrom !== null) {
|
|
||||||
// poolShareFrom.balance = poolShareFrom.balance.minus(value)
|
|
||||||
// poolShareFrom.save()
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (
|
|
||||||
// poolShareTo != null &&
|
|
||||||
// poolShareTo.balance.notEqual(ZERO_BD) &&
|
|
||||||
// poolShareToBalance.equals(ZERO_BD)
|
|
||||||
// ) {
|
|
||||||
// pool.holderCount = pool.holderCount.plus(BigInt.fromI32(1))
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (
|
|
||||||
// poolShareFrom !== null &&
|
|
||||||
// poolShareFrom.balance.equals(ZERO_BD) &&
|
|
||||||
// poolShareFrom.balance.notEqual(ZERO_BD)
|
|
||||||
// ) {
|
|
||||||
// pool.holderCount = pool.holderCount.plus(BigInt.fromI32(1))
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (poolTx !== null) {
|
|
||||||
// poolTx.save()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// pool.save()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// /************************************
|
|
||||||
// *********** GULP ************
|
|
||||||
// ************************************/
|
|
||||||
// export function handleGulp(event: LOG_CALL): void {
|
|
||||||
// const poolId = event.address.toHex()
|
|
||||||
// const ptx = event.transaction.hash.toHexString()
|
|
||||||
// // we need to check the contract balance & compare with our internal balances
|
|
||||||
// const pool = Pool.load(poolId)
|
|
||||||
// const poolEbtity = PoolEntity.bind(Address.fromString(poolId))
|
|
||||||
// if (!pool) {
|
|
||||||
// log.warning('Gulp called, but cannot load pool {}', [poolId])
|
|
||||||
// return
|
|
||||||
// }
|
|
||||||
// const ocnToken = PoolToken.load(poolId.concat('-').concat(OCEAN))
|
|
||||||
// const dtToken = PoolToken.load(
|
|
||||||
// poolId.concat('-').concat(pool.datatokenAddress)
|
|
||||||
// )
|
|
||||||
|
|
||||||
// // get the balances from the contract
|
|
||||||
// // for ocean
|
|
||||||
// if (ocnToken) {
|
|
||||||
// const ocnTokenBalance = ocnToken.balance
|
|
||||||
// const balanceAttempt = poolEbtity.try_getBalance(Address.fromString(OCEAN))
|
|
||||||
// if (!balanceAttempt.reverted) {
|
|
||||||
// const contractBalance = bigIntToDecimal(balanceAttempt.value, 18)
|
|
||||||
// if (
|
|
||||||
// ocnToken.balance.notEqual(contractBalance) &&
|
|
||||||
// contractBalance.ge(ZERO_BD)
|
|
||||||
// ) {
|
|
||||||
// // we have a difference. let's absorb that
|
|
||||||
// createPoolTransaction(event, 'gulp', event.params.caller.toHexString())
|
|
||||||
// ocnToken.balance = contractBalance
|
|
||||||
// ocnToken.save()
|
|
||||||
// updatePoolTransactionToken(
|
|
||||||
// ptx,
|
|
||||||
// ocnToken.id,
|
|
||||||
// contractBalance.minus(ocnTokenBalance),
|
|
||||||
// contractBalance,
|
|
||||||
// ZERO_BD
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// // for dt
|
|
||||||
// if (dtToken) {
|
|
||||||
// const dtTokenBalance = dtToken.balance
|
|
||||||
// const balanceAttempt = poolEbtity.try_getBalance(
|
|
||||||
// Address.fromString(pool.datatokenAddress)
|
|
||||||
// )
|
|
||||||
// if (!balanceAttempt.reverted) {
|
|
||||||
// const contractBalance = bigIntToDecimal(balanceAttempt.value, 18)
|
|
||||||
// if (
|
|
||||||
// dtToken.balance.notEqual(contractBalance) &&
|
|
||||||
// contractBalance.ge(ZERO_BD)
|
|
||||||
// ) {
|
|
||||||
// // we have a difference. let's absorb that
|
|
||||||
// createPoolTransaction(event, 'gulp', event.params.caller.toHexString())
|
|
||||||
// dtToken.balance = contractBalance
|
|
||||||
// dtToken.save()
|
|
||||||
// updatePoolTransactionToken(
|
|
||||||
// ptx,
|
|
||||||
// dtToken.id,
|
|
||||||
// contractBalance.minus(dtTokenBalance),
|
|
||||||
// contractBalance,
|
|
||||||
// ZERO_BD
|
|
||||||
// )
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
Loading…
Reference in New Issue
Block a user