Using the right token amount precision for events
This commit is contained in:
parent
82440be5a3
commit
3dab66fba7
|
@ -50,7 +50,7 @@ interface TokenEvent @entity {
|
||||||
|
|
||||||
# Information about to event itself
|
# Information about to event itself
|
||||||
token: Token!
|
token: Token!
|
||||||
amount: BigInt!
|
amount: BigDecimal!
|
||||||
sender: Bytes!
|
sender: Bytes!
|
||||||
|
|
||||||
# Information about block and transaction
|
# Information about block and transaction
|
||||||
|
@ -65,8 +65,8 @@ type BurnEvent implements TokenEvent @entity {
|
||||||
" Token address "
|
" Token address "
|
||||||
token: Token!
|
token: Token!
|
||||||
|
|
||||||
" Quantity of tokens nurned "
|
" Quantity of tokens burned "
|
||||||
amount: BigInt!
|
amount: BigDecimal!
|
||||||
|
|
||||||
" Transaction sender address "
|
" Transaction sender address "
|
||||||
sender: Bytes!
|
sender: Bytes!
|
||||||
|
@ -91,7 +91,7 @@ type MintEvent implements TokenEvent @entity {
|
||||||
token: Token!
|
token: Token!
|
||||||
|
|
||||||
" Quantity of tokens minted "
|
" Quantity of tokens minted "
|
||||||
amount: BigInt!
|
amount: BigDecimal!
|
||||||
|
|
||||||
" Transaction sender address "
|
" Transaction sender address "
|
||||||
sender: Bytes!
|
sender: Bytes!
|
||||||
|
@ -119,7 +119,7 @@ type TransferEvent implements TokenEvent @entity {
|
||||||
token: Token!
|
token: Token!
|
||||||
|
|
||||||
" Quantity of tokens transferred "
|
" Quantity of tokens transferred "
|
||||||
amount: BigInt!
|
amount: BigDecimal!
|
||||||
|
|
||||||
" Transaction sender address "
|
" Transaction sender address "
|
||||||
sender: Bytes!
|
sender: Bytes!
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { log } from '@graphprotocol/graph-ts'
|
import { BigInt, BigDecimal, log } from '@graphprotocol/graph-ts'
|
||||||
|
|
||||||
import * as schema from '../../generated/schema'
|
import * as schema from '../../generated/schema'
|
||||||
|
|
||||||
|
@ -7,11 +7,11 @@ import { Burn } from '../../generated/TokenRegistry/templates/BurnableToken/Burn
|
||||||
import { Mint } from '../../generated/TokenRegistry/templates/MintableToken/Mintable'
|
import { Mint } from '../../generated/TokenRegistry/templates/MintableToken/Mintable'
|
||||||
|
|
||||||
export function handleTransfer(event: Transfer): void {
|
export function handleTransfer(event: Transfer): void {
|
||||||
log.debug('Handling token transfer, address={}', [event.address.toHex()])
|
let token = schema.Token.load(event.address.toHex())
|
||||||
|
|
||||||
let entity = new schema.TransferEvent(event.transaction.hash.toHex() + '-' + event.logIndex.toString())
|
let entity = new schema.TransferEvent(event.transaction.hash.toHex() + '-' + event.logIndex.toString())
|
||||||
entity.token = event.address.toHex()
|
entity.token = event.address.toHex()
|
||||||
entity.amount = event.params.value
|
entity.amount = toDecimal(event.params.value, token.decimals)
|
||||||
entity.sender = event.params.from
|
entity.sender = event.params.from
|
||||||
entity.source = event.params.from
|
entity.source = event.params.from
|
||||||
entity.destination = event.params.to
|
entity.destination = event.params.to
|
||||||
|
@ -24,11 +24,11 @@ export function handleTransfer(event: Transfer): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function handleBurn(event: Burn): void {
|
export function handleBurn(event: Burn): void {
|
||||||
log.debug('Handling token burn, address={}', [event.address.toHex()])
|
let token = schema.Token.load(event.address.toHex())
|
||||||
|
|
||||||
let entity = new schema.BurnEvent(event.transaction.hash.toHex() + '-' + event.logIndex.toString())
|
let entity = new schema.BurnEvent(event.transaction.hash.toHex() + '-' + event.logIndex.toString())
|
||||||
entity.token = event.address.toHex()
|
entity.token = event.address.toHex()
|
||||||
entity.amount = event.params.value
|
entity.amount = toDecimal(event.params.value, token.decimals)
|
||||||
entity.sender = event.transaction.from
|
entity.sender = event.transaction.from
|
||||||
entity.burner = event.params.burner
|
entity.burner = event.params.burner
|
||||||
|
|
||||||
|
@ -40,11 +40,11 @@ export function handleBurn(event: Burn): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function handleMint(event: Mint): void {
|
export function handleMint(event: Mint): void {
|
||||||
log.debug('Handling token mint, address={}', [event.address.toHex()])
|
let token = schema.Token.load(event.address.toHex())
|
||||||
|
|
||||||
let entity = new schema.MintEvent(event.transaction.hash.toHex() + '-' + event.logIndex.toString())
|
let entity = new schema.MintEvent(event.transaction.hash.toHex() + '-' + event.logIndex.toString())
|
||||||
entity.token = event.address.toHex()
|
entity.token = event.address.toHex()
|
||||||
entity.amount = event.params.amount
|
entity.amount = toDecimal(event.params.amount, token.decimals)
|
||||||
entity.sender = event.transaction.from
|
entity.sender = event.transaction.from
|
||||||
entity.destination = event.params.to
|
entity.destination = event.params.to
|
||||||
entity.minter = event.transaction.from
|
entity.minter = event.transaction.from
|
||||||
|
@ -55,3 +55,11 @@ export function handleMint(event: Mint): void {
|
||||||
|
|
||||||
entity.save()
|
entity.save()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function toDecimal(value: BigInt, decimals: u32): BigDecimal {
|
||||||
|
let precision = BigInt.fromI32(10)
|
||||||
|
.pow(<u8>decimals)
|
||||||
|
.toBigDecimal()
|
||||||
|
|
||||||
|
return value.divDecimal(precision)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue