From 11b14081e988cd0dce358aec60fa1cfba134d3d9 Mon Sep 17 00:00:00 2001 From: Alex Coseru Date: Thu, 17 Feb 2022 12:26:05 +0200 Subject: [PATCH] Feature/fees (#330) Fees --- package-lock.json | 198 ++++++++---------------------- package.json | 2 +- schema.graphql | 17 +++ scripts/subgraph.yaml | 9 +- src/mappings/erc20Templates.ts | 28 ++++- src/mappings/fixedRateExchange.ts | 20 ++- src/mappings/pool.ts | 30 ++++- subgraph.moonbase.yaml | 25 ++-- subgraph.mumbai.yaml | 25 ++-- subgraph.rinkeby.yaml | 25 ++-- subgraph.ropsten.yaml | 25 ++-- subgraph.yaml | 9 +- 12 files changed, 226 insertions(+), 187 deletions(-) diff --git a/package-lock.json b/package-lock.json index b6dbfa5..202db1d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.2.0", "license": "Apache-2.0", "dependencies": { - "@oceanprotocol/lib": "^1.0.0-next.20", + "@oceanprotocol/lib": "^1.0.0-next.21", "cross-fetch": "^3.1.4" }, "devDependencies": { @@ -1660,9 +1660,9 @@ } }, "node_modules/@oceanprotocol/contracts": { - "version": "1.0.0-alpha.20", - "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-1.0.0-alpha.20.tgz", - "integrity": "sha512-Z+zP7XzYjZfd0+URupld2LLZ91E07EWM4wlxpRGOhXEZ7oL3iQAlRJGq6SZN7C65LSUaMQuhj+n5C8aYOXUdwQ==", + "version": "1.0.0-alpha.21", + "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-1.0.0-alpha.21.tgz", + "integrity": "sha512-aYMEwkclqBtHEgjeDAmEuGnWQ3yZLIeHWr3XtiuscDxF48eCG0wUYtdtuqzbLNEUqgdpNVxVNTLW2x0w2PAQDA==", "dependencies": { "@openzeppelin/contracts": "^4.3.3", "@openzeppelin/test-helpers": "^0.5.15", @@ -1674,11 +1674,11 @@ } }, "node_modules/@oceanprotocol/lib": { - "version": "1.0.0-next.20", - "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.0.0-next.20.tgz", - "integrity": "sha512-UUFkYCdFk9ST/7F8AwzW+dWjxhMFzyp9BWPjI5MjY8jBOp1MLdY6mtZeA6wIRsPDqGGL4nBIzlVS1G3t2DlF0g==", + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.0.0-next.21.tgz", + "integrity": "sha512-S3xtsPE9Z+sxUlcsHy6fvimU6EVWyM+C/OFzr5EmJNbOIfEKOjeN1T9e0c0Zj+5gqSSNgGiOp1qKwEOBckA6bQ==", "dependencies": { - "@oceanprotocol/contracts": "1.0.0-alpha.20", + "@oceanprotocol/contracts": "1.0.0-alpha.21", "bignumber.js": "^9.0.2", "cross-fetch": "^3.1.5", "crypto-js": "^4.1.1", @@ -5636,7 +5636,6 @@ "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "peer": true, "engines": { "node": ">= 0.6" } @@ -5663,9 +5662,9 @@ } }, "node_modules/core-js-compat": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.0.tgz", - "integrity": "sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", "dependencies": { "browserslist": "^4.19.1", "semver": "7.0.0" @@ -5684,9 +5683,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.0.tgz", - "integrity": "sha512-VaJUunCZLnxuDbo1rNOzwbet9E1K9joiXS5+DQMPtgxd24wfsZbJZMMfQLGYMlCUvSxLfsRUUhoOR2x28mFfeg==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", + "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", "hasInstallScript": true, "peer": true, "funding": { @@ -8998,16 +8997,16 @@ "dev": true }, "node_modules/express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "dependencies": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.1", + "body-parser": "1.19.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.1", + "cookie": "0.4.2", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -9022,7 +9021,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.6", + "qs": "6.9.7", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.17.2", @@ -9037,42 +9036,6 @@ "node": ">= 0.10.0" } }, - "node_modules/express/node_modules/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", - "dependencies": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/express/node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -9087,9 +9050,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/express/node_modules/qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==", + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", "engines": { "node": ">=0.6" }, @@ -9097,20 +9060,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express/node_modules/raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "dependencies": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/ext": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", @@ -10957,9 +10906,9 @@ } }, "node_modules/highlightjs-solidity": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.3.tgz", - "integrity": "sha512-tjFm5dtIE61VQBzjlZmkCtY5fLs3CaEABbVuUNyXeW+UuOCsxMg3MsPFy0kCelHP74hPpkoqDejLrbnV1axAIw==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.4.tgz", + "integrity": "sha512-jsmfDXrjjxt4LxWfzp27j4CX6qYk6B8uK8sxzEDyGts8Ut1IuVlFCysAu6n5RrgHnuEKA+SCIcGPweO7qlPhCg==" }, "node_modules/hmac-drbg": { "version": "1.0.1", @@ -21538,9 +21487,9 @@ } }, "@oceanprotocol/contracts": { - "version": "1.0.0-alpha.20", - "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-1.0.0-alpha.20.tgz", - "integrity": "sha512-Z+zP7XzYjZfd0+URupld2LLZ91E07EWM4wlxpRGOhXEZ7oL3iQAlRJGq6SZN7C65LSUaMQuhj+n5C8aYOXUdwQ==", + "version": "1.0.0-alpha.21", + "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-1.0.0-alpha.21.tgz", + "integrity": "sha512-aYMEwkclqBtHEgjeDAmEuGnWQ3yZLIeHWr3XtiuscDxF48eCG0wUYtdtuqzbLNEUqgdpNVxVNTLW2x0w2PAQDA==", "requires": { "@openzeppelin/contracts": "^4.3.3", "@openzeppelin/test-helpers": "^0.5.15", @@ -21552,11 +21501,11 @@ } }, "@oceanprotocol/lib": { - "version": "1.0.0-next.20", - "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.0.0-next.20.tgz", - "integrity": "sha512-UUFkYCdFk9ST/7F8AwzW+dWjxhMFzyp9BWPjI5MjY8jBOp1MLdY6mtZeA6wIRsPDqGGL4nBIzlVS1G3t2DlF0g==", + "version": "1.0.0-next.21", + "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-1.0.0-next.21.tgz", + "integrity": "sha512-S3xtsPE9Z+sxUlcsHy6fvimU6EVWyM+C/OFzr5EmJNbOIfEKOjeN1T9e0c0Zj+5gqSSNgGiOp1qKwEOBckA6bQ==", "requires": { - "@oceanprotocol/contracts": "1.0.0-alpha.20", + "@oceanprotocol/contracts": "1.0.0-alpha.21", "bignumber.js": "^9.0.2", "cross-fetch": "^3.1.5", "crypto-js": "^4.1.1", @@ -24809,8 +24758,7 @@ "cookie": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "peer": true + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" }, "cookie-signature": { "version": "1.0.6", @@ -24829,9 +24777,9 @@ "dev": true }, "core-js-compat": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.0.tgz", - "integrity": "sha512-OSXseNPSK2OPJa6GdtkMz/XxeXx8/CJvfhQWTqd6neuUraujcL4jVsjkLQz1OWnax8xVQJnRPe0V2jqNWORA+A==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.21.1.tgz", + "integrity": "sha512-gbgX5AUvMb8gwxC7FLVWYT7Kkgu/y7+h/h1X43yJkNqhlK2fuYyQimqvKGNZFAY6CKii/GFKJ2cp/1/42TN36g==", "requires": { "browserslist": "^4.19.1", "semver": "7.0.0" @@ -24845,9 +24793,9 @@ } }, "core-js-pure": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.0.tgz", - "integrity": "sha512-VaJUunCZLnxuDbo1rNOzwbet9E1K9joiXS5+DQMPtgxd24wfsZbJZMMfQLGYMlCUvSxLfsRUUhoOR2x28mFfeg==", + "version": "3.21.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.1.tgz", + "integrity": "sha512-12VZfFIu+wyVbBebyHmRTuEE/tZrB4tJToWcwAMcsp3h4+sHR+fMJWbKpYiCRWlhFBq+KNyO8rIV9rTkeVmznQ==", "peer": true }, "core-util-is": { @@ -27615,16 +27563,16 @@ "dev": true }, "express": { - "version": "4.17.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz", - "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==", + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", "requires": { - "accepts": "~1.3.7", + "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.19.1", + "body-parser": "1.19.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.4.1", + "cookie": "0.4.2", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "~1.1.2", @@ -27639,7 +27587,7 @@ "parseurl": "~1.3.3", "path-to-regexp": "0.1.7", "proxy-addr": "~2.0.7", - "qs": "6.9.6", + "qs": "6.9.7", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "0.17.2", @@ -27651,33 +27599,6 @@ "vary": "~1.1.2" }, "dependencies": { - "body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==", - "requires": { - "bytes": "3.1.1", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.9.6", - "raw-body": "2.4.2", - "type-is": "~1.6.18" - } - }, - "bytes": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz", - "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg==" - }, - "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" - }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -27692,20 +27613,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "qs": { - "version": "6.9.6", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz", - "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ==" - }, - "raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", - "requires": { - "bytes": "3.1.1", - "http-errors": "1.8.1", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==" } } }, @@ -29143,9 +29053,9 @@ "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" }, "highlightjs-solidity": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.3.tgz", - "integrity": "sha512-tjFm5dtIE61VQBzjlZmkCtY5fLs3CaEABbVuUNyXeW+UuOCsxMg3MsPFy0kCelHP74hPpkoqDejLrbnV1axAIw==" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.4.tgz", + "integrity": "sha512-jsmfDXrjjxt4LxWfzp27j4CX6qYk6B8uK8sxzEDyGts8Ut1IuVlFCysAu6n5RrgHnuEKA+SCIcGPweO7qlPhCg==" }, "hmac-drbg": { "version": "1.0.1", diff --git a/package.json b/package.json index dc2ea58..bbed67e 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "typescript": "^4.5.5" }, "dependencies": { - "@oceanprotocol/lib": "^1.0.0-next.20", + "@oceanprotocol/lib": "^1.0.0-next.21", "cross-fetch": "^3.1.4" }, "repository": { diff --git a/schema.graphql b/schema.graphql index 2140537..b8bbc8e 100644 --- a/schema.graphql +++ b/schema.graphql @@ -167,6 +167,16 @@ type Pool @entity { shares: [PoolShare!] @derivedFrom(field: "pool") transactions: [PoolTransaction!] @derivedFrom(field: "pool") + + "address of the market where the datatoken was created. This address collects market fees." + publishMarketFeeAddress: String + + "fee amount. Fixed value, expressed in wei in contracts, needs conversion in decimals." + publishMarketSwapFee: BigDecimal + + "LP fee amount. Fixed value, expressed in wei in contracts, needs conversion in decimals." + liquidityProviderSwapFee: BigDecimal + } # we will need to track pool share tx between users - bpool transfer tx event @@ -299,6 +309,13 @@ type FixedRateExchange @entity { createdTimestamp: Int! tx: String! block: Int! + + "address of the market where the datatoken was created. This address collects market fees." + publishMarketFeeAddress: String + + "fee amount. Fixed value, expressed in wei in contracts, needs conversion in decimals." + publishMarketSwapFee: BigDecimal + } type FixedRateExchangeUpdate @entity { diff --git a/scripts/subgraph.yaml b/scripts/subgraph.yaml index 5e17eb6..a60c0c5 100644 --- a/scripts/subgraph.yaml +++ b/scripts/subgraph.yaml @@ -60,6 +60,8 @@ dataSources: 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 - kind: ethereum/contract name: Dispenser network: __NETWORK__ @@ -141,7 +143,8 @@ templates: handler: handleNewPaymentCollector - event: PublishMarketFee(indexed address,indexed address,uint256) handler: handlePublishMarketFee - + - event: PublishMarketFeeChanged(address,address,address,uint256) + handler: handlePublishMarketFeeChanged - name: BPool kind: ethereum/contract network: __NETWORK__ @@ -174,6 +177,10 @@ templates: 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 diff --git a/src/mappings/erc20Templates.ts b/src/mappings/erc20Templates.ts index 2b142a5..aa1b35c 100644 --- a/src/mappings/erc20Templates.ts +++ b/src/mappings/erc20Templates.ts @@ -1,8 +1,10 @@ import { Order } from '../@types/schema' +import { BigInt } from '@graphprotocol/graph-ts' import { NewPaymentCollector, OrderStarted, - PublishMarketFee + PublishMarketFee, + PublishMarketFeeChanged } from '../@types/templates/ERC20Template/ERC20Template' import { integer } from './utils/constants' @@ -62,7 +64,29 @@ export function handleOrderStarted(event: OrderStarted): void { export function handleNewPaymentCollector(event: NewPaymentCollector): void {} export function handlePublishMarketFee(event: PublishMarketFee): void {} - +export function handlePublishMarketFeeChanged( + event: PublishMarketFeeChanged +): void { + const token = getToken(event.address.toHex()) + if (token != null) { + token.publishMarketFeeAddress = + event.params.PublishMarketFeeAddress.toHexString() + token.publishMarketFeeToken = + event.params.PublishMarketFeeToken.toHexString() + let decimals = BigInt.fromI32(18).toI32() + if ( + token.publishMarketFeeToken != + '0x0000000000000000000000000000000000000000' + ) + decimals = BigInt.fromI32(token.decimals).toI32() + token.publishMarketFeeAmmount = weiToDecimal( + event.params.PublishMarketFeeAmount.toBigDecimal(), + decimals + ) + token.save() + // TODO - shold we have a history + } +} // export function handlePublishMarketFees(event: PublishMarketFees): void { // const order = Order.load( // getOrderId( diff --git a/src/mappings/fixedRateExchange.ts b/src/mappings/fixedRateExchange.ts index 7bdfd02..0e8a89f 100644 --- a/src/mappings/fixedRateExchange.ts +++ b/src/mappings/fixedRateExchange.ts @@ -6,7 +6,8 @@ import { ExchangeDeactivated, ExchangeMintStateChanged, ExchangeRateChanged, - Swapped + Swapped, + PublishMarketFeeChanged } from '../@types/FixedRateExchange/FixedRateExchange' import { FixedRateExchange, @@ -180,3 +181,20 @@ export function handleSwap(event: Swapped): void { swap.save() } + +export function handlePublishMarketFeeChanged( + event: PublishMarketFeeChanged +): void { + const fixedRateExchange = getFixedRateExchange( + event.params.exchangeId.toHex() + ) + if (fixedRateExchange) { + fixedRateExchange.publishMarketFeeAddress = + event.params.newMarketCollector.toHexString() + fixedRateExchange.publishMarketSwapFee = weiToDecimal( + event.params.swapFee.toBigDecimal(), + BigInt.fromI32(18).toI32() + ) + fixedRateExchange.save() + } +} diff --git a/src/mappings/pool.ts b/src/mappings/pool.ts index 35a0246..37001e2 100644 --- a/src/mappings/pool.ts +++ b/src/mappings/pool.ts @@ -1,8 +1,11 @@ +import { BigInt } from '@graphprotocol/graph-ts' import { LOG_EXIT, LOG_JOIN, LOG_SETUP, - LOG_SWAP + LOG_SWAP, + PublishMarketFeeChanged, + SwapFeeChanged } from '../@types/templates/BPool/BPool' import { Transfer } from '../@types/templates/BPool/BToken' import { integer, PoolTransactionType, ZERO_ADDRESS } from './utils/constants' @@ -284,3 +287,28 @@ export function handlerBptTransfer(event: Transfer): void { poolTx.save() poolSnapshot.save() } + +export function handlePublishMarketFeeChanged( + event: PublishMarketFeeChanged +): void { + const pool = getPool(event.address.toHex()) + if (pool) { + pool.publishMarketFeeAddress = event.params.newMarketCollector.toHexString() + pool.publishMarketSwapFee = weiToDecimal( + event.params.swapFee.toBigDecimal(), + BigInt.fromI32(18).toI32() + ) + pool.save() + } +} + +export function handleSwapFeeChanged(event: SwapFeeChanged): void { + const pool = getPool(event.address.toHex()) + if (pool) { + pool.liquidityProviderSwapFee = weiToDecimal( + event.params.amount.toBigDecimal(), + BigInt.fromI32(18).toI32() + ) + pool.save() + } +} diff --git a/subgraph.moonbase.yaml b/subgraph.moonbase.yaml index 8a57c1c..5b28ee5 100644 --- a/subgraph.moonbase.yaml +++ b/subgraph.moonbase.yaml @@ -8,9 +8,9 @@ dataSources: name: ERC721Factory network: moonbase source: - address: '0xEcD0C3519a081e3924D6F3197f86980eA7dfCf71' + address: '0x1Af3CC30fD18af837f7630Aff12aE2b826bD3c5D' abi: ERC721Factory - startBlock: 1708548 + startBlock: 1712628 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -30,9 +30,9 @@ dataSources: name: FixedRateExchange network: moonbase source: - address: '0x0Ee8b03Dafc868a0899ebE1c12d734D53A957250' + address: '0x3EFDD8f728c8e774aB81D14d0B2F07a8238960f4' abi: FixedRateExchange - startBlock: 1708548 + startBlock: 1712628 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -60,13 +60,15 @@ dataSources: 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 - kind: ethereum/contract name: Dispenser network: moonbase source: - address: '0x0Ee8b03Dafc868a0899ebE1c12d734D53A957250' + address: '0x3EFDD8f728c8e774aB81D14d0B2F07a8238960f4' abi: Dispenser - startBlock: 1708548 + startBlock: 1712628 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -95,9 +97,9 @@ dataSources: name: FactoryRouter network: moonbase source: - address: '0xA0329eFFa1370eAb1DC5998Db4292ae0F535a282' + address: '0xb28Ab1AaDe4c75F8cF013136fc0c290AeaeA9BA6' abi: FactoryRouter - startBlock: 1708548 + startBlock: 1712628 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -141,7 +143,8 @@ templates: handler: handleNewPaymentCollector - event: PublishMarketFee(indexed address,indexed address,uint256) handler: handlePublishMarketFee - + - event: PublishMarketFeeChanged(address,address,address,uint256) + handler: handlePublishMarketFeeChanged - name: BPool kind: ethereum/contract network: moonbase @@ -174,6 +177,10 @@ templates: 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 diff --git a/subgraph.mumbai.yaml b/subgraph.mumbai.yaml index 800a874..4b0c2aa 100644 --- a/subgraph.mumbai.yaml +++ b/subgraph.mumbai.yaml @@ -8,9 +8,9 @@ dataSources: name: ERC721Factory network: mumbai source: - address: '0x9B9581B3928BFB3f670FE5af1CF58DAfAb509F6b' + address: '0xf02e3163Dc3409D69D88D7AcDA613432E9A18741' abi: ERC721Factory - startBlock: 24988725 + startBlock: 25018956 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -30,9 +30,9 @@ dataSources: name: FixedRateExchange network: mumbai source: - address: '0xA5BB079f8DE82E9B38dD5AE0918f9B1A514beaFA' + address: '0xB219578a03474dDE345AC50B93198E7bf3e2a4BF' abi: FixedRateExchange - startBlock: 24988725 + startBlock: 25018956 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -60,13 +60,15 @@ dataSources: 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 - kind: ethereum/contract name: Dispenser network: mumbai source: - address: '0xA5BB079f8DE82E9B38dD5AE0918f9B1A514beaFA' + address: '0xB219578a03474dDE345AC50B93198E7bf3e2a4BF' abi: Dispenser - startBlock: 24988725 + startBlock: 25018956 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -95,9 +97,9 @@ dataSources: name: FactoryRouter network: mumbai source: - address: '0x09c9a4010E106b9673DcD58AB021a2C84457f323' + address: '0xf9FB1f54eA825734E3a77e73A3864f4B46C815d9' abi: FactoryRouter - startBlock: 24988725 + startBlock: 25018956 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -141,7 +143,8 @@ templates: handler: handleNewPaymentCollector - event: PublishMarketFee(indexed address,indexed address,uint256) handler: handlePublishMarketFee - + - event: PublishMarketFeeChanged(address,address,address,uint256) + handler: handlePublishMarketFeeChanged - name: BPool kind: ethereum/contract network: mumbai @@ -174,6 +177,10 @@ templates: 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 diff --git a/subgraph.rinkeby.yaml b/subgraph.rinkeby.yaml index 9acb9d0..ab63f3f 100644 --- a/subgraph.rinkeby.yaml +++ b/subgraph.rinkeby.yaml @@ -8,9 +8,9 @@ dataSources: name: ERC721Factory network: rinkeby source: - address: '0x804D4424C5D991030501112fd473cC8E1196f7B5' + address: '0x1b1FE18bE79249AE8A30b3cEef03d70ca299a75b' abi: ERC721Factory - startBlock: 10176994 + startBlock: 10182337 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -30,9 +30,9 @@ dataSources: name: FixedRateExchange network: rinkeby source: - address: '0x32eC399A16AABcd0ecBcBc5a4fc3A568409a4911' + address: '0x7C4Cb9BCeaB61c99012ECb7Ab1722FbCae7C007d' abi: FixedRateExchange - startBlock: 10176994 + startBlock: 10182337 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -60,13 +60,15 @@ dataSources: 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 - kind: ethereum/contract name: Dispenser network: rinkeby source: - address: '0x32eC399A16AABcd0ecBcBc5a4fc3A568409a4911' + address: '0x7C4Cb9BCeaB61c99012ECb7Ab1722FbCae7C007d' abi: Dispenser - startBlock: 10176994 + startBlock: 10182337 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -95,9 +97,9 @@ dataSources: name: FactoryRouter network: rinkeby source: - address: '0x25aF54F0979Aa4aAa53865C8D413048F6C96ce86' + address: '0x6CE85a8B9dF0aEbd6deE3593d4E9cde7398ff842' abi: FactoryRouter - startBlock: 10176994 + startBlock: 10182337 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -141,7 +143,8 @@ templates: handler: handleNewPaymentCollector - event: PublishMarketFee(indexed address,indexed address,uint256) handler: handlePublishMarketFee - + - event: PublishMarketFeeChanged(address,address,address,uint256) + handler: handlePublishMarketFeeChanged - name: BPool kind: ethereum/contract network: rinkeby @@ -174,6 +177,10 @@ templates: 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 diff --git a/subgraph.ropsten.yaml b/subgraph.ropsten.yaml index 7ffd639..759e2bd 100644 --- a/subgraph.ropsten.yaml +++ b/subgraph.ropsten.yaml @@ -8,9 +8,9 @@ dataSources: name: ERC721Factory network: ropsten source: - address: '0xf9FB1f54eA825734E3a77e73A3864f4B46C815d9' + address: '0x5D7a9F0c8E9E9af5674DEE832Cc97FC425b655Bc' abi: ERC721Factory - startBlock: 11973964 + startBlock: 11978747 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -30,9 +30,9 @@ dataSources: name: FixedRateExchange network: ropsten source: - address: '0x8e1c4335E38710C36a5AF59A5d4222286aEA07Df' + address: '0x292f3108Fe22BaF215133fEc6Ad1a99312daC8E5' abi: FixedRateExchange - startBlock: 11973964 + startBlock: 11978747 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -60,13 +60,15 @@ dataSources: 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 - kind: ethereum/contract name: Dispenser network: ropsten source: - address: '0x8e1c4335E38710C36a5AF59A5d4222286aEA07Df' + address: '0x292f3108Fe22BaF215133fEc6Ad1a99312daC8E5' abi: Dispenser - startBlock: 11973964 + startBlock: 11978747 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -95,9 +97,9 @@ dataSources: name: FactoryRouter network: ropsten source: - address: '0x153bE7bbcf91a6E2c5D30c78E6f6c3Bce7D1B046' + address: '0x9CF7215De4D862497CEdc86012EB3177044C523A' abi: FactoryRouter - startBlock: 11973964 + startBlock: 11978747 mapping: kind: ethereum/events apiVersion: 0.0.6 @@ -141,7 +143,8 @@ templates: handler: handleNewPaymentCollector - event: PublishMarketFee(indexed address,indexed address,uint256) handler: handlePublishMarketFee - + - event: PublishMarketFeeChanged(address,address,address,uint256) + handler: handlePublishMarketFeeChanged - name: BPool kind: ethereum/contract network: ropsten @@ -174,6 +177,10 @@ templates: 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 diff --git a/subgraph.yaml b/subgraph.yaml index eb75344..2e0ab26 100644 --- a/subgraph.yaml +++ b/subgraph.yaml @@ -60,6 +60,8 @@ dataSources: 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 - kind: ethereum/contract name: Dispenser network: development @@ -141,7 +143,8 @@ templates: handler: handleNewPaymentCollector - event: PublishMarketFee(indexed address,indexed address,uint256) handler: handlePublishMarketFee - + - event: PublishMarketFeeChanged(address,address,address,uint256) + handler: handlePublishMarketFeeChanged - name: BPool kind: ethereum/contract network: development @@ -174,6 +177,10 @@ templates: 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