Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | 1x 1x 1x 1x 1x 1x 1x 1x 11x 44x 11x 7x 44x 7x 7x 7x 8x 3x 3x 3x 3x 2x 7x 4x | import { AbiCoder, Log, TransactionResponse, ethers } from "ethers"; import { LogParser } from "./parser.definition"; import { config } from "../config"; import blurABI from '../abi/blur.json'; const blurMarketplaceAddress = '0x39da41747a83aeE658334415666f3EF92DD0D541'; const blurBiddingContractAddress = '0x0000000000a39bb272e79075ade125fd351887ac'; const blurSalesContractAddressV2 = '0x39da41747a83aeE658334415666f3EF92DD0D541'; const blurSalesContractAddressV3 = '0xb2ecfe4e4d61f8790bbb9de2d1259b9e2410cea5'; export class BlurIOSweepParser implements LogParser { platform: string = 'blurio'; parseLogs(transaction:TransactionResponse, logs: Log[], tokenId: string): number { const result = (transaction.to.toLowerCase() != blurSalesContractAddressV3.toLowerCase() && transaction.to.toLowerCase() != blurSalesContractAddressV2.toLowerCase() && transaction.to.toLowerCase() != blurMarketplaceAddress.toLowerCase()) ? [] : logs.filter(l => l.address.toLowerCase() === blurSalesContractAddressV3.toLowerCase() || l.address.toLowerCase() === blurSalesContractAddressV2.toLowerCase()) if (result.length) { // if we're here, we weren't able to get the exact price, determinate it // using the overall price and the ether spent in tx // the only way to get an accurate result would be to run an EVM to track // internal txs const count = logs .filter(l => l.address.toLowerCase() === config.contract_address.toLowerCase() && l.topics[0].toLowerCase() === '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef').length // look for blur.io custom ERC20 token if the ether amount is empty const { value } = transaction; let ether = ethers.formatEther(value.toString()); if (ether === '0.0') { const l = logs.filter(l => l.address.toLowerCase() === blurBiddingContractAddress.toLowerCase()) .reduce((previous, current) => { const relevantData = current.data.substring(2); const relevantDataSlice = relevantData.match(/.{1,64}/g); const value = BigInt(`0x${relevantDataSlice[0]}`); return previous + value }, BigInt(0)) ether = (parseFloat((l / BigInt('10000000000000000')).toString())/100).toString() } return parseFloat(ether)/count } return undefined } } |