diff --git a/README.md b/README.md index f4db08e..9bf0aea 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,6 @@ This subgraph is deployed under `/subgraphs/name/oceanprotocol/ocean-subgraph/` - [v4.subgraph.bsc.oceanprotocol.com](https://v4.subgraph.bsc.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph/graphql) - [v4.subgraph.moonriver.oceanprotocol.com](https://v4.subgraph.moonriver.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph/graphql) - [v4.subgraph.energyweb.oceanprotocol.com](https://v4.subgraph.energyweb.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph/graphql) -- [v4.subgraph.goerli.oceanprotocol.com](https://v4.subgraph.goerli.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph/graphql) - [v4.subgraph.mumbai.oceanprotocol.com](https://v4.subgraph.mumbai.oceanprotocol.com/subgraphs/name/oceanprotocol/ocean-subgraph/graphql) ## ⛵ Example Queries diff --git a/deployment/README.md b/deployment/README.md index 5a5ec23..92d4ef5 100644 --- a/deployment/README.md +++ b/deployment/README.md @@ -3,32 +3,24 @@ Copyright 2023 Ocean Protocol Foundation SPDX-License-Identifier: Apache-2.0 --> - - - [Kubernetes deployment](#kubernetes-deployment) - * [Postgresql](#postgresql) - * [IPFS](#ipfs) - * [Graph-node](#graph-node) + - [Postgresql](#postgresql) + - [IPFS](#ipfs) + - [Graph-node](#graph-node) - [Docker Compose deployment](#docker-compose-deployment) - * [Single systemd service (Graph-node+Postgresql+IPFS)](#single-systemd-service-graph-nodepostgresqlipfs) + - [Single systemd service (Graph-node+Postgresql+IPFS)](#single-systemd-service-graph-nodepostgresqlipfs) - [Ocean-subgraph deployment](#ocean-subgraph-deployment) - - - #### Kubernetes deployment -[ocean-subgraph](https://github.com/oceanprotocol/ocean-subgraph) must be deployed on top of [graph-node](https://github.com/graphprotocol/graph-node) which has the following dependencies: +[ocean-subgraph](https://github.com/oceanprotocol/ocean-subgraph) must be deployed on top of [graph-node](https://github.com/graphprotocol/graph-node) which has the following dependencies: - PostgreSQL - IPFS - Templates (yaml files) provided and could be customized based on the environment's specifics. - - ##### Postgresql It is recommended to deploy PostgreSQL as helm chart @@ -63,41 +55,41 @@ spec: app: ipfs spec: containers: - - image: ipfs/go-ipfs:v0.4.22 - imagePullPolicy: IfNotPresent - livenessProbe: - failureThreshold: 3 - httpGet: - path: /debug/metrics/prometheus - port: api - scheme: HTTP - initialDelaySeconds: 15 - periodSeconds: 3 - successThreshold: 1 - timeoutSeconds: 1 - name: s1-ipfs - ports: - - containerPort: 5001 - name: api - protocol: TCP - - containerPort: 8080 - name: gateway - protocol: TCP - readinessProbe: - failureThreshold: 3 - httpGet: - path: /debug/metrics/prometheus - port: api - scheme: HTTP - initialDelaySeconds: 15 - periodSeconds: 3 - successThreshold: 1 - timeoutSeconds: 1 - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - volumeMounts: - - mountPath: /data/ipfs - name: ipfs-storage + - image: ipfs/go-ipfs:v0.4.22 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + httpGet: + path: /debug/metrics/prometheus + port: api + scheme: HTTP + initialDelaySeconds: 15 + periodSeconds: 3 + successThreshold: 1 + timeoutSeconds: 1 + name: s1-ipfs + ports: + - containerPort: 5001 + name: api + protocol: TCP + - containerPort: 8080 + name: gateway + protocol: TCP + readinessProbe: + failureThreshold: 3 + httpGet: + path: /debug/metrics/prometheus + port: api + scheme: HTTP + initialDelaySeconds: 15 + periodSeconds: 3 + successThreshold: 1 + timeoutSeconds: 1 + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File + volumeMounts: + - mountPath: /data/ipfs + name: ipfs-storage dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler @@ -110,20 +102,20 @@ spec: partition: 0 type: RollingUpdate volumeClaimTemplates: - - apiVersion: v1 - kind: PersistentVolumeClaim - metadata: - creationTimestamp: null - name: ipfs-storage - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: 1G - volumeMode: Filesystem - status: - phase: Pending + - apiVersion: v1 + kind: PersistentVolumeClaim + metadata: + creationTimestamp: null + name: ipfs-storage + spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1G + volumeMode: Filesystem + status: + phase: Pending --- apiVersion: v1 kind: Service @@ -135,19 +127,17 @@ spec: clusterIP: clusterIPs: ipFamilies: - - IPv4 + - IPv4 ipFamilyPolicy: SingleStack ports: - - name: api - port: 5001 - - name: gateway - port: 8080 + - name: api + port: 5001 + - name: gateway + port: 8080 selector: app: ipfs ``` - - ##### Graph-node The following annotated templated can be customized to deploy graph-node deployment and service: @@ -179,66 +169,66 @@ spec: app: mumbai-graph-node spec: containers: - - env: - - name: ipfs - value: ipfs..svc.cluster.local:5001 - - name: postgres_host - value: postgresql..svc.cluster.local - - name: postgres_user - value: < postgresql user > - - name: postgres_pass - value: < postgresql database password > - - name: postgres_db - value: < postgresql database > - - name: ethereum - value: mumbai:https://polygon-mumbai.infura.io/v3/< INFURA ID> - - name: GRAPH_KILL_IF_UNRESPONSIVE - value: "true" - image: graphprotocol/graph-node:v0.28.2 - imagePullPolicy: IfNotPresent - livenessProbe: - failureThreshold: 3 - httpGet: - path: / - port: 8000 - scheme: HTTP - initialDelaySeconds: 20 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - name: mumbai-graph-node - ports: - - containerPort: 8000 - name: graphql - protocol: TCP - - containerPort: 8020 - name: jsonrpc - protocol: TCP - - containerPort: 8030 - name: indexnode - protocol: TCP - - containerPort: 8040 - name: metrics - protocol: TCP - readinessProbe: - failureThreshold: 3 - httpGet: - path: / - port: 8000 - scheme: HTTP - initialDelaySeconds: 20 - periodSeconds: 10 - successThreshold: 1 - timeoutSeconds: 1 - resources: - limits: - cpu: "2" - memory: 1536Mi - requests: - cpu: 1500m - memory: 1536Mi - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File + - env: + - name: ipfs + value: ipfs..svc.cluster.local:5001 + - name: postgres_host + value: postgresql..svc.cluster.local + - name: postgres_user + value: < postgresql user > + - name: postgres_pass + value: < postgresql database password > + - name: postgres_db + value: < postgresql database > + - name: ethereum + value: mumbai:https://polygon-mumbai.infura.io/v3/< INFURA ID> + - name: GRAPH_KILL_IF_UNRESPONSIVE + value: 'true' + image: graphprotocol/graph-node:v0.28.2 + imagePullPolicy: IfNotPresent + livenessProbe: + failureThreshold: 3 + httpGet: + path: / + port: 8000 + scheme: HTTP + initialDelaySeconds: 20 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + name: mumbai-graph-node + ports: + - containerPort: 8000 + name: graphql + protocol: TCP + - containerPort: 8020 + name: jsonrpc + protocol: TCP + - containerPort: 8030 + name: indexnode + protocol: TCP + - containerPort: 8040 + name: metrics + protocol: TCP + readinessProbe: + failureThreshold: 3 + httpGet: + path: / + port: 8000 + scheme: HTTP + initialDelaySeconds: 20 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 1 + resources: + limits: + cpu: '2' + memory: 1536Mi + requests: + cpu: 1500m + memory: 1536Mi + terminationMessagePath: /dev/termination-log + terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler @@ -249,37 +239,34 @@ kind: Service metadata: labels: app: mumbai-graph-node - name: mumbai-graph-node + name: mumbai-graph-node spec: clusterIP: clusterIPs: internalTrafficPolicy: Cluster ipFamilies: - - IPv4 + - IPv4 ipFamilyPolicy: SingleStack ports: - - name: graphql - port: 8000 - - name: jsonrpc - port: 8020 - - name: indexnode - port: 8030 - - name: metrics - port: 8040 + - name: graphql + port: 8000 + - name: jsonrpc + port: 8020 + - name: indexnode + port: 8030 + - name: metrics + port: 8040 selector: app: mumbai-graph-node ``` - - - #### Docker Compose deployment ##### Single systemd service (Graph-node+Postgresql+IPFS) -a) create */etc/docker/compose/graph-node/docker-compose.yml* file +a) create _/etc/docker/compose/graph-node/docker-compose.yml_ file - */etc/docker/compose/graph-node/docker-compose.yml* (annotated - example for `mumbai` network) +_/etc/docker/compose/graph-node/docker-compose.yml_ (annotated - example for `mumbai` network) ```yaml version: '3' @@ -318,7 +305,7 @@ services: restart: on-failure ports: - '5432:5432' - command: ["postgres", "-cshared_preload_libraries=pg_stat_statements"] + command: ['postgres', '-cshared_preload_libraries=pg_stat_statements'] environment: POSTGRES_USER: graph-node POSTGRES_PASSWORD: < password > @@ -332,9 +319,7 @@ volumes: driver: local ``` - - -b) create */etc/systemd/system/docker-compose@graph-node.service* file +b) create _/etc/systemd/system/docker-compose@graph-node.service_ file ```shell [Unit] @@ -357,8 +342,6 @@ ExecStopPost=/usr/bin/env docker-compose -p $PROJECT down WantedBy=multi-user.target ``` - - c) run: ```shell @@ -371,16 +354,12 @@ optional - enable service to start at boot: $ sudo systemctl enable docker-compose@graph-node.service ``` - - d) start aquarius service: ```shell $ sudo systemctl start docker-compose@graph-node.service ``` - - check status: ```shell @@ -406,8 +385,6 @@ Jun 25 17:05:25 testvm systemd[1]: Finished graph-node service with docker compo ``` - - - check containers status ```shell @@ -418,35 +395,31 @@ ipfs/go-ipfs:v0.4.23 4001/tcp, 8080-8081/tcp, 0.0.0.0:5001->5001/t postgres:15.3 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgres Up 55 minutes ``` - - - check logs for graph-node container ```shell $ docker logs graph-node [--follow] ``` - - #### Ocean-subgraph deployment - install Node.js locally -- download and extract [Ocean-subgraph](https://github.com/oceanprotocol/ocean-subgraph) (check [here](https://github.com/oceanprotocol/ocean-subgraph/releases) the available releases) +- download and extract [Ocean-subgraph](https://github.com/oceanprotocol/ocean-subgraph) (check [here](https://github.com/oceanprotocol/ocean-subgraph/releases) the available releases) - run inside the extracted directory: ```shell $ npm i ``` -then +then (Note: in this example we are deploying on graph-node running for `mumbai` testnet ) -Note: for `ocean-subgraph` deployment in kubernetes environment, both `graph-node` and `ipfs` services must be locally forwarded using `kubectl port-forward` command. +Note: for `ocean-subgraph` deployment in kubernetes environment, both `graph-node` and `ipfs` services must be locally forwarded using `kubectl port-forward` command. ```shell -$ npm run quickstart:mumbai +$ npm run quickstart:mumbai > ocean-subgraph@3.0.8 quickstart:mumbai > node ./scripts/generatenetworkssubgraphs.js mumbai && npm run codegen && npm run create:local && npm run deploy:local @@ -458,7 +431,6 @@ Skipping bsc Skipping energyweb Skipping moonriver Skipping mainnet -Skipping goerli Skipping polygonedge Skipping gaiaxtestnet Skipping alfajores diff --git a/package.json b/package.json index 37fd74b..d055f32 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,6 @@ "quickstart:development": "node ./scripts/generatenetworkssubgraphs.js development && npm run codegen && npm run create:local && npm run deploy:local", "quickstart:barge": "node ./scripts/generatenetworkssubgraphs.js development && npm run codegen && npm run create:local-barge && npm run deploy:local-barge", "quickstart:rinkeby": "node ./scripts/generatenetworkssubgraphs.js rinkeby && npm run codegen && npm run create:local && npm run deploy:local", - "quickstart:goerli": "node ./scripts/generatenetworkssubgraphs.js goerli && npm run codegen && npm run create:local && npm run deploy:local", "quickstart:ropsten": "node ./scripts/generatenetworkssubgraphs.js ropsten && npm run codegen && npm run create:local && npm run deploy:local", "quickstart:mumbai": "node ./scripts/generatenetworkssubgraphs.js mumbai && npm run codegen && npm run create:local && npm run deploy:local", "quickstart:moonbase": "node ./scripts/generatenetworkssubgraphs.js moonbase && npm run codegen && npm run create:local && npm run deploy:local", diff --git a/src/mappings/erc20Template3.ts b/src/mappings/erc20Template3.ts index b858632..fe09699 100644 --- a/src/mappings/erc20Template3.ts +++ b/src/mappings/erc20Template3.ts @@ -118,6 +118,21 @@ export function handlePredictionPayout(event: PredictionPayout): void { predictPrediction.payout = predictionPayout.id predictPrediction.save() + + let shouldUpdateSlot = false + const predictSlot = getPredictSlot( + event.address.toHexString(), + event.params.slot.toI32() + ) + if (event.params.status == 1 && predictSlot.status !== 'Paying') { + predictSlot.status = 'Paying' + shouldUpdateSlot = true + } + if (event.params.status == 2 && predictSlot.status !== 'Canceled') { + predictSlot.status = 'Canceled' + shouldUpdateSlot = true + } + if (shouldUpdateSlot == true) predictSlot.save() } export function handleNewSubscription(event: NewSubscription): void {