diff --git a/.gitignore b/.gitignore index 7ebe308..7af32bf 100644 --- a/.gitignore +++ b/.gitignore @@ -67,4 +67,5 @@ typings/ .next # auto generated barge yaml -subgraph.barge.yaml \ No newline at end of file +subgraph.barge.yaml +subgraph.yaml \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 744911e..d9eb367 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,6 @@ "requires": true, "packages": { "": { - "name": "ocean-subgraph", "version": "1.2.0", "license": "Apache-2.0", "dependencies": { diff --git a/schema.graphql b/schema.graphql index 2bae9f8..5a1e5bc 100644 --- a/schema.graphql +++ b/schema.graphql @@ -242,6 +242,14 @@ type PoolTransaction @entity { datatokenValue: BigDecimal } +type OrderReuse @entity { + id: ID! + order: Order! + caller: String! + createdTimestamp: BigInt! + tx: String! + block: BigInt! + } type Order @entity { "transaction hash - token address - from address" id: ID! @@ -262,6 +270,8 @@ type Order @entity { consumerMarketToken: Token # consumerMarketAmmount: BigDecimal #call contract to get fee amount + reuses: [OrderReuse!] @derivedFrom(field: "order") + createdTimestamp: Int! tx: String! block: Int! diff --git a/src/mappings/erc20Templates.ts b/src/mappings/erc20Templates.ts index d72371e..a245dc4 100644 --- a/src/mappings/erc20Templates.ts +++ b/src/mappings/erc20Templates.ts @@ -1,4 +1,4 @@ -import { Order, Nft } from '../@types/schema' +import { Order, Nft, OrderReuse } from '../@types/schema' import { BigInt } from '@graphprotocol/graph-ts' import { NewPaymentCollector, @@ -9,7 +9,8 @@ import { AddedPaymentManager, RemovedMinter, RemovedPaymentManager, - CleanedPermissions + CleanedPermissions, + OrderReused } from '../@types/templates/ERC20Template/ERC20Template' import { integer } from './utils/constants' @@ -85,6 +86,26 @@ export function handleOrderStarted(event: OrderStarted): void { } } +export function handlerOrderReused(event: OrderReused): void { + const orderId = getOrderId( + event.params.orderTxId.toHexString(), + event.address.toHex(), + event.params.caller.toHex() + ) + const order = Order.load(orderId) + + if (!order) return + + const reuseOrder = new OrderReuse(event.transaction.hash.toHex()) + reuseOrder.order = orderId + reuseOrder.caller = event.params.caller.toHexString() + reuseOrder.createdTimestamp = event.params.timestamp + reuseOrder.tx = event.transaction.hash.toHex() + reuseOrder.block = event.params.number + + reuseOrder.save() +} + export function handlePublishMarketFee(event: PublishMarketFee): void {} export function handlePublishMarketFeeChanged( event: PublishMarketFeeChanged diff --git a/subgraph.template.yaml b/subgraph.template.yaml index 04dba00..ddc1fd4 100644 --- a/subgraph.template.yaml +++ b/subgraph.template.yaml @@ -95,6 +95,8 @@ templates: eventHandlers: - event: OrderStarted(indexed address,address,uint256,uint256,uint256,indexed address,uint256) handler: handleOrderStarted + - event: OrderReused(bytes32,address,uint256,uint256) + handler: handlerOrderReused - event: NewPaymentCollector(indexed address,indexed address,uint256,uint256) handler: handleNewPaymentCollector - event: PublishMarketFee(indexed address,indexed address,uint256) diff --git a/subgraph.yaml b/subgraph.yaml deleted file mode 100644 index b05fd58..0000000 --- a/subgraph.yaml +++ /dev/null @@ -1,265 +0,0 @@ -specVersion: 0.0.3 -description: Ocean provides data sharing through IDOs -repository: https://github.com/oceanprotocol/ocean-subgraph -schema: - file: ./schema.graphql -dataSources: - - kind: ethereum/contract - name: ERC721Factory - network: development - source: - address: '0x2f7a30F120f0B7799C8900144eC6d8E4fBbc90ec' - abi: ERC721Factory - startBlock: 1119 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ./src/mappings/erc721Factory.ts - entities: - - ERC721Factory - abis: - - name: ERC721Factory - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json - - name: ERC20 - file: ./abis/ERC20.json - eventHandlers: - - event: NFTCreated(address,indexed address,string,indexed address,string,string,bool,indexed address) - handler: handleNftCreated - - event: TokenCreated(indexed address,indexed address,string,string,uint256,address) - handler: handleNewToken - - - kind: ethereum/contract - name: FactoryRouter - network: development - source: - address: '0x375B009326A0938B8c325Bc2d402a16fe0fBB402' - abi: FactoryRouter - startBlock: 1119 - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ./src/mappings/factoryRouter.ts - entities: - - FactoryRouter - abis: - - name: FactoryRouter - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/pools/FactoryRouter.sol/FactoryRouter.json - - name: ERC20 - file: ./abis/ERC20.json - eventHandlers: - - event: NewPool(indexed address,bool) - handler: handleNewPool - - event: TokenAdded(indexed address,indexed address) - handler: handleTokenAdded - - event: TokenRemoved(indexed address,indexed address) - handler: handleTokenRemoved - - event: OPCFeeChanged(indexed address,uint256,uint256,uint256,uint256) - handler: handleOPCFeeChanged - - event: SSContractAdded(indexed address,indexed address) - handler: handleSSContractAdded - - event: SSContractRemoved(indexed address,indexed address) - handler: handleSSContractRemoved - - event: FixedRateContractAdded(indexed address,indexed address) - handler: handleFixedRateContractAdded - - event: FixedRateContractRemoved(indexed address,indexed address) - handler: handleFixedRateContractRemoved - - event: DispenserContractAdded(indexed address,indexed address) - handler: handleDispenserContractAdded - - event: DispenserContractRemoved(indexed address,indexed address) - handler: handleDispenserContractRemoved - -templates: - - name: ERC20Template - kind: ethereum/contract - network: development - source: - abi: ERC20Template - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ./src/mappings/erc20Templates.ts - entities: - - ERC20Template - abis: - - name: ERC20Template - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template.sol/ERC20Template.json - - name: ERC20TemplateEnterprise - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json - - name: ERC20 - file: ./abis/ERC20.json - - name: ERC20Roles - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/utils/ERC20Roles.sol/ERC20Roles.json - eventHandlers: - - event: OrderStarted(indexed address,address,uint256,uint256,uint256,indexed address,uint256) - handler: handleOrderStarted - - event: NewPaymentCollector(indexed address,indexed address,uint256,uint256) - handler: handleNewPaymentCollector - - event: PublishMarketFee(indexed address,indexed address,uint256) - handler: handlePublishMarketFee - - event: PublishMarketFeeChanged(address,address,address,uint256) - handler: handlePublishMarketFeeChanged - - event: AddedMinter(indexed address,indexed address,uint256,uint256) - handler: handleAddedMinter - - event: AddedPaymentManager(indexed address,indexed address,uint256,uint256) - handler: handleAddedPaymentManager - - event: RemovedMinter(indexed address,indexed address,uint256,uint256) - handler: handleRemovedMinter - - event: RemovedPaymentManager(indexed address,indexed address,uint256,uint256) - handler: handleRemovedPaymentManager - - event: CleanedPermissions(indexed address,uint256,uint256) - handler: handleCleanedPermissions - - - name: BPool - kind: ethereum/contract - network: development - source: - abi: BPool - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ./src/mappings/pool.ts - entities: - - BPool - abis: - - name: BPool - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BPool.sol/BPool.json - - name: BToken - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BToken.sol/BToken.json - - name: BMath - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/pools/balancer/BMath.sol/BMath.json - - name: ERC20 - file: ./abis/ERC20.json - eventHandlers: - - event: LOG_SWAP(indexed address,indexed address,indexed address,uint256,uint256,uint256,uint256,uint256,uint256) - handler: handleSwap - - event: LOG_JOIN(indexed address,indexed address,uint256,uint256) - handler: handleJoin - - event: LOG_EXIT(indexed address,indexed address,uint256,uint256) - handler: handleExit - - event: LOG_SETUP(indexed address,indexed address,uint256,uint256,indexed address,uint256,uint256) - handler: handleSetup - - event: Transfer(indexed address,indexed address,uint256) - handler: handlerBptTransfer - - event: PublishMarketFeeChanged(address,address,uint256) - handler: handlePublishMarketFeeChanged - - event: SwapFeeChanged(address,uint256) - handler: handleSwapFeeChanged - - - name: ERC721Template - kind: ethereum/contract - network: development - source: - abi: ERC721Template - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ./src/mappings/nftUpdate.ts - entities: - - ERC721Template - abis: - - name: ERC721Template - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json - - name: ERC721RolesAddress - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/utils/ERC721RolesAddress.sol/ERC721RolesAddress.json - - name: ERC20 - file: ./abis/ERC20.json - eventHandlers: - - event: MetadataCreated(indexed address,uint8,string,bytes,bytes,bytes32,uint256,uint256) - handler: handleMetadataCreated - - event: MetadataUpdated(indexed address,uint8,string,bytes,bytes,bytes32,uint256,uint256) - handler: handleMetadataUpdated - - event: MetadataState(indexed address,uint8,uint256,uint256) - handler: handleMetadataState - - event: TokenURIUpdate(indexed address,string,uint256,uint256,uint256) - handler: handleTokenUriUpdate - - event: AddedManager(indexed address,indexed address,uint256,uint256) - handler: handleAddedManager - - event: AddedTo725StoreList(indexed address,indexed address,uint256,uint256) - handler: handleAddedTo725StoreList - - event: AddedToCreateERC20List(indexed address,indexed address,uint256,uint256) - handler: handleAddedToCreateERC20List - - event: AddedToMetadataList(indexed address,indexed address,uint256,uint256) - handler: handleAddedToMetadataList - - event: RemovedFrom725StoreList(indexed address,indexed address,uint256,uint256) - handler: handleRemovedFrom725StoreList - - event: RemovedFromCreateERC20List(indexed address,indexed address,uint256,uint256) - handler: handleRemovedFromCreateERC20List - - event: RemovedFromMetadataList(indexed address,indexed address,uint256,uint256) - handler: handleRemovedFromMetadataList - - event: RemovedManager(indexed address,indexed address,uint256,uint256) - handler: handleRemovedManager - - event: CleanedPermissions(indexed address,uint256,uint256) - handler: handleCleanedPermissions - - - name: Dispenser - kind: ethereum/contract - network: development - source: - abi: Dispenser - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ./src/mappings/dispenser.ts - entities: - - Dispenser - abis: - - name: Dispenser - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json - - name: ERC20 - file: ./abis/ERC20.json - eventHandlers: - - event: DispenserCreated(indexed address,indexed address,uint256,uint256,address) - handler: handleNewDispenser - - event: DispenserActivated(indexed address) - handler: handleActivate - - event: DispenserDeactivated(indexed address) - handler: handleDeactivate - - event: DispenserAllowedSwapperChanged(indexed address,indexed address) - handler: handleAllowedSwapperChanged - - event: TokensDispensed(indexed address,indexed address,uint256) - handler: handleTokensDispensed - - event: OwnerWithdrawed(indexed address,indexed address,uint256) - handler: handleOwnerWinthdraw - - - name: FixedRateExchange - kind: ethereum/contract - network: development - source: - abi: FixedRateExchange - mapping: - kind: ethereum/events - apiVersion: 0.0.6 - language: wasm/assemblyscript - file: ./src/mappings/fixedRateExchange.ts - entities: - - FixedRateExchange - abis: - - name: FixedRateExchange - file: ./node_modules/@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json - - name: ERC20 - file: ./abis/ERC20.json - eventHandlers: - - event: ExchangeCreated(indexed bytes32,indexed address,indexed address,address,uint256) - handler: handleExchangeCreated - - event: ExchangeRateChanged(indexed bytes32,indexed address,uint256) - handler: handleRateChange - - event: ExchangeMintStateChanged(indexed bytes32,indexed address,bool) - handler: handleMintStateChanged - - event: ExchangeActivated(indexed bytes32,indexed address) - handler: handleActivated - - event: ExchangeDeactivated(indexed bytes32,indexed address) - handler: handleDeactivated - - event: ExchangeAllowedSwapperChanged(indexed bytes32,indexed address) - handler: handleAllowedSwapperChanged - - event: Swapped(indexed bytes32,indexed address,uint256,uint256,address,uint256,uint256,uint256) - handler: handleSwap - - event: PublishMarketFeeChanged(indexed bytes32,address,address,uint256) - handler: handlePublishMarketFeeChanged - - event: TokenCollected(indexed bytes32,indexed address,indexed address,uint256) - handler: handleTokenCollected